Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   181 / 840
(#) (Felhasználó 4577) válasza gabi20 hozzászólására (») Jan 30, 2010 /
 
A kapcsolások közt nézz szét!
Bővebben: Link
(#) (Felhasználó 4577) válasza Beachway hozzászólására (») Jan 30, 2010 /
 
Szintén ugyan ezt tudom mondani.
Bővebben: Link
Bővebben: Link

Vagy ha jobban is szeretnél foglalkozni az AVR-ekkel, akkor javaslom, hogy vásárolja egy gyári ISP-t. Az MSC Budapest-et tudom ajánlani, jó áraik vannak.
(#) janyjozsef hozzászólása Jan 30, 2010 /
 
Köszi a válaszokat.

Akkor ezek után ISR.
(#) Beachway válasza (Felhasználó 4577) hozzászólására (») Jan 30, 2010 /
 
Juj ,de jó! Köszönönm szépen. Tök egyszerű. Ezt mindenképp megcsinálom. Semmi extrém alkatrész.
(#) Beachway hozzászólása Jan 30, 2010 /
 
Még egy kérdés. Ez egy régi tipus ha jól tudom. Van az Atmel-nek egy ezzel kompatibilis tipusa?? A cég oldalán van samples, és hát jobb is lenne egy moderenbb tipussal megvalósítani ezt a projektet ha van rá lehetőség. Előre is köszi az infót.
(#) (Felhasználó 4577) válasza Beachway hozzászólására (») Jan 30, 2010 /
 
Mi régi típus?
Ahhoz hogy egyszer vagy kétszer beleégesd a szoftvert, teljesen megfelel, én majdnem egy évig használtam heti rendszerességgel.
(#) Beachway válasza (Felhasználó 4577) hozzászólására (») Jan 30, 2010 /
 
Értem. Akkor jó. Köszi.
(#) (Felhasználó 4577) válasza Beachway hozzászólására (») Jan 30, 2010 /
 
Szívesen!
Nincs vele semmi gond, csak kicsit lassan égette be.
Nem emlékszem már, azt hiszem hogy nem is lehetett az ISP órajelet változtatni, ha lehet, akkor az AVR órajelének a negyedére kell levenned, hogy tudd programozni.
Pont a múlt héten szabadultam meg ettől a programozómtól, 1 évig légszerelve használtam, most meg kellett a soros port csatlakozó.
(#) Beachway válasza (Felhasználó 4577) hozzászólására (») Jan 30, 2010 /
 
A lassúság nem gond. Nem fogom olyan gyakran használni, hogy számítana valamit is ,hogy várnom kell néhány percet. Majd kipróbálom. Összedobom próbapanelen, és meglátjuk. Még egyszer köszi!
(#) Damian666 hozzászólása Jan 30, 2010 /
 
Előbbiekben rosszul fogalmaztam. Megépítettem a PC ventillátor szabályzó (NTC-vel, és PWM-el, ATtiny13)
http://www.hobbielektronika.hu/kapcsolasok/nyolc_labbal_iii_resz_ol...4.html


Itt 2 ventit szabályoz, 2 ntc-vel. nekem csak 1 ventre-és ntc-re van szükségem, viszont,
szeretném azt megoldani, hogy a maradék bemenetét arra használnám, hogy figyelje a rákötött feszt,
3,3v vagy 5 v mindegy. ha ez a fesz megszünik, akkor a ventit 1 percig "FULL_SPEED" en járassa.
Hogyan lehetne ezt megoldani? amatőr vagyok még nem nagyon programozgattam sajnos.
(#) (Felhasználó 4577) válasza Damian666 hozzászólására (») Jan 31, 2010 /
 
Ki kell hámozni a kódból a másik ventillátor szabályzását, az NTC helyére beteszel egy lehúzó ellenállás, mondjuk 1KOhm-osat és az ADC-vel méred a feszültséget, majd kiszámolod a kontrollerben, hogy hány V van a bemenetén. Egy kis hiszteriézist érdemes volna beletenni.
(#) labu01wx válasza levy_k hozzászólására (») Jan 31, 2010 /
 
A doksiban van egy táblázat, ahol minden megszakítás mellet van egy memóriacím pl.: INT0 - 0x0001, ez azt jelenti, hogy megszakításkor ide ugrik a program?
(#) levy_k válasza labu01wx hozzászólására (») Jan 31, 2010 /
 
Igen, de C-ben ezt a fordító rendezi úgy, hogy majd futás közben jó legyen. Nem kell vele sokat törődni.
(#) labu01wx válasza levy_k hozzászólására (») Jan 31, 2010 /
 
Azt tudom, hogy c-ben ilyenekkel nem kell foglalkozni, de azt nem lehet megcsinálni, hogy mindenféle ISR() nélkül a a 0x0001-be írunk egy "goto kezd" parancsot?
Tudom, ez már nem annyira c, de érdekel; ezért is használtam a goto parancsot, nem azért, mert annyira kedvelem.
(#) levy_k válasza labu01wx hozzászólására (») Jan 31, 2010 /
 
Szerintem nem kell ezt túlbonyolítani, az ISR()-t a megszakítás lekezelésére találták ki. Ha neked nem kell lekezelni semmit, akkor figyeld a zászlókat, és az alapján goto-zz. Az ISR() egy függvény, amiből nem szoktunk kiugrani anélkül, hogy befejeznénk. Ezért goto-t csak a legutolsó esetben használj, ha már semmi más nem jut eszedbe.
(#) labu01wx válasza levy_k hozzászólására (») Jan 31, 2010 /
 
Köszi, a flag-figyelés jó ötlet.
Még az régebbi programhoz annyit, hogy átállítottam az INT0, hogy csökkené élnél szakítson meg, de ha folyamatosan gnd-n hagyom a PB2-t, akkor nem csak egyszer, hanem folyamatosan megszakít.
Ez mitől van?

int.c
    
(#) trudnai válasza labu01wx hozzászólására (») Jan 31, 2010 / 1
 
Letezik ISR(BADISR_vect) ami arra jo, hogy a lekezeletlen interruptokat is lekezeld. Van EMPTY_INTERRUPT is ami jelezni fogja, hogy az adott interruptnak nincs handlere, de ne okozzon resetet es ne ugorjon a bad isr-re se... Aztan van olyan, hogy ISR_ALIASOF, az meg arra jo, hogy van egy handlered, es ugyanazt hasznalod tobb masik interrupthoz is.

C-ben nagyon ritka, hogy valakinek manualisan kelljen barmit is lekezelnie. Ha van egy problemad szinte bizonyos, hogy masnak is volt mar hasonlo es arra van egy elegans megoldasa...
(#) Damian666 válasza (Felhasználó 4577) hozzászólására (») Jan 31, 2010 /
 
Rendben, de sajnos fogalmam sincsen, hogy is néz ez ki valójában.
hogyan kell mérni adc-vel a feszt? és hogy számoltatom ki vele, sajna nagyon lúzer vagok még ehez
(#) (Felhasználó 4577) válasza Damian666 hozzászólására (») Jan 31, 2010 /
 
A forráskódban máralapból van egy függvény ami mér, neked csak meg kell adnod hogy melyik csatornán akarsz mérni.
Így V-ban kapod meg: referenciafeszültség*(advisszadottértéke/1024)
(#) Damian666 válasza (Felhasználó 4577) hozzászólására (») Jan 31, 2010 /
 
az a baj, hogy fogalmam sincs hol van az amit módosítanom kell. köszönöm a segítséged. de sajnos nem értek hozzá még ennyire sem hogy ebből bármit is tudjak alkalmazni.
(#) trudnai válasza Damian666 hozzászólására (») Jan 31, 2010 /
 
Ha meg akarod tanulni akkor sajnos bele kell feccolni az idot es valoszinuleg nem itt kell elkezdeni. Ha pedig nem, akkor valoszinuleg jobb, ha valakit megkersz csinalja meg neked.
(#) (Felhasználó 4577) hozzászólása Jan 31, 2010 /
 
Jól olvasom az adatlapban, hogy az ATmega32-16PU nem megy 3.3V-ról?
Az ATmega88 vagy ATmega128 pedig igen?
(#) levy_k válasza (Felhasználó 4577) hozzászólására (») Jan 31, 2010 /
 
Az L-es típusok tudnak 2.7V-ról működni, de cserébe csak 8MHz-en ketyegnek.
(#) (Felhasználó 4577) válasza levy_k hozzászólására (») Jan 31, 2010 /
 
Akkor jól olvastam. Csak az ATmega88 működik a fentiek közül 3.3V-ról és az is csak max 10MHz-en.
Köszönöm!
(#) levy_k válasza (Felhasználó 4577) hozzászólására (») Jan 31, 2010 /
 
ATmega48V/88V/168V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
ATmega48/88/168: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
(#) labu01wx hozzászólása Jan 31, 2010 /
 
#623116-ra valaki legyen szíves válaszolni.
(#) ATtiny válasza labu01wx hozzászólására (») Jan 31, 2010 /
 
Csak egy észrevétel:

Nem így kéne törölni egy regiszter bizonyos bitjeit:
  1. MCUCR|=0<<ISC00 | 0<<ISC01; //INT0, ha PB2==0


Hanem így:
  1. MCUCR &= ~((1<<ISC00)|(1<<ISC01))


Ha kicsit belegondolsz, vagy méginkább levezeted papiron a logikai műveletet, akkor teljesen nyilvánvaló.

(#) labu01wx hozzászólása Jan 31, 2010 /
 
Ezt nem kell törölni, mert alapból 0, csak azért írtam ki, hogy látszanak a paraméterek.
(#) ATtiny válasza labu01wx hozzászólására (») Jan 31, 2010 /
 
Attól, hogy alapból nulla az a két bit, még nem logikai OR -al kéne törölni. Nem tart semmiből a helyes sort beírni a kódba. Fölleg, ha tudod, hogy az a sor most semmit nem csinál a kódodba. Ha egy kezdő belenéz a kódodba, akkor lehetőleg a helyes megoldást jegyezze meg.
(#) labu01wx válasza ATtiny hozzászólására (») Feb 1, 2010 /
 
Igazad van, de a bit törlés nekem sem megy zsigerből, ezért csináltam így.
De a megszakítás még mindig nem megy rendesen...
Következő: »»   181 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem