dl1akp
28.03.2012, 11:13
Hallo Leute,
habe mich schon mehrfach mit Stromsparen beschäftigt - jedesmal erfolglos.
Da es hier aber in Batterieprojekt ist, geht es nicht anders.
Aber es klappt absolut gar nichts!! Der Tiny85 geht in den Powerdown mode aber kommt durch externen Interrupt nicht zurück.
Kann sich mal einer den Code anschauen, und mir sagen was da falsch ist?? Ich komm echt nicht weiter...
$regfile = "ATtiny85.dat" ' Chip auswählen
$crystal = 1000000 ' int. Osz.
'
'Timer zur Tonerzeugung ca. 3 kHz
Config Timer0 = Timer , Prescale = 8
Config Portb.3 = Output 'Ausgang für Piezo-Schallgeber
On Timer0 Timer_irq
Const Timervorgabe = 214
Buzzer Alias Portb.3 'Name für Tonausgang
Enable Interrupts
Config Pinb.2 = Input 'Eingang Taster
Dim Flag As Bit 'flag
On Int0 Int0_isr Nosave 'bei Betätigung des Schalters
Config Int0 = Rising 'Taster ist ein Öffner
Enable Int0 'int0 Interrupt einschalten
Power Powerdown
'Hauptprogramm
'
Do
If Flag = 1 Then
Wait 1
Enable Timer0 'Timer zur Tonerzeugung einschalten
Wait 10 'solange soll Ton erzeugt werden
Disable Timer0 'Tonerzeugung aus
Buzzer = 0 'sicher abschalten
Flag = 0 'Flag zurück setzen
End If
Loop
'Timerinterrupt
Timer_irq:
Timer0 = Timervorgabe
Toggle Buzzer 'Ton erzeugen
Return
'Externer Interrupt ausführen
Int0_isr:
Flag = 1 'Flag Setzen
Return
Vielen Dank schon mal!
MfG, Andreas
habe mich schon mehrfach mit Stromsparen beschäftigt - jedesmal erfolglos.
Da es hier aber in Batterieprojekt ist, geht es nicht anders.
Aber es klappt absolut gar nichts!! Der Tiny85 geht in den Powerdown mode aber kommt durch externen Interrupt nicht zurück.
Kann sich mal einer den Code anschauen, und mir sagen was da falsch ist?? Ich komm echt nicht weiter...
$regfile = "ATtiny85.dat" ' Chip auswählen
$crystal = 1000000 ' int. Osz.
'
'Timer zur Tonerzeugung ca. 3 kHz
Config Timer0 = Timer , Prescale = 8
Config Portb.3 = Output 'Ausgang für Piezo-Schallgeber
On Timer0 Timer_irq
Const Timervorgabe = 214
Buzzer Alias Portb.3 'Name für Tonausgang
Enable Interrupts
Config Pinb.2 = Input 'Eingang Taster
Dim Flag As Bit 'flag
On Int0 Int0_isr Nosave 'bei Betätigung des Schalters
Config Int0 = Rising 'Taster ist ein Öffner
Enable Int0 'int0 Interrupt einschalten
Power Powerdown
'Hauptprogramm
'
Do
If Flag = 1 Then
Wait 1
Enable Timer0 'Timer zur Tonerzeugung einschalten
Wait 10 'solange soll Ton erzeugt werden
Disable Timer0 'Tonerzeugung aus
Buzzer = 0 'sicher abschalten
Flag = 0 'Flag zurück setzen
End If
Loop
'Timerinterrupt
Timer_irq:
Timer0 = Timervorgabe
Toggle Buzzer 'Ton erzeugen
Return
'Externer Interrupt ausführen
Int0_isr:
Flag = 1 'Flag Setzen
Return
Vielen Dank schon mal!
MfG, Andreas