Hallo,

ich habe mir eine Alarmanlage gebaut, die seit 1 Monat im Einsatz ist und bis heute einwandfrei funktioniert hat.
Leider wurde ich heute, durch eine Fehlfunktion, unsanft geweckt.
Aber ich konnte die Ursache nicht finden. (Hardware oder Software)
Hier mal ein Codeausschnitt, der den Ablauf zeigt:

Code:
$regfile = "m8def.dat"
$crystal = 4000000

Config Timer1 = Timer , Prescale = 64
Const Timer_start = 6250                          'alle 100ms Überlauf
Load Timer1 , Timer_start
Enable Timer1
On Timer1 Int_1                                   'Timer für alles mögliche

On Int0 Int_0                                     'Externer Interrupt 0
Disable Int0

Enable Interrupts
Alarm Alias Pind.2                                'Pin für ext. Interrupt 0
Dim Zeit As Word                                'mit ext. Pullup
'-------------------------------------------------------------------------------
Do
If Alarm = 0 Then Exit Do                         'bei extern Interrupt, Schleife 2
   If Zeit > 1800 Then                            'nach 3 min, Powerdown
   Enable Int0                                    'ext. Interrupt 0 aktivieren
   Powerdown
   End If
Debounce Taste1 , 0 , Subroutine1 , Sub           'bevor Powerdown
Debounce Taste2 , 0 , Subroutine2 , Sub           'div. Einstellungen möglich
Loop

Do
                           'Alarm Ablaufsteuerung
Loop

End                                               'Programmende
'-------------------------------------------------------------------------------
Int_0:
Disable Int0                                      'Int 0 sperren, wegen Mehrfachauslösung
Return

Int_1:
Load Timer1 , Timer_start                         'Startwert neu laden
Incr Zeit                                         ' Zeittakt erhöhen
Return
Ich kann mir nicht erklären, wie das Programm in die 2.Schleife (Ablaufsteuerung) gelangt ist.
Pind.2 (ext. Interrupt) ist definitiv nicht "0" geworden, das hätte ich optisch sehen können.

Hat jemand eine Idee, wie die MCU "aufgeweckt" wurde ?
Die Hardware wird durch ein Schaltnetzteil gespeist.
Kann es eventuell durch eine Spannungsspitze im Netz passiert sein ?