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   406 / 840
(#) Tetye válasza lacicor hozzászólására (») Feb 4, 2012 /
 
Tuti hogy jó COM port van beállítva? Nem "com86" nak, és a com 2-n keresei?
Én jártam már úgy is hogy com 6-7-8 felett nem működött avr studio.
(#) lacicor válasza Tetye hozzászólására (») Feb 4, 2012 /
 
A port 2-n van. Közben az AVR studio csak a STK500 ajanlja - es az is csak a com 1-en.Amugy hol tudom a studion belul hozza adni es configuralni az eszkozt?
A kiten a zold(kek) led jelzi, hogy megtortent a kapcsolat?Ugyan ez kell hogy jelezzen amikor racsatlakoztatom a gepre?
(#) szdani hozzászólása Feb 4, 2012 /
 
Sziasztok egy ilyen lcd-m van és nemtudok rá kiírni, szereztem rajzot meg hex-et hogy attiny2313-al meglehessen hajtani de nem szeret engem. Azt néztem hogy negatív blue lcd az azt takarja hogy negatívba kénee vezérelni? ás ha igen hogyan tudom megoldani avr-el?
(#) Tetye válasza szdani hozzászólására (») Feb 4, 2012 /
 
A negative blue csak azt jelenti hogy kék kijelződ van kék háttér és ha a pixel kap vezérlés akkor átengedi a fényt.
Hogy kötötted be? mi van a hexben?
(#) szdani válasza Tetye hozzászólására (») Feb 4, 2012 /
 
PB0=DB7; PB1=DB6; PB2=DB5; PB3=DB4; PD0=R/S; PD2=E; R/W=GND
Utoljára itt a hobbielektronikán találtam "Inkrementális szögadó illesztése mikrokontrollerhez" letöltöttem a komplett avr studio4 projektet mert át kellett írnom az R/S és az E lábat mert neki máshova volt kötve. Gondoltam szögjeladó nélkül is ki fog írni de nem elötte meg neten találtam valakinek a projekt-jét ahol annyit írt vólna ki hogy hello word. De neten találtam egy html-es szimulátort ahol egérrel lehet kattintgatni a lábakra és úgy ír ki, ugyanezt megpróbáltam hogy I/O lábakat kapcsolgattam de semmi nem történ.
(#) szdani válasza szdani hozzászólására (») Feb 4, 2012 /
 
Ennél a kapcsolásnál volt kijelzés. A 10K SIP-t nem raktam bele
(#) Tetye válasza szdani hozzászólására (») Feb 4, 2012 /
 
Ezt töltsd fel az mcu-ra. És állítsd be a fuse biteket.
Int. RC Osc. 8mhz; Start-up time:14CK+65ms.
0x00
0xDF
0xE4
Eredmény?
5V-al táplálod az egészet, 100nf az mcu tápon közel hozzá, reset 10k felhúzva, és direktbe mennek a lábak az lcdre, más nincs rajta.

SZDANI.HEX
    
(#) szdani válasza Tetye hozzászólására (») Feb 4, 2012 /
 
sajnos semmi
(#) dinnyextra válasza zombee hozzászólására (») Feb 4, 2012 /
 
Köszi a segítséget, mára rejtélyes módon zokszó nélkül lefordult nekem is, lehet csak egy újraindítás hiányzott neki.
Axel, C-t tanultunk egy bizonyos alap szinten, könyvet beszereztem, köszi a tippet!

Üdv: dinnyextra
(#) Tetye válasza szdani hozzászólására (») Feb 4, 2012 /
 
Avr studio-val programozod? Tuti felírja a flash-t? Tegyél már egy screen shot-ot a fusebit és a flash programozás végéről is. Lcd kontraszt (10k-s poti) ?
(#) szdani válasza Tetye hozzászólására (») Feb 4, 2012 /
 
Igen azon állítottam, mármint a 10K-s potin is de úgysem semmi.
(#) Tetye válasza szdani hozzászólására (») Feb 4, 2012 /
 
Fuse biteknél: clock div 8 vedd ki az x et.
(#) szdani válasza Tetye hozzászólására (») Feb 4, 2012 /
 
Ha kiveszem akkor is ugyan ez, itt azért van bepipálva mert ha be van pipálva akkor ckvid8=0 ha bepipálom akkor ckvid8=1. A chip Blaster Fuse bit olvasáskor azt írja hogy ckvid8=0.
(#) Tetye válasza szdani hozzászólására (») Feb 4, 2012 /
 
De nálad 0x64 ed ír LOW-ra, 0xE4 helyett. Nekem gy működik. Össze dugdostam ahogy írtad, amit átküldtem hex van rajta. LCD nem halt meg? Egyik végállásában a potinak "világít" az egyik sor ha tápot adsz neki?

szd.jpg
    
(#) mzozo95 hozzászólása Feb 4, 2012 /
 
Sziasztok!

Nagyon kezdő vagyok, lenne egy alap kérdésem

Attiny 2313 AVR -nél hogyan lehet úgy beállítani a hardweres pwm-et, hogy nem kitöltési százalékot adok meg, hanem azt hogy 2000us-ig legyen logikai 1 állapot, és 20000us-ig legyen logikai 0? (az 1es állapotot később változtatni szeretném futás közben), C nyelven?

Azt meg lehet valahogy valósítani, hogy 3 hardveres pwm csatorna legyen? a 20000us azaz 50Hz lenne a frissítési idő, és a kitöltés 1000us és 2000us között változhatna, egymástól függetlenül.


Előre is köszönöm!
Zoltán
(#) Bender hozzászólása Feb 4, 2012 /
 
Üdv!

Lehet, hogy buta kérdés, de felteszem.
Egy AVR bemeneten van egy nyomógomb, párhuzamos 100nF kondival.
Bekapcsoláskor felfölti pull-upon keresztül, utána pullup kikapcs, majd a mainloopban ellenőrzi a kondi töltöttségét és "frissíti" újra a kondit pu-n. Ka a gomb akár egy pillanatra is meg volt nyomva és kisütötte a kondit akkor ezt észre kell vennie a proccnak? Pl ha túl rövid ideig volt nyomva a gomb és épp egy megszakítást kezelt, vagy elfogytak a külső megszakítás bemenetek és nem jutott a gomboknak. Így nem marad le az ilyen eseményekről és nem gáz ha prellezik a kapcsoló.

Vagyez nem jó így?
(#) TavIR-AVR válasza Bender hozzászólására (») Feb 4, 2012 /
 
Pulllup KEVÉS.
Ki/be nem kapcsolgatjuk, mert minek....

Tessék INT-re kötni ha kell (prellet kivédeni).


Nem illik egy kérdést 4 fórumba is feltenni
(#) szdani válasza Tetye hozzászólására (») Feb 4, 2012 /
 
Ha átrakom 0xE4 re akkor külső 8Mhz-es kristyájra állítja magát ha eltekerem az egyik irányba a potit akkor világít az egyik sor!
(#) sgt válasza szdani hozzászólására (») Feb 4, 2012 /
 
Ha világít egy sor, akkor a LöCöDöd működik, csak nem jól inicializálod. A hiba az önkészülékében van .

Egy forráskódot kérnénk.

Jó tanács: te határozd meg delay függvényekkel, hogy mikor jöhet a következő parancs, mert ha Busy Flag-t használod az érdekes módon nem mindig működik ahogy azt az ember elgondolta.
(#) szdani válasza mzozo95 hozzászólására (») Feb 4, 2012 /
 
szerintem próbáld meg valahogy így, ebben van leírás hogy működik a pwm.
(#) zombee válasza mzozo95 hozzászólására (») Feb 4, 2012 / 1
 
Az ATTiny2313-ban csak 2 időzítő van, mindkettőnek 2 kimenete, saját komparátor-regiszterrel(OCR).
Három, teljesen független PWM csatornát nem tudsz kezelni, de ha ebből kettőnél a PWM-frekvencia lehet azonos
akkor nincs akadálya. Esetleg ATMega48-at ajánlom amibe 3 timer van 2+2+2 OCR regiszterrel.

Kitöltési százalékot sehol nem lehet megadni, maximum azt hogy a számláló milyen állásainál(értékeinél) történjen valami. Először a frekvenciát kell beállítani: 2000+20000us=22ms ~45.4545Hz. Ebből, és az AVR órajeléből kell kisakkozni a számláló maximális értékét. Én 8MHz-vel számolok ha nem gond, azt beépítve tudja az ATTiny2313 és az ATMega48 is(CKDIV8 FUSE bit kikapcsolásával).

És a Timer1-el számolok, ott pontosabb értékeket meg lehet adni. Az előosztónak 64-et választom mivel 8MHz/64=125kHz, azaz a számláló pontosan 125-öt számol minden ezredmásodpercben. Ugye 22*125=2750, ebből 1-et ki kell vonni és azt kell megadni, mint a számláló TOP értéke. Az 1-es időzítőnél az ICR1-et állítsd be 2749-re!
Most jön a PWM. Az OCR1A-t állítsd be (125*2)-1=149-re! Ezután a kimenetet kell beállítanod a TCCR1A-n a COM1A1:0 biteken hogy az OCR1A eléréséig logikai 1, utána a számláló újraindításáig logikai 0 legyen. A timert a megfelelő módba kell kapcsolni olyan PWM módba, hogy a TOP az ICR1 legyen! A számlálót a TCCRB-ben az előosztó beállításával indítod el.
(#) Tetye válasza szdani hozzászólására (») Feb 4, 2012 /
 
Lcd akkor tán nem halott... de nem értem E4 elviler a belső saját oszci.
Neked van most rajta valami órajel forrás?
Belső 8mhz vel próbáld.
Robi ?
(#) Tetye válasza sgt hozzászólására (») Feb 4, 2012 /
 
Tessék (hátha Te többre mész):
  1. $regfile = "attiny2313.dat"
  2. $crystal = 8000000
  3. Config Lcdpin = Pin , Rs = Portd.0 , E = Portd.2 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0
  4. Config Lcd = 16 * 2
  5. Initlcd
  6. Initlcd
  7. Cursor Off
  8. Cls
  9. Lcd "Hello Sz. Dani !"
  10. End
(#) szdani válasza sgt hozzászólására (») Feb 4, 2012 /
 
odaadom a komplettet, netről szedtem le én, az avr studio szerint jó.

lcd.zip
    
(#) zombee válasza zombee hozzászólására (») Feb 4, 2012 / 1
 
Hogy ne legyen kínai, leírom a beállításokat ATTiny2313-ra és ATMega48-ra ugyanúgy jó a kód:

  1. //Plafon beállítátsa - 22ms:
  2. ICR1 = 2749;
  3. //Kitöltés beállítása - 2ms:
  4. OCR1A = 249;
  5. //időzítő mód beállítása és a timer indítása - előosztó=64 :
  6. TCCR1B = 1<<WGM13 | 1<<WGM12 | CS11 | CS10;
  7. //időztő mód(WGM11 és WGM10 marad 0-ban), és kimenet(OC1A) beállítása:
  8. TCCR1A = 1<<COM1A1;


A logikai 1 és 0 értékeket felcserélheted, 2-féleképpen is, én a legegyszerűbbet írom le:
  1. OCR1A = 2499;  //(125*20)-1

Megjegyzés: PWM módoknál az értékek a timer újraindulásakor(TOP elérésekor) érvényesülnek.
Másik megoldás a kimenet polaritásváltása(COM1A1:0 átállíátsa), de a változtatás azonnal életbe lép!
(#) Tetye válasza szdani hozzászólására (») Feb 4, 2012 /
 
Nem azzal hex-el próbáltad amit küldtem?
(#) szdani hozzászólása Feb 4, 2012 /
 
Működik!! Találtam itthon egy másik 2313-mat mert gondoltam hátha jó lesz. A régi chip-nek is kiolvassa rendesen a signatúráját, de azzal nem jó. Köszönöm szépen mindenki segítségét
(#) szdani válasza Tetye hozzászólására (») Feb 4, 2012 /
 
De igen azt írtam bele utoljára most ki is írja hogy Hello Sz. Dani. csak gondtam elküldöm neki azt a projektet amit direkt 2313hoz írt valaki és én azzal is próbáltam.
(#) mzozo95 válasza zombee hozzászólására (») Feb 4, 2012 /
 
Szia!

valami nem akar működni... Szoftveresen tökéletesen működik a pwm, de sajnos ezzel sem(próbáltam pár netes jódot is...), ezt a kódot égettem be:
  1. #define F_CPU 8000000
  2. #include <avr/io.h>
  3.  
  4. int main(void) {
  5.     DDRB = (1<<PINB3);
  6.  
  7.         //Plafon beállítátsa - 22ms:
  8.     ICR1 = 2749;
  9.     //Kitöltés beállítása - 2ms:
  10.     OCR1A = 249;
  11.     //időzítő mód beállítása és a timer indítása - előosztó=64 :
  12.     TCCR1B = 1<<WGM13 | 1<<WGM12 | CS11 | CS10;
  13.     //időztő mód(WGM11 és WGM10 marad 0-ban), és kimenet(OC1A) beállítása:
  14.     TCCR1A = 1<<COM1A1;
  15.    }


A jel egy RC szervóhoz és egy ledhez megy, a led nem is világít, így valami gond van, a kimenet az OC1A, azaz a PB3 ha jól gondolom... Végignéztem a többi kimenetet is, de sehol semmi...

Egész délután ezzel az egyszerű dologgal küszködök, sajnos elég hiányos az elérhető dokumentáció is a neten...

Mi lehet a hiba?

Zoltán
(#) szdani válasza mzozo95 hozzászólására (») Feb 4, 2012 /
 
Pontosan mit szeretnél csinálni a szevóval? Mert én régebben töltöttem le egy rajzot, attini2313-ra van kötve egy szervó, 4 nyomógomb amivel vezérled, meg van egy lcd-je ami kiírja mi történik de az nem lényeg rá. Ha valami ilyet szeretnél eltudom küldeni
Következő: »»   406 / 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