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   500 / 840
(#) Ricsi89 válasza RD49 hozzászólására (») Dec 16, 2012 /
 
Az az ellenállás áramkorlátozó szerepet tölt be. A proci egy kimenete csak kb 20mA-es áramot tud kiadni károsodás nélkül. Ha ennél nagyobb áramot akarsz leszedni róla, akkor tönkremegy az adott kimenet, esetleg az egész port.
Ha az a led 2V-on pl 10mA-t vesz fel, és te megtáplálod 5V-al, akkor azon a leden sokkal több áram folyik át, ami már károsíthatja a proci kimenetét. Itt az alapvető elektronikai ismeretekkel van a gond, előbb azokat kellene megtanulni, mielőtt ilyen bonyolult dolgokba belekezdesz.
(#) RD49 válasza Ricsi89 hozzászólására (») Dec 16, 2012 /
 
Informatika szakra járok,tehát főleg programozáshoz értek,ezért is érdekel ez.
Elkezdem akkor olvasgatni az alapokat.

Köszi az érthető választ!
(#) tecsa válasza RD49 hozzászólására (») Dec 16, 2012 /
 
Vagy veszel egy előre elkészített fejlesztő környezetet.

Hestore-ban T-bird néven találod
A hozzászólás módosítva: Dec 16, 2012
(#) RD49 válasza tecsa hozzászólására (») Dec 16, 2012 /
 
Arduino,stb? felejtős...drága,és nem is szívesen használnám,hasonló hatása lenne rám mint amikor az iskolában Lego Mindstorms-al kellett bűvészkedni.És nem pozitív az a hatás.
Jobban szeretem magam összerakni amit csak lehet.
A hozzászólás módosítva: Dec 16, 2012
(#) TavIR-AVR válasza RD49 hozzászólására (») Dec 16, 2012 /
 
Ne vesd el ezeket. Tanulás 0. lépsében hányan szívtak a HW miatt?
Az Arduino esetén külön könnyebbség: a HWen bármilyen SW-vel készült prg futtatható. Mega8/168/328 chipek kezdőnek ideálisak. Au alappanel: usb illesztő, processzor, tápellátás...

Ja, túl egyszerű és nem azzal töltöd az időt hogy hibakeresel? Ezt is lehet .
A második, stb áramkört meg ezen rajzok alapján simán tovább lehet vinni....

Arduinó drága?
Hát... Nagy korlátokba futszt be később + az időd ha ingyér' van, akkor igaz csak...
(#) sikolymester hozzászólása Dec 16, 2012 /
 
Szerintem pedig legjobban tényleg akkor lehet tanulni, hogyha az ember maga dugdossa össze a próbapanelen a dolgokat. Persze ez lesz a legdrágább is egyben, a sok kinyírt alkatrész miatt
(#) Topi válasza sikolymester hozzászólására (») Dec 16, 2012 /
 
@Sikolymester: Szerintem is.

@RD49
T-Bird: Már komolyabb HW környezetet kapsz, led-ki/bekapcsolásra nagyon-nagyon kezdésre nem biztos hogy ajánlott, ha a programozást is tanulni kell. Pozitívum, hogy mindent működőképesen egybe megkapsz, és tuti hogy csak a SW szúrod el, ha valami nem jó.

Arduino: Egyáltalán nem támogatom kezdésre és folytatásra sem. Sem az általa nyújtott class-okba szervezett programnyelvet (ami kezdésre abszolút alkalmatlan) se a HW-t, mert a programozás ugyan biztos pont de maga a HW és a SW környezet pont a lényeget rejti el, amit használni kell tudnod bármikor is másra mész tovább.

Dugdosós próbapanel + STK/mkII/Doper/Bármi amit választasz:
A legolcsóbb megoldás. Azt az IDE-t és fordítót kell használnod amit továbbfejlődésedkor is használni fogsz, akár AVR-ezel, akár mész tovább majd ARM felé.
Nem köt semmi, nem SMD, olyan procit választasz amit akarsz.

Szóval az én válaszom egyértelműen: Dugdosós panel + atmega88 + pár kapcsoló + pár led + egy választott programozó (hekit-301, stk500, mkII, amit jónak látsz.) Programozó terén én mondjuk az mkII-t javaslom, mert ez is fogod tudni használni a jövőben.
Akár T-Bird-ön még csak-csak használni tudod a jövőben a JTAG-et (bár inkább ISP ajánlott), de Arduinót nem arra találták ki. Az gyakorlatilag kidobott pénz, mert új cuccokat kell venned ha kinövöd.
(#) zombee válasza Topi hozzászólására (») Dec 16, 2012 /
 
Megerősítem!

Dugdosós panel, vagy mátrix amin szabadon garázdálkodhatsz. Arduino nem erre való,
új cuccokat kell mindig venni hozzá, kinövöd és nem is tanulod meg vele a lényeget.
Programozó cserére még nem feltétlenül biztatnálak, az USBASP is jó lesz egy darabig
egy nagyon apró kényelmetlenséggel: semelyik AVR Studio nem támogatja...

DE: amíg a LEGALAPVETŐBB villamossági dolgokat nem nézed át újra, tedd le a programozót!
Ide értem: Ohm törvénye, milliamperek és voltok, diódák/led-ek karakterisztikái.
Ezután esetleg nézhetsz NPN és PNP tranzisztort, elég ha ismered mit tud open-kollektor üzemben.
A hozzászólás módosítva: Dec 16, 2012
(#) TavIR-AVR válasza Topi hozzászólására (») Dec 16, 2012 /
 
Arduino előnye: az alaphardware ott van előtted. Táp, Processzor, soros kommunikáció...
A dugdosos panel meg kontakthibatemető...

Egy AVR alapáramkör és egy szitapanel - szerintem - mindenre jó.

Amúgy: úgyis mindenki a maga bőrén tapasztalja ki, hogy neki melyik a legjobb...
Programozóból STK500 ill. MKII. A többivel kezdőként főleg (rutin híján) könnyen lehet lyukra futni (hiba keresése tapasztalat híján nagyon necces...)


U.i.: ha csak programozni akarsz, HWismeret nélkül: Arduino a kezdet Erre találták ki
A hozzászólás módosítva: Dec 16, 2012
(#) Schnitt hozzászólása Dec 17, 2012 /
 
Sziasztok!

Egy karácsonyi ledsorhoz készítek vezérlést és sikerült kizárnom magam egy attiny13-ból.
Az órajel forrást adhattam meg rosszul, és most az égető sem olvasni, sem írni nem tudja.
Ha feszültséget kap, a szoftver fut szépen, csak kicsit gyors lett, így max kerékpárlámpába vagy rendőrvillogóba jó.

Gyógyítható ez valahogy?
Törölni szeretném és újra használni.

(#) Reggie válasza Schnitt hozzászólására (») Dec 17, 2012 /
 
Ha a szoftver fut, akkor ott nem az orajel a gond, hanem az, hogy levedted a memoriat vagy letiltottad a soros programozast. Probalj egy torlest inditani, ha sikerul, akkor ez elobbi volt, ha nem akkor az utobbi. Az utobbi esetben csak a HV programozas mukodik.
(#) kiborg hozzászólása Dec 17, 2012 /
 
Hali!
Ha írok egy programot ATMega16-ra ASM-ben, majd szeretném átteni Mega8-ra, akkor elég annyit tennem, hogy Mega16 ini fájlját lecserélem a Mega8-éra?
A következő feltétellel: csak olyan perifériát használok az Mega16-ban, ami meg van a Mega8-ban.
Üdv Kiborg
(#) zombee válasza kiborg hozzászólására (») Dec 17, 2012 / 1
 
Az ATMega8 és ATMega16 perifériái megegyeznek, ezért egy újrafordítással //majdnem// kész is vagy.
Remélhetőleg a kód kisebb mint 8k, és nem használod a PortA-t.
Ha van interruptod, akkor ott bele kell nyúlnod, mivel az ATMega8 RJMP-t használ,
az ATMega16 már JMP-t. A különbség hogy az egyik 12, másik 22 bites címet használ.
(#) zombee válasza Schnitt hozzászólására (») Dec 17, 2012 /
 
A programozó ISP sebességét a lehető legkisebbre állítsd, majd AVR Studio-ban
a Program fülön ide kattints: Erase Device. Sok sikert!
ui: utána ne felejtsd el visszaállítani mert r*hadt lassú lesz újra felprogramozni...
(#) Schnitt hozzászólása Dec 17, 2012 /
 
@Reggie: a sima törlést már próbáltam, az sajnos nem működött, HV programming meg nincs a programozón (Topi féle avrdoper)

@Zombee: az alacsony sebességű törlést még megpróbálom. Holnap este leszek legközelebb otthon, utána jelentkezem, hogy sikerült-e.

Köszi mindkettőtöknek!
(#) kiborg válasza zombee hozzászólására (») Dec 17, 2012 /
 
Oké, ez jó infó volt, használni szeretnék interruptot.
Köszi a figyelmeztetést.
Üdv Kiborg
(#) RD49 hozzászólása Dec 18, 2012 /
 
Köszönöm még1x a válaszokat.

Egy olyan kérdésem lenne még,hogy hogy tudnám "beüzemelni" ezt a led kijelzőt?
pl nincs sehova sem írva hogy hol a GND...az 1 digites működését értem,viszont ennél nem jutok tovább.A cél az lenne hogy pl a dig1-en az "elválasztó" vonal világítson.
(#) sikolymester válasza RD49 hozzászólására (») Dec 18, 2012 /
 
Végy egy ellenállást, 300 Ohm-tól 50 kOhmog bármi jó lesz. Végy egy áramforrást, feltételezem 5V van kéznél. Aztán próbálgasd ki mikor mi világít.

Ha nem vagy türelmes és nem akadtál volna még rá ezekre a cikkekre, akkor tessék: Alapkapcsolások Hasznos cikkek
(#) michael67 válasza RD49 hozzászólására (») Dec 18, 2012 /
 
Szia. Szerintem a Gnd dig1-en a 4-es, a dig2-n az 5-s. Az elválasztó jel a dig1-n a 16, dig2-n a 9-es.
(#) Schnitt válasza Schnitt hozzászólására (») Dec 18, 2012 /
 
Sajnos nem jött be az alacsony sebességű törlés sem. Végigpróbáltam az összes ISP sebességet úgy is, hogy a programozón be volt kapcsolva a slow sck, meg úgy is, hogy nem volt, ugyanaz az eredmény (csatolt kép).
Ezekszerint a HV programming segítene csak?
Akkor elteszem ezt az avr-t későbbre, ha majd lesz ilyen funkció az égetőmben.

Mindenesetre köszi a tippeket.
(#) RD49 válasza michael67 hozzászólására (») Dec 18, 2012 /
 
Talált,köszi bár már rájöttem.
(#) szekimilu hozzászólása Dec 19, 2012 /
 
Sziasztok
Érdekődni szeretnék, egy egyszerű 5 ellenállásos párhozamos porti programozóm van pony proggal használom, miért van az, hogy pl atmega168pa-au tipusú avr-t nem tudom megírni törölni stb de pl a atmega16820-au -t pedig igen ?
Milu
(#) zombee válasza szekimilu hozzászólására (») Dec 19, 2012 /
 
Tápot rendesen kap az IC? Valahol ott lehet a gond.
Illetve a "PA" változatnál a signature más, ez is okozhat problémát.
Az USB-s programozóddal működik?
A hozzászólás módosítva: Dec 19, 2012
(#) szekimilu hozzászólása Dec 19, 2012 /
 
Ha 20au végűt forrasztom be (tqfp tokozás) azt rögtön írom olvasom, minden megy a pa-au változatra meg a ponyprog kiír hibát pl: ha törölni akarom akkor is.
Signature az a címzése lenne ?
(#) szekimilu válasza szekimilu hozzászólására (») Dec 19, 2012 /
 
Jelenleg nincs usb-s programozóm, lehet a pony gagyi lenne az avrekhez ?
(#) zombee válasza szekimilu hozzászólására (») Dec 19, 2012 /
 
A signature az az AVR típusazonosítója, egy 3 bájtból álló szám amit hexadecimális számokkal jelölnek.
Az ATMega168-nál ez "1E 94 06", az ATMega168P(A) pedig "1E 94 0B".
Ha a programozó szoftver ezt beolvassa és nem stimmel, akkor megtagadhatja a programozást!
Sajnos a PonyProg-ot kb. 4-5 éve nem frissítették, az ATMega168 "nem tesztelt" státusba van.
(#) szekimilu válasza zombee hozzászólására (») Dec 19, 2012 /
 
Akkor megpróbálom majd más programmal !Azaz érdekes, hogy a TME-től szoktam rendelni általában, és kb 4 fajta atmega168 -uk tqfp tokozással, én mint laikus nem értem miért van az , hogy pl a pa-au végű nettó 338ft 168p-20au meg 958Ft nettó, miért van 600Ft különbség köztük ?
(#) zombee válasza szekimilu hozzászólására (») Dec 19, 2012 /
 
Én is tapasztalok nap mint nap hasonló érdekességeket, de inkább nem próbálom megérteni
mert akkor AVR-ezésre nem jutna idő. Hiába tudja ugyanazt, a piac közbeszól.
Ha valaki vásárol pár millió IC-t(nem vicc, sok ilyen van) akkor az adott típust a nagyker
már csak emelt áron kapja meg, míg a másikat olcsón rásózza hogy kiürítse a raktárait. Kb. így.
Aztán a nagyker az elfekvő, porosodó raktárkészletre sokszor későn reagál, ha 3 éve vették és nem kelt el,
akkor ma hiába kerül feleannyiba, a nagyker a pénzét szeretné viszontlátni és nem érdekli
hogy ma mennyiért adja a gyártó, mikor ő még a 3 éve vett készletét sem tudta eladni.
A kisker meg megint más állatfaj, szóval a gépezetben nagyon sok fogaskerék munkálkodik...
küldtem privit.
A hozzászólás módosítva: Dec 19, 2012
(#) Cicow hozzászólása Dec 20, 2012 /
 
üdv, szeretnék kis segitséget kérni, aTMEGA 16, LCD display minden működik, de van egy probléma amit nem tudok megoldani.
A ,B inputokat szeretném egy 16 bites egységbe foglalni és invertálni, és aszerint, hogy magas vagy alacsony a bit az lcd re karaktert iratni, a gond az, hogy a"256"-os helyértéken levő adatnak a 15. helyre kell iródni,a továbbiakban a szekvencia folytonos.
Ez csak prg részlet a lényeg kedvéért (a prg fut egyébb funkciók mennek).Valamiért csúszik a dolog és a az lcd pos 15-ön állandóan változik az érték(PINC bemenet szerint -jtagen kikapcsolva).

uint16_t strobe;
strobe = PINA + (PINB << 8);
strobe = ~strobe;

int i = 0;
int pos = 0;
for ( ; ; ){

for (i=0;i<=15;i++)
{pos = i;

if (i == 7) {pos =15;} // 8.bit ha magas 15re ugrik az lcd
if (i > 7) {pos=pos-1;}//

if ((strobe>>(15-i)&0x01) == 1)
{
lcd_write_byte(0, 0xC0+pos);//az lcd 2.sor pos helyre teszi a cursort
lcd_wait();
lcd_write_byte(1,(0x30+PINC));//lcd a cursor helyére ír
lcd_wait();

} } }
Köszi

(#) Istvanpisti válasza Cicow hozzászólására (») Dec 20, 2012 /
 
Szia !

Azt írod, hogy a "256"-os helyiértéken lévő adatnak a 15. helyre kell mennie.
A programban az látszik, hogy a 7. bitet teszed (128-as helyiérték 2^7) a pos=15-re.
Mikor kiíratod akkor a strobe (16 bit) ellépteted jobbra (15-i) értékkel és megnézed, hogy az első bit nulla-e.Viszont mikor (i==7, ekkor pos=15, itt van az ugrálás), akkor 8-cal lépteted jobbra és a 8. bitet vizsgálod 1-e.
Nem tudom ezt akartad-e , vagy azt, hogy a pos-nak megfelelő helyen lévő bit függvényében legyen engedélyezve az LCD-re írás.
Így : if ((strobe>>(15-pos)&0x01))
Következő: »»   500 / 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