Hallo zusammen. Ich habe mir aus testzwecken ein myavr-board zugelegt mit einem ATMEL8L. Als Software benutze ich AVR-Studio 4.12 zusätzlich habe ich WINAVR installiert. In dem Programm lasse ich eine AD-Wandlung kontinuierlich durchlaufen. Davor habe ich den WDG scharf gestellt. Ich möchte nun wenn der WDG nicht resetet wird, durch einen entsprechende Interruptbehandlung, diesen Zustand abfangen und eine LED am PortC Pin5 zum leuchten bringen. Leider habe ich keinen Anhaltspunkt mehr wo ich weiter machen könnte. Wenn ich in dem Programm die Zeile mit //wdt_reset(); rauskommentiere sollte es doch eigentlich schon klappen oder nicht? Der Reset wird dann immer wieder ausgeführt.
Die AVRs haben doch keinen WDT Interrupt, so weit ich das sehen kann. Die machen immer einen Reset wenn der WDT auslöst, du kommst also mit frisch initialisiertem AVR wieder oben in main() rein. Aber du kannst aus dem MCUCSR den Auslöser des letzten Resets lesen und auf Auslöser = WDT reagieren. Aber nicht vergessen, die Flags gleich danach zu löschen, die bleiben sonst auch über den nächsten Reset und du kannst die Quelle nicht mehr zuverlässig identifizieren. Wenn du nach einer bestimmten Zeit wirklich einen Interrupt auslösen willst, musst du einen der Timer verwenden.
Ja mit dem Timer habe ich das Problem auch gelöst bekommen wollte es aber unbedingt mit dem WDT realisieren... das das nicht so ohne weiteres geht erklärt auch warum ich nach 2 Stunden Referenzen lesen und Forensuche nicht zum Ziel gekommen bin. Ich danke dir für deine schnelle antwort.
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.