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
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.
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! ![]()
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
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
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...
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
![]()
@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.
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
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 ![]() ![]() A hozzászólás módosítva: Dec 16, 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.
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.
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
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.
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...
@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!
Oké, ez jó infó volt, használni szeretnék interruptot.
Köszi a figyelmeztetést. Üdv Kiborg
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.
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
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.
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.
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
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
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 ?
Jelenleg nincs usb-s programozóm, lehet a pony gagyi lenne az avrekhez ?
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.
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 ?
É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
ü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
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)) |
Bejelentkezés
Hirdetés |