Hallöchen!
ich hab gerade mal die geschwindigkeit des ADC von einem ATmega8 gemessen. hier der quellcode (BASCOM):
Code:
$crystal = 16000000
$baud = 19200
Config Timer1 = Timer , Prescale = 8
Dim Wert As Word
Dim Zeit As Word
Dim I As Byte
Config Adc = Single , Prescaler = AUTO
Start Adc
Do
For I = 0 To 5
Timer1 = 0
Wert = Getadc(i)
Zeit = Timer1
Zeit = Zeit * 2
Print "ADC" ; I ; " hat den Wert " ; Wert ; " und hat dazu " ; Zeit ; " Microsekunden gebraucht"
Wait 2
Next
Loop
erschreckender weise hat der AVR rund 890µS gebraucht um einen wert zu erfassen.
jetzt hab ich mal den prescaler wert auf 8 gesetzt (damit habe ich 2Mhz ADC-clock, statt den im datenblatt angegebenen max. 200KHz). machte sich auch gleich in der zeit bemerkbar: ca. 64µS für ein sample.
mangelnde genauigkeit habe ich noch nicht feststellen können (hab mal GND und VCC an die ADC-ports angelegt).
bei einem prescaler von 4 (4Mhz) ergaben sich dann schon schwankungen von ca. +- 10 (was bei 10bit knap 0,1% sind). bei prescaler 2 (8Mhz) waren es dann so +- 200.
hat jemand schon erfahrungen mit der genauigkeit bei steigender geschwindigkeit oder evtl. sogar ne schöne tabelle mit schaubild?
letztendlich soll der AVR das maxi/minimum einer spannungskurve ermitteln, was allerdings schlecht möglich is, wenn er zu langsam oder zu ungenau ist.
mfg
schoko
Lesezeichen