RCO
12.12.2004, 18:25
Hallo Forum,
wie der Titel schon sagt, will ich den ADC-Interrupt nutzen. Leider habe ich dazu sehr wenig im Internet gefunden und bin mir deshalb garnicht sicher, ob das so überhaupt möglich ist. Der Punkt, ist, dass über den ADC (4) 6 Bumper mit entsprechenden Vorwiderständen angeschlossen sind (siehe unten). Da die Bumper ja relativ selten genutzt werden, bei nutzung aber sehr schnell reagieren müsssen, dachte ich, dass ein Interrupt dieses Problem am besten lösen würde. Hier erstmal der bisher verwendete Code:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 2400
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Admux = &B01100100
On Adc Onadc
Config Pind.3 = Output
Config Pind.4 = Input
Portd.3 = 1
Dim Switch As Word
Start Adc
Do
Switch = Getadc(4)
Print Switch
Loop
End
Onadc: 'ADC-Interrupt-Routine
If Getadc(4) < 1023 Then
Print "interrupt"
End If
Return
Wem das ganze irgendwie bekannt vor kommt, der liegt nicht falsch, es geht dabei um den Asuro ;-)
Zum Code: Im Normalfall, also ohne pressen eines Bumpers, liefert der ADC, dank "Portd.3 = 1", einen Wert von 1023. Beim Pressen einen Wert von ca. 800 bis 1020 je nach Bumper. Leider wird nur der INterrupt nie aufgerufen, woran könnte das leigen bzw. was müsste geändert werden?
Nun tun sich ein par Fragen bei mir auf:
Entspricht
Reference = Avcc dem angegebenen
Admux = &B01100100 etc.
Leider bin ich mit dem Reigster Admux eben sehr wenig vertraut, also entschuldigt bitte grobe Fehler :-)
Ich bitte um Mithilfe und danke schonmal im Voraus.
MFG Moritz
wie der Titel schon sagt, will ich den ADC-Interrupt nutzen. Leider habe ich dazu sehr wenig im Internet gefunden und bin mir deshalb garnicht sicher, ob das so überhaupt möglich ist. Der Punkt, ist, dass über den ADC (4) 6 Bumper mit entsprechenden Vorwiderständen angeschlossen sind (siehe unten). Da die Bumper ja relativ selten genutzt werden, bei nutzung aber sehr schnell reagieren müsssen, dachte ich, dass ein Interrupt dieses Problem am besten lösen würde. Hier erstmal der bisher verwendete Code:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 2400
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Admux = &B01100100
On Adc Onadc
Config Pind.3 = Output
Config Pind.4 = Input
Portd.3 = 1
Dim Switch As Word
Start Adc
Do
Switch = Getadc(4)
Print Switch
Loop
End
Onadc: 'ADC-Interrupt-Routine
If Getadc(4) < 1023 Then
Print "interrupt"
End If
Return
Wem das ganze irgendwie bekannt vor kommt, der liegt nicht falsch, es geht dabei um den Asuro ;-)
Zum Code: Im Normalfall, also ohne pressen eines Bumpers, liefert der ADC, dank "Portd.3 = 1", einen Wert von 1023. Beim Pressen einen Wert von ca. 800 bis 1020 je nach Bumper. Leider wird nur der INterrupt nie aufgerufen, woran könnte das leigen bzw. was müsste geändert werden?
Nun tun sich ein par Fragen bei mir auf:
Entspricht
Reference = Avcc dem angegebenen
Admux = &B01100100 etc.
Leider bin ich mit dem Reigster Admux eben sehr wenig vertraut, also entschuldigt bitte grobe Fehler :-)
Ich bitte um Mithilfe und danke schonmal im Voraus.
MFG Moritz