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
Nekem 3 darab cerkaelemről megy a hőmérő ~3 napig. Ezek olyan elemek, amikre a fényképezőgép azt mondja, hogy már lemerült... Egyszerre 4 digit megy.
yoman: Na meg nem 7805-tel kellene stabilizálni 9V-os elemről egy AVR-es topikban...
Azért a ceruzaelem lemerülten is többet tud, mint egy új 9V-os elem.
Meg hát a stabbal elfűti ez elem fele teljesítményét.
Itt esetleg láthatsz néhány példát az avrdude használatára. Linux alatt is működik szerintem amit ott látsz. Esetleg man avrdude.
Milyen programozóval próbálkozol? c
Sajna a Dragon-t nem ismerem, meg kell nézni a leírásában. Kiforrasztani csak forrólevegős pákával lehet, abból is csak olyan fejjel ami oldalas...
Én inkább megpróbálnám benn a panelben rákötögetni, mert akkor csak a kvarckristályt kell kiforrasztani és az FTDI-t lekötni. Ugye azzal hogy kiforrasztod, még nem vagy kész, rá is kell kötögetni a 20 szálat... Ha benne hagyod a csipet, akkor a kimeneti portokra egyből rámehet a szabványos HVPP kimenet: A "DATA" a PORTB-re és a PORTC1:0-ra, a "CONTROL" a PORTD-re. A BSEL2 a PORTC.2-re, a RESET és az XTAL1 szerintem egyértelmű...
Elemes táplálásnál NEM(!!!) használunk 7805-öt, semmilyen körülmények között. Nem csak a teljesítmény felét fűti el, hanem üresbe is fogyaszt rendesen.
De a kolléga már megválasztolta: 3 vagy 4 ceruzaelem, stab IC nélkül! Ajánlott akksit használni. Egy olcsó szén-cink elemnél többet bír, ráadásul a kisebb fesz miatt 4-et is betehetsz és akkor párosan vannak, megvan a Feng Shui... Egy LED-es kijelző pedig értelemszerűen hamar lemeríti az egészet. Talán LCD-vel kéne próbálkozni. Idézet: „De a kolléga már megválasztolta: 3 vagy 4 ceruzaelem, stab IC nélkül!” Ezzel azert picit had vitatkozzak Az elem vagy akksi egy kemikalia, egyaltalan nem garantalt a stabil kimenet, csak esetleg ugy alakul, hogy a kivant feszultseg es aram szintet meguti. Lehet mukodik az aramkor X ideig, de mi van ha nem? Ambar egy 7805-os szerintem sem jo megoldas, egy LDO azert nem art ilyen elemes megoldasokhoz velemenyem szerint.
Csakugyan célszerűbbnek tűnik az áramkörben hagyni és ott megpróbálni rákötni azt a bizonyos 20 vezetéket.
Ugyanakkor egy 32 lábas tqfp kiforrasztása gyerekjáték egy épkézláb forrasztópákával. Lényeg, hogy elég ónt tegyünk a lábaira. Én már egy tucat atmega8/48 -at forrasztottam ki, a visszaforrasztásuk utána pedig rendre hibátlanul működtek. Akinek nem elég gyors a keze az hajlítson vastag rézvezetékből egy keretet amit a tokozás lábai köré tud tenni. Jó sok ónt tegyünk a tok lábaira, majd azt a rezen keresztül melegítsük fel. Csipesszel gyorsan fel kell kapni, amíg meg van olvadva az ón.
Ezért kell rákötni minden táp bemenetre az AVR-en egy 100nF os kondit, ami kiszűri a zajt. Az elemre meg egy jó nagy elkót kell tenni ami pufferként szolgál az elemnek.
Fejemet rá, hogy remek stabilitása lesz így az áramkörnek. (Az én elemes kütyüm eddig még nem produkált semmi jelet, ami arra utalna, hogy a 3db AAA elemes táplálással gond lenne) Ami a rövid élettartamot illeti. Egy 7 szegmenses LED kijelző simán fogyaszthat 70-140 mA -t is, attól függően, hogy mennyire világosan hajtjuk meg a szegmenseket. Ez rengeteg. Ha mindenképpen elemről kell mennie és folyamatosan kell világítani a kijelzőnek, akkor nem nagyon sok mindent lehet tenni. Van persze remek power save üzemmód az AVR-ekben, de a kijelző fogyasztása mellett, az sokat nem dobna a latba. Én mindenesetre átgondolnám a koncepcióját ennek a dolognak. Ha a kijelzőnek nem kell mindig világítani, akkor sokkal nagyobb játéktér lehetne. (Elmegy standbyba, stb.)
EZEN a panelon van egy jtag programozó és azt szeretném használni.
Próbáltam "tronic" ceruza akkuval is. Elvileg 2000mAh-s akkuk, gyakorlatilag a fentebb említett elemekkel tovább bírta az áramkör. De lehet, hogy ez amiatt volt, hogy ugyanúgy, csak három cellát használtam...
trudnai: Szerintem egy LDO nem oldja meg a gyors lemerülést elemes táplálás esetén, ugye a maradék feszültséget ugyan úgy elfűti.
Esetleg még kapcsolóüzeművel lehet próbálkozni, pl. 34063-al. Ez nem fűti el, bár kétségtelen hogy neki is vannak veszteségei. Elemes táplálásnál érdemesebb az AVR-nek minél kisebb feszt adni és minél kisebb órajelen járatni. Persze ha továbbra is LED-kijelzőt kell tekerni akkor minden próbálkozás hasztalan, pár nap alatt úgyis lemeríti. Valamire való AVR-ek 1.8V-on is mennek, azokat lehet 2 darab ceruzaelemmel vinni. Hacsak nem analóg mérésre lesz, akkor nem kell túlbonyolítani stabilizátorokkal.
Építettem egy órát még tavaly. Lényege egy akvárium lámpa vezérlése éjjel-nappal szimulátorral, 4 kapcsolási ponttal amit be lehetett állítani. Ha elmegy az áram, mindent lekapcsol, még a kijelzőt is. Egyedül az óra funkció megtartására van beépítve egy BIOS-elem, ezzel kb. 2 hónapig bírja 500kHz-en, mindenféle suspend meg egyéb funkció nélkül. Természetesen a BIOS-elem feszültsége sincs stabilizálva...
Sziasztok! Délelőtt mégis kikaptam a procit egy hőfokszabályzós hőlégfúvóhoz készített adapterrel, pikk-pakk kint volt. Kibogarásztam melyik lábak kellenek a HVPP-hez atmega168-hoz Dragonnál. Kipreparáltam a procit a próbapanelre és bekötöttem a Dragonba ahogy írták. 5× átnéztem, végigmértem keresztbe-kasba. Kiolvasta, a Fuse biteket, eszerint a DWEN (DebugWire) be volt kapcsolva (ahogy Zombee tippelte) ami az egész kizárást okozhatta. Kikapcsoltam, visszaírja, de nem tudja ellenőrizni és vissza sem olvassa, megint be van kapcsolva. Device ID-t sem olvassa. Próbáltam AVR Studio 4-el és 5-tel. Annyit még megnéztem, hogy a Reset lábat megkínálja programozáskor 12V-tal. Mi a franc lehet a baja??? Tényleg kicserélem, de most már kíváncsi vagyok...
Próbáltal device Erase-t?
Ha egyszer bekapcsolod a Debug Wiret-t azt már nem olyan egyszerü ujra kikapcsolni (ISP-n állitolag nem is lehet).
Ha követted volna, akkor tudnád, hogy nem is ISP-n próbálkozott, hiszen arra rájött ő is, hogy azzal nem ment.
HVPP-vel próbálta meg. Ja igen zsezse444: most jut eszembe, hogy Dragonod van. Az legjobb tudomásom szerint képes ugye debugwire-on debuggolni. A következőt kell tehát tenned: Csinálsz egy projektet, ahol megmondod, hogy a dragonnal akarod debuggolni az atmega168-t. Lefordítasz bármilyen kódot, majd elindítod a debuggolást. Ha minden jól megy, akkor feltöltoi a kódot és elindul. A debugwire debuggoláshoz ugyanúgy kötöd be a dolgokat, mintha ISP-n programoznál. Arra ügyelj csak, hogy a reset lábat minimum 10kOhm-mal kösd tápra, kondenzátort pedig ne tegyél a reset vonalra. Ha megint szeretnéd ISP-n programozni, akkor pedig bemész a debug/avr dragon options-ba majd disable-ed a debugwire-t. Az én Jtag IceMK2 -mnél így működik legalábbis.
Azt nem irtad ide, hogy hogyan csatlakoztatod ilyenkor az áramkört. (JTAG?)
Egy "Erase Device" - t próbálj még ki rajta. Utána állíthatod a FUSE biteket. A neten azt találtam hogy egyedül HVPP-n és debugWire-n tudod kikapcsolni a DWEN-t. ITT írnak róla egy oldalt(debugWire), de tutira ki lehet HVPP-n is kapcsolni!
Egyébként a Dragon képes debugWire-re is, de a HVPP-t azért ajánlottam mert ez a ritkábbik eset, gyakoribb az órajelforrás elállítása. Egyébként szép munka(mármint a bekötögetés), mintha csak én csináltam volna. Gratulálok!
Ok. Attól hogy kiabálva linkelsz még nem biztos, hogy jobb lesz.
JTAG programozóval szeretnéd programozni a panelodon lévő másik Atmegát. No és a programozó mit mond magáról? Milyen felülete van? Soros? USB? lsusb kimenete? Nem ismerem a panelodat így segíthetnél, hogy segíthessek! Remélem nem vagyok túl értetlen!
Az adott panelen egy FTDI van és egy ATMega16, ezek alkotják a JTAG Debugger-t. Csak meg kellene nézni a képet...
Idézet: „A debugwire debuggoláshoz ugyanúgy kötöd be a dolgokat, mintha ISP-n programoznál. Arra ügyelj csak, hogy a reset lábat minimum 10kOhm-mal kösd tápra, kondenzátort pedig ne tegyél a reset vonalra.”
Bocsi, nem kiabálni akartam, csak azt, hogy jól látható legyen, hogy az egy link.
És zombee jól írta: A jtag USB-n van a számítógéphez csatlakoztatva, van rajta egy FT232 USB/UART IC, majd egy ATmega16-os. Ezek alkotják a JTAG debuggert. Ezzel lehet programozni/debuggolni a panelon lévő ATmega128-ast.
Néztem én. Csak nem tudtam kivenni belölle, hogy milyen JTAG debugger lehet az rajta.
Tehát akkor a Te JTAG debuggered a /dev/ttyUSB? alatt érhető el. Nekem nem volt még ilyen debuggerhez szerencsém. Nincs véletlenül ehhez a debuggerhez több infó arról, hogy hogyan is kommunikál a PC felé? Esetleg kapcsolási rajz? Csak azért kérdem mert az avrdude-nek meg kell mondani, hogy milyen programozó van az adott porton. A -P /dev/ttyUSB0 megadja a portot de valamit a -c "programozó" is kíván szerintem.
Próbáltam törölni mindent és utána FUSE biteket beállítani, de semmi. Megpróbálom még debugWire-t rátenni még így kipreparálva. Eszerint fogom bekötni AVR Dragon leírás /Devicesheet: SCKT3200A2 (itt volt a HVPP bekötés is). Köszi, jó kis gányolás volt bekötni, kellett pár feles mire nem remegett a kezem!
Csak halkan jegyezném meg hogy én már a #1031373 hozzászólásomban leírtam hogy valószínűleg a DebugWire. Egyébként meg nyomtál volna egy debugot az AVR studioban, és ha feltölti a programot, akkor megvan az egyértelmű bizonyíték.
Igaz Luxmanpower, jogos. Csak arra gondoltam, hogy a debugWire-ra biztos nem klikkelhettem még véletlenül sem, mert arról végképp nem volt semmi fogalmam... Ennyire azért nem klikkelhettem össze-vissza. Talán a panelt mikor összerakták akkor kapcsolhatták be? Pedig egyszerűbb lett volna... viszont nem ihattam volna a feleseket a kézremegésre!
Sajnos csak annyi infó van róla, ami abban a PDF-ben van. AVR Studio-ban JTAG ICE programozót kell kiválasztani.
Windows-ban COM portként jelenik meg a programozó.
Ahogy elnézem ezen linken lévő lehetséges -c paramétereket, programozókat, a jtag1, jtag1slow esetleg jtagmkI jöhet szóba. Igy az alábbi parancsot gondolom jónak:
avrdude -P /dev/ttyUSB0 -c jtag1 ... A ... jelzi, hogy még pár paramétert meg kell neki adni. Remélem közelítünk a megoldáshoz.
met@MET-K50AB:~$ avrdude -P /dev/ttyUSB1 -c jtag1 -p m128
avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.03s avrdude: Device signature = 0x1e9702 avrdude: safemode: Fuses OK avrdude done. Thank you. Már csak azt nem tudom, hogy mit kell beírni a "-U" kapcsoló után.
-U flash:w:main.hex
main.hex helyére azt amit be szeretnél írni. w azt jelenti, hogy write, azaz írás. |
Bejelentkezés
Hirdetés |