ATtiny13 als Watchdog (BASCOM)

OP #1342708
Lesenswert?

Hallo,

ich betreibe einen ATtiny13 in dem Stromspar-Modus, wo er nur einen 
Strom von 5uA aufnimmt (sog. Watchdog Betrieb). Code siehe unten. Die 
LED blinkt alle 2 Sekunden für 50ms auf. Leider ist ca. 2 Sekunden das 
höchste, was man einstellen kann. Was muss man tun, um die 2 Sekunden 
auf 24 Stunden zu verlängern? -Als Beispiel könnte man ein Rasensprenger 
nennen, der einmal täglich anspringt, und für 1 Stunde den Rasen 
sprengt.

1
 'Bascom Projekt
2
  'mit Attiny13
3
  '*************************************
4
  'Led-Blinker
5
  ' Watchdog mit 5µA Stromaufnahme
6
  '  LED an PortB.4
7
  '   Einstellbare Zeiten 16,32,64,128,256,512,1024,2048 Millisek.
8
  '*************************************
9

10

11
  $regfile = "ATtiny13.dat"
12
  $crystal = 1200000
13

14
Config Portb.4 = Output
15

16
'Watchdog Reset nach ca. 2s
17
Config Watchdog = 2048                                      'Watchdog-Zeit in Millisekunden
18
Start Watchdog
19

20
Portb.4 = 1
21
Waitms 50
22
Portb.4 = 0
23
Powerdown
24

25
End
Angehängte Dateien:
#1342714
Lesenswert?

Wenn er aufwacht, eine Variable hochzählen, und dann wieder 
schlafenlegen. Wenn die Variable eine bestimmten Wert erreicht, dann 
irgendwas tun und die Variable wieder auf Null setzen...
Du musst dann allerdings den Watchdog so einstellen, dass er keinen 
Reset auslöst, sondern nur einen Interrupt auslöst, der den AVR wieder 
weckt.

PS: wenn es wirklich auf dauerhaften Batteriebetrieb ankommt, solltest 
du auf einen neueren AVR wie den Tiny25/45/85 umsteigen. Da ist der 
Stromverbrauch nochmal deutlich niedriger, sowohl aktiv als auch im 
Stromsparmodus.
#1342729
Lesenswert?

Das lässt sich zum einen verhindern, indem man die Variable nicht 
automatisch beim neustart des Controllers mit Null initalisieren lässt. 
Das RAM wird nämlich nicht durch eine Hardware-Reset gelöscht, das macht 
den Programm automatisch.

Besser wäre es aber, den Watchdog nur einen Interrupt und keine Reset 
auslösen zu lassen. Ich bezweifle aber, dass das von Bascom so 
unterstützt wird. Also: ins Datenblatt schauen und die Register selbst 
setzen!
Gast #1342730
Lesenswert?

Hallo Daniel,

Uwe hat das mit dem Hochzählen schon gesagt.

Aber beim Wechsel reicht bereits das Verwenden des
ATTiny13A. Der A ist die neuere Variante (andere
Fertigungslinie) mit weniger Stromaufnahme und
zusätzlichen Sparfunktionen.

Der Umstieg lohnt sich.

avr
Gast #1342809
Lesenswert?

>Kann man den Watchdog mit Hilfe der Fusebits von "Reset" auf "Interrupt"
>umschalten?

Nein, das ist keine Sache der Fusebits, sondern kann über das 
I/O-Register WDTCR konfiguriert werden. Mein Geheimtipp: Mal das 
Datasheet vom ATtiny13 lesen, da steht das nämlich alles drin ;-)
Gast #1342951
Lesenswert?

Können schon, es wäre nur nicht klug. Das EEPROM ist dafür nicht 
geeignet, weil die Anzahl der Schreibzyklen bei diesem Speichertyp aus 
technischen Gründen begrenzt ist. Garantiert werden laut Datenblatt 
"100.000 Write/Erase Cycles". Wenn Du eine Zelle alle 2 Sekunden 
beschreibst, hält die Chose keine Woche (rechne es selbst aus). Das 
EEPROM ist zum dauerhaften - heißt: über Stromlosigkeit hinweg - 
Speichern von Geräteeinstellungen, Kalibrierparametern etc. gedacht. 
Also Sachen, die sich nur selten ändern.

Aber wozu ein EEPROM, wenn es das SRAM gibt? Da kannst Du Deine 
Zählvariable doch allerbestens zwischenspeichern und die Tatsache 
ausnutzen, dass der SRAM-Inhalt von einem Reset nicht angetastet wird 
(anders als die Register).

Oder ist Dir das SRAM unsympathisch? ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren