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   483 / 840
(#) Reggie válasza sikolymester hozzászólására (») Szept 18, 2012 /
 
A legegyszerubb megszakitas(fogadas spi-rol es kikuldes usart-on) csak ennyi:

  1. push r1
  2. in r1,SPDR
  3. out UDR,r1
  4. pop r1
  5. reti


A tobbi valoban nem fer bele 20 ciklusba.
A hozzászólás módosítva: Szept 18, 2012
(#) koadi válasza koadi hozzászólására (») 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!
(#) csabeszq válasza Reggie hozzászólására (») Szept 18, 2012 /
 
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).



(#) Reggie válasza csabeszq hozzászólására (») Szept 18, 2012 /
 
Mert joval erdekesebb tema, mint a "hogyan kuldjek ki a sorosportra bascomban" es hasonloak.
(#) csabeszq hozzászólása Szept 18, 2012 /
 
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.



(#) csabeszq válasza koadi hozzászólására (») Szept 19, 2012 /
 
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.
(#) zombee válasza sikolymester hozzászólására (») Szept 20, 2012 /
 
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:
  1. 80:   0f b6              in     r0, 0x3f     ; 63
  2. 82:   0f 92              push   r0
A hozzászólás módosítva: Szept 20, 2012
(#) Reggie válasza zombee hozzászólására (») Szept 20, 2012 /
 
Dehogynem. Amennyiben a NAKED attributumot beallitod, meg a reti-t is neked kell a fuggveny vegere odairni.
(#) zombee válasza Reggie hozzászólására (») Szept 20, 2012 /
 
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ő:
  1. #include <avr/interrupt.h>
  2. ISR(INT0_vect)
  3. {
  4. }
A hozzászólás módosítva: Szept 20, 2012
(#) koadi válasza csabeszq hozzászólására (») 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..
(#) balux33 hozzászólása Szept 21, 2012 /
 
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.
(#) dB_Thunder válasza balux33 hozzászólására (») Szept 21, 2012 /
 
Próbáltam mindkettőt, nálam 4-es jött be.
(#) balux33 válasza dB_Thunder hozzászólására (») Szept 21, 2012 /
 
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.
(#) dB_Thunder válasza balux33 hozzászólására (») Szept 21, 2012 /
 
itt
Szerintem utána.
(#) zombee válasza balux33 hozzászólására (») Szept 21, 2012 /
 
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.
(#) balux33 válasza zombee hozzászólására (») Szept 21, 2012 /
 
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 ?
(#) zombee válasza balux33 hozzászólására (») Szept 21, 2012 /
 
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).
(#) balux33 válasza zombee hozzászólására (») Szept 21, 2012 /
 
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.
(#) michael67 hozzászólása Szept 21, 2012 /
 
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.
(#) balux33 hozzászólása Szept 22, 2012 /
 
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!
(#) zombee válasza balux33 hozzászólására (») Szept 23, 2012 /
 
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...
(#) zombee válasza zombee hozzászólására (») Szept 23, 2012 /
 
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
(#) zombee válasza michael67 hozzászólására (») Szept 23, 2012 / 1
 
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
(#) balux33 válasza zombee hozzászólására (») 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.
(#) zombee válasza balux33 hozzászólására (») Szept 23, 2012 /
 
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
(#) balux33 válasza zombee hozzászólására (») 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ó.
(#) zombee válasza balux33 hozzászólására (») Szept 23, 2012 /
 
ATMega48-ba pl. van ilyen.
(#) michael67 válasza zombee hozzászólására (») Szept 23, 2012 /
 
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.
(#) michael67 válasza michael67 hozzászólására (») Szept 23, 2012 /
 
... És a "halott" feléledt . Köszönöm.
A hozzászólás módosítva: Szept 23, 2012
(#) prody hozzászólása Szept 24, 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
Következő: »»   483 / 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