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   310 / 840
(#) Axel válasza samu003 hozzászólására (») Feb 23, 2011 /
 
Jól sejtem, hogy az EEPROM-ba akarsz írni?
(#) kovacsj válasza Axel hozzászólására (») Feb 23, 2011 /
 
Hát ez így első ránézésre nagyon nem jó.

  1. PORTB = (1<< PB3)

kigyújtaná a lededet.

De az egyéb regiszterek beállítását miért kell végtelen ciklusba tenni?

Szerintem így Attiny45-nél sem működhet.
(#) kovacsj válasza kovacsj hozzászólására (») Feb 23, 2011 /
 
  1. DDRB = (1<< PB3)
  2. PORTB = (1<< PB3)


Ez az ami kigyújtja.
(#) Axel válasza kovacsj hozzászólására (») Feb 23, 2011 /
 
Ez tuti nem jó, állandóan égne a led, mert ekkor a PWM mód nem játszik. Egyébként a reg. beállítás nincs benne a végtelen while-ban azt csak elnéztem.
(#) Axel hozzászólása Feb 23, 2011 /
 
  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3.  
  4. int main(void){
  5.                          
  6. DDRB=(1<<PB1);
  7. TCCR0A=(1<<WGM00)|(1<<WGM01)
  8.               |(1<<COM0B1)
  9.               |(0<<COM0B0);
  10. TCCR0B=(0<<WGM02)
  11.                |(0<<CS02)
  12.                |(0<<CS01)
  13.                |(1<<CS00);
  14.  
  15. while(1){
  16.                          
  17.                           while(1){
  18.                           OCR0B=16;
  19.                           if(!(PINB&(1<<PB0))){
  20.                           _delay_ms(50);
  21.                           while(!(PINB&(1<<PB0))){}
  22.                           TCNT0=0;
  23.                           goto egy;}}
  24.                          
  25.                    egy:while(1){
  26.                           OCR0B=128;
  27.                           if(!(PINB&(1<<PB0))){
  28.                           _delay_ms(50);
  29.                           while(!(PINB&(1<<PB0))){}
  30.                           TCNT0=0;
  31.                           goto ketto;}}
  32.                          
  33.                  ketto:while(1){
  34.                           OCR0B=255;
  35.                           if(!(PINB&(1<<PB0))){
  36.                           _delay_ms(50);
  37.                           while(!(PINB&(1<<PB0))){}
  38.                           TCNT0=0;
  39.                           break;}}
  40.                           }}


Ez a kód attiny-vel nagyon jól működött. (Gombbal kapcsolgattam a komparálási szintet tesztként)
(#) samu003 válasza Axel hozzászólására (») Feb 23, 2011 /
 
Szia!
Igen. Vagyis a SRAM részébe. Kalibrálni szeretnék egy érzékelőt, amit az A/D bemenetre kötök Táp ref. használatával. Vizsgálni szeretném mekkora 16 bites számot alakít át a konverter. Ezt az értéket felhasználva szeretnék feltételeket szabni mi mikor történjen. Az adatlapon van utalás az EEPROM irásra de szerintem az nem jó. Vagyis kiprobáltam és nem jutottam eredményre. Igazábol a 0x300 cimre irnám a digitális eredményt amit szeretnék memory listázással vagy valami megoldással kiolvasni. A feladat mindenképp egy 16 bites szám megjelenitése!
(#) Fizikus válasza Axel hozzászólására (») Feb 23, 2011 /
 
Timer2 Fast PWM-hez a WGM20 es a WGM21-nek is 1-erteket kell adni. Fazishelyes PWM-hez WGM21-nek 0-t, WGM20-nak 1 erteket kell adni. Az altalad mellekelt kodban nem PWM modot, hanem egy CTC timer modot allitottal be (WGM21=1, WGM20=0).
Pelda PWM-re Timer2-vel

A masodiknak mellekelt kod azert nem mukodik ATMega8-on, mert azon csak a Timer1 es a Timer2 tud PWM-et, a Timer0 nem (ha a mellekelt kodban atirod pl a TCCR0A-t TCCR1A-ra, az OCR0B-t pedig OCR1B-re es az adatlap alapjan a tobbit is akkor mukodni fog... ).
Arra figyelj hogy hany bites PWM-et allitasz be...
8 bites PWM Timer1-el
(#) Axel hozzászólása Feb 23, 2011 /
 
hello!

Köszi, ebben az a vicc, hogy többször is megnéztem, hogy mit állítottam (valóban fast PWM-et-e) be és rittig elkerülte a figylememet Pedig mind-mind végignéztem... Biztosan az OCR2 kavart össze a CTC sorában. Tipikus "Hol az órám"?! "Ja hát a karomon" eset...
(#) Axel válasza samu003 hozzászólására (») Feb 23, 2011 / 1
 
Szeva!

EEPROM íráshoz vannak könyvtári függvények. Ezek tapasztalatom szerint igen hatékonyak és könnyedén kezelhetőek. Íme:

  1. #include <avr/eeprom.h>
  2.  
  3. //írás:
  4. eeprom_busy_wait();
  5. eeprom_write_byte((uint8_t*)0,a);
  6. eeprom_busy_wait();
  7.  
  8. //olvasás:
  9. eeprom_busy_wait();
  10. a= eeprom_read_byte((uint8_t*)0);
  11. eeprom_busy_wait();
  12.  
  13. //'a' változót írtuk be és olvastuk ki a 0-ás memóriahelyről
(#) zolee1209 válasza Axel hozzászólására (») Feb 23, 2011 /
 
Én a LED katódját a PWM lábra kötném, az anódját pedig előtét után a tápra... Én legalább is így szoktam.
(#) samu003 válasza Axel hozzászólására (») Feb 23, 2011 /
 
Kösz!

A probléma csak az hogy tudom megnézni aaz AVR studióban mennyi az érték. Amugy ha az adat amit akarok írni nem 8 bit hanem 16 akkor "okos" cimzés módjára az utána következő tárhelyre írja vagy hibát generál és nem tudja beirni a nagyobnbb számo!
(#) lakatosturbo hozzászólása Feb 23, 2011 /
 
Emberek én ezzel a programozóval Link tudom ezt a mikrovezérlőt is programozni Link?
(#) Axel válasza samu003 hozzászólására (») Feb 23, 2011 /
 
Kötve hiszem, hogy 16 bites adatot automatikusan képes ketté osztani.
(#) covek válasza lakatosturbo hozzászólására (») Feb 23, 2011 /
 
Nono! Az apróban hirdess! --vicsys
(#) Reggie válasza samu003 hozzászólására (») Feb 23, 2011 /
 
Ha 16 bites adatot akarsz kezelni az EEPROM-ban akkor a _byte helyett _word kell a nevebe. Amugy ott van fent a topic kiiras alatt az AVR-libc FAQ linkelve, ott megtalalsz minden ilyen leirast.
(#) proksa1 hozzászólása Feb 23, 2011 /
 
AVRStudioban hogyan tudok assembly kódot beszúrni? C18nál _asm .... _endasm közé kell irni, gccben meglehet ezt tenni valahogyan?
(#) Reggie válasza proksa1 hozzászólására (») Feb 23, 2011 /
 
Itt van minden reszletesen, peldakkal leirva.
(#) lakatosturbo hozzászólása Feb 23, 2011 /
 
Akkor eezl a programozóval ezt is használhatom ugye Link ?

Légyszi erősítsetek meg ebben.
(#) Reggie válasza lakatosturbo hozzászólására (») Feb 23, 2011 /
 
Igen.
(#) lakatosturbo hozzászólása Feb 24, 2011 /
 
Még annyit kérdezek, hogy ennek a programozónak a firmware-t lehet frissíteni?
Meg, hogy reagál ha véletlenül fordítva csatlakoztatom kábeleket a programozandó mikrovezérlőre tönkre megy valamelyik vagy csak hibát jelez azt jó napot?

Előre is köszönöm a válaszokat.
(#) Axel válasza lakatosturbo hozzászólására (») Feb 24, 2011 /
 
Inkább csak hibát jelez. Bár a többi 4 vezetéket is nehéz eltéveszteni de a tápot semmiképpen se kösd fordítva...
(#) A.PETER hozzászólása Feb 24, 2011 /
 
sziasztok

tudnátok nekem erre egy bazi egy szerű programozót ha van ilyen ?

esetleg a "nemtudom mi ez" képen látható cuccot át lehet alakítani valahogy?
(#) samu003 válasza A.PETER hozzászólására (») Feb 24, 2011 /
 
Szia!

Találtam neked egy leírást!
Bővebben: Link
(#) kovacsj hozzászólása Feb 24, 2011 /
 
Sziasztok!

Van nálam egy gyári Jtag ICE mkII programozó. Az AVR Studió minden esetben felkínálja a firmware frissítést. Szerintetek merjem?

Köszönöm előre is a segítséget!
(#) koczka hozzászólása Feb 24, 2011 /
 
belevágtam ebbe a pojectbe de a config bitek nem tudom hogy kéne beállítani tudnátok benne segíteni?
(#) Reggie válasza kovacsj hozzászólására (») Feb 24, 2011 /
 
Nekem is az van, es nyugodtan frissitheted.
(#) Reggie válasza koczka hozzászólására (») Feb 24, 2011 / 1
 
A szoveget elolvasva nem nagyon kell valtoztatni. Azt viszont javasolja, hogy a BODEN-t engedelyezd, de nem kotelezo.
(#) PHARO válasza A.PETER hozzászólására (») Feb 24, 2011 /
 
Igen, a legegyszerűbb az STK200-as Bascom alól, ha van párhuzamos portod.
Ha tudsz, inkább 89S2051-et vegyél.

Üdv
(#) A.PETER válasza PHARO hozzászólására (») Feb 25, 2011 /
 
köszi a választ


ebből a c-s ből van 5-6 db om idehaza és szeretném felhasználni valamire , csak még azt nem tudom mire mert nem találtam hozzá programozót amit amatőr szintenn meg is tudok csinálni
(#) Petroimro hozzászólása Feb 25, 2011 /
 
Sziasztok!

Én azt szeretném kérdezni, hogy AVR Studio van-e Linuxra.

Köszi!
Következő: »»   310 / 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