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
Most már kezdem érteni a dolgokat, akkor veszek egy jobb órakvarcot, aztán azzal megpróbálom a dolgokat. Köszönöm szépen mindenki segítségét
Üdv!
AVRDragon-nal Atmel Studio 6.2 sp2 alól ISP-n szeretnék programozni ATMega8L-t. Eddig működött, de mostanában elkezdett szórakozni: A "Device Programming" ablakban felismeri a chipet, beolvassa az ID-t, tudom állítani a biztosítékbiteket, stb.. De amikor rányomok a "Start without Debugging" gombra, akkor buildelés után azt írja, hogy nem tud programozni, mert vagy valami 0x02-es ISP hibára hivatkozik, vagy arra, hogy az ID nem egyezik meg a Mega8 ID-jével. Mi lehet a baja?
De már hogy ne kapna, le is mértem.
Mondom, hogy a "Device Programming" ablakban gond nélkül kommunikál vele, csak nem lehet égetni.
Amit leírtál, az egy tipikus tápfeszhiányos hiba: lehet kommunikálni vele, mert az áramkörben lévő parazita kapacitásokon van annyi szussz hogy meg lehessen szólítani az IC-t, kiolvasni a FUSE/LOCK biteket, signature-t, stb. De arra már nem, hogy egy hosszabb adatátvitelt(pl. égetés) hiba nélkül átvészeljen.
Ha jó a tápod, a következő az ISP órajel. Itt is hasonló a felállás, ha túl nagy(>F_CPU/4) akkor 1-1 rövid átvitelt még elvisel, de egy égetésnél már hibázhat. Állítsd az ISP frekit 100kHz-re vagy az alá és úgy próbáld. Idézet: Ezt ugye magad sem gondolod komolyan?! Parazita kapacitasok azok pikofarad nagysagrenduek, azokban egesz biztosan nincs annyi energia, hogy hosszu milliszekundumokig eletben tartson egy AVR-t. De meg a 100nF hidegitokben sincs annyi. Inkabb az I/O labak vedodiodain keresztul kaphat tapfeszt a uC a programozo felol. „lehet kommunikálni vele, mert az áramkörben lévő parazita kapacitásokon van annyi szussz hogy meg lehessen szólítani az IC-t, kiolvasni a FUSE/LOCK biteket, signature-t,”
Nekem avrisp2 programozóm van és volt már áramkör, amit pusztán azzal megjavítottam, hogy ráraktam a programozót. Később olvastam, hogy 22 µF-os kapacitás van a programozó VCC és GND lábai között.
Ok, de ennek mi koze a parazita kapacitasokhoz? Parazita kapacitas az, ami a vezetok feluletei es a kulonbozo szigetelok (levego, PCB, stb) miatt kialakulo nemkivanatos kapacitas. Ezek pF nagysagrenduek, es semmit nem segitenek a tapellatasban. A 22 µF plusz kapacitas a tapon az egesz mas teszta. Egy rosszul meretezett tapon, egy gerjedo stabilizatoron segithet, az nem vitas.
Már nem is igazán tudom, kinek válaszoljak, köszönöm a segítséget. Annyit tudok mondani, hogy az IC lábain ott van az 5V és a GND, illetve az ISP-t már 2KHz-cel is próbáltam, de úgy sem működik. Továbbá egy másik ATMega8-cal még a FUSE bit kiolvasás szintjén sem kommunikál, de van egy ATMega48PA-m, amivel tökéletesen működik.
Ezek ismeretében mi lehet még a hiba?
Már nekem is volt szerencsém 2 ATMega328-hoz, ami szintén nem kommunikált - csere!
Sosem hasznaltam sem Dragont, sem vindozt, nem tudom, hogy miert nem mukodik neked. Ha azt mondjak, hogy tap hiba, akkor esetleg erdemes egy szkoppal (tarolos) merni a tapot. Lehet, hogy oszcillal, lehet, hogy neha leesik, akarmi.
Mármint oszcillátorról hajtani az MCU-t? Onnan megy.
Most már az ATMega48PA-val sem működik.
Nem lehet, hogy a Dragon romlott el? (kb. pár hónapos lehet) Atmel Studio-t és hozzá tartozó egyebeket már sokszor újratelepítettem. (Egyébként ha számít, win8.1-et használok)
De. A parazita kapacitásaid (tápszűrés stb), valamint a belső védődiódákon kinyer a MOSI/MISI/SCK/RESET vonalakból a kondikat töltve látszólagos tápfeszt. A chip olvasásakor kisebb áramok szükségesek, mint íráskor.
Tipikusan ez a hibajelenség.
Vcc, VccA, GND, GNDA bekötve? Aref/GND illetve a Vcc/GND közt ott a 100nF szűrőkondi?
Nincs eszköz a programozólábakon? Kapacitás sem? Reset/GND közt max 100nF kondi lehet, és a felhúzóellenállás 4k7-nél ne legyen kisebb.
TavIR-AVR: Ne keverjük a szezont a fazonnal. A parazita kapacitás nem ezt jelenti, sokadjára sem. A pontos definíciót nem ismétlem, Killbill teljesen jól megfogalmazta. A parazita kapacitás pF nagyságrendű, a benne tárolt energia csak arra elegendő, hogy nagyfrekvenciás szempontból problémát okozzon.
A parazita kapacitás nem az amire Ti használjátok. Nem különösebben lenne távközlés sem, ha az általad említett 100nF-os "tápszűrő parazita kapacitás" létezne. Hadd ne indokoljam meg hogy miért nem.
Szerintem kár összeveszni rajta.
A lényeg hogy a RESET lábon és annak védődiódáján keresztül a VCC-re is jut tápfesz ami a táp/hidegítő kondikat feltölti(programozótól is függ!). Amikor a programozó aktív akkor a RESET-et lehúzza, de a kondikban maradt szufla egy-egy rövid átvitelre fedezi az AVR tápfeszültség igényét, de egy FLASH olvasás/írás már túl sokáig tart. Persze a MOSI/SCK lábon is jöhet valamennyi, de ott már zavart okoz ha táplálni is kell az IC-t. De hiba alapján valószínűnek tartom, hogy az illetőnek valami a programozóban szállhatott el.
> De hiba alapján valószínűnek tartom, hogy az illetőnek valami a programozóban szállhatott el.
Igen. Meglehetősen sokat kell küzdeni, hogy egy AVR chip szétszálljon. Megfordult már vagy 30 chip a kezemben, egyik sem ment szét idáig.
Felraktam egy Megy8-at tisztán egy próbapanelre, hogy csak a 100nF-es kondik (meg egy 220µF-os a GND és VCC között a panel "szélén"), egy 4k7-es felhúzó ellenállás a resetnél legyen rajta (plusz egy 7.3728MHz-s oszcillátor, mert nem volt itthon IC-m, ami ne lenne külső órajelre állítva).
De így sem volt hajlandó programozni, már a FUSE bitekig sem jutottam el. Nem hinném, hogy a "kapcsolással" lenne gond, elég sok AVR-t már felprogramoztam már. Egyéb tipp, vagy valószínű, hogy a Dragon a hibás?
Elvetemült kedvemben rá szoktam mérni a programozóvezetékekre frekimérővel, vagy LED-el is ha más nincs kéznél, de azt lehetőleg jó nagy (min. 20kOhm) előtét ellenállással!
Frekvenciát nem fogok tudni mérni, de mit kéne látnom mérésekből?
A MOSI/MISO/SCK lábakon vadul villognia kell a LED-nek, amikor a programozó próbálkozik.
A RESET-et sima voltmérővel is tudod mérni, programozás közben 0V, egyébként tápfesz körül van. A hozzászólás módosítva: Jún 2, 2015
A MISO lábon nem villog, de máshol rendben van.
Ez akkor azt jelenti, hogy Dragon a ludas?
Valaszd le a MISO labat a Dragonrol es nezd meg, hogy az AVR oldalon villog-e a MISO. Ezzel azt tudod ellenorizni, hogy az AVR nem hajtja meg a MISO-t, vagy esetleg a Dragon zarlatos es ezert nem tudja az AVR mozgatni a labat.
Valami nem teljesen kerek itt.
A MISO láb leválasztva sem villog (végig 0V), viszont most megint rátettem a mega48PA-ra, azzal most meg működik...
Most van az a pont, amikor mar egy szkop jol jonne.
Az már jól jött volna párszor de értem, mire gondolsz.
Közben előszedtem egy régi áramkört, amin Mega8 van. Arról lekérdezi a FUSE biteket, de nem tudom őket módosítani, nem is programozza. Nem hiszem hogy hipp-hopp három Mega8 elromlik, de a 48PA-k gond nélkül működnek. Szkóp nélkül lehet még vele kezdeni valamit, vagy vigyem vissza gariba?
AVR-rel optocsatolón át P-csatornás MOSFET-tel kapcsolok elektromágnest.
Az induktív védelem P-csatorna esetén ugyanaz, mint N esetén (lásd kép)? GND - elektromágnes / fordított dióda - Tranzisztor Azért érdekel, hogy kikapcsolásnál egyirányba rúgnak-e. Sosem tudom, hogy ha lekapcsolom a tekercs áramát, merrefelé kezd nőni a feszültsége.
Képzeld el, hogy a tekercsben folyik az áram, pozitívtól negatív felé. Amikor el akarod venni tőle, a tekercs ugyanezt az áramot fenn akarja tartani. Tehát nem az a kérdés hogy merre nő a feszültsége, hanem az hogy milyen irányba folyhat az áram miután kikapcsolod. Ezért a kapcsolás jónak tűnik, mert az elektromágnesen "lefelé" folyó áram kikapcsolás után is ugyanarra folyik, és a diódán keresztül záródik a kör - azon felfelé fog menni.
Csak egy apróság: muszáj FET-et használni? Olyan nagy áram kell neki? A hozzászólás módosítva: Jún 2, 2015
|
Bejelentkezés
Hirdetés |