Jako że buduję pilota na Attiny44 do mojej lampki rowerowej to pasuje napisać do niego program. Piszę w Bascom-ie. Mam już prawie wszystko czego potrzebuję za wyjątkiem jednego. Otóż jak wykombinować aby procesor obudził się ze stanu Powerdown ale po dłuższym naciśnięciu przycisku?
Teraz mam tak że delikatny klik i procesor ożywa a ja bym chciał go budzić po przytrzymaniu przycisku tak jak przy wyłączaniu.
Kod: Zaznacz cały
$regfile = "attiny44.dat"
Config Pinb.2 = Input 'przycisk
Portb.2 = 1
Config Portb.0 = Output 'dioda zielona
Config Portb.1 = Output 'dioda czerwona
Config Porta.1 = Output 'xpg
Config Porta.2 = Output 'xml
'**********************NAZWY**********************
Xml Alias Porta.2
Xpg Alias Porta.1
Sw Alias Pinb.2
Red Alias Portb.1
Green Alias Portb.0
'********************ZMIENNE**********************
Dim W As Word
Dim Licz As Byte
'*****************POCZATKOWE WARTOSCI**************
Red = 0
Green = 0
Xpg = 0
Xml = 0
Licz = 0
'*****************WLACZENIE PRZERWAN***************
Enable Interrupts
Enable Int0
Config Int0 = Low Level
'*****************PRZETWORNIK ADC********************
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
W = Getadc(0) 'pierwszy odczyt ADC-smiecie
'*********************GLOWNA PETLA PROGRAMU***********
Do
W = Getadc(0)
If W > 620 Then
Green = 1
Red = 0
Else
Green = 0
Red = 1
End If
If W < 525 Then
Xml = 0
End If
Debounce Sw , 0 , Switch , Sub
Loop
End
Switch:
Incr Licz
If Licz > 2 Then Licz = 0
Select Case Licz
Case 0:
Xpg = 1
Xml = 0
Case 1:
Xml = 1
Xpg = 0
Case 2:
Xml = 1
Xpg = 1
End Select
Waitms 500
If Sw = 0 Then
Waitms 200
If Sw = 0 Then
Xml = 0
Xpg = 0
Green = 0
Red = 0
Waitms 400
Red = 1
Waitms 400
Red = 0
Waitms 400
Red = 1
Waitms 400
Red = 0
Waitms 400
Red = 1
Waitms 400
Red = 0
Waitms 400
Red = 1
Waitms 400
Red = 0
Powerdown
End If
End If