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   343 / 840
(#) zolee1209 válasza Ricsi89 hozzászólására (») Júl 23, 2011 /
 
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...
(#) Ricsi89 válasza zolee1209 hozzászólására (») Júl 23, 2011 /
 
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.
(#) covek válasza Petroimro hozzászólására (») Júl 24, 2011 /
 
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
(#) zombee válasza zsezse444 hozzászólására (») Júl 24, 2011 /
 
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ű...
(#) zombee válasza yoman917 hozzászólására (») Júl 24, 2011 /
 
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.
(#) trudnai válasza zombee hozzászólására (») Júl 24, 2011 /
 
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.
(#) sikolymester válasza zombee hozzászólására (») Júl 24, 2011 /
 
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.
(#) sikolymester válasza trudnai hozzászólására (») Júl 24, 2011 /
 
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.)
(#) Petroimro válasza covek hozzászólására (») Júl 24, 2011 /
 
EZEN a panelon van egy jtag programozó és azt szeretném használni.
(#) zolee1209 válasza zombee hozzászólására (») Júl 24, 2011 /
 
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.
(#) zombee válasza zolee1209 hozzászólására (») Júl 24, 2011 /
 
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...
(#) zsezse444 válasza zombee hozzászólására (») Júl 24, 2011 /
 
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...
(#) sikolymester válasza zsezse444 hozzászólására (») Júl 24, 2011 /
 
Próbáltal device Erase-t?
(#) Massawa válasza zsezse444 hozzászólására (») Júl 24, 2011 /
 
Ha egyszer bekapcsolod a Debug Wiret-t azt már nem olyan egyszerü ujra kikapcsolni (ISP-n állitolag nem is lehet).
(#) sikolymester válasza Massawa hozzászólására (») Júl 24, 2011 /
 
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.
(#) Massawa válasza sikolymester hozzászólására (») Júl 24, 2011 /
 
Azt nem irtad ide, hogy hogyan csatlakoztatod ilyenkor az áramkört. (JTAG?)
(#) zombee válasza zsezse444 hozzászólására (») Júl 24, 2011 /
 
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!
(#) covek válasza Petroimro hozzászólására (») Júl 24, 2011 /
 
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!
(#) zombee válasza covek hozzászólására (») Júl 24, 2011 /
 
Az adott panelen egy FTDI van és egy ATMega16, ezek alkotják a JTAG Debugger-t. Csak meg kellene nézni a képet...
(#) sikolymester válasza Massawa hozzászólására (») Júl 25, 2011 /
 
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.”
(#) Petroimro válasza covek hozzászólására (») Júl 25, 2011 /
 
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.
(#) covek válasza zombee hozzászólására (») Júl 25, 2011 /
 
Néztem én. Csak nem tudtam kivenni belölle, hogy milyen JTAG debugger lehet az rajta.
(#) covek válasza Petroimro hozzászólására (») Júl 25, 2011 /
 
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.
(#) zsezse444 válasza zombee hozzászólására (») Júl 25, 2011 /
 
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!
(#) luxmanpower válasza zsezse444 hozzászólására (») Júl 25, 2011 /
 
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.
(#) zsezse444 válasza luxmanpower hozzászólására (») Júl 25, 2011 /
 
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!
(#) Petroimro válasza covek hozzászólására (») Júl 25, 2011 /
 
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ó.
(#) covek válasza Petroimro hozzászólására (») Júl 25, 2011 /
 
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.
(#) Petroimro válasza covek hozzászólására (») Júl 25, 2011 /
 
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.
(#) sikolymester válasza Petroimro hozzászólására (») Júl 25, 2011 /
 
-U flash:w:main.hex

main.hex helyére azt amit be szeretnél írni.
w azt jelenti, hogy write, azaz írás.
Következő: »»   343 / 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