Hallo zusammen Teste gerade die "neuen" Mikrocontroller von Microchip. Gerne würde ich den Watchdog auf einem ATtiny1617 aktivieren. Leider fehlt mir dazu das nötige Wissen, um die richtigen Register zu setzen. <avr/wdt.h> funktioniert mit diesem Chip leider nicht. Internetsuche ohne Erfolg :-( http://ww1.microchip.com/downloads/en/devicedoc/attiny3217_1617-data-sheet-40001999b.pdf
Hallo, kennst du schon das Kapitel WDT im Manual? Wenn man gar nicht reinkommt und sonst nichts findet, kann man durchaus im Atmel Studio "Atmel Start" aufrufen, µC auswählen, WDT Funktion hinzufügen, konfigurieren und am Ende schauen was für Code erzeugt wird. Sind zwar unzählig erzeugte Headerdateien, aber da kann man sich mal durchwühlen.
Für die megaAVR® 0-series sieht es ganz simpel wie folgt aus, wird für tinyAVR 1-series nicht viel anders sein:
1 | ldi tmp0,CPU_CCP_IOREG_gc |
2 | sts CPU_CCP,tmp0 |
3 | ldi tmp0,WDT_PERIOD_8KCLK_gc |
4 | sts WDT_CTRLA,tmp0 |
Das funktioniert leider nicht. Inline Assembly in der Arduino IDE bekomm ich nicht hin :-(
So war es auch nicht gemeint; das wird in C so irgendwie aussehen:
1 | CPU.CCP = CPU_CCP_IOREG_gc; |
2 | WDT.CTRL = WDT_PERIOD_8KCLK_gc; |
In der Hoffnung, dass der Arduino das innerhalb von 4 Takten ausführt. Und ob die Bezeichnungen exakt identisch sind, kann ich auch nicht sagen, da müssen Sie selbst nachschlagen.
PS: Muss eventuell auch noch in 'cli(); ... sei();' eingebettet werden.
Hallo, C/C++
1 | CPU_CCP = CCP_IOREG_gc; // write access for four CPU instructions |
Die Schreibweisen für WDT Register und Bits schauste bitte im Headerfile deines ATtinys nach. Müsste ich jetzt auch nachschauen.
Vielen Dank für eure Antworten! Das hier funktioniert:
1 | CPU_CCP = CCP_IOREG_gc; |
2 | WDT_CTRLA = WDT_PERIOD_8KCLK_gc; |
Und für den Reset:
1 | void watchdogReset() { |
2 | __asm__ __volatile__ ( |
3 | "wdr\n" |
4 | );
|
5 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.