Itt egy egyszerű program ADC kezelésére ATMega324P-hez:
Kód: Egész kijelölése
$regfile = "m324pdef.dat"
$crystal = 20000000
$baud = 31250
$hwstack = 32
$swstack = 10
$framesize = 40
Config Adc = Single , Prescaler = 128 , Reference = Internal_2.56 'ADC belső 2.56 v-os referenciával
Start Adc
Dim X As Word
Dim X_e As Word
Do
X = Getadc(4)
Shift X , Right , 3
If X_e <> X Then
X_e = X
Print Chr(&Hb0) ; Chr(&H01) ; Chr(x) ;
End If
Loop
End
Ha a potméter 0-n van, akkor 0-t küld, ha egy kicsit tolom felfelé, akkor össze-vissza mutat mindent és egy kicsivel feljebb már 127-et (maximumot) mutat.
Ugyanazon a nyákon cserélem ki a két uC-t, de a 324-essel nem akar működni. A 16-ot viszont még húzom is 16 MHz helyett 20 MHz és azzal teljesen jó.
Ha beállítok 8-as előosztást és 2,5 MHz-en futtatom akkor már végig mutatja az értékeket 0-127-ig ahogy tolom, de nem lineárisan.
2.0.5.0-s és 1.11.9.0-s Bascommal is próbáltam.
Ez mitől lehet?