Bascom AVR - Watchdog per Interrupt

Gast #6653627
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...
Gast #6653854
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?
Gast #6653883
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?
#6654004
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.
Gast #6654020
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
Gast #6654053
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
#6654056
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...
#6654066
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
#6654074
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.
Beitrag #6655009 wurde von einem Moderator gelöscht.
Gast #6867177
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.

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