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   308 / 840
(#) proksa1 hozzászólása Feb 13, 2011 /
 
Sziasztok!

Tudtok mondani valami fejlesztőkörnyezetet amiben atmega168P-t tudok programozni C nyelven? az avr studio csak assemblyben támogatja ezt a kontrollert, a gcc nem.
(#) Reggie válasza proksa1 hozzászólására (») Feb 13, 2011 /
 
De tamogatja a gcc is.
(#) Andre90 hozzászólása Feb 13, 2011 /
 
Szervusztok!
A kérdésem a következő lenne: Miként tudom kiküszöbölni a következőt: a mikrokontrolleremre rá van kötve egy LCD modul, és sajnos azt a két lábat is fel kellet használnom ennek a vezérlésére, amelyik a TTL kommunikációért szolgál a gép és a uC között. Ha a másik kábelt is rávezetem a lábakra, akkor az LCD-n nem a kívánt karakterek jelennek meg ugye, mert a másik kábel bezavar. Van erre valami megoldás, vagy be kell szereznem egy több kimenettel rendelkező AVR chipet, ahol külön tudom választani ezeket?
Köszönöm előre is a választ.

Üdv: André
(#) Reggie válasza Andre90 hozzászólására (») Feb 13, 2011 /
 
Egy kicsit reszletezhetned, hogy milyen uC, milyen interfesszen komunikalt az LCD-vel, milyen interfeszen keresztul kommunikal a PC-vel, stb.
(#) Andre90 hozzászólása Feb 13, 2011 /
 
Üdv!

Az LCD-vel(vezérlő IC-vel ellátva) 8 bites kommunikációval, a számítógéppel pedig egy FTDI USB-TTL átalakítón keresztül kommunikál, mindkettő működik külön-külön jól, de mivel kénytelen vagyok uazt a lábat használni mindkét célra, ezért akadtak a gondok.
Üdv: André
(#) san398 válasza Andre90 hozzászólására (») Feb 13, 2011 /
 
Esetleg 4 bit-es kommunikáció az LCD és az AVR között , rögtön felszabadul 4 port
(#) Fizikus válasza Andre90 hozzászólására (») Feb 14, 2011 /
 
Az alabbi modszerrel eleg csak 2 lab:
LCD 2 labon
(#) proksa1 válasza Reggie hozzászólására (») Feb 14, 2011 /
 
Az atmega168-at támogatja, de a P-t nem. Legalábbis nekem nem, milyen verziód van?
(#) Reggie válasza proksa1 hozzászólására (») Feb 14, 2011 /
 
2007-10-17 -en fogadtak el a patchet, ami alapjan tamogatja. Tovabbi info itt.

Mondjuk en linuxos avr-gcc-t hasznalok es nem winavr-t, de 2007esnel biztos ujabb a winavr is...

De izgulni nem kell, ugyan az a mag van mind a ket uC-ben, ezert a 168p-re nyugodtan fordithatsz --mmcu=avr5 kapcsoloval. Az avr-libc szinten tamogatja a 168p-t. Az AVRStudio nem tudom mennyire tamogatja, mivel azt nem hasznalok, ezert arrol nem is nyilatkoztam.
(#) blaci válasza Reggie hozzászólására (») Feb 14, 2011 /
 
Végül megoldódott a gondom. Építettem egy hihetetlen drága és bonyolult (120.-/2óra) "si-prog" soros programozót, ami az avrdude segítségével hajlandó volt beleírni egy led villogtató programot, és most már az avr-doper is kezeli. A belső rc oszcillátort választottam programozásnál. Ettől függetlenül a következő kütyü egy órajel generátor lesz.
(#) arpadx válasza eltexto hozzászólására (») Feb 15, 2011 /
 
Köszönöm, én is erre jutottam és már miden rendben.Viszont ha az avr st4-ben először vissza állítom belső órajelre akkor semmi gond.Remélem nem mondtam butaságot.Nekem így volt.Az eOscop is jól működik ha a használat során is megfelelőnek találom megoldom a bemeneti osztó és az 1 megohm bemenetet.Ja és egy fázisfordítás is kell, ugyanis a + jel le és a - felfelé tér ki.Külömben nem rossz.Zoli ha érdekel, adok neked egy ilyen kijelzőt.Valamire jó lessz.Külömben már tegnap este 22-óra körül lett tiszta a kép a program feltöltést illetően és azóta csiholgatom az eOscopot.Lehet hogy nem nagy szám de tovább fejleszthető mert miden fent van a neten.
Üdv:Árpád
(#) proksa1 válasza Reggie hozzászólására (») Feb 15, 2011 /
 
Igazad volt, a 2010-esben már bennevan, ezekszerint az enyim régi verzió volt. Köszi.
(#) Axel hozzászólása Feb 16, 2011 /
 
Sziasztok!

Azt szeretném kérdezni, hogy ha az AVR egyik ADC portjára kötöm egy ellenállás középső lábát feszültség mérés céljából míg a többi két lába Vcc-re és GND-re van húzva (tehát fesz.osztóként) akkor szükséges-e ezt még kiegészíteni egy plusz felhúzó ellenállással a Vcc-re csatlakozó láb felől arra az esetre ha potméter végállásban van? Vagy ilyenkor is van neki még annyi ellenállása ami elegendő, hogy ne alakuljon ki rövidzár?
A neten nézegettem de "ellentmondásos" információkra/kapcsolásokra leltem.

Köszönöm!
(#) Reggie válasza Axel hozzászólására (») Feb 16, 2011 / 1
 
Ha a labra kerulo feszultseg nem haladja meg az uC tapfeszultseget, akkor nem lesz gond.
(#) Axel válasza Axel hozzászólására (») Feb 16, 2011 /
 
Kiegszítés: az adatlapban alacsony impedanciás források csatlakoztatását írják (tehát elvben nem kell további ellenállás) de nem tudom 100% biztosan, hogy jól értelmeztem-e.
(#) bzolitb válasza Axel hozzászólására (») Feb 16, 2011 /
 
Az ellenállás középső lábánál gondolom potméterre gondoltál. Legegyszerűbb, ha multiméterrel megméred a végállásban apotmétert, és szépen a feszültség osztás, és ohm törvény segítségével kiszámolod. De nem szokás semmi ilyesmit tenni, csak megfelelően nagy potmétert kell választani (kb. 50K ohm), hogy a mikrokontroller lábára megfelelően kis áram jusson. Jobb ötletem nincs sajnos.
(#) Axel válasza Reggie hozzászólására (») Feb 16, 2011 /
 
Hali!

Köszönöm!
Egyébként ha mondjuk 12V-ra kötném akkor kellene elé egy sima fesz.osztó és az osztásviszonnyal korrigálva számolhatnám is a mért értéket? 100nF-os szűrőkondi elegendő az Avcc és AGnd közé?
(#) Axel válasza bzolitb hozzászólására (») Feb 16, 2011 /
 
Én 10 kohm-ost tudok rákötni csak (az van itthon), remélem elég lesz...
(#) sikolymester válasza Axel hozzászólására (») Feb 16, 2011 / 1
 
Az AVR ADC bemenete természetesen nagy impedanciás, tehát a befolyó áram nagyon kicsi. Ennek ellenére a rá kötött feszültség nem haladhatja meg a mindenkori táp feszültségét az AVR-nek (ez ökölszabály), pontos toleranciákért lásd az adatlapot.

A potméteren keresztül nem folyhat nagy áram, mivel a két "szélső" lába között állandó az ellenállás, míg a "középső" leosztó lába felé változik. A félelmed nem volt alaptalan, mert ha szélső helyzetbe tekered a potmétert, akkor megeshet az, hogy a tápfesz és az ADC bemenet között 0 Ohm lesz az ellenállás. Mivel az ADC bemenete nagy impedanciás, így a 0 Ohm igazából nem 0 Ohm lesz, hanem valahány nagyságrendes kOhm, részletek adatlapban.

Egy dologra kell ám ügyelni, mégpedig, hogyha az adott láb kimenetnek van konfigolva, méghozzá alacsony állapotba, tehát DDRx.y = 1 és PORTx.y = 0 (x jelöli a portot, míg y a lábszámot), és a poti pont úgy van tekerve, hogy 0 Ohm legyen a tápfesz és a középső láb között, akkor sok amper fog folyni, ami nem jó.
Természetesen ez nem fordulhat elő, mivel alapesetben a portok bemenetek, amikoris nagy az impedenciájuk.

Tehát, akkor vagy bajban, hogyha az ADC initnél valamilyen okból egy ideig kimenetnek konfigolod, ahogy említettem, más esetben nem.

De azt a 10kOhmos ellenállásod nyugodtan kössed az ADC láb és a potméter középső ága közé, így biztos nem folyik nagy áramod majd sosem, míg a mérést nem befolyásolja(pont azért mert az ADC-be nem folyik áram).

A 100nF megteszi, persze attól függ, hogy hogyan konfigolod az ADC-det. Nézd meg a Reference Selectiont az adatlapban(nem mindegy milyen konfignál melyik lábhoz teszed).
(#) Reggie válasza Axel hozzászólására (») Feb 17, 2011 /
 
A helyes kialakitashoz olvasd el az AVR040 es AVR042 appnote.-kat. Itt kiternek az analog tap szuresere is.
Ha elofordulhat, hogy nagyobb feszultseg juthat a megengedettnel, akkor en biztos ami biztos zeneres (vagy inkabb tanziens szupresszoros) vedelmet szoktam alkalmazni. De alapvetoen megteszi a feszultsegoszto is.
(#) luxmanpower hozzászólása Feb 17, 2011 /
 
Hello! Próbálok feléleszteni egy LCD-t amelyik t6963-as vezérlővel rendelkezik. Atmega32-vel, kevés sikerrel. A program elvileg okés, de a kijelzőn csak a csatolt képeknek megfelelő ábra jelenik meg (mindig). Hibás lenne a kijelző (úgy kaptam újonnan kipróbálva nem volt) vagy más a probléma?
(#) bzolitb hozzászólása Feb 17, 2011 /
 
Sziasztok!

Avr-hez illeszthető keypad-ot (tasztatúrát) szeretnék készíteni, találtam egy megfelelő-t http://www.mikerj.clara.net/keypad.html de sajnos nem értem a működési elvét, esetleg valaki, aki használta már ezt a fajta elrendezést, eltudná mondani nekem ennek a működését, és hogy mennyire és hogy bővíthető?
(#) blaci válasza bzolitb hozzászólására (») Feb 17, 2011 /
 
Nézd meg ezt. Elég részletes leírás is van hozzá.
(#) sgt hozzászólása Feb 18, 2011 /
 
AT90USB1287-hez valahonnan le lehet szedni USB példa progit, illetve PC-re dll-eket? Keresgéltem de nem nagyon találtam.
(#) sikolymester válasza sgt hozzászólására (») Feb 18, 2011 /
 
Dean Camera az elsőszámú szakértője: itt
Tőle érdemes kérdezni elsősorban az USB-s AVR-ekkel kapcsolatosan. Őt megtalálod az AVRFreaks fórumán.

Amúgy az Atmel oldalán is találsz egy két app note-ot itt

Pc oldalon, ha nem tévedek, akkor az LibUSB-vel tudsz kapcsolódni az AVRedhez natív módban.
(#) kiborg hozzászólása Feb 18, 2011 /
 
Hali!
Van egy LCD-m, aminek Sclk és Sdata lába van. TWI-n keresztül lehet ezt vezérelni? Mert az nekem nem akart működni, hogy csak adatot küldök ki és nem várok választ semmit.Assemblyben.
  1. ldi r16, DATA
  2. out TWDR, r16
  3. ldi r16, (1<<TWINT) | (1<<TWEN)
  4. out TWCR, r16

Ezt a kódot használom, TWI regiszterei engedélyezve vannak, de nem akarja az igazságot.
Üdv Kiborg
(#) JOCO10 hozzászólása Feb 18, 2011 /
 
Sziasztok
Bascomban szoktam programot irni,de most egy c forrást kellene modositani csak ahoz nem értek.
Kérem segitsetek.
Hogyan kell c-ben helyesen leirni

if pinb.5=0 then
  1. static const uchar  keyReport[NUM_KEYS + 1][2] PROGMEM = {
  2. /* none */  {0, 0},                     /* no key pressed */
  3. /*  1 */    {MOD_SHIFT_LEFT, KEY_PageUp},
  4. /*  2 */    {MOD_SHIFT_LEFT, KEY_PageDown},
  5. /*  3 */    {MOD_SHIFT_LEFT, KEY_PageDown},
  6. /*  4 */    {MOD_SHIFT_LEFT, KEY_Up},
  7. /*  5 */    {MOD_SHIFT_LEFT, KEY_Down},
  8. /*  6 */    {MOD_SHIFT_LEFT, KEY_F},
  9. /*  7 */    {MOD_SHIFT_LEFT, KEY_G},
  10. /*  8 */    {MOD_SHIFT_LEFT, KEY_H},
  11. /*  9 */    {MOD_SHIFT_LEFT, KEY_Right},
  12. /* 10 */    {MOD_SHIFT_LEFT, KEY_Left},
  13. /* 11 */    {MOD_SHIFT_LEFT, KEY_Down},
  14. /* 12 */    {MOD_SHIFT_LEFT, KEY_Up},
  15. /* 13 */    {MOD_SHIFT_LEFT, KEY_M},
  16. /* 14 */    {MOD_SHIFT_LEFT, KEY_N},
  17. /* 15 */    {MOD_SHIFT_LEFT, KEY_O},
  18. /* 16 */    {MOD_SHIFT_LEFT, KEY_P},
  19. /* 17 */    {MOD_SHIFT_LEFT, KEY_Q},
  20. };



else
  1. static const uchar  keyReport[NUM_KEYS + 1][2] PROGMEM = {
  2. /* none */  {0, 0},                     /* no key pressed */
  3. /*  1 */    {0, KEY_PageUp},
  4. /*  2 */    {0, KEY_PageDown},
  5. /*  3 */    {0, KEY_PageDown},
  6. /*  4 */    {0, KEY_Up},
  7. /*  5 */    {0, KEY_Down},
  8. /*  6 */    {0, KEY_F},
  9. /*  7 */    {0, KEY_G},
  10. /*  8 */    {0, KEY_H},
  11. /*  9 */    {0, KEY_Right},
  12. /* 10 */    {0, KEY_Left},
  13. /* 11 */    {0, KEY_Down},
  14. /* 12 */    {0, KEY_Up},
  15. /* 13 */    {0, KEY_M},
  16. /* 14 */    {0, KEY_N},
  17. /* 15 */    {0, KEY_O},
  18. /* 16 */    {0, KEY_P},
  19. /* 17 */    {0, KEY_Q},
  20. };


end if
(#) Reggie válasza JOCO10 hozzászólására (») Feb 18, 2011 /
 
A valtozot az if elott kell deklaralnod, mert az if belsejebol kilepve megsemmisul, az erteket viszont az if-en belul kell adnod. PROGMEM-be ezt nem tudod megtenni, mivel a flash nem irthato terulet, illetve ha az ic kepes onprogramozasra, akkor egyebb fugyvenyek segitsegevel lehet irni(az eepromhoz hasonloan).

az ifet pedig igy kell irni:
  1. if ((PINB & (1<<PB5))==0)

a then es endif nem kell, viszont ha tobb utasitasbol all amit beleirsz, akkor {-vel kell kezdeni es }-vel kell lezarni.
(#) sgt válasza sikolymester hozzászólására (») Feb 18, 2011 /
 
Köszönöm szépen!
(#) kovacsj válasza Reggie hozzászólására (») Feb 18, 2011 /
 
Sziasztok!

Ezt a PROGMEM direktívát mikor célszerű és mikor kötelező használni?

Köszönöm előre is!
KJ
Következő: »»   308 / 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