www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny13 als Watchdog (BASCOM)


Autor: Daniel W. (pegasus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

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


  $regfile = "ATtiny13.dat"
  $crystal = 1200000

Config Portb.4 = Output

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

Portb.4 = 1
Waitms 50
Portb.4 = 0
Powerdown

End

Autor: Daniel W. (pegasus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bild 2

Autor: Daniel W. (pegasus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bild 3

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel W. (pegasus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe gelesen, dass das Aufwachen des Mikrokontrollers quasi einem 
"Reset" entspricht. -Würde die Variable nicht alle 2 Sekunden gelöscht 
werden, wenn der Controller "aufwacht"?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Würde die Variable nicht alle 2 Sekunden gelöscht
>werden, wenn der Controller "aufwacht"?

Ja. Du musst den Watchdog von Reset auf Interrupt
umschalten. Wie das geht steht im Datenblatt.

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel W. (pegasus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>>Ja. Du musst den Watchdog von Reset auf Interrupt
>>umschalten. Wie das geht steht im Datenblatt.

Kann man den Watchdog mit Hilfe der Fusebits von "Reset" auf "Interrupt" 
umschalten? In meinem "MCS Universal Programmer" werden derzeit 10 
Fusebits gelistet (siehe beigefügte Grafik).

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Daniel W. (pegasus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnte man die Variablen alternativ in den (64 Byte grossen) 
EEprom-Bereich des ATtiny13 schreiben?

Dann bräuchte man vielleicht gar nicht von dem "Reset-Modus" auf den 
"Interrupt-Modus" umzuschalten.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.