ADC konvertálás
ADC konvertálás
ÜDV!
Az lenne akérdésem : hogy mennyi idő alatt végez el az avr (azmega16)egy AD konverziót 4MHz-en?
Mert olyan ötletem támadt, hogy az AVR 8 analóg bemenetére a aktív/passziv szűrőkkel a teljes hangfrekvenciás sávot felosztani, ezeket sorban, egymás után beolvastatni és kííratni egy 8*8as LED mátrixra. és ezzel létre tudnánk hozni egy szép kis spektrum analizátort, mint a Winamp-ban!
Az lenne a lényeg hogy mind a 8 konvertálást el kéne végezni másodpercenként legalábbb 25 ször, hogy folyamatosnak tűnjön azu egész.
Ez megoldható, vagy karácsony után egy nappal ne zargassalak ilyen kérdéssel?
.:: MaSTeRFoXX ::.
Az lenne akérdésem : hogy mennyi idő alatt végez el az avr (azmega16)egy AD konverziót 4MHz-en?
Mert olyan ötletem támadt, hogy az AVR 8 analóg bemenetére a aktív/passziv szűrőkkel a teljes hangfrekvenciás sávot felosztani, ezeket sorban, egymás után beolvastatni és kííratni egy 8*8as LED mátrixra. és ezzel létre tudnánk hozni egy szép kis spektrum analizátort, mint a Winamp-ban!
Az lenne a lényeg hogy mind a 8 konvertálást el kéne végezni másodpercenként legalábbb 25 ször, hogy folyamatosnak tűnjön azu egész.
Ez megoldható, vagy karácsony után egy nappal ne zargassalak ilyen kérdéssel?
.:: MaSTeRFoXX ::.
Hat elvileg 30-40 kHz ami kihozható belőle. van egy Sound Recorder nevű alkalmazás az Atmel oldalán. Ott tömörítéssel is megy a dolog, és ~8kHzvel digizik. A Config ADC utasítással állíthatod be a referenciafrekvenciát. Ha 8 biten digizel, akkor ezt osszd el 9-l (közelítéses a digizás, ha jól emlékszem, ez a legrosszabb esetben 9 órajelfreki.). Szóval a 25/db r9öhögve megy.
De: ézz körbe a Fast fourier Transformation részen. Itt SWből van meg a szűrőzés (matematikája bonyolult, nézz meg 1-2 mintát.
Így 1 bemenet, a proci megy 16 MHzre. Sőt egy M8-ba is belefér a kód. illetve januártól lesz ATTIny25/45/85 proci (kergetem már), ez 8 lábó, AD bemenettel, és 8K belső programmemóriával , Szóval ütős darab...
De: ézz körbe a Fast fourier Transformation részen. Itt SWből van meg a szűrőzés (matematikája bonyolult, nézz meg 1-2 mintát.
Így 1 bemenet, a proci megy 16 MHzre. Sőt egy M8-ba is belefér a kód. illetve januártól lesz ATTIny25/45/85 proci (kergetem már), ez 8 lábó, AD bemenettel, és 8K belső programmemóriával , Szóval ütős darab...
'ATTiny2313 mintapanel kiegeszito program:
'********************************************************************
'* Program név: ATTiny2313-11.bas *
'* Fordító : BASCOM AVR, (V.1.11.7.9) *
'* Dátum : 2005-11-26 *
'* Honlap : http://avr.tavir.hu *
'* *
'* Írta : Cseh Róbert *
'* E-mail : csehrobert@tavir.hu *
'********************************************************************
'ATTiny2313 mintapanel kiegészítő program:
'
'PWM - Hardware 2
'--- Alapadatok ---
$regfile = "ATtiny2313.dat"
$crystal = 7372800
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1 'Ez a kontraszt
Config Pinb.3 = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2
Dim A As Byte
Do
Cls
Lcd "Novekszik..."
For A = 0 To 255
Pwm1a = A
Waitms 10
Next A
Home
Lcd "Csokken... "
For A = 255 To 0 Step -1
Pwm1a = A
Waitms 10
Next A
Loop
A PWM prescale minel kisebb legyen (itt 1).
A pwm1a erteke adja meg a kitoltesi tenyezot. utana RC-szurovel (ld a mintaalkalmazast) kinyered a hangot. Orulsz:)
A Mega16 panelre keszul ilyen alkalmazasosdi...
Legalabbis nagyon gondolkodom rajta...
A PWM kimenetei lab kotott. Timer0, Timer1, Timer2 is tud PWM-t.
Mar amelyik van az IC-ben. Tiny13ban csak Timer0, Tiny2313: Timer1, es Timer0.
'********************************************************************
'* Program név: ATTiny2313-11.bas *
'* Fordító : BASCOM AVR, (V.1.11.7.9) *
'* Dátum : 2005-11-26 *
'* Honlap : http://avr.tavir.hu *
'* *
'* Írta : Cseh Róbert *
'* E-mail : csehrobert@tavir.hu *
'********************************************************************
'ATTiny2313 mintapanel kiegészítő program:
'
'PWM - Hardware 2
'--- Alapadatok ---
$regfile = "ATtiny2313.dat"
$crystal = 7372800
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1 'Ez a kontraszt
Config Pinb.3 = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2
Dim A As Byte
Do
Cls
Lcd "Novekszik..."
For A = 0 To 255
Pwm1a = A
Waitms 10
Next A
Home
Lcd "Csokken... "
For A = 255 To 0 Step -1
Pwm1a = A
Waitms 10
Next A
Loop
A PWM prescale minel kisebb legyen (itt 1).
A pwm1a erteke adja meg a kitoltesi tenyezot. utana RC-szurovel (ld a mintaalkalmazast) kinyered a hangot. Orulsz:)
A Mega16 panelre keszul ilyen alkalmazasosdi...
Legalabbis nagyon gondolkodom rajta...
A PWM kimenetei lab kotott. Timer0, Timer1, Timer2 is tud PWM-t.
Mar amelyik van az IC-ben. Tiny13ban csak Timer0, Tiny2313: Timer1, es Timer0.
DAC IC helyett én pihenten R-2R nevő ellenálláslétrát raktam be. Így 1 port ugrott. Viszont tuti zajtalan lett a DA konverter:))).
Amúgy a PWM eljárás van a CD-lejátszókban is. 1 bites konverter:)
A felbontása Timer0 és Timer2 esetén 8bites, Timer 1 esetén 8...16 bites lehet. Jellemzően 8 v. 10 bites módban szokták használni. A 8 bit szinte mindenre elég. Analóg jeldigizás esetén a 8bit/8kHz bőven elég. Ez testvérek közt 8kbyte/sec. Amúgy a spec hangtároló IC-k (WiBond) sem túl drágák. ~1000-1200 Ft a 2 perces.
Amúgy a PWM eljárás van a CD-lejátszókban is. 1 bites konverter:)
A felbontása Timer0 és Timer2 esetén 8bites, Timer 1 esetén 8...16 bites lehet. Jellemzően 8 v. 10 bites módban szokták használni. A 8 bit szinte mindenre elég. Analóg jeldigizás esetén a 8bit/8kHz bőven elég. Ez testvérek közt 8kbyte/sec. Amúgy a spec hangtároló IC-k (WiBond) sem túl drágák. ~1000-1200 Ft a 2 perces.
Lehet hogy a végén r-2r-lesz belőle, mivel úgyis ATMEGA8-as procit akarok erre a célra használni, asztán ezért sok szabad láb marad, és így meg tudom spórolni a kimeneti szűrőt.
Igazából nem a hangtároló a lényeg, hanem hogy megismerkedjek ezzel a DataFlash-al, hogy akár később (valamilyen célra) képe(ke)t is tudjak tárolni rajta.
BUÉK!
Igazából nem a hangtároló a lényeg, hanem hogy megismerkedjek ezzel a DataFlash-al, hogy akár később (valamilyen célra) képe(ke)t is tudjak tárolni rajta.
BUÉK!
A Dataflash kezelés hasonlóan megy, mint a MMC/SD kártya kezelése. Ez utóbbira ott a beépített AVR-DOS, ekkor kártyaolvasóban is olvasható a kártya utána:).
MintaSW eddig nem igazán található rá. Most majd kénytelen leszek megismerni:). Meg a dataflash "hátránya" hogy 3.3V-os. Így azt a részt is ki kell találni, bár a be/kimenetei 5V toleránsak. Csak a tápot kell egy LM33 chippel leszabni kisebbre.
Most a nyáktervezővel is küzdök, új alkatrészek tervezése nem a leányálmom... de 1x meg kell tanulni:). Legalább lesz normális általános alkatrészkönyvtáram...
Szóval az ADtól jól sikerült elkanyarodni.
MintaSW eddig nem igazán található rá. Most majd kénytelen leszek megismerni:). Meg a dataflash "hátránya" hogy 3.3V-os. Így azt a részt is ki kell találni, bár a be/kimenetei 5V toleránsak. Csak a tápot kell egy LM33 chippel leszabni kisebbre.
Most a nyáktervezővel is küzdök, új alkatrészek tervezése nem a leányálmom... de 1x meg kell tanulni:). Legalább lesz normális általános alkatrészkönyvtáram...
Szóval az ADtól jól sikerült elkanyarodni.
Neten fellelhető infók szerint az L-es és a sima AVR-ek között alacsony frekvencián ( < 16 MHz) nincs különbség. Igazából az L-es AVR-ek azok lesznek amik a gyártásban a végső teszten magasabb frekin hibásan működnek. ( ATMEL-es belső, persze nem hivatalos info)MaSTeRFoXX írta:Avr-ről dataflash felé egyszerű: feszosztó, vagy előtét ellenállás
Vissza: bonyolultabb...
Legegyszerűbb megoldás ATMEGA8 L 2.7-3.6 V (Bár nemtom mit szól az STK200-as programozó hozzá....)
A cikkiró szerint gyakorlatilag gond nélkül lehet sima AVR-t az L-es helyén használni.