ATTiny13, do pinu 2 (PB3) podłączony jest dzielnik napięcia mierzący napięcie zasilania. Po spadku napięcia poniżej zadanej wartości powinna nastąpić sygnalizacja poprzez "wywołanie 3 mignięć" na pinie 5 (PB0). Poziom napięcia przy, którym ma nastąpić sygnalizacja ustalany jest przez zapis wartości napięcia zasiania do EEPROMu po zwarciu pinu 1 (PB%) do masy.
Co się dzieje ? Po zwarciu pinu 1 do masy następują "3 mignięcia" i na pinie 5 zostaje stan wysoki. Po odłączeniu i załączeniu napięcia, niezależnie jakie by ono nie było następują 3 mignięcia i stan wysoki na pinie 5. Czyli tak jakby zawsze wartość odczytana z przetwornika ADC3 była zawsze mniejsza od wartości z EEPROMa. Coś skopałem, tylko co
$regfile = "attiny13.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 16
$framesize = 8
'$sim
Config Pinb.0 = Output 'zalaczanie TLC3525 pin5
Config Pinb.3 = Input 'Wejscie Adc3 pin2
Config Pinb.5 = Input 'zapis do EEPROMA pin1
Set Portb.0
Set Portb.5
Dim W As Word 'zmienna W przechowuje wartosc napiecia
Dim C As Word 'zmienna pomocnicza nap rozladowania aku
Dim A As Byte 'zmienna pomocnicz aby nie migalo w kolko
Config Adc = Single , Prescaler = Auto , Reference = Internal 'konfiguracja przetwoenika ADC Vref=1.1V
A = 0
Start Adc
Readeeprom C , 1 'odczyt napiecia z EEPROMa
Do
W = Getadc(3) 'odczyt napiecia na kanale 3 porcie PB3 czyli ADC3
If W < C And A = 0 Then 'aku slabe 3 migniecia
Reset Portb.0
Waitms 400
Set Portb.0
Waitms 400
Reset Portb.0
Waitms 400
Set Portb.0
Waitms 400
Reset Portb.0
Waitms 400
Set Portb.0
A = 1
End If
If Pinb.5 = 0 Then
Writeeeprom W , 1 ' zapis do eeprom poz napiecia rozladowania aku
Waitms 100
End If
Loop
End 'end program