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.
Köszi Topi!
Megértettem és így működik:
-- Használd légyszíves a "Kód beszúrást" Köszi, Topi
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 |








