Archiv verlassen und diese Seite im Standarddesign anzeigen : sleep modus oder ähnliches
hi,
für einen garagentorantrieb habe ich eine code-Schaltung mittels 2 Tastern
an atmega32 gemacht.
das programm stoppt mit "wait until pind.0=0" bis die richtige
Eingabe(folge) an den Tastern getätigt wird. Es funktioniert auch soweit.
Doch nach längerer wait-Zeit (denke so >10 stunden) funktioniert es bei
Eingabe der richtigen Kombination nicht mehr!
Nach reset (kurz spannungszufuhr unterbrechen) geht's wieder.
Gibt es bei dem Controller vielleicht so eine Art (automatischen)
Sleepmodus, oder woran könnte das liegen?
Was ist denn "Wait Until ..."?
Ich kenne höchstens "Loop Until ..", oder ist das etwas Neues?
Gruß Rolf
na klar, hast vollkommen recht ich meinte auch "loop until..."
Gruß
Holger
MeckPommER
30.08.2007, 11:13
Poste einfach mal den Code, dann kann man mal schauen.
Ist da irgendwo eine Variable, die überlaufen kann? Geht dem µC nach 10 Stunden der Saft aus? Für Fehler gibts halt immer mehr Möglichkeiten, als einem lieb ist ;-)
Gruß MeckPommER
Config Timer0 = Timer , Prescale = 256                     'Konfiguriere Timer0
 'beim Testboard Prescale=1024
 On Timer0 Interr                                           'verzweige Bei Timer0 überlauf Abbruch2
 Enable Interrupts
 Enable Timer0
 Stop Timer0
 A = 30
 B = 1
Program:
Cls
 Locate 1 , 1
 Lcd "Reset"
 Waitms 200
 Cls
 Do
 Loop Until Pina.0 = 0 Or Pina.2 = 0
 If Pina.2 = 0 Then Goto Abbruch
 Waitms 30
 Do
 Loop Until Pina.0 = 1
 B = 1
 Start Timer0
                                                 'anschalten
 Do
 Loop Until Pina.2 = 0 Or Pina.0 = 0
 If Pina.0 = 0 Then
 Goto Abbruch
 Else
 Waitms 30
 Do
 Loop Until Pina.2 = 1
 Waitms 30
 Do
  Loop Until Pina.2 = 0 Or Pina.0 = 0
 If Pina.0 = 0 Then
 Goto Abbruch
 Else
 Waitms 30
 Do
 Loop Until Pina.2 = 1
 Waitms 30
 Do
 Loop Until Pina.2 = 0 Or Pina.0 = 0
 If Pina.2 = 0 Then
 Goto Abbruch
 Else
 Waitms 30
 Do
 Loop Until Pina.0 = 1
 Waitms 30
 Do
 Loop Until Pina.2 = 0 Or Pina.0 = 0
 If Pina.0 = 0 Then
 Goto Abbruch
 Else
 Waitms 30
 Do
 Loop Until Pina.2 = 1
 If B > 180 Then
 Goto Abbruch
 Else
 Waitms 30
 End If
 A = 60
 Portd.4 = 1
 Portb.0 = 1
 Waitms 800
 Portd.4 = 0
 Portb.0 = 0
 A = 30
 End If
 End If
 End If
 End If
 Goto Program
Abbruch:
Stop Timer0
B = 1
Portd.3 = 0
Locate 1 , 1
 Lcd "Fehler:"
 Waitms 500
 Locate 2 , 1
 Lcd "Wartezeit"
 Wait A
A = A + 30
If A >= 70 Then
Cls
Locate 1 , 1
Lcd "Code falsch"
Portb.1 = 1
Stop
Else
Goto Program
End If
Interr:
 B = B + 1
 Return
End
das is er
 
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.