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
Még esélyesebb lett, hogy vége van. A reset lábra kötött COM1 vezeték -10V-on volt a földhöz képest... Ezek szerint valamit tuti elnéztem a szintillesztőnél.
Az ADC-rol ezt a cikket olvassad el:
AVR ADC
vzoole: neked is és Fizikus-nak is köszönöm a linkeket!
Beleásom magam, remélem megértek mindent, ha esetleg valami még homály lesz, kérdezek!
Sziasztok.
Tudom, hogy amatőr kérdés, de nem találom rá a választ. Van egy Atmega8515 mikrokontrollerem, és egy 8MHz-es külső kvarcról szeretném neki adni az órajelet. A fuse bitek beállításánál az alábbi listából melyiket kéne választanom?
Ext. Crystal/Resonator
Azon belül Mid vagy High. Mindegy, mert pont határon van. A Start up time legyen a leglassabb, ha nem kritikus az alkalmazásodban (általában nem szokott). Ext. Crystal/Resonator Mid freq, Start-up time: 16K CK + 64ms A hozzászólás módosítva: Dec 21, 2013
Sziasztok! Segítséget szeretnék kérni egy AtMega644 felprogramozásában. Keszthely, Hévíz közelében tudna segíteni valaki ebben? Nincs saját égetőm és még nem is csináltam ilyet, ezért is kellene a segítség. Előre köszönöm mindenkinek!
Sziasztok!
Módosult annyival a dolog, hogy a mellékelt kapcsolásban lévő AVR-t kellene ugye felprogramozni és van hozzá egy ISP csatlakozó is a kapcsolásban. Mellékeltek hozzá egy egyszerű LPT portos csatlakozást. PonyProg-gal megpróbálkoztok úgy, hogy csak simán, a mellékelt LPT-ISP átalakítóval rákötöm LPT portra és úgy programozom?
Sziasztok
Segítség kellene. Mérem a hőmérsékeletet egy NTC-vel. Ha 3 fok alá esik, azt szeretném ha pl egy led felvillanna 3 mp-ig. De ha a hőmérséklet továbbra is 3 fok alatt marad, akkor ne villanjon ki újra 3 mp-ig. Lényeg, hogy hogyan tudnám megoldani, hogy ez a feltétel csak egyszer futna le a főprogramban? (Mert ha simán a while-ba teszem be egy if feltétellel, akkor a program végrehajta, mindig, amikor a hőmérséklet 3 fok alá esik.)
Amikor felvillan a led egy flag-et 1-re allitasz es csak akkor nullazod amikor ismet megemelkedett a homerseklet. A villanas feltetelenel meg figyeled a homersekletet es a flag-et is.
Szia!
Írtam egy programot, ami egy H-haddal vezérel egy kis DC motort,pwm-el. Bluetooth modullal küldöm neki a pwm értékét. Elindítom a motort, de egy idő után reset lesz a vége. JTAG-al csatlakozom a Mega16-hoz. Ha csatlakozom az MCU-hoz, akkor mindig az External Reset Flag és JTAG Reset Flag van 1-ben. A JTAG Res Flag-ot még értem, mert csatlakozáskor a JTAG reseteli az MCU-t, de az External Reset hogy kerülhet oda ? Ha csak csatlakozom és bontom a kapcsolatot, akkor is megjelenik az External Reset Flag. Viszont ha csatlakozva vagyok és úgy futtatom a programot, és Resetelődik az áramkör, akkor újra kell csatlakoznom, de akkor már csak az adott két bit aktív, de mégis volt reset. Mikor olvassam ki ? Alkalmas ez a módszer egyáltalán az MCUCSR ilyesféle kiolvasására? Üdv Kiborg
Külső reset:
- nincs 4k7..10k felhúzóellenállás - zajos a resetkábel (közösen megy a motor táppal, és induktív zajt szed össze), - nincs ott a GND és a Reset közt a 100nF kerámiakondi. Egyéb reset tipp: - BOD be van kapcsolva? 5V esetén 4.3V-ra, 3.3V esetén 2.7V-ra. A tápfeszmegrántás így kimutatható (BOD resetet is jelez az MCUSR).
Szia!
-felhúzóelenállás van, értéke:10kohm -ott van a 100nF-os hidegítőkondi a GND és a Reset között. -A motor és a vezérlő külön tápról megy, csak a GND a közös. A vezérlő 3-5 cm-re van a motortól, viszont a felhúzóellenállás és a hidegítő kondi a vezérlő közvetlen közelében van, a legrövidebb vezetékkel. Megpróbálom a BOD-t. Amúgy így reális képet az a JTAG-al való kiolvasás Reset után? Kiborg Kiegészítés: megnéztem, 3,3Von használom, és engedélyezve volt, de nem volt aktív az MCUCSR-ben a BOD jelzés. A hozzászólás módosítva: Dec 25, 2013
Ha használsz megszakítást, minden ISR rutin létre van hozva?
Szia!
Igen.Illetve nem. ASM-ben csinálom. Csak az van létrehozva, ami kell. A többi csak egy reti-vel lezárva. Viszont létezhet, az hogy a motor kapcsolási frekvenciáját módosítom, akkor megszűnik a jelenség?
A hozzászólás módosítva: Dec 25, 2013
Sziasztok!
Atmega 128-hoz nem tudok belépni programozás módba. MOSI, MISO, SCK, RST és a föld a helyén van, kimértem. VTG nincs rávezetve a panelre a programozóról, azt kap külön. A RESET lábon jelenleg nincs semmi csak a programozó RST-je. Továbbá a VCC és GND is mindenütt ott van, ahol kell az Atmega 128-nak táplálás. Az Uc még szűz új, most menne először. AVR Studio 4 + STK500 amivel próbálkozok. Mit rontottam el ? köszi! A hozzászólás módosítva: Dec 26, 2013
Nem MOSI/MISO hanem PDI/PDO lábak kellenek (ami a sorosporttal közös!).
És a PRG láb is vagy lebeg, vagy a Vcc-re kötendő.
Nagy naívan attiny 13 és mega 8 mintára gondolkodtam ezek szerint.
Na majd esztétikusan vezetékezek a panelen. Viszont nem látok "PRG" lábat....... ? A "PEN" az vcc-n van, ha arra gondolsz. Köszönöm a segítséget! A hozzászólás módosítva: Dec 26, 2013
Szia !
Nekem fura ez a megszakítás kezelés. Nem futtattam le,de működik ez az összevont reti lezárás ? Így szoktam kezelni asm-ben:
Szia!
Nekem meg a tied a fura. ![]() De a tied is tökéletes. Szerintem. Mindent meg lehet oldani többféleképpen is ![]() Üdv Kiborg ui:közben rájöttem hogy nagyon nagy valószínűséggel valami induktív/kapacitív tüske/zavar indította újra a vezérlőt, mert most távolabb helyeztem (anélkül, hogy a vezetékezést változtattam volna) megjavult. Erősen elgondolkodtam optocsatolós leválasztáson. Kérdéses az, hogy mágneses tér vagy a PWM miatti impulzus zavarta össze. Mert mágneses tér ellen nem véd az opto ![]() A hozzászólás módosítva: Dec 27, 2013
Elég nagy mágneses tér kellene ahhoz hogy megzavarja az AVR-t. Nem ezért indul újra!
Egyrészt a PWM miatt nagy áramcsúcsok alakulhatnak ki, ami feszültségesést okoz az AVR tápellátásánál(is). Elég ha csak a földpont közös! A profik kondival és induktivitással védik meg az AVR-t az ilyesfajta tranziensektől. A másik hogy a nagy áram miatt kialakuló változó mágneses térben a közeli, párhuzamosan futó vezetékek összeszedik az impulzust és ez simán tud RESET-elni, de még ocsmányabb dolgokra is képesek. Építettem egy "csapj a falra!" játékot nagy méretben. A nyomógombokhoz és a körülöttük elhelyezett LED-ekhez 4 méteres vezetékpárok mentek. A LED-es vezetéken folyó kb. 120mA-es áram miatt a vezérlő megbolondult: a nyomógomb vezetékén megjelent a LED-sor felkapcsolásakor egy impulzus és a vezérlő azt hitte hogy lenyomták a gombot. Ezen 100Ohm-os felhúzó ellenállás tudott csak segíteni.
Nem teszi a dolgát !
![]() ![]()
Szia!
Mit értesz "összevont reti lezárás"-on? Milyen a "nem-összevont"? Csak szólok hogy amit ide beszúrtál, ezt szokás használni ha már valaki asm-ben ír programot. Mást nem is ismerek.
Szia!
Diassemblert nem néztem, JTAG-al ellenőriztem. Ha bármelyik megszakítás meghívódik, akkor a listában szereplő megszakítás cimke utáni első utasításra ugrik, ami egy reti. Így le van zárva és rendben vannak, másrészt meg ott csak azok vannak amik nincsenek használva,beállítva, így elméletileg meg sem hívódhatnának. zombee: akkor megpróbálom az optocsatolós kivitelezést, bár nem nagyon fűlik hozzá a fogam. A táp most is külön van választva (AVR 3,3V (4db 1,2V akku és 3,3V LDO, motor és H híd:6V akku), egyedül a GND a közös. Akkor csak ez az egy közös pont miatt is csinálhatja a cirkuszt... pedig nincs nagyon hosszú vezetékezés, max 10-12 cm.
Én is ezt használom,de kiborg így oldotta meg,szerintem rosszul,részlet a programból:
Egy 100uH tekercs az LDO és az AVR VCC közé, és "nagy" kondi a táplábak közvetlen közelébe.
Minimum 1-2.2µF kerámia ha SMD, 10µF ha tantál, 100µF ha mezei elkó.
Csak a fordítás után nem lesz meg az összes címke,csupán az első.Nem állítom,hogy ez okozza a hibát,a rossz megszakítás kezelést jeleztem
![]()
Hát ez az utóbbi egy pofon a sz*rnak. Ha ez lenne a program LEGELSŐ 21 sora (nem valószínű),
azt a programozót úgy kivágnák hogy Föld körüli pályára áll... Szerintem azért nem lesz meg a többi címke, mert az ÖSSZES címke ugyanoda mutat, arra az egy szerencsétlen "reti"-re. Ugyanis a címke az nem része a programkódnak, csak egy szimbólum amit a fordító egy valós cím-re fordít le. Amit először megadtál (Bővebben: Link) az a helyes és szabványos formátum interrupt kezelésre. Csak arra kell figyelni hogy más AVR esetén más lehet a sorrend(pl. ATMega16<-->ATMega32), illetve 16KB vagy nagyobb flashmemóriájú IC-k esetén az interrupt vektorok kizárólag páros címen vannak("rjmp" helyett "jmp", "reti" helyett "reti + nop". A hozzászólás módosítva: Dec 28, 2013
|
Bejelentkezés
Hirdetés |