PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tiny85 kommt nicht aus Powerdown zurück Bitte Hilfe!



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

Michael
28.03.2012, 11:37
Hallo dl1akp,

schau ins Datenblatt bei Power Management and Sleep Modes -> For Int0 only Level Interrupts.

Gruß, Michael

dl1akp
28.03.2012, 12:15
Hallo Michael,

das habe ich gelesen... Was ist ein Level-Interrupt?
Damit konnte ich nichts anfangen.

Mfg, dl1akp

MagicWSmoke
28.03.2012, 12:16
Außerdem muss das Powerdown in die Hauptschleife mit rein, sonst spart der einmal beim Einschalten und dann nie wieder.

dl1akp
28.03.2012, 12:29
@MagicWSmoke: Danke, habs abgeändert.

@Michael: Habe eben mal das "Rising" gegen "Low Level" ersetzt, und siehe da: ES GEHT!!

Vielen Dank Euch beiden für die schnelle Hilfe!!

MfG, dl1akp