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
Alternatív megoldás Mr. trudnai által javasolt opció helyett:
Atmega 16 adatlap megnyitása ( 83. oldal: 8bit Timer/Counter with PWM) TCCR0 regiszter bitjeinek megkeresése: Bit: 7 - 6 - 5 - 4 - 3 - 2 - 1 - 0 Név: FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 A fenti példában TCCR0=0x6D 0x6D=0b01101101 ez az alábbiakat jelenti: FOC0 értéke 0 WGM01 - WGM00 1 1 : FAST PWM COM01 - COM00 1 0 : nem invertált PWM CS02 - CS01 - CS00 1 0 1 : clk / 1024 (előosztó = 1024, szerintem ez egy kicsit sok lesz a szervóhoz) TCNT0 : ne piszkáld, jó a kezdeti 0x00 érték OCR0 = 100 evvel a regiszterrel lehet a jel kitöltési tényezőjét megadni (szervónál úgy kell beállítani, hogy 1-2ms között kell legyen az impulzus hossza, ezért az értéke kb. 16-31 között lehet) Nem tudom milyen sebesseggel megy az AVR-ed, de az előosztót úgy kell kiválasztani, hogy kb. 50 Hz-es PWM jelet kapjál. A képlet: Fast PWM frekv. = órajel/(256*előosztó) A PWM jel az OC0 lábon jelenik meg, feltéve ha előtte kimenetnek lett megadva a DDRC regiszterben.
Sziaztok!
Az szeretném kérdezni, hogy infrás RC-5-ös szabványt használó Philips távirányító jelének fogadásához az USART megfelőlen beállítva elég, vagy itt nem alkalmazható? Azért kérdezem, mert ugye az RC-5 címet is küld a parancs előtt, és ha jól értelmezem a dokumentációját az ATMega88-nak ennyi bitet nem tud fogadni az USART. Ha ezt így van akkor mit lehet használni a kód dekódolásához? Interrupttal várjak jelre majd ciklusból kérdezgessem a megfelelő láb állapotát? A szabvány igen tömör leírását innen puskáztam. Köszönöm a segítséget, Attila
Nem alkalmazhato. En a helyedben azt csinalnam, hogy INT0-ra kotnem a jelet, beallitanam, hogy le- es felfuto elre generaljon interruptot, majd az interruptok kozott eltelt idot mernem es ezekbol az idokbol dekodolnam a jelsorozatot.
De szerencsedre az Atmel ezt mar megoldotta es publikalta a 410-es AppNote-ban: AVR410
rc5: nem sorosporti/usart alapon megy...
jelsorozat, időzítésekkel....
Sziasztok!
Egy új csalamádé kérdés: Így megírva miért nem villognak a LED-ek? Úgy néz ki mintha nem működne az IF ELSE:
Szia.
Próbáld meg így.
Nekem csak így működnek, de mások állítják, hogy nekik megy úgy is ahogy te csináltad.
Itt teljesen más a gond. Kirí a probléma, ne vezesd félre megint kérlek.
A LED1_ON egy makró. Azt IF-be tenni értelmetlen, mert mivel értékadás és módosítás, ezért mindig igaz lesz az értéke. LED1_ON-t helyettesítsd be gondolatban a makróval. És akkor meglátod magad is a gondot. Ha IF-be akarod tenni a feltételt, akkor ne magát a makrót tedd, hanem pl:
Javaslat. Ha utasítást makrózol ixel, akkor mindig használj zárójelet. Tehát: LED1_ON()... Sok ezer kódsor felett, majd jó lesz tudni már, mi feltétel, mi utasítás. Ha hozzászoksz már 10 soros programnál is, akkor csak előnyöd származik belőle.
Bocsi. Nem néztem meg rendesen, a #define mit is tartalmaz. PORTB-be írt. Nem szólok többet. :peace:
A következő cikkemet kezdem lassan tervezgetni, de ezzel kapcsolatban lenne 1 kérdésem. Alapvetően most 2 téma van, amivel kapcsolatban lenne kedvem írni. Az első téma egy microstepp -es léptetőmotor vezérlés AT90PWM3 -as kontrollerrel. A másik téma VGA jel előállítása AVR mikrokontrollerrel. Gyakorlatilag egy karaktergenerátor építéséről van szó. A kérdés pedig, hogy melyikre lenne nagyobb érdeklődés. Mivel a szabadidőm igencsak limitált, így teljesen reménytelen, hogy mind a kettőröl összehozzak egy - egy cikket.
Kerdes, hogy egy erosen korlatozott VGA-t (--mert gondolom hogy az--) mire lehet hasznalni egyaltalan.
Nyilván ha valaki VGA kártyát akar építeni, akkor FPGA-ban áll neki megtervezni. De a VGA jel előállításának elvét be lehet mutatni egy AVR 8bites mikrokontrolleren is.
Én a stepper motor vezérlésre voksolok, ez most nálam épp aktuális.
Szerintem viszont jobb volna egy közismertebb processzorral tervezni, ha ez lehetséges.
Az AT90PWM3 -as kimondottan motorvezérlési feladatkra van kifejlesztve. Ezért gondoltam, hogy ezzel kéne megvalósítani a microsteppes vezérlőt. Amúgy valóban nem túl ismert tipus idehaza. Pedig nagyon komoly tudása van. 3db teljesen független max.64Mhz-es alap órajelű 12bites PWM -es lehetőséget biztosító PSC periféria. A sima mezei AVR kontrollerrel is meg lehet valósítani microsteppes vezérlést, de ott már kompromisszumok vannak.
Motor!
Ha már megvan az encóder cikk, akkor már maradhatnánk ennél a témakörnél. Vagy akár egy fordulatszám szabályozás DC motorra encóderből, vagy hasonló jó dolgok
Én annó csináltam ilyen mikrosteppes vezérlést (ATmega8, Bascom) de nem lett az igazi, a mikrosteppek nem voltak egyenletesek.
Akkoriban utánaolvastam, és kiderült, hogy a kommersz léptetőmotorok általában nem alkalmasak ilyen célra. Bár elképzelhető, hogy ilyen PLL-es mikrokontrollerrel sikerül találnod olyan frekvenciát, amelyen egész jól működik az általad használt motor.
Sziasztok !
Nagyon-nagyon kezdő vagyok az AVR-ben , de tetszik és érdekel a téma. Lenne egy pár kérdésem : Amikor elkészült a forráskód (C-ben például) akkor azt lefordítva .hex fájl keletkezik? Ebből kiindulva bármilyen nyelven írjuk meg a forráskódot a fordítás után .hex fájl jön létre ? A mikrokontrollerre csak ez tölthető fel ? Illetve arra is szeretnék választ kapni, hogy mi is az a makefile és miért van rá szükség. Előre is köszönöm a választ. Szegedi Balázs
Neten mindezekre megkapod a valaszt a megfelelo kulcsszavakkal, mint: 8 bites architekturak, mikrovezerlo, AVR, c fordito (compiler), avr-gcc, makefile, intel hex formatum. (a Makefilenak tobb koze van a C-hez es a Linuxhoz mint barmihez.)
Idézet: „Amikor elkészült a forráskód (C-ben például) akkor azt lefordítva .hex fájl keletkezik?” Igen. Idézet: „Ebből kiindulva bármilyen nyelven írjuk meg a forráskódot a fordítás után .hex fájl jön létre?” Igen. Idézet: „A mikrokontrollerre csak ez tölthető fel?” Igen. Idézet: „Illetve arra is szeretnék választ kapni, hogy mi is az a makefile és miért van rá szükség.” A makefile-ban tárolódik például a processzor típusa. A fordításhoz szükséges.
Sziasztok
Most kezdek az AVR processzorokkal foglalkozni . Letöltöttem a Bascom programot ,úgy gondoltam hogy ez nekem megfelel .Az AVR programozása LPT porton keresztül történik. ATtiny45 - ös processzor lenne az első alany. Mit szóltok hozzá? Megfelel ez egy kezdőnek?
Megfelel.
Itt az oldalon találsz pár cikket, amiből tanulhatsz, de bennük minden programot C nyelven írtak.
Szerintem igen, eloszor ugyis kicsi apro feladatokkal erdemes kezdeni, bar viszonylag osszetettebb feladatokat is meg tudsz egy Tiny45-el csinalni (pl. kapcsolo uzemmodu tap vezerlese).
De ha nem akarsz sokat kolteni, akkor erdemes olyat nezni aminek tobb laba van, igy a kesobbiek folyaman ugyanazzal a chippel tudsz olyan dolgokkal is foglalkozni amelyek mar tobb labat igenyelnek. Javaslom, hogy mielott neki allnal felprogramozni a chip-et, olvasgasd el figyelmesen a "kizartam magam", "eddig tudtam programozni, most mar nem" es hasonlo kereso kulccsal megtalalt oldalakat, forum bejegyzeseket. Amugy: Ezek nem processzorok, hanem mikrokontrollerek. Ezekben van processzor is, meg sok mas egyeb is, amik egyuttesen alkotjak a kontrollert.
Köszönöm a válaszokat ,remélem eljutok a LED - es villogóhoz...
Szerintem minimum ATMega 8 -al kezdj. Az sok mindenre jo lesz, mint pl. LCD kezeles, meg egyebek is a kesobbiekben.
Még egy kérdésem lenne :
Van itthon egy AT90S2313 jelű AVR mikrovezérlőm. A BASCOM AVR programban ez nincs benne, de benne van az ATtiny2313 . A kettő mikrovezérlő egy és ugyanaz? |
Bejelentkezés
Hirdetés |