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
Miből gondoltad ezt?
Sőt, ha már külön ref tápfeszt állítasz elő, akkor azt nem piszkálnám, mert a végén csak felesleges zavar kerül rá. Tehát kössed ezt ugyanarra a tápra, amire az AVR van kötve. Adatlapban is ilyen javaslatok vannak: Bővebben: Link
Az AVR AVCC labara kell kotni. Az AVR AVCC es a VCC laba ne legyen kozvetlen osszekotve, kozejuk tegyel induktivitast, hogy kevesebb zaj keruljon at.
Kulso kristalyrol vagy a belso 8MHz-es oszcillatorrol megy az AVR?
Az orajel 8-al valo osztasa ki van kapcsolva (CLKDIV biztositekbit)?
Üdv!
Egy külső 4MHz-es kristályról megy. (legalábbis úgy gondolom) A biztosíték bitekhez nem hiszem, hogy hozzányúltam. Legalábbis szándékosan nem. Amit módosítottam az a fenti kódban vastagon jelöltem. Lehet, hogy a belső oszcillátort használom, miközben egy külső kristályt kötöttem az XTAL1 és XTAL2 lábakra... :S Egy külső kristály használatához miket kell beállítani?
Ha nem nyúltál a fuse bitekhez, akkor bizony belső oszcillátorról jár, mégpedig 1MHz sebességen.
Külső kristályhoz a megfelelő fuse biteket kell beállítanod. Itt meg tudod nézni, hogy mit kell állítanod: Bővebben: Link A hozzászólás módosítva: Okt 9, 2012
Sziasztok
Atmega162-ben betudom állítani a két uart-ot különböző sebbességre?
Igen megnéztem, tényleg belsőről megy a szerkezet.
A link még nem segített sokat, de az adatlappal együtt ha jól értelmezem. A 8535-ös adatlapja 23-25. oldal alapján az órajel beállításához (külső kristály 1-16MHz között) ezeket kéne beírnom:
Az SPIEN ha jól értem az kell, hogy SPI-n keresztül lehessen felprogramozni, de a másik 2 nem tudom, hogy mit csinálnak, így hagyom őket is. Az AVRDude-ba meg ezt kéne beírni:
Közel járok az igazsághoz? A másik kérdésem, hogy ezt WinAVR-el hogyan tudnám beírni? Vagy csak AVRDude-al lehetne? A hozzászólás módosítva: Okt 9, 2012
Sziasztok. Szeretnék építeni egy olyan hőmérőt ami egyszerre négy helyről érzékeli a hőmérsékletet és egy kijelzőre teszi ki az értékeket. Ha valakinek esetleg lenne rajza egy ijenhez, az jólenne. Köszönöm előre is!.
Nos estére ezt hoztam össze:
Ez így helyes, működőképes? Egy picit már zavarban vagyok, mivel az adatlapon volt egy ilyen megjegyzés: Idézet: „Note: 1. For all fuses “1” means unprogrammed while “0” means programmed.” Tehát ha jól értem lényegében invertálva vannak itt a dolgok. Amelyik fuse bit nekem kell azt nem 1-el hanem 0-val aktiválom, vagy rosszul gondolom?
Igen.
Az invertalas dolog igaz.
A honlapon kivalasztod az avr-ed utana egy ertheto feluleten latod, hogy milyen fuse beallitas mit eredmenyez. En a helyedben ott megneznem ,hogy kulso kristalyra milyen erteket kell beirni, majd egy kozvetlen avrdude parancsot hivnek meg azzal a parameterrel. Bar igaz, hogy a fuse.h segitsegevel a forrasban is meg lehet adni fuse beallitasokat, de nekem azzal nincsen tapasztalatom. Nem tudom, hogy az nem invertalva lesz ahhoz kepest, amit igazabol is szeretnel. Masnak hatha van ezzel tapasztalata.
Üdv!
Akkor az AVRDude-dal állítsam be a fuse biteket. Inkább a belső oszcillátort emelem meg 8MHz-re így a próbapanelen a programozás is egyszerűbb lesz. Ez a beállítás jo e? 8MHz belső + 4,1ms 6CK
Szerintem jó lesz.
sikolymester és Fizikus köszönöm szépen a segítséget.
Még most sem olyan gyors mint a videóban, de jóval gyorsabb lett. Már csak a késleltetést kell csökkentenem és szerintem meg is van. A következőkben az SPI-n való adat fogadást próbálom ki egy majd 2db 74HC597-el.
Sziasztok!
Azt szeretném megkérdezni, hogy atmega8-nál megoldható-e, hogy watchdog ébressze fel a power_down módú alvásból a vezérlőt, anélkül hogy reseteljen. (el kellene mentenem egy számlálót, mert csak kb 5 percenként kéne műveletet végezni és elemről menne) (vagy felőlem resetelhet, csak a számláló értéke élje túl... eepromba írás nélkül) Köszi: Imre
Ismét én
![]() Nos írtam egy kódot még tegnap este utolsó hozzászólásom után. Azt hittem nem működik jól, de csak én voltam az ostoba. A kód így néz ki:
Ezt is szintén Fizikus által írt cikkből merítettem és módosítottam. A lényege az adatok(16bit) SPI-n keresztül való beolvasása lenne. Szépen teszi a dolgát. Annyi lenne a kérdésem, hogy ennél egyszerűbben is meg lehetne ezt oldani? A másik dolog amit ki akarok próbálni az RTC (real time clock - valós idejű óra) használata. Ezzel próbálkoztam:
A kód működik a TCNT1-el, de nem tudtom a regisztereket a TCNT2-höz beállítani... (Aszinkron működés 32,768KHz-es kristállyal) Egy link, vagy egy működő kód is megteszi, onnan már fel tudom fogni mi hogyan is van. (legalábbis azt hiszem google-n érthető kódot nem találtam)
Miért nem egy timert használsz erre?
Javaslom az adatlapban megnézni a "Power Management and Sleep Modes" részt.
Sziasztok,
Atmel AVR studio6-ban szeretnék egy char tömböt deklarálni és globálisan elérhetővé tenni. Vagyis deklaráció a main fv kívül(és minden fv-en kívül):
Ilyen hibaüzeneteket kapok rá: Error 3 expected unqualified-id before '[' token Error 4 expected unqualified-id before '[' token Error 12 'str1' was not declared in this scope Error 13 'str2' was not declared in this scope A main fv végtelen ciklusa:
Az lcd_putstr(char[]) fv írja vagyis írná ki a szöveget a kijelzőre. Ami működik is ilyen formában:
És itt az lcd_putstr fv:
Miért nem jön létre a 2 tömb?
Így a helyes:
A hozzászólás módosítva: Okt 11, 2012
Szia!
Power down módból (ezt szeretném mindenképpen) csak a külső megsz.-ok ébresztik fel a cuccot, úgy tudom. (+TWI) Viszont nekem az kéne hogy magától is megtegye ezt időközönként. Minél kevesebb külső alkatrészt szeretnék. Ezen az oldalon: http://www.embedds.com/using-watchdog-timer-in-your-projects/ ez ragadta meg a figyelmem: Watchdog Interrupt mode-> "...And there is a special case where watchdog can generate both: interrupt and system reset. By using this feature you may have ability to preserve valuable parameters before reset." Ez kéne. Imre
Hoppá, téves
Elnéztem egy sort én is a nagy igyekezetben. Csakugyan INT1 INT0 és TWI képes rá. A watchdog ébresztéssel az a gond, hogy az mindenképpen kitöröl minden változót. Legalábbis a papírforma szerint. szerk: Elolvastam az említett részt. Az adatlapban nincsen felsorolva a watchdog interrupt forrásként. Attól félek be kell érned a power save móddal. A hozzászólás módosítva: Okt 11, 2012
Köszönöm a gyors választ akkor még filózgatok a dolgon.....
![]()
Ha alacsony fogyasztás a cél, akkor kukkants rá at atmega88PA-ra.
Ha minden igaz, akkor lábkompatibilisek.
A nem stackben levo valtozokat meg lehet menteni, csak at kell irni a gyari avr libc fuggvenyt, ami inicializalja a memoriat.
A hozzászólás módosítva: Okt 11, 2012
Átnyálaztam az adatlapot és csakugyan.
Ez akkor remek hír imreke kollégának.
Mondjuk kezdonek/kozephaladonak nem javaslom. Nagyon alaposan meg kell tervezni a szoftvert. Egyszerubb egy olyan tipust valasztani, ami tamogatja a WDT interruptot.
Nos erre jutottam, de sajnos ez sem működik.... Mi lehet a baj?
Biztosan azert, mert ha pointerkent deklaralod, akkor a csillagocska a nev ele kerul:
Az ilyen szörnyűségek elkerülésére definiálni lehetne a biteket így:
S akkor a fenti sor helyett ezt lehetne írni:
|
Bejelentkezés
Hirdetés |