Forum: Mikrocontroller und Digitale Elektronik Bascom AVR - Watchdog per Interrupt


von Dietmar S. (Gast)


Lesenswert?

Ich möchte mit Bascom einen ATtiny13 aus dem Powerdown via Watchdog per 
Interrupt aufwecken. Per Reset funktioniert es, aber per Interrupt 
scheint das in Bascom nicht möglich zu sein. (Laut Datenblatt kann der 
ATtiny13 das und es gibt auch eine gut erklärte App Note)

Die Register setzen ist ja kein Problem, nur "On Wtd" kennt Bascom 
anscheinend nicht und das wird im Editor auch nicht farblich 
hervorgehoben.

Im MCS-Bascom-Forum finde ich einige Einträge dazu, die aber mehr als 10 
Jahre alt sind. Andererseits finde ich im Netz zahlreiche Bespiele, die 
angeblich funktionieren.

Ich nutze Bascom 2.0.7.9 (Demo). Hat jemand eine Version in der das 
möglich ist und welche ist das?

Oder funktioniert das in der kostenpflichtigen Vollversion? Auf der 
Webseite steht allerdings nichts von Watchdog Interrupt: 
https://www.mcselec.com/index.php?option=com_content&task=view&id=14&Itemid=103

"Interrupt programming: ON INT0/INT1/TIMER0/TIMER1/SERIAL, RETURN, 
ENABLE, DISABLE, COUNTERx, CAPTUREx, INTERRUPTS, CONFIG, START, LOAD."

Bin gerade ratlos...

von Winfried K. (wink)


Lesenswert?

Der Watchdog funktioniert auch mit der Demo.
Er wird mit "Config Watchdog" und anschließend "Start Watchdog" scharf 
geschaltet. Maximale Zeit für die Auslösung sind 8 Sekunden.

von Einer K. (Gast)


Lesenswert?

Winfried K. schrieb:
> Der Watchdog funktioniert auch mit der Demo.
> Er wird mit "Config Watchdog" und anschließend "Start Watchdog" scharf
> geschaltet. Maximale Zeit für die Auslösung sind 8 Sekunden.

Das wissen wir doch alle schon!

Die offene Frage:
Ist man in der Lage den WDT Interrupt mit Bascom zu fangen/nutzen?
Oder kann die Sprache das nicht?

von MaNi (Gast)


Lesenswert?

Ich kenne mich zwar mit Bascom nicht aus, aber er schreibt ja oben bzgl 
"ON Interrupt":
https://avrhelp.mcselec.com/index.html

Da heißt es dann:
1
Or you can use the AVR name convention:
2
OC2 , OVF2, ICP1, OC1A, OC1B, OVF1, OVF0, SPI, URXC, UDRE, UTXC, ADCC, ERDY and ACI.
3
The available interrupts depend on the processor.

Hast Du einfach schonmal probiert was passiert wenn du die "Name 
convention" des Watchdog ISRs verwendest?

von HTML Fragender (Gast)


Lesenswert?

Eine kurze Mail an Marc wird sicher schnell beantwortet

von Peter D. (peda)


Lesenswert?

Du mußt einfach nur schauen, wie ein anderer Interupthandler aufgebaut 
ist. Und das dann als Gerüst für den Watchdoginterrupt nehmen und ihm 
den entsprechenden Vector zuweisen.

In C ist das ganz einfach, da nimmt man die Namen, die im Datenblatt 
stehen, mit "_" für Leerzeichen und "_vect" am Ende.

von MWS (Gast)


Lesenswert?

Dietmar S. schrieb:
> On Wtd

On Watchtimerdog würde ich auch nicht kennen. :D

von Spess53 (Gast)


Lesenswert?

Hi

>Da heißt es dann:

>Or you can use the AVR name convention:>

>OC2 , OVF2, ICP1, OC1A, OC1B, OVF1, OVF0, SPI, URXC, UDRE, UTXC, >ADCC, ERDY and 
ACI.

>The available interrupts depend on the processor.

Der letzte Satz ist ausschlaggebend. Bascom kennt alle für 
ensprechenden AVR vorhandenen Interrupts. Also auch den WDT, wenn 
vohanden.

Wenn nicht, bleibt nur in MCUSR die RESET-Auslösende Flags zu 
detektieren und entsprechend zu reagieren.

MfG Spess

von MWS (Gast)


Lesenswert?

Spess53 schrieb:
> Also auch den WDT, wenn vohanden.

Der ist vorhanden beim ATTiny13.
Warum glaubst Du, dass ich schreibe:

MWS schrieb:
> Dietmar S. schrieb:
>> On Wtd
>
> On Watchtimerdog würde ich auch nicht kennen. :D

Aber für solch' dezente Andeutungen ist das Forum nichts, da muss der 
derbe Keil kommen.

von Spess53 (Gast)


Lesenswert?

Hi

<Warum glaubst Du, dass ich schreibe:

Warum glaubst du das ich alle AVRs nach WDT-Interrupt untersuche?

MfG Spess

von MWS (Gast)


Lesenswert?

Spess53 schrieb:
> <Warum glaubst Du, dass ich schreibe:
>
> Warum glaubst du das ich alle AVRs nach WDT-Interrupt untersuche?

Die Pointe ist Dir wohl verborgen geblieben, da hat auch der derbe Keil 
nichts geholfen.

Selbst wenn Du vermutest, dass Du irgendwas durchsuchen sollst, dann 
sicher nicht "alle AVRs", denn um alle ging's nicht, sondern im 
Speziellen um:

Dietmar S. schrieb:
> mit Bascom einen ATtiny13

von Uwe D. (monkye)


Lesenswert?

Geht simpel:
1
$Regfile="attiny13.dat"
2
$Crystal=4800000
3
$hwstack=16
4
$swstack=20
5
$framesize=24
6
7
Config PORTB.1 = Output
8
LED ALIAS PORTB.1                   ' LED zur Anzeige 
9
LED = 0
10
Config Watchdog = 4096
11
Enable Wdt
12
13
Do
14
  LED = 1
15
  Waitms 500
16
  LED = 0
17
  Power Powerdown
18
Loop
19
End ' Mainloop

Nachtrag: Die LED macht 1x blink und geht dann für 4s schlafen, dann 
wieder von Vorne...

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Uwe D. schrieb:
> Geht simpel:

Keine ISR?
Oder existiert die im dunklen Schatten?

von Sebastian W. (wangnick)


Lesenswert?

UDietmar S. schrieb:
> Per Reset funktioniert es, aber per Interrupt
> scheint das in Bascom nicht möglich zu sein.

Uwe D. schrieb:
> Geht simpel:

Uwe, ist deine Lösung wirklich per Interrupt und nicht per Reset? 
Dietmar möchte ja zum Beispiel alle 60 Sekunden blinken, das heisst es 
muss über mehrere Watchdog-Unterbrechungen gezählt werden.

Könnte man natürlich über Eeprom machen, das kostet aber wiederum Strom 
...

LG, Sebastian

: Bearbeitet durch User
von Uwe D. (monkye)


Lesenswert?

Einfach Kopieren und im Simulator ausführen...

Eine ISR kann man machen, wer das unbedingt braucht. Der Tiny pennt beim 
Powerdown ein, der WDT weckt ihn wieder und läuft da weiter wo er 
eingepennt ist. Benutze ich für kleine SOLAR-Module und ein paar LEDs 
und illuminiere damit den Garten im Winter.

von MWS (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Oder existiert die im dunklen Schatten?

Yep, tut sie. Ohne ISR steht ein RETI am entsprechenden Vektor in der 
IVT.

Beitrag #6655009 wurde vom Autor gelöscht.
von Tim D. (Gast)


Lesenswert?

Leider habe ich jetzt erst entdeckt, dass ich noch viele Antworten 
bekam. Hatte mich damals im Forum abgemeldet und hier nicht mehr rein 
gesehen. Also erst mal ein großes Danke für die vielen Infos! Ich werde 
die Tage versuchen die Ratschläge umzusetzen bzw. auszuprobieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.