Archiv verlassen und diese Seite im Standarddesign anzeigen : Watchdog und Pulsein
Hallo,
ich habe ein kleines Programm geschrieben, welches den ATTiny13 alle 2 Sekunden nachgucken lässt, ob an Port 0 „Pulsein“ werte zwischen 250 - 255 anliegen.
Danach schicke ich den Tiny13für 2 Sekunden ins Powerdown. Dann soll er wieder wach werden und erneut Messen.
Das Programm funzt soweit, aber nur, wenn ich den Watchdog nicht nutze.
Also den Tiny13 nicht in den Standby schicke bzw. wenn er permanent läuft.
Waran kann das liegen¿
Dank vorab
VG
Uwe
$regfile "attiny13.dat"
$crystal = 1200000
$hwstack = 16
Wdtcr = &B11110010
Config Portb.0 = Input
Config Portb.3 = Output
Config Portb.1 = Output
Dim Pulse As Integer
Dim Kling As Integer
Enable Interrupts
Do
Kling = 0
Portb.3 = 0 'Port 3 auf Enable schalten
Waitms 200
Pulsein Pulse , Pinb.0 , 0 , 1
If Pulse > 250 And Pulse < 255 Then
For Kling = 0 To 5
Sound Pinb.1 , 110 , 450
Sound Pinb.1 , 110 , 350
Incr Kling
Next
End If
Portb.3 = 1 'Port 3 auf Disable schalten
Powerdown 'Tiny13 schlafen schicken '
Loop
Reset Watchdog
End
der watchdog macht keinen powerdown... der resettet den controller alle 2 sekunden :D
was willst du denn mit dem programm machen?
Martin
Hallo Martin,
ich möchte mit dem Programm erreichen, dass der Tiniy 13 alle 2 Sekunden aufwacht und den Portb3 schaltet (Empfänger ein, ist ein Schalttransistor) dann messen ob an Portb0 ein Wert zwischen 200 – 250 anliegt, wenn ja... dann soll er eine Soundausgabe machen. Wenn keiner dieser Werte anliegt soll er wieder für 2 Sekunden schlafen (Powerdown) gehen. Dann soll das spiel wieder von vorn losgehen.
VG
Uwe
hmm eben hattich unten nich weitergelesen das programm sorry ^^
es könnte natürlich sein, dass der quarzoszi nicht schnell genug anschwingt um einen passenden puls zu erkennen... verwende mal idle statt powerdown, und sach bescheid obs funzt...
Martin
Hallo Martin,
nein, mit Idle geht es auch nicht.....
VG
Uwe
hmm das iss ja echt ne gute frage, auf die ich grad auch so schnell keine antwort mehr weiß,könnte was mit den reset-bedingungen des controllers zusammenhängen, teste doch mal, ob der watchdog auch alleine schonmal mit der config funzt, also mach ne led an, powerdown, und watchdog sollte dann ja wieder aufwecken -> led leuchten lassen...
was auch noch sein könnte iss das du den watchdog noch starten musst :D also start watchdog ^^
Martin
Hallo Martin,
der Watsdog arbeitet... das habe ich schon am Oszilloskop überprüft... der schaltet den Empfänger aus... und dann auch wieder ein dann sehe ich auch mein Sendersignal am Oszi.
Die Stromaufnahme sagt auch ganz klar ... der Watchdog funzt... 5 uA Powerdown und Emfänger aus... 7 mA alles ON....
VG
Uwe
Hallo,
kann es vielleicht sein, das der Watchdogtimer den Pulsein Timer durcheinander bringt?
Wenn ich den Watchdogtimer raus nehme dann geht’s.
Ich habe das ganze auch al mit einem Mega8 probiert und da ist es der gleiche Effekt.
Gibt es noch eine andere Möglichkeit… Strom zu sparen? Oder habe ich den Watchdog nicht Richtig Konfiguriert? Alle 2 Sekunden einen Reset auslösen Wdtcr = &B11110010
VG
Uwe
also der watchdog hat, soweit ich weiß, einen eigenen timer... und das mit der configuration kannst du mal überprüfen indem du einfach "config watchdog ? 2048" statt dem wdtcr da reinschreibst
Martin
Hallo,
kann es vielleicht sein, das der Watchdogtimer den Pulsein Timer durcheinander bringt?
Wenn ich den Watchdogtimer raus nehme dann geht’s.
Ich habe das ganze auch al mit einem Mega8 probiert und da ist es der gleiche Effekt.
Gibt es noch eine andere Möglichkeit… Strom zu sparen? Oder habe ich den Watchdog nicht Richtig Konfiguriert? Alle 2 Sekunden einen Reset auslösen Wdtcr = &B11110010
Okay, fangen wir mal mit den Basics an.
Watchdog (zu deutsch: Wachhund):
Der Watchdog wird durch einen unabhängigen Timer gesteuert (jedenfalls bei den meisten AVR Mikrocontrollern).
Der Watchdog ist dafür zuständig, zu überprüfen ob der Mikrocontroller mit dem entsprechendem Programm noch läuft. Dieses wird indirekt dadurch realisiert, das der Timer des Watchdogs resetet wird (Stichwort Watchdog Reset).
Wird aber eben dieser Timer nicht resetet erfolgt irgenwann ein Überlauf. Dieser sorgt dafür, das der Mikrocontroller komplett geresetet wird.
Möglichkeiten des Stromsparens mit dem AVR:
1. alle nicht benötigten Teile des Mikrocontrollers abschalten (z.B. Analog Comperator)
2. nachdem man sich darüber imklaren ist, wodurch der AVR wieder aufwachen soll, den entsprechenden Sleep Modus konfigurieren (Siehe Datenblatt).
Im übrigen, ist der Watchdog schon alleine deshalb nicht zum Wakeup geeignet, da er sich eh erst dann meldet, wenn er eh schon resetet ...
Fazit: Watchdog und Stomsparen sind zwei grundverschiedene Dinge.
Grüße,
da Hanni.
Hallo,
ich habe mich an dem Sleep Modus versucht...
Leider bekomme ich den Tiniy13 nicht mehr wach....
Er soll ja alleine nach 2 Sekunden wieder wach werden...
Wie bekomme ich denn das hin...?
VG
Uwe
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.