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   275 / 839
(#) kajozs válasza Thomm hozzászólására (») Nov 3, 2010 /
 
Idézet:
  1. Waitms 100
  2. Wend Portb.1 = 0
  3. 'Wait Q'
  4. Wait 5
  5. End If
  6. End If
  7. Loop


Lehet már rájöttél, de ha még nem akkor a baj az, hogy a beolvasott adc, ha 8 bites akkor akar 255 másodperces késleltetést is okozhat (wait miatt), emiatt tűnt úgy, hogy lefagyott az egész.
Oszd el a Q-t mondjuk 51-el, és akkor kb 0-5 másodperc között tudod szabályozni a léptetést.
(#) Tomi_Bp válasza Reggie hozzászólására (») Nov 3, 2010 /
 
És mit javasolsz erre a célra?
(#) Reggie válasza Tomi_Bp hozzászólására (») Nov 3, 2010 /
 
Ha mar megy neked az AVR, akkor probald ki az AVR32UC3L szeriat. Arban ez is ezres korul mozog a farnellnel, ami ugye azt jelenti hogy 600-800 forint korul lehet a normal piaci ara. Viszont AVR32 csak JTAG-gel vagy aWire-el lehet programozni.
(#) Fish hozzászólása Nov 4, 2010 /
 
Sziasztok

Egy olyan kérdésem lenne, hogy egy Mikrovezérlő jelen esetben AVR az egyik portjának két lábát kábellal milyen messze lehet elvezetni? Van ugyanis egy Atmega8-as board, és ennek két lábához tartozó portokat, mint kimenet szeretném elvezetni, de 15 méterre kellene legalább, mert a beavatkozó nevezzük "perifériának" az a board-tól legalább 15méterre van. Ha el lehet vezetni, milyen módon? Valamilyen buffer, vagy meghajtó, vagy valami kell hozzá? Nos mivel a beavatkozónak 12 V kell, így én úgy gondoltam, hogy ehhez csinálok egy nyákot amin egy telefon csatlakozó van, a két szélső PIN a 12V-ot, a középsé kettő meg az AVR valamelyik két IO lábát vezetné oda. Köszi a segítséget.
(#) trudnai válasza Fish hozzászólására (») Nov 4, 2010 /
 
Az sokmindentol fugg, atviteli sebesseg stb. Alacsony sebessegu soros atvitellel lehet szerencsed lesz, de jobban jarsz ha egy transcievert teszel ra, pl RS485 vagy CAN busz (bar ez mar tullo a celon).
(#) Reggie válasza Fish hozzászólására (») Nov 4, 2010 /
 
SN75179-re van szukseged.
(#) Tomi_Bp válasza Reggie hozzászólására (») Nov 4, 2010 /
 
Köszi, gondolkozom még, csak gondoltam ideje korán felteszem a kérdést.
(#) Tomi_Bp hozzászólása Nov 4, 2010 /
 
Sziasztok! Van egy kis kommunikációs problémám. Egyszerű driver AVR-re HD44780 kompatibilis LCD kijelzőkhöz driver-jét használtam már régebben is, de most
  1. lcd_putstr ("<     Elso sor     ><   Harmadik sor   ><   Masodik sor    ><   Negyedik sor   >", LCD_FIRST_LN_ADDR);
  2.   _delay_ms (1000);
erre a kódra a mellékelt képen látható kiírás jelent meg.
Örülnék, ha valakinek lenne egy jó kis ötlete a megoldáshoz. Köszi!

IMG_2357b.JPG
    
(#) Ricsi89 válasza Tomi_Bp hozzászólására (») Nov 4, 2010 /
 
Ha jól emlékszem, akkor a cikkben lévő kód nekem sem ment, de itt a topicban van javított verzió, ami tökéletesen működött nekem.
(#) Tomi_Bp válasza Ricsi89 hozzászólására (») Nov 4, 2010 /
 
Ez nekem is már egy átdolgozott, de annó működő verzió, csak szerintem a szekrényben valami történhetett vele. Most méregettem, meg csináltam egy port tester-t és azt nézem, hogy a Data4 és Data5, minthogyha együtt villogna... Lehet, hogy áthallás van a panelen. Csúnyábban mondhatjuk zárlatnak is De ez még nem biztos...
(#) Reggie válasza Ricsi89 hozzászólására (») Nov 4, 2010 /
 
A cikk vegen mar van egy javitott verzio. Azt is tovabb kell javitani?
(#) Tomi_Bp válasza Reggie hozzászólására (») Nov 4, 2010 /
 
Az nekem úgy emlékszem működött, de most a hiba konstans... és zárlat, szakadás nincs ...
A kijelző a HEStore-os: RC-2004-AB
A cikkben levő driver-t is újra letöltöttem és csak a lábkiosztást írtam át, mert nekem az más.
D7 : C0
D6 : C1
D5 : C2
D4 : C3

E : C4
RS : C5

Próbáltam az E idejét is megnövelni, mert már más kijelzővel volt az a probléma, de ennél régen is elég volt a 25us.
Ötletek?
(#) Reggie válasza Tomi_Bp hozzászólására (») Nov 4, 2010 /
 
Nem lehet, hogy a ledek zavarnak be az atvitelbe?
(#) Tomi_Bp válasza Reggie hozzászólására (») Nov 4, 2010 /
 
A tester csak opcionális ... természetesen nélküle sem megy. Azért köszi!
(#) Reggie válasza Tomi_Bp hozzászólására (») Nov 4, 2010 /
 
az RW melyik lab? C6?
(#) Ricsi89 válasza Reggie hozzászólására (») Nov 4, 2010 /
 
A cikket mostanság nem néztem, amikor nekem gondjaim voltak, akkor még nem volt javítás benne, úgy emlékszem.
(#) Tomi_Bp válasza Reggie hozzászólására (») Nov 4, 2010 /
 
A PortC6, az az ATMega8 RESET lába!!! Nem osztottam azt ki... Az RS a C5.
(#) Reggie válasza Tomi_Bp hozzászólására (») Nov 4, 2010 /
 
De engem nem az RS hanem az RW erdekelt volna. Na mindegy, vestem neked egy tesztkodot, az RW-hez tartozo ket define-t te toltsd ki. Ha ez a kod lefut, akkor a vegen egy nagy A betut kell kiirnia.

  1. #define clrE()          PORTC=PORTC & 0xEF
  2. #define clrRS()         PORTC=PORTC & 0xDF
  3. #define clrRW()         PORTC=PORTC & 0x
  4. #define setE()          PORTC=PORTC | 0x10
  5. #define setRS()         PORTC=PORTC | 0x20
  6. #define setRW()         PORTC=PORTC | 0x
  7.  
  8. #define sendcmd(HIGH4,LOW4)       clrRS(); \
  9.                                   setE(); \
  10.                                   PORTC=(PORTC&0xF0) | HIGH4; \
  11.                                   _delay_ms(1); \
  12.                                   clrE(); \
  13.                                   _delay_ms(1); \
  14.                                   setE(); \
  15.                                   PORTC=(PORTC&0xF0) | LOW4; \
  16.                                   _delay_ms(1); \
  17.                                   clrE(); \
  18.                                   _delay_ms(10);
  19.  
  20.   //reset
  21.   clrE();
  22.   clrRW();
  23.   clrRS();
  24.   DDRC=0x3F;
  25.   _delay_ms(50);
  26.   //CMD 0x28
  27.   sendcmd(0x4,0x1);
  28.   //CMD 0x01
  29.   sendcmd(0x0,0x8);
  30.   //CMD 0x0E
  31.   sendcmd(0x0,0x7);
  32.   //CMD 0x06
  33.   sendcmd(0x0,0x6);
  34.   // sendchar "A"=0x41
  35.   setRS();
  36.   setE();
  37.   PORTC=(PORTC&0xF0) | 0x2;
  38.   _delay_ms(1);
  39.   clrE();
  40.   _delay_ms(1);
  41.   setE();
  42.   PORTC=(PORTC&0xF0) | 0x8;
  43.   _delay_ms(1);
  44.   clrE();
  45.   _delay_ms(10);


Szerk: egy kicsit roviditettem rajta.
(#) Robi98 hozzászólása Nov 4, 2010 /
 
Sziasztok!
Programozni szeretnék, először, és nem tudom beírni az ÉS jelét.
Melyik betűkombinációval lehet beszúrni, illetve mi helyettesíti?
(#) Tomi_Bp válasza Reggie hozzászólására (») Nov 4, 2010 /
 
Idézet:
„Build failed with 8 errors and 2 warnings...”

Amúgy nekem az RW a földön van (GND).
(#) augre válasza Robi98 hozzászólására (») Nov 4, 2010 /
 
nálam Alt Gr +c
(#) Reggie válasza Tomi_Bp hozzászólására (») Nov 4, 2010 /
 
Akkor szerintem azert van 8 error, mert a ki kell torolnod minden sort amelyben szerepel a clrRW es/vagy a setRW. Nekem igy hiba nelkul lefordult.
(#) Robi98 válasza augre hozzászólására (») Nov 4, 2010 /
 
Nekem is az,de még se rakja be.
(#) Topi válasza Robi98 hozzászólására (») Nov 4, 2010 /
 
Kapcsold ki az ATI Catalyst-ot. És/vagy vedd ki belőle a Hotkey-ek közül az Alt-C-t.
(#) Tomi_Bp válasza Reggie hozzászólására (») Nov 4, 2010 /
 
Most épp a másik LCD-met élesztem, hátha az jobban megy majd... Ez is működött, még mielőtt szörnyülködnétek
(#) gtk válasza Tomi_Bp hozzászólására (») Nov 4, 2010 /
 
Semmi sem tokeletes. Probald meg lecserelni a mellekelt fileal, a neki megfelelot.
(Ebben van javitas, az AVR/LCD I/O kapcsolat miatt. Valaki kuldte korabban,..)
(#) Reggie válasza gtk hozzászólására (») Nov 4, 2010 /
 
Na egy flip -m lemaradt
(#) Tomi_Bp válasza gtk hozzászólására (») Nov 4, 2010 /
 
Megjavult!!! Thx.!!! :worship: Akkor viszont gtk, cserélni kellene müködőre a letölthetőben. Az az érdekes, hogy nekem régen ment simán azzal is.

IMG_2381b.JPG
    
(#) Robi98 válasza Topi hozzászólására (») Nov 4, 2010 /
 
A probléma már megoldódott.Megtettük azt amit mondtál,de még úgy se múlt el a hiba majd utánna néztünk és kiderült,hogy Alt+0+3+8 paranccsal be lehet szúrni.
Nem tudom,hogy miért nem működik AltGr+c paranccsal, valószínűleg vagy a számítógépnek, vagy a billentyűzetnek van valami baja.

De attól még köszi!
(#) gtk válasza Tomi_Bp hozzászólására (») Nov 4, 2010 /
 
Idézet:
„Az az érdekes, hogy nekem régen ment simán azzal is.”
Maskeppen voltak bekotve az I/O-k.
Idézet:
„...cserélni kellene müködőre a letölthetőben.”
Es meg annyi mindent kellene,..
Következő: »»   275 / 839
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