Hallo,
habe folgendes Programm getippt (Tiny45,Auszug):
Code:
$regfile = "ATtiny45.dat" 'Tiny45 Regfile
$crystal = 8000000 '8MHz
On Adc Onadc 'Interrupt für Adc Wert
Admux = &B00100010
' ^^-----------------Voltage Reference:00=Vcc
' ^----------------Left Adjust
' ^---------------Not Used
' ^^^^-----------Analog Channel:0010=ADC2 PB4
Adcsra = &B11111101
' ^-----------------Adc Enable
' ^----------------Adc Start Conversion
' ^---------------Adc Auto Trigger Enable
' ^--------------Adc Interrupt Flag
' ^-------------Adc Interrupt Enable
' ^^^----------Adc Prescaler Select Bits;Prescaler128
Enable Interrupts 'Interrupts globaleinschalten
Dim Analog As Word
Dim Akku_low As Bit
do
loop
Onadc: ' Interrupt ADC
Analog = Adch 'ADC Wert an Variable übergeben
If Analog =< 485 Then
Akku_low = 1 'Akku_low Bit bilden
End If
If Analog >= 533 Then
Akku_low = 0
End If
Return
Der ADC ist 10 Bit breit also 1024 Dig.
Also müsste bei der 5V Referenz das Akku_Low Bit bei <=2,368V gesetzt und bei 2,604V zurückgesetzt werden.
Tut es leider nicht, das Bit ist die ganze Zeit gesetzt. Ich muss die beiden Werte (485 sowie 533) schon auf ca. 100 runttersetzen mit sich etwas im 2V Bereich am ADC tut.
Langsam verzweifel ich. Das Datenblatt habe ich schon zig mal gelesen.
Vielleicht findet ja hier jemand den Fehler.
Danke
Daniel
Lesezeichen