|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
veter Član
Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 132 Aktiv.: 0.59 Kraj: Bled
|
Objavljeno: Ned Jun 28, 2015 8:05 pm Naslov sporočila: 8 bit adc v Bascomu |
|
|
Lep pozdrav!
Imam potrebo, kjer moram vzorčiti ADC na svojem Attiny84 mikrokontrolerju s frekvenco 650kHz. Ko sem prebiral literaturo sem zasledil, da je pri 10 bitni resoluciji priporočena frekvenca med 50kHz in 200kHz. Če želimo imeti višjo frekvenco pa moramo preiti na 8 bitno resolucijo.
Ker programiram v Bascomu, sem za 8 bitno ADC sempliranje napisal naslednjo sub routino:
Koda: |
Dim spremenljivka as byte
' najprej pocistimo registre
Admux = &B00000000
Adcsr = &B00000000
Adcsrb = &B00000000
'dolocimo 8 bit resolucijo
Adcsrb.adlar = 1
' dolocimo iz katerega kanala ADC(1) bomo brali
Admux.mux5 = 0
Admux.mux4 = 0
Admux.mux3 = 0
Admux.mux2 = 0
Admux.mux1 = 0
Admux.mux0 = 1
' dolocimo referencno napetost na pinu Aref
Admux.refs1 = 0
Admux.refs0 = 1
' omogocimo ADC.... ADC enable
Adcsr.aden = 1
' dolocimo prescaler 16
Adcsr.adps2 = 1
Adcsr.adps1 = 0
Adcsr.adps0 = 0
' pricnemo z ADC konverzijo ... START ADC
Adcsr.adsc = 1
' pocakamo toliko casa, dokler ADC konverzija ni koncana
Do
Loop Until Adcsr.adif = 1
'prebermo 8 bitno vrednost
spremenljivka = Adch |
Vendar zadeva ne meri. V registru Adch ali Adcl se sicer nahaja neka vrednost, ki pa ostaja nespremenjena, ne glede na to ali spreminjam napetost na pinu a.1 ali ne.
p.s.
Sedaj nimam Do loop zanke za neskončno branje ADC-ja. Vedno, ko hočem na novo prerbrati vrednost ADC, ukontroler resetiram.
Hvala za pomoč. |
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.44 Kraj: Mengeš
|
Objavljeno: Ned Jun 28, 2015 10:07 pm Naslov sporočila: |
|
|
Sicer še nikoli nisem delal AD-ja na način kot ti (nikoli se mi še ni bilo treba poglabljati v registre AD-ja), ampak nekje sem prebral, da je po vklopu AD-ja treba prvo meritev zavreči zaradi morebitne netočnosti... poskusi narediti dva branja zapored.
Pa še to..a branje takole ni dovolj hitro?
Koda: |
spremenljivka=getadc(0) |
|
|
Nazaj na vrh |
|
|
veter Član
Pridružen-a: Tor 06 Jan 2004 9:25 Prispevkov: 132 Aktiv.: 0.59 Kraj: Bled
|
Objavljeno: Ned Jun 28, 2015 10:11 pm Naslov sporočila: |
|
|
Hvala za odgovor.
Težavo sem odpravil. Program je pravilno napisan in ga sedaj lahko uporabi še kdo, ki bo potreboval velike hitrosti ADC-ja.
Težava je bila tokrat v hardware-u...
S funkcijo GETADC v bascomu, lahko dosežemo max hitrosti 200kHz (uradno) in 250kHZ (neuradno). Nažalost, aplikacijo na kateri delam, potrebuje višjo frekvenco vzorčenja, na srečo, pa ni potrebe po 10bit ADC ampak je 8 bit v redu. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 102 dni
Powered by phpBB © 2001, 2005 phpBB Group
|