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   95 / 840
(#) Sir-Nyeteg válasza Topi hozzászólására (») Jan 17, 2009 /
 
Beállítottam, már fejből megy minden paraméter
Csak nem tudtam, h ezt mindig elfelejti!
Köszönöm! Nagyon nagyon!
Hagylak titeket mára! Jó hétvégét!
(#) Router hozzászólása Jan 17, 2009 /
 
Sziasztok!

Egészen kezdek megbarátkozni az avr-es dologgal, nagyon tetszik és élvezem a próbálgatását. Az avr. tavir.hu-n találtam letölthető mintapédákat és az lcd driver nem tűnik túl bonyásnak, ha jól értelmeztem akkor bascomban be kell állítani, hogy melyik lábra milyen adatvezeték kapcsolódik és már megy is a dolog a driverrel.

Egyet nem tudtam csak megfejteni, hogy a porgam HD44780-ra vonatkozik-e.
(#) TavIR-AVR válasza Router hozzászólására (») Jan 17, 2009 /
 
Bascom + LCD

Igen.
Az első bekezdésben írva is vagyon.....
"A Bascom kétféle típusú folyadékkristályos (liquid-crystal displays - LCD) kijelzőt képes kezelni: alfanumerikus és grafikus kialakításút. Először a karakteres kijelzővel ismerkedünk meg, ugyanis ez a legelterjedtebb és a kezelése is közel egységes. Ez a típusú LCD karaktereket, számokat és speciális karaktereket képes megjeleníteni. A legtöbb alfanumerikus kijelző a Hitachi HD44780 chipet használ (vagy ezzel ekvivalens típust). Ha nem vagy biztos teljesen abban, hogy a kezedben lévő az megegyezik ezzel, a legbiztosabb, ha a chip gyártójánál ellenőrzöd le. Ehhez néha az adatlapra is szükség lehet..."
(#) Router válasza TavIR-AVR hozzászólására (») Jan 17, 2009 /
 
Opp, bocs, figyelmetlen voltam
Köszönöm az infót és már próbálgatom is tovább
(#) zoly15 hozzászólása Jan 18, 2009 /
 
Sziasztok!
Megépítettem a Topi féle AVR Dopert Csak én SMD verzióban...
Tegnap véletlenül sikerült magam kitiltatni az AVR ből
Meg is építettem a Segéd órajel generátort.
Egy pár kérdés merült fel bennem:
- Ha ráteszem a XTAL1 és a GND re a generátort ki kell vennem az AVR saját kvarcát? Az én esetemben ez 12MHz
- Hány MHz es kvarcot kell használnom a segédórajel generátorban?

Üdv!
Előre is köszönöm!

(#) Steven19 válasza zoly15 hozzászólására (») Jan 18, 2009 /
 
Helló! Ha kikötöd a kristályt az AVR-ről hogy a pacemakerrel újraéleszd azzal nem okozol kavart, tehát szerintem vedd ki arra az időre amig a segédórajel generátorral újraéleszted, én is kivettem ilyenkor. Másik kérdésedre a válasz a cikkből van kiollózva :
"Szinte processzor típus függetlenül a 4MHz-es órajel elég szokott lenni" még annyit hozzátennék hogy 1MHz és 12MHz között bármilyen kristályt betehetsz
(Ezt kipróbáltam). Viszont hogy milyet tehetsz be attól függ mekkorára állitottad legutoljára mielőtt kitiltottad magadat az AVR-ből.
(#) Grebi hozzászólása Jan 19, 2009 /
 
Üdv mindenkinek!
Kérdésem lenne hogy az AVR mikrovezérlőket is többször lehet programozni, hasonloan mint a PIC-ben lévő flesh-es fajákat ?
(#) Topi válasza Grebi hozzászólására (») Jan 19, 2009 /
 
Igen.
(#) Grebi válasza Topi hozzászólására (») Jan 19, 2009 /
 
THX
(#) ZLED hozzászólása Jan 19, 2009 /
 
Sziasztok!
Elkezdtem programozni egy Atmega8-at AVR Studio 4-ben. A Nyolc lábbal IV. rész RGB LED-es hangulatvilágítás Programjával gyakoroltam, de nem működik.
itt a kód:
  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3.  
  4. volatile unsigned char R_counter , G_counter , B_counter;
  5. volatile unsigned char R_duty , G_duty , B_duty;
  6. unsigned char TimerCounter;
  7.  
  8. void Init(void) {
  9.         TCCR1B |= (0<<CS12) | (1<<CS11) | (1<<CS10);
  10.  
  11.         TIMSK |= (1<<TOIE0);
  12.  
  13.         sei();
  14.  
  15.         DDRB |= (1<<PINB0) | (1<<PINB1) | (1<<PINB2);
  16.         }
  17.  
  18. SIGNAL(SIG_OVERFLOW0) {
  19.         TimerCounter--;
  20.         if (TimerCounter==0) {
  21.                 R_counter = R_duty;
  22.                 G_counter = G_duty;
  23.                 B_counter = G_duty;
  24.  
  25.                 PORTB |= (1<<PINB0) | (1<<PINB1) | (1<<PINB2);
  26.        
  27.         }
  28.  
  29.         if(R_counter) R_counter--;
  30.         if(G_counter) G_counter--;
  31.         if(B_counter) B_counter--;
  32.  
  33.         if(R_counter==0) PORTB &= ~(1<<PINB0);
  34.         if(G_counter==0) PORTB &= ~(1<<PINB1);
  35.         if(B_counter==0) PORTB &= ~(1<<PINB2);
  36.  
  37.         }
  38.  
  39. int main(void) {
  40.         unsigned char val = 4;
  41.         Init();
  42.         R_duty = 1;
  43.         G_duty = 1;
  44.         B_duty = 1;
  45.                         for(;;) {
  46.                                 switch(val) {
  47.                                         case 4: if(R_duty<0xFF) R_duty++;
  48.                                                         else val = 5;
  49.                                                         break;
  50.  
  51.                                         case 5: if(B_duty) B_duty--;
  52.                                                         else val = 6;
  53.                                                         break;
  54.  
  55.                                         case 6: if(G_duty<0xFF) G_duty++;
  56.                                                         else val = 7;
  57.                                                         break;
  58.  
  59.                                         case 7: if(R_duty) R_duty--;
  60.                                                         else val = 8;
  61.                                                         break;
  62.  
  63.                                         case 8: if(B_duty<0xFF) B_duty++;
  64.                                                         else val = 9;
  65.                                                         break;
  66.  
  67.                                         case 9: if(G_duty) G_duty--;
  68.                                                         else val = 4;
  69.                                                         break;
  70.                                         }
  71.                                 }
  72.                
  73.  
  74.                 return 0;
  75.  
  76. }

Valaki tud segíteni?
(#) Istike88 válasza ZLED hozzászólására (») Jan 19, 2009 /
 
állítsd át a projekt beállításainál az MCU típusát.
(#) ZLED válasza Istike88 hozzászólására (») Jan 19, 2009 /
 
Átállítottam, de akkor se megy.
(#) Topi válasza ZLED hozzászólására (») Jan 19, 2009 /
 
Akkor tedd a megfelelő lábakra a LED-et, állítsd be a clock-ot (project settingsben) és a Fusesban is állítsd be az órajelet + az esetleges előosztást (CLKDIV8).

És menni fog. Hidd el, nálad van a gond, hibás kód nem kerül fel a HE-re.
(#) gerry válasza Topi hozzászólására (») Jan 19, 2009 /
 
Létezhet olyan, hogy egy attiny13-ra megírt pwm led vezérlő program ne induljon el egy atmega8-on?
Nem a fentebb említett kód, hanem egy másik. Már találkoztam ilyennel. Azt hittem én láma, hogy majd átírom m8def.dat-ra az első sort és compile....és compile.... és mi a túrót ír ez ki "invalid config timer0"
és bíz nem akarta lefordítani. A forditó egy Bascom volt. És itt jön az amiről beszéltél nemrég, hogy meg kell érteni, hogy mit akar csinálni az ember és fejleszteni kell a tudást, egy kicsit nekiveselkedtem és megírtam saját kútfőből a saját pwm-es ledvezérlőt. Még jó hogy van a hobbielektronika fórum.
(#) Topi válasza gerry hozzászólására (») Jan 19, 2009 /
 
Persze hogy létezhet. Hát nem mindenhol van timer2. Vagy egyik procinál van TCCR0A és TCCR0B, van ahol egybe van, csak TCCR0. Meg kell nézni mindig miről mire.

Mert bizony főleg a kisprociról nagyra és vica-versa problematikás.
(#) Steven19 válasza Topi hozzászólására (») Jan 20, 2009 /
 
Helló. Ha a szoftver jó, akkor miért van az hogy nállam sem működik? Csak annyit csinál hogy gyorsan villog a programban meghatározott sorrendben. Nem lehetséges hogy a szoftverrel mégis valami gond van? Mert rákerestem erre a programra, de csak ennek eggy másik változatára találtam rá és az úgy működik ahogyan kell. Magyarázd már el légy oly kedves hogy ez miért van?
Üdv : Steven
(#) Topi válasza Steven19 hozzászólására (») Jan 20, 2009 /
 
Őszínte elnézésem mindenkitől! Mindent visszaszívtam! Szerkesztő társam munkája az, ami a szóbanforgó. És határozottan saját szememmel láttam rendesen működni. De valahogy a cikk szerkesztésnél egyetlen egy sor lemaradt.

a for ciklus végéről egy _delay_ms(50); (vagy több, attól függ, ki milyen sebességet szeretne)

Elnézést kérek mindenkitől, azonnal javítom, mindent visszaszívtam! Tényleg van hiba a kódban. Persze itt az emberek 99%-ánál a projekt beállítás volt hibás, de ez más kérdés!
(#) Steven19 válasza Topi hozzászólására (») Jan 20, 2009 /
 
Helló! A device pontban ATtiny13-nak a frekvencia pontban 9600000Hz-nek és az optimalizáció Os legyen?? Mert ha igen akkor nállam a project beállitások nem voltak hibásak.
(#) IMi válasza ZLED hozzászólására (») Jan 20, 2009 /
 
Hello!
Első ránézésre Te itt összekeverted a timer-eket.Az init függvényben a TCCR1B az a 16 bites Timer1- re vonatkozik, ezzel szemben a megszaktás a Timer0-ra vár.
(#) IMi válasza Topi hozzászólására (») Jan 20, 2009 /
 
Hello!
Még egy hiba: az Init függvényben a megjegyzés az 64-es osztást ír , míg a kódba csak 8-as osztás jön ki.
(#) Topi válasza IMi hozzászólására (») Jan 20, 2009 /
 
Az lényegében mindegy. Biztos, hogy nyolcassal jó!
(#) Steven19 hozzászólása Jan 20, 2009 /
 
Helló! Visszatérve az RGB LED-es fényefektre, mostmeg vibrál, szerintem nem vibrál igy a gyári változata. Ezalatt azt értem hogy ugyan váltogatja a szineket meg egymásba csúsztatja csak a gond hogy közben
vibrál is egyik-másik szín. mind1 amúgy mert én nem az ezen az oldalról szerzett programot égettem bele hanem eggy másikat ami ugyanúgy váltogatja a szineket mint a gyári, 700Ft-ért lehet a LIDL-ben kapni ilyet. De ezt akkor láttam meg miután már kész volt a saját készitésű változata.Másrészt meg csak jobban érzem magam hogy olyan cuccom van amit én csináltam igaz a szoftvert nem én irtam, de majd az is bekövetkezik majd egyszer.
(#) herzsolt hozzászólása Jan 21, 2009 /
 
Segítséget kérnék az alábbiakban.
Vettem a HEStoreból egy AVR-ISP. Összeraktam, feltettem az AVR Studio legujjabb változatát, fel is ismeri, de mindig egy hiba üzenet jön ISP error, valamint Entering programming mode.. FAILED! üzi.
Hogyan tudnám munkára bírni?
A leírásban szerepel egy videó, de az egy régebbi változathoz.
(#) Sir-Nyeteg válasza herzsolt hozzászólására (») Jan 21, 2009 /
 
Lehet hogy ez a probléma? Mint nálam?
Helyezd rá a céláramkört is! Nekem ennyi a friss tapasztalatom.
(#) herzsolt válasza Sir-Nyeteg hozzászólására (») Jan 21, 2009 /
 
Igen ezt az üzit adja nekem is egy Atmega8-ast szeretnék felprogizni.
(#) Topi válasza herzsolt hozzászólására (») Jan 21, 2009 /
 
21. edszerre

Rövid kábel, proci tápfesz ellenőrzés. órajel. stb.

Nézd meg kap-e egyáltalán áramot a processzor.
(#) ZLED válasza IMi hozzászólására (») Jan 21, 2009 /
 
Kössz a segítséget, most már működik rendesen.
8-as osztással vibrált nagyon, ezér kikapcsoltam az osztást, és szépen megy.
(#) herzsolt válasza ZLED hozzászólására (») Jan 21, 2009 /
 
Hol kell pontosan kikapcsolni? Bocs az értetlenkedésemért, de eddig a PIC világában éltem
(#) ZLED válasza herzsolt hozzászólására (») Jan 21, 2009 /
 
  1. TCCR0 |= (0<<CS02) | (0<<CS01) | (1<<CS00);

Atmega8-nál
  1. TCCR0B |= (0<<CS02) | (0<<CS01) | (1<<CS00);

Attiny13-nál

de rajta van az adatlapon.
(#) HERC hozzászólása Jan 21, 2009 /
 
Üdv mindenkinek!
A processzoros automata NiMH töltő-vel kapcsolatban volna egy
kérdésem:

A CELL_NUM konstans 4 értékeből mi jön ki ?(Mely értékekre van hatása?)
Hogyan befolyásolja a töltést? (időben?)

Egyszerüen nem látom a kódban máshol csak a
definicióban.

De amúgy különben a program lényege az hogy?
1. Töltőáram bekapcsolása
2. Töltés 6mp-ig
3. Töltőáram ki, sönt bekapcsolása
4. 1mp söntölés
5. Sönt kikapcsolás, mérés, kiértékelés
feltételesen ez mindaddig míg az adc értéket eléri

jól értelmezem?


ui:Van egy kapcsolásom amolyan 8x8 led mátrix '1 utas
multiplexes' atmega8-al viszont Bascom Basic-el
(a C se áll olyan messzire tőllem de nem annyira szeretem)szeretném megírni a üresen lógó lábakra
a töltő elektronika programját (a mulitplexembe
belepaszírozva)(mert van még szabad timer-em is)



Következő: »»   95 / 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