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   514 / 837
(#) csabeszq válasza ThompsoN hozzászólására (») Jan 31, 2013 /
 
Milyen PWM-et akarsz? 679.8 Hz-es jelet, vagy mondjuk 1 és 10 kHz között bármi jó?

Azért fontos a kérdés, mert 8 bites számlálóval nem fogsz 679.8 Hz-es PWM-et kiadni. A pontos frekvenciához 16 bites számláló kellene, ami az ATmega-ban van először. A tiny-k 8 biten számolnak.

Ha a frekvencia számít, akkor ATmega48PA-t ajánlok 550-ért.

Ha teljesen mindegy, akkor bármelyik >8 lábú IC tökéletes lesz.
(#) ThompsoN válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
Nem kell pontos frekvencia. Ha minden igaz, akkor a néhány kHz-es tartományban az igazi, de azt majd kipróbálom.

Köszönöm mindenkinek a segítséget!

ui: Tiny24-et is lehet ezzel programozni, ugye?
(#) zamatőr válasza zamatőr hozzászólására (») Jan 31, 2013 /
 
Bővebben: Link A leírás alapján elkészítettem és sikerült az ATMEGA8A -kat visszahozni az életbe.
(#) kiborg hozzászólása Jan 31, 2013 /
 
Kérdeznék én is.
ATMega16-nál, ha használom az ADC-t, akkor az adatlap ajánlja, hogy használjam az ADC Noise canceler módot. Beállítom a Sleep módot. (SM2=0,SM1=0,SM0=1)
Ezután ha elindítom a konverziót, akkor a következő utasítás a sleep legyen ? Gondolom igen.
Megszakításban is kiadhatom a sleep utasítás? (mert ugyanis akkor indul a konverzió, ha Timer0 elérte a kívánt értéket (timer0_compare)) ? Ez a nagyobbik kérdés.
üdv Kiborg
(#) csabeszq válasza kiborg hozzászólására (») Jan 31, 2013 /
 
- alapból az interrupt tiltva van interrupt feldolgozása alatt (reti = sei + ret)
- kérdés, hogy van-e értelme interruptból sleepelni

interrupt->sei()->sleep()->interrupt->sei()->sleep()->interrupt->sei()->sleep()

Elég gyorsan körbe fog fordulni a stack.
(#) kiborg válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
Köszi, akkor kirakom a main-be.
(#) csabeszq válasza kiborg hozzászólására (») Jan 31, 2013 /
 
Általában a

while(1) { sleep(); }

szintű ciklusokkal oldják meg. Miután vége az interruptnak már sleepelsz is.
(#) szikorapéter hozzászólása Feb 1, 2013 /
 
Helló.Az lenne a kérdésem hogy lenne egy ilyen (kép mellékelve) atmega programozóm com-portra és hogy a kapcsolásban szereplő tranzisztort ki lehet-e cserélni egy 2n3906-os ra?Meg a pony prog 2000-el ennek az áramkörnek a segítségével az összes beleírt mcu-t lehet programozni(mármint ami a programban szerepel a listában)?
(#) Reggie válasza szikorapéter hozzászólására (») Feb 1, 2013 /
 
Nem, amit irtal az PNP, az eredeti NPN.
Programozni mindegyik atmelt tudja.
(#) szikorapéter válasza Reggie hozzászólására (») Feb 1, 2013 /
 
És a 2n3904-es típus?Az ha minden igaz npn.De ezzel is működni fog?
(#) sikolymester válasza szikorapéter hozzászólására (») Feb 1, 2013 /
 
Biztos nem fog minden atmel AVR -rel menni. Xmega-k szerintem biztos nem mennek. Illetve sok attiny sem.
A tranzisztor fő paraméterei legyenek köszönő viszonyban az eredetivel és akkor menni fog.
(#) szikorapéter válasza sikolymester hozzászólására (») Feb 1, 2013 /
 
Utánnanézek a paramétereknek.Köszönöm a válaszokat.
(#) Reggie válasza sikolymester hozzászólására (») Feb 1, 2013 /
 
Igen, ez jo lesz.
(#) Reggie válasza sikolymester hozzászólására (») Feb 1, 2013 /
 
Amik a ponyprog listajaban vannak, azokkal menni fog. Ez volt a kerdes.
(#) csabeszq válasza sikolymester hozzászólására (») Feb 1, 2013 /
 
Az előző kérdésem ezzel volt kapcsolatban, mármint hogy a kapcsolási rajzon a MISO szimplán csak rá van kötve a CTS-re.

Annyiban maradtunk, hogy elképzelhető olyan RS-232-es port, amelyikkel működni fog.
(#) szikorapéter válasza sikolymester hozzászólására (») Feb 1, 2013 /
 
Hát a feszültség-adatok eggy az egyben eggyeznek de a freqvencia maximális átvitele 50Mhz-vel kevesebb,de viszont az ezen max átfolyó amperszám több meg a kapcsolási ideje is gyorsabb.
(#) kiborg hozzászólása Feb 1, 2013 /
 
Hali!
Egy ATMega16-nál (illetve bármelyik ADC-vel rendelkező) AVR-nél lehet-e terhelni a belső referenciát?
Az a gondom, hogy a ugrál a beolvasott érték nagyon
Az AVCC-t 220uH-s tekerccsel és 100nF-os kondival szűröm. A Vref-en ott a 100nF-os kondi. 2,56Vos belső referenciát használom. Elméletileg használom a ADC Noise reduction módot, (bár erről majd megmondjátok, hogy jó-e így,lásd kódrészlet) de mégis ugrál. A terhelés 1mA lenne kb. Egy KTY84(500-2500Ohm között) és egy soros ellenállás(pl:2,2k)
KTY84-el mérnék hőmérsékletet, működik is, de ugrál. Arra gyanítok, hogy lehet, hogy a tápfesz ingadozása miatt ugrál, bár ennek némileg ellentmond, hogy ha multiméterrel mérem, akkor viszonylag stabil a ADC bemente (max 10mV ingadozást mértem) és sajnos az ugrálás 10-20 fok is megvan néha. Nem értem. Az indadozást a nyers ADC értékeken is nyomon lehet követni,mert kiteszem közvetlenül a D portra is ledekre)

Vélemények? Így kell használni a ADC zajelnyomást?
( convert subrutin konvertálja az LCD-n megjeleníthetővé a mért értéket, de az jelenleg nem fontos)
  1. main:
  2. sbrc status,bit_0
  3.         call convert
  4. sbrc status,bit_1
  5.         call start_ADC
  6. main_end:
  7. rjmp main
  8.  
  9.         start_ADC:
  10.                 in temp,ADCSRA
  11.                 ori temp,(1<<ADSC)
  12.                 out ADCSRA,temp ; elindítja  az ADC-t
  13.                 sleep
  14.                 clrbit status,bit_1
  15.         ret
  16.  
  17. ADC_C:
  18.         push temp
  19.         in temp,sreg
  20.         push temp
  21.                 in temp_l,ADCL
  22.                 in temp_h,ADCH
  23.                 setbit status,bit_0     ; ADC kész jelzése
  24.         ADC_end:
  25.         pop temp
  26.         out sreg,temp
  27.         pop temp
  28.         reti
  29.  
  30. TIM0_COMP:
  31. push temp
  32. in temp,sreg
  33. push temp
  34. ldi temp,0
  35. out TCNT0,temp
  36. inc counter
  37. cpi counter,33
  38. brne TIM0_COMP_end
  39.         ldi counter,0
  40.         setbit status,bit_1    ; jelzem,, hogy indulhat az ADC
  41. TIM0_COMP_end:
  42. pop temp
  43. out sreg,temp
  44. pop temp
  45. reti
A hozzászólás módosítva: Feb 1, 2013
(#) csabeszq válasza kiborg hozzászólására (») Feb 1, 2013 /
 
Ha a KTY84-et egy 1k-s ellenállással helyettesíted, akkor is ugrál?

A 10-20 fok soknak tűnik. Az ADC frekvenciáját is nézd meg, mert ha túl gyors, akkor romolhat a pontosság.

Nálam 1 fok szokott ugrálni, pedig annyi szűrést használok, hogy 1µF az AREF-re, 100 nF az AVCC-re.
(#) kiborg válasza csabeszq hozzászólására (») Feb 1, 2013 /
 
Szia!
Kis hőmérsékleten(20fok) nálam is 1 fok a max ugrálás, de ha hozzáteszem a pákát (250fok) és emelkedik a szenzor hőmérséklete, akkor jelenik meg a nagy ugrálás.
Kipróbálom az ellenállásos helyettesítést.
(#) kiborg válasza csabeszq hozzászólására (») Feb 1, 2013 /
 
Na kipróbáltam. Stabil az érték. Nem az ADC-ben van a hiba.
Ennyire változna egy KTY84-nek az értéke?
Értem én, hogy pákával melegítem, de azért egy WELLER-nek nem ártana stabilan tartani a hegy hőmérsékletét (digitális WD1-es állomás) vagy éppen milyen a hőátadás? Mennyire remeg meg a kezem ? Igyekszem pedig egyformán tartani a pákát. Viszont akkor azt is megtanultam, hiszek az elméletnek és nem használom referencia hőforrásnak a pákát.
Na mindegy. Remélem majd a laminálómban nem lesz ilyen buta jelenség. Ugyanis az épül majd belőle, ezért kell ez a hőmérséklet-tartomány.
Azért köszi a segítséget és az ötletet.
Üdv Kiborg
A hozzászólás módosítva: Feb 1, 2013
(#) csabeszq válasza kiborg hozzászólására (») Feb 1, 2013 /
 
Nekem a Weller pákám 450 fokról kb. 10 perc alatt szobahőmérsékletűre hűl le.
Sőt, a LED-je amikor a hőfokot próbálja tartani, másodperceken belül villan.

Relatíve gyorsan váltja a hőmérsékletét.
(#) Seton válasza kiborg hozzászólására (») Feb 1, 2013 /
 
Egy pohár forrásban lévő víz jó lehet referenciának és egyben a precizitás tesztelésére, ha szobahőmérséklet feletti tartomány érdekel minket.
Ennél magasabb hőmérsékletet például olajfürdő (pl. étolaj) lassú melegítésével lehetne nézni, így jól el lehet különíteni az ingadozást a hőmérséklet emelkedésétől.
(#) blackdog hozzászólása Feb 1, 2013 /
 
Sziasztok!

Szeretnék építeni egy tápegységet amit AVR vezérel. Kiindulási alapnak ezt találtam: Bővebben: Link
Viszont már az elején elakadtam. Egész pontosan az ellenállás létránál.
A leírás szerint a portokat megfelelően kapcsolva tudok előállítani 0-5V.
De hogyan? Az első 10k-10k ellenállás így 2,5V-t kapok. Innen persze 5V-ig megy a dolog.
De hogyan jön ki ebből 0-2,5V közötti feszültség? Nem értem.
(#) Ricsi89 hozzászólása Feb 2, 2013 /
 
Sziasztok!
2X16-os lcd-t használnék, de csak hülye karakterek vannak, semmi más. Inicializálás jó, tehát ebből kifolyólag a bekötés is, de azt át is néztem vagy ezerszer és semmi gond. Többször használtam már ezt a drivert, semmi gond nem volt vele, ezért nem értem miért nem megy. Kurzorvillogtatást bekapcsolom az működik, csak a szöveg megjelenítés nem jó. Ugyanilyen kijelzőt használtam már máshol, ott semmi gond nem volt vele.
Valakinek van valami ötlete, hogy mi lehet a gondja?
(#) zombee válasza Ricsi89 hozzászólására (») Feb 2, 2013 /
 
Pl. processzor sebesség nagyon sokat számít, főleg ha tökugyanazt a drivert egy gyorsabbal hajtod.
(#) Ricsi89 válasza zombee hozzászólására (») Feb 2, 2013 /
 
Egyik programomban 4MHz körüli kvarccal megy, egy másik programban belső 8 megával, most belső 1 megán menne, de próbáltam belső 8 megással is, de semmi. Init megvan, kurzort is be tudom kapcsolni, csak szöveget nem jelenít meg. Vagyis néha megjelennek furcsa karakterek és annyi. Most pedig hozzá sem nyúlok, csak az asztalon van bekapcsolva és írogat kifelé karaktereket, amit meg kellene jelenítenie, de össze vissza, nem sorrendben. Ez már a második kijelző, amivel nem akar működni.
(#) Ricsi89 válasza Ricsi89 hozzászólására (») Feb 2, 2013 /
 
Valamiért a driver nem volt jó. Egy másik projektből átmásoltam a fájlokat és most jó.
(#) kiborg válasza kiborg hozzászólására (») Feb 3, 2013 /
 
A kérdés még nyitott: terhelhető-e valamennyire a referencia kimenet ? (2,56V)
(#) Reggie válasza kiborg hozzászólására (») Feb 3, 2013 /
 
40 masodperces kereses utan: Nem. Adatlap 211. oldal:
Idézet:
„VREF can also be measured at the AREF pin with a high impedant voltmeter. Note that VREF is a high impedant source, and only a capacitive load should be connected in a system.”
A hozzászólás módosítva: Feb 3, 2013
(#) Andrasirex hozzászólása Feb 3, 2013 /
 
Üdv mindenkinek!
A következő lenne a problémám:
ATmega8-al építettem egy panelműszert(Bővebben: Link) de sajnos csak akkor hajlandó mutatni a kijelző,ha bekapcs után leveszem a kijelzőt,majd vissza és adok egy reset-et. Mit tehetek,hogy bekapcsolás után mutasson rendesen.Egy tápba szereltem be és elég idegesítő mindig bekapcs előtt szétszedni.Mellékelem a kontroller szoftverét,ha valaki ki tudja javítani,azt nagyon megköszönném. A kontroller belső 1MHz-ről jár.
Következő: »»   514 / 837
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