PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Watchdog und Pulsein



UweMD
14.06.2006, 13:43
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

x-ryder
14.06.2006, 14:11
der watchdog macht keinen powerdown... der resettet den controller alle 2 sekunden :D

was willst du denn mit dem programm machen?

Martin

UweMD
14.06.2006, 14:20
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

x-ryder
14.06.2006, 14:28
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

UweMD
14.06.2006, 14:34
Hallo Martin,


nein, mit Idle geht es auch nicht.....


VG
Uwe

x-ryder
14.06.2006, 14:57
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

UweMD
14.06.2006, 15:11
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

UweMD
15.06.2006, 13:48
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

x-ryder
15.06.2006, 13:58
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

Hanni
15.06.2006, 15:06
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.

UweMD
17.06.2006, 08:53
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