hallo hatte damals mal ein program geschrieben für den radencoder.
wollte die langsame getadc von Bascom nicht nutzen. vielleicht kannst du ihn weiterverwenden. wenn du onadc nutzen tust, nimm am besten auch die direkten avr-ansprechregister.
mfg pebisoft
Code:
$regfile = "m16def.dat" 
$crystal = 8000000 
$baud = 19200 

Dim Adhi As Byte 
Dim Adlow As Byte 
Dim Adcergebnis As Word 
Dim Radzaehler As Byte 
Dim Toggle_rad As Byte 

Disable Interrupts 
Adcsra.aden = 1 
Adcsra.adate = 1 
Adcsra.adie = 1 
Adcsra.adsc = 1 
Adcsra.adps0 = 1 
Adcsra.adps1 = 1 
Adcsra.adps2 = 1 
Admux.refs0 = 1 
Enable Interrupts 

Radzaehler = 0 
Toggle_rad = 0 

On Adc Onadc 

Do 

Waitms 1 
Print Radzaehler 

Loop 

Onadc: 
   Admux.mux0 = 1   !! ist adcport pina1 , ohne mux ist pina0
   Adcsra.adsc = 1     !! startet das auslesen
   Adlow = Adcl 
   Adhi = Adch 
   Adcergebnis = Adhi * 256 
   Adcergebnis = Adcergebnis + Adlow 
   If Adcergebnis > 400 And Toggle_rad = 1 Then 
      Incr Radzaehler 
      Toggle_rad = 0 
   End If 
   If Adcergebnis < 100 And Toggle_rad = 0 Then 
      Incr Radzaehler 
      Toggle_rad = 1 
   End If 
Return 

End