Also ich bin auch absoluter Einsteiger und kann das Buch von Roland Walter nur Empfehlen.
Hier mal ein ADC Beispiel für einen Tiny45:
Code:
'############ADC ###############################################################
On Adc Onadc 'Interrupt für Adc Wert
Admux = &B00100010
' ^^-----------------Voltage Reference:00=Vcc
' ^----------------Left Adjust
' ^---------------Not Used
' ^^^^-----------Analog Channel:0010=ADC2 PB4
Adcsra = &B11111110
' ^-----------------Adc Enable
' ^----------------Adc Start Conversion
' ^---------------Adc Auto Trigger Enable
' ^--------------Adc Interrupt Flag
' ^-------------Adc Interrupt Enable
' ^^^----------Adc Prescaler Select Bits
'### Hauptschleife ##################################################
Dim Akku_low As Bit
Dim Analog As Word
Do
Loop
'### Analog Digital Converter ##################################################
Onadc: ' Interrupt ADC
Analog = Adch 'ADC Wert an Variable übergeben
If Analog < 15 Then
Akku_low = 1 'Akku_low Bit bilden
End If
If Analog > 20 Then
Akku_low = 0
End If
Return
Wenn der ADC Kanal einen neuen Wert empfängt, wird der Interrupt
ausgelöst, dort wird das Akku_Low Bit gebildet und kann in der Hauptschleife verarbeitet werden. Die Register Admux und Adcsra musst du auf deinen Controller bzw. verwendeten ADC Eingang anpassen.
Keine Angst vorm Datenblatt es ist sehr einfach die Register zu schreiben. Ich selbst benutze lieber die Register als Highlevelbefehle.
Gruß
Daniel
Lesezeichen