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
A legegyszerubb megszakitas(fogadas spi-rol es kikuldes usart-on) csak ennyi:
A tobbi valoban nem fer bele 20 ciklusba. A hozzászólás módosítva: Szept 18, 2012
Közben rájöttem, hogy miért nem működött az ATmega Fusebit Doctor: volt két nagyon apró szakadásom, ezért a start gomb megnyomására csak halványan felvillant a zöld led, majd visszaváltott pirosra. A szakadások javítása után egyből működött.
Aki hasonlóan bizonytalan a vezérlő felprogramozásában, annak feltöltöm, hogy nekem milyen ponyprog beállításokkal megy. (1MHz Internal Clock + EESAVE) Bocs a off-ért!
Látom sokakat megmozgatott a 20 ciklusos interrupt, komplett tudományos értekezés lett belőle. A lényeg az, hogy rövid interrupt + mindent a hardver intézzen. Aztán, ha 50 ciklus, még akkor sem dől össze a világ.
Barátok között is 2.56 Mbit/s az elméleti végsebessége (16MHz/50ciklus*8bit).
Mert joval erdekesebb tema, mint a "hogyan kuldjek ki a sorosportra bascomban" es hasonloak.
Az Arduino auto-reset feature-ével mit szoktatok csinálni? (USB connectnél megpiszkálja a Linux a DTR-t, amitől az Arduino resetel). 4 órát csesztem el azért, mert kihagytam a "sleep 1"-et miután a porthoz kapcsolódtam. (kapcsolódás -> reset -> boot loader indul -> valamivel elszöszmötöl 1 mp-ig, utána indul a programom az AVR-en).
Konkrétan egy RC tagra gondolnék: +5V <=> 120 ohm <=> RESET <=> 1 µF <=> GND Ha van szoftveres megoldás is a problémára meséljétek el.
Erről az jut eszembe, mikor három napig szívtam az ADC-vel.
beizzítom az ADC-t és a potmétert. A jel egy kissé zajos 0x180-0x2c0 között változik amikor a potit tekerem. Amellett, hogy a skála felét használja ki a jel, elmászik, vibrál, hol erősebben. hol gyengébben. Végignézek mindent, tökéletes, átnézem a forrasztásokat, tökéletes, viszont az ADC továbbra is csapnivalóan zajos. Vajon rossz a chip? A megoldás az lett, hogy potit a ADC0-ra kötöttem, viszont az ADC5-öt mértem szoftverből. Valami zaj átkerült ADC0-ról ADC5-re, ezért hellyel közzel követte az ADC5 is a potmétert. A fejemet vertem a falba.
Téged nagyon átejtettek a palánkon. SREG lementése és visszatöltése nélkül nincs interrupt. WinAVR-ben sem. De van egy jó hírem: ezt automatikusan megcsinálja. Méghozzá itt:
A hozzászólás módosítva: Szept 20, 2012
Dehogynem. Amennyiben a NAKED attributumot beallitod, meg a reti-t is neked kell a fuggveny vegere odairni.
Hát igen, így lehet. De nem sok embert ismerek aki feleslegesen állítgatna be ilyen makrókat,
csak azért hogy feleslegesen szívjon vele ha véletlenül elfelejtené. Összegezve, a gyengébbek és a sok hsz miatt össszezavarodottak kedvéért - egy ilyen már mindent megcsinál ami kötelező:
A hozzászólás módosítva: Szept 20, 2012
Hát igen, amiről egyszer megbizonyosodtunk, arrál már nem bizonyosunk meg újra, csak ha már túlvagyunk néhány átkáromkodott órán/napon..
Sziasztok!
Most ismerkedek az avr-ek világával! Megépítettem a kapcsolások között lévő avr programozót amiben nincs külön usb chip. Ez működik is, legalábbis a gép felismeri. De annál a lépésnél elbizonytalanodtam, hogy telepítsem fel az avrstudiot. Szerintetek a 4-et vagy az 5-öt érdemes használni ehez az égetőhöz? Kezdéshez Atmega8-at sikerült vennem olcsón és C-ben szeretném programozni mert abban van gyakorlatom.
Próbáltam mindkettőt, nálam 4-es jött be.
Esetleg egy linket tudnál adni ami tuti jó lesz ?
Hogy avrgcc-t előtte vagy utána kell telepíteni ? Valahol mintha azt olvastam volna hogy előtte kell. Egyelőre már lejött az avrstudio 5.1 próbálkozok azzal akkor.
itt
Szerintem utána.
Szerintem INNEN egyszerűbb lesz.
A programozót csak a 4-es AVR Studio támogatja. Az 5-ös pedig kezdőknek nem ajánlott.
Már felraktam a 4-est meg a winavr-t, de ha c kódot akarok fordítani akkor mindig ezt írja:
gcc plug-in: No AVR Toolchain installation found. The AVR GCC plug-in can still be used if you set up your own build tools. Gondolom valamit még hiányol, de mit ? Esetleg nincs valami leírás a telepítésről? A másik gondom pedig az hogy nekem a 20-as porton van a programozó, de csak a 9-es ig lehet kiválasztani. Ezzel mit lehet kezdeni ?
1: AVR Studio 4.19-et tegyél fel, ebbe benne van a gcc fordító is(AVR Toolchain). Letöltés: előző hsz.-em!
2: start->futtatás->devmgmt.msc; a porton jobbegér, tulajdonságok, speciális, itt beállítod a portot. Lehetőleg COM1-COM9 között legyen, a 2 jegyű portokat nem szereti. Ha COM4 fölé teszed akkor AVR Studio-ban is állítani kell(number of COM-ports to try).
Letöröltem mindent, feltettem a 4.19-et(már előzőleg is ez volt), de ugyanezt írja megint
Mi lehet a gond? Esetleg nem kell valamit állítani még ? Akkor elméletileg ehez a verzióhoz már nem kell a külön gcc ? Bocsi, hogy ennyit kérdezek, de már teljesen tanácstalan vagyok ezügyben. Eddig csak felraktam egy IAR-t és ment minden elsőre, lehet ki is fogom próbálni avr-re is.
Sziasztok. Abban kérném a segítségeteket, hogy szeretném felprogramozni a hvprog féle stk500-as Atmega8535-t. De nem tudom, hogy mik a fuse bit beállítások. Avr studioval szerettem volna (egy klón segítségével), de fogalmam sincs mit állítsak be. Előre is köszi a segítségeteket.
Közben sikerült megoldanom
Felraktam a Winavr-t és az avrstudio beállításaiban beállítottam, hogy hol van a gcc meg a makefile és egyből lefordult a program. Az égetőt is sikerült beállítanom, már villog is a led az asztalomon Köszönöm mindenki segítségét, majd ha valami nem világos akkor még kérdezek!
Pedig elvileg ezek automatikusak, amikor a projektet létrehozod, beállítja őket.
Ráadásul ez a beállítás - javítsatok ki ha nem - projekthez kapcsolódik, tehát egy másik projektben ismét állítanod kell hogy forduljon. De remélhetőleg tévedek...
Közben megtaláltam a hiba okát is. Volt egy teljes AVR csomag újratelepítésem(teljesen más okból),
ami az általad is leírt hibához vezetett és nem fordult le, hibaüzenet: "avr gcc nincs telepítve". A hiba oka hogy az AVR Studio 4.19-es verziója (de a 4.18 SP3 is) beépítve tartalmazza az AVR Toolchain támogatást, azaz egy C kód lefordításához ezt a csomagot fogja igénybe venni("Use AVR Toolchain" opció). Csak az a baj, hogy ez az AVR Toolchain nem települ automatikusan, tehát telepíteni kell. Ha WinAVR-t telepítesz akkor arra "kapcsol át" (USE WinAVR opció), de ha a WinAVR-t ELŐBB telepítetted fel(netes leírásokban ezt írják elő) akkor nem történik meg ez az átkapcsolás! De érdemesebb inkább az újabb, AVR Toolchain-t felrakni, a WinAVR évek óta nem frissült, a toolchain meg tartalmaz mindent amit elődje, a lefordított kód kisebb(optimalizáltabb), és a szokásos segédlet(html alapú "avr-libc reference") is megmaradt benne! A hozzászólás módosítva: Szept 23, 2012
A FUSE beállítást csak a SUT_CKSEL-nél kell módosítani, külső kristályra(ext crystal, high freq), ezzel működni fog! Érdemes még ezeket is beállítani: CKOPT, EESAVE, BODEN.
Egyébként én egy kicsit másképp oldottam meg. Egy ATTiny2313-ra írt AVR910-es programozó kódját módosítottam, hogy úgy viselkedjen mint ahogy a gyári STK500-ba épített társa is teszi. Ez így együttműködik az AVR Studio "AVR Prog" beépülőjével, így a gyári STK500.ebn rátölthető a 8535-re! A hozzászólás módosítva: Szept 23, 2012
Pontosan így van, minden projektnél bekel állítanom.
Akkor megpróbálom felrakni az AVR Toolchain-t az tényleg frissebb. Ezt kellene akkor felraknom ? Egyébként egész jó ez a fordító, eddig nemvolt még vele gondom. Már sikerült át portolnom a régebben msp430-ra megírt lcd kezelést, meg a hardveres i2c-t is sikerült belőni. Egyedül azt furcsállom, hogy csak 2 külső megszakítás van míg msp430-on az első két port megszakításképes volt.
Pontosan, azt kell felraknod. Csak regisztrálva megy ami persze nyomban el is veszik, dejóóó!
Az AVR architektúra kevés interruptot(pontosabban: belépési pontot) enged meg. Egyes AVR-ek(talán már a többség) azonban ismeri a portszintű interruptkezelést is. Ilyenkor az egész portra csak egy vektor létezik, tehát az interruptban kell vizsgálni hogy melyik láb okozta a meghívását, előtte pedig be kell állítani hogy melyik lábakat érzékelje. A hozzászólás módosítva: Szept 23, 2012
Már fel is raktam, és működik is
Pontosan így van megadva, hogy 1 port megszakítása 1 vektorban van. Nyomógombokat kezeltem megszakításból, na ez hiányzik. Atmega8-akat vettem kezdésnek, ebben úgy látom nincs még ilyen funkció.
Köszönöm a választ. Kifogom próbálni. Módosítgatni, még nem tudok atmelnél. Éppen ezért építgetek ilyeneket, mert ezt is szeretném megtanulni. Elsőkén az avr fusebit doktort csináltam meg (biztos ami biztos). Most pedig ezt. A gyári ebn feltöltésére pedig ezt csináltam meg, ma reggel már kínomban de valami nem ok, mert a signature byte-kat nem olvassa ki, és alapvetően semmit nem csinál vele. Míg a klón stk500 simán csinál mindent.
... És a "halott" feléledt . Köszönöm.
A hozzászólás módosítva: Szept 23, 2012
Sziasztok!
Egy olyan kérdésem lenne, hogy tudnátok ajánlani valami fasza fejlesztői panelt, amit készen megveszek árban elérhető, és linuxot is tudnék rajta futtatni? Képfeldolgozásról lenne szó, tehát nem baj ha van benne erőtartalék |
Bejelentkezés
Hirdetés |