Fórum témák
» Több friss téma |
WinAVR / GCC alapszabályok: 1. Ha ISR-ben használsz globális változót, az legyen "volatile" 2. Soha ne érjen véget a main() függvény 3. UART/USART hibák 99,9% a rossz órajel miatt van 4. Kerüld el a -O0 optimalizációs beállítást minden áron 5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás 6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et Bővebben: AVR-libc FAQ
Aref többféle lehet:
- belső referenciafesz - külső referenciafesz - belső tápfesz. Én - biztos ami biztos - 100nF kerámiakondival szűröm a GND fele. Viszont ténylegesen csak az ADC használja. De az AVCC, GNDA mindig bekötendő.
Sziasztok!
Készítettem egy LED-es futófényt ami 8 LED-ből áll és ha egy potmétert tekerünk a futófény villogási sebessége nő. A baj csak az lenne, hogy a fordító talált benne egy hibát amit abszolút nem tudok kijavítani mert nem jövök rá, hogy az adott sorban mi a hiba; valamint egy figyelmeztetést is adott de arra sem jöttem rá. Ezért most leírom a kódot:
A hibát a potméter változó definiálásánál, míg a figyelmeztetést a " return (ADCH) " sornál találta. És végül a hibaüzenetek:../main.c:16: warning: 'return' with a value, in function returning void és ../main.c:31: error: void value not ignored as it ought to be Köszönöm mindenkinek a lehetséges választ.
Ha a függvényed visszatérési értéke void is meg nem is akkor ne csodálkozz a warning miatt. Aztán akkor se ha egy visszatérési értékként void-ot adsz át egy változónak.
Ugye, nem zavar, hogy már megkaptad a választ, attól még újra meg tudod kérdezni.
http://www.hobbielektronika.hu/forum/topic_hsz_1073162.html#1073162
Sajnos kezdő vagyok és elég hülye is hozzá és nem tudum, hogyan lehetne kijavítani a hibákat.
És mivel a programozást csak hobbiból tanultam és nem iskolában ezért elég sok mindent rosszul csinálok.
Ezer bocsánat!Ép akkor alakították az oldalt és nagyon lassan lett elküldve én meg azt hittem, hogy nem is küldte el, mert hiba történt. :bummafejbe:
Ha ezt tudtam volna nem kérdeztem volna meg újra.
Sziasztok
Segítségre lenne szükségem. Van egy arduino duemilanom és ezzel szeretnék egy relét kapcsolni de egy tv távirányítóval. Megoldható valahogy? Van TSOP 1738-am. Kerestem google ban sok sok forráskódot próbálgattam is őket de igazán egyik sem működött. A távirányitó univerzális programozható. Valaki ha tudna segíteni az nagyon jó lenne előre is köszönöm
De a problémát érted? A main soha nem érhet véget, az egy örök ciklus kell legyen. A procedurákat innen hívogatod.
Idézet: „És mivel a programozást csak hobbiból tanultam és nem iskolában ezért elég sok mindent rosszul csinálok.” En a mai napig ugy tartom, hogy iskolaban nem lehet megtanulni programozni. Adhatnak egy szamarvezetot, ami alapjan megtanulhatod, de mindenkeppen otthon es passzibol kell tanulni, kenyszerbol az nem megy. Amugy meg mindig lehet ujat tanulni, szoval ne aggodj azon ha valamit nem tudsz. Elso a googli hasznalata -- foleg ha angolul tudsz, az esetek 90%-ban hamar meg lehet talalni, hogy valaki mar kerdezett ilyet, avagy valami leiras epp a kerdesedet targyalja. Ha pedig nem talalsz infot akkor itt vannak a segitokesz emberek
Persze, hogy megoldható.
Jó lenne tudni, hogy mégis milyen a távirányítód jele. A TSOP1738-as 38kHz -es jelhez ideális. Megméred a távirányító jelet valahogy. Pl oszcilloszkóppal rámérsz a távirányítóra, vagy egy fototranzisztorral, ami az arduinodra van kötve. Utóbbit sötétben, hogy ne zavarjanak be fényforrások. Nos, ha már tudod, hogy milyen a jel, amit venned kell, akkor már csak meglesed a TSOP1738 adatlapot és megnézed, hogy a mérendő jelet milyen módon szűri meg és adja ki a kimeneten. Ennyi.
A taviranyito kodjele nem mindegy. Protokoll lehet:
RC5, RC6, RC65 (Philips), NEC, Sony és még vagy 4 féle... Az RC5 és a Sony-ra vannak meg a dekódolóprogramok arduino fórumokban... A frekvencia lehet 30--32-34-36-38-40-56 kHz A 36 a leggyakoribb. Ha ezt 38k-s vevővel veszed, az kb. felere visszaesett hatotavval szamolhato.
Van egy nagyon jo linuxos project, aminek LIRC a neve. Ha ezt letoltod, akkor az adatbazisabol kikeresheted a taviranyito tipusat es azt a definicios fajlt fel tudod hasznalni a kezeleshez. Ha nincs benne az adatbazisaban, akkor telepitsd fel a programot es vedd fel az adatbazisba a taviranyitot (felteve, hogy van infra vevod a szamitogepedhez).
Hello!
Tudom hogy nem szorosan a témához kapcsolódik a kérdésem, mégis úgy érzem nem tudom másik topic-ban feltenni (mentségemre szóljon hogy a feladatot AVR-el szeretném megoldani ). A kérdésem a következő: tud valaki valamilyen oldalról, segédanyagról, ami az auto EQ-ról szól? Értem ezalatt, a működés elvét, különböző megvalósításokat stb. Körbenéztem kicsit, de eddig semmit nem sikerült összeszednem róla és nagyon fontos lenne.... Még egyszer bocs a kicsit eltérő témáért, és előre is kösz a válaszokat
Mit szeretnel konkretan megvalositani? Alapvetoen az automatic equalizer eleg egszeru bemeno jel -> fouriert -> komponensek amplitudojanak modositasa -> inverz fourier -> kimeno jel.
Ha te a ezt igy szeretned megcsinalni, akkor sima AVR felejto, mert nem eleg a teljesitmenye. Ha csak a vezerlest szeretned digitalisra es a kulonbozo frekvenciaju komponenseket analog aramkorokkel akarod modositani, akkor elegendo, bar igy sok analog elemre lesz szugseged. Ha a digitalisat szeretned megvalositani, akkor javaslom, hogy tanulmanyozd egy kicsit az Atmel AVR32 EVK1105 demonstracios panelt, amely pont az ilyen jelformalassal/generalassal/mp3 dekodolassal foglalkozik.
Sziasztok!
Még mielőtt abszolút nullára kerül önbecsülésem, kérlek segítsetek. Nem értem ... már öt napja nem. Tehát, a szitu az, hogy tc0-t elindítom és figyelem a túlcsordulást. Túlcsorduláskor léptetem eggyel a timer változót. Amikor a megszakításhoz írom a feltételt (1. eset), akkor timer = 100-nál nullázódik és PORTA = 1. Ez sima ügy. DE amikor a főprogiba szeretném ugyanezt (2. eset), akkor már nem működik a feltétel. Próbáltam már feltétel előtt/után ki/be kapcsolni a megszakítást, de az sem segített. Érthetően írtam le a szitut? Remélem sikerül megoldást találni, mert már se éjjelem, se nappalom. Előre is köszi sokat.
1.Miből gondolod, hogy nem működik a feltétel? Nem látod bebillenni a portot?
2. Feltételezhetően a programod nem csak ennyi, mert pl. a DDRA-t sem látom inicializálni, az interrupt felprogramozásából sem látni semmit, pedig úgy tűnik, hogy a nem közölt részekben van a gond. Amit írtál, abban minden rendben - feltéve, hogy a timer globális változó.
3. Ha nem használon az 'else' ágat, akkor felesleges az önmagában álló értelmetlen 'else'.
if (feltétel) { akkor ez meg ez } és a bezáró kapcsos zárójellel vége is történetnek.
Mivel a megszakitasban noveled a timer erteket, igy itt eri el a 100-at, viszont a megszakitasbol torteno kilepes elott lenullazod, ha 100 az erteke, igy a foprogramban csak 0-99 kozotti ertekeket fogsz belole kiolvasni.
Ha ezt el akarod kerulni, akkor a timer==100 ellenorzest a timer=timert+1 ele kell irnod, es akkor mar 1..100 kozott fog felvenni ertekeket. Ha a timer==100 else agaba rakod a timer noveleset, akkor 0..100 kozott fog felvenni ertekeket.
Halli! Ha valakit érdekel LOW COST AVR ISP MKII clone
akkor nézze meg ezt semmi spec ic 1db proci! Hátránya nem méri a target board feszültségét USB-röl táplált a target boargnak tud 5volt és 3,3voltot bisztositani! megépitéséhez nem kell programozó!!!! Önmagát programoza ATMEL FLIP.en keresztül.
Hm ez a fototranzisztoros dolog tetszik. De rákötöm és mégis mit figyaljek vagy milyen programot irjak a kezelésére?
HEllo! Következő a problémám: soros porton kap a proci egy stringet, mely hatására vissza kellne írnia egy másikat. ez a függvény amit meghívok
De csak akkor hajlandó működni ha egy break pontot rakok a függvény elé, megáll a program, majd a folytatásra nyomok. Ha folyamatosan megy akkor nem. Próbáltam hogy kikapcsolom előtte a megszakításokat, de az sem használt. Van valakinek valami ötlete? Köszi.
Csak a vezérlést kéne mikrokontrolleresen megoldani, igazából akkor egy egyszerű DFT-t kell implementálni a mikrokontrollerre, és egy ideális spektrumhoz képesti eltérést kéne kiszámolni, és ezt az információt továbbítani.
De mindenképpen megnézem a demonstrációs panelt, és köszi a segítséget . Egyébként arra gondoltam, hogy milyen mérőjelet szoktak használni, milyen algoritmust használnak az ideális spektrum megközelítéséhez?
Kedves Ubilinux és Reggie!
Beszúrom a két esetet teljes egészében. Amikor a megszakításban van a feltétel, akkor semmi probléma kb. másodpercenként kiír egy csillagot az LCD-re. Ez stimmel, mert 7xMhz az órajel, 1024-es az osztó és 8bit számláló. Amikor ugyanezt a feltételt a főprogiba teszem, akkor már semmit nem ír az LCD, tehát, nem valósul meg a feltétel. Megj: az else-ket majd kiveszem, csak most értem haza és még nem szedtem ki őket, meg az LCD késleltetést is kiszedem jöhet az adat megoldásra, csak idő kérdése Valamit nagyon benézek, de nem tudom mit és bocs a hosszú kódért. Működő kód:
És a nem működő kód:
A timer valtozo nem volatile. Ha egy valtozot hasznalsz foprogramban es megszakitasban, akkor mindig legyen volatile, kulonben kioptimalizalja a kodot es ha regiszterben tartja, akkor a memoriaban nem frissul, igy ket eltero erteket lat a megszakitas es a foprogram.
(Topicban az 1. pont, mielott kerdezel azt a listat fussad at mindig)
Elfelejtettem hozzatenni: a timer 8 bites valtozo legyen, mert az AVR szohossza 8 bit, igy egy lepesben csak ekkora valtozon tudsz muveletet vegezni. Ha nagyobb valtozot akarsz, akkor a teszteles idejere le kell tiltani a megszakitasokat, vagy segedvaltozoba kell masolni a timer-t es a segedvaltozot kell tesztelni, de a masolas idejere szinten le kell tiltani a megszakitasokat.
Sziasztok!
Azt szeretném kérdezni, hogy mi különbség van egy void és egy uint8_t típusú fügvény között?
Void-nál általában nincs visszatérési érték, visszatérés nélküli függvény. Nem is igazából függvény, hanem eljárásnak szokás nevezni ezt a típust. A másiknál pedig a visszatérési érték típusát adod meg ilyen módon. Tehát ha egy függvény uint8_t típusú, akkor a visszatérési értéke 8bites pozitív egész szám lesz. (0-255-ig)
Sikerült megoldanom az IR távirányitó problémát
találtam ezt az oldalat: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1176098434 itt a forráskód tökéletesen megy Sony protokollal Köszönöm mindenkinek a segitséget. |
Bejelentkezés
Hirdetés |