Huhu, als ich wollte eigentlich am anfang meines programmes verzweigen je nachdem ob ein Power-Up vorrausgegangen ist oder ein Watschdog-Reset. also hab ich mir gedacht (ASM auf einem AtmelMega16): sbis MCUCSR, WDRF rjmp kein_reset oder sbis MCUCSR, 3 rjmp kein_reset Avr-Studio meint dazu nur: Operand 1 out of range: 0x34 Bin ich jetzt knägge?
Nein, aber das MCUCSR liegt ausserhalb des Bereiches, der mit sbis/sbic-Befehlen erreichbar ist (IO-Adresse $34, sbis/sbic geht nur bis 31dez). Also bleibt nur das Einlsesen in ein Register und das Auswerten der einzelnen Bits dort. Jörg
Hi, hallo zusammen in register einlesen und dann sbrs statt sbis //FatsAVR// ... If mcucsr.wdrf=1 Then mcucsr.wdrf=0 Print "WDGR" End If ... //ASSEMBLER (generiert von FastAVR)// ... ;-Line--1570----If mcucsr.wdrf=1 Then-- in r24,MCUCSR sbrs r24,WDRF rjmp L0371 L0372: ;-Line--1571----mcucsr.wdrf=0-- in zl,MCUCSR cbr zl,0x08 out mcucsr,zl ;-Line--1572----Print "WDGR"-- ldi zl,Low(S13*2) ldi zh,high(S13*2) call _PSc call _PCL ;-Line--1585----End If-- L0371: ... Das "WDGR" für'n PRINT-Befehl liegt hinten als tabelle S13 im Flash. wie oben bereits gesagt, etwder sbrs statt sbis und/oder über weiteres Register einlesen. gruß AR.
JO! TNX so hab ichs dann gemacht: in temp, MCUCSR sbrs temp, 3 rjmp kein_reset GreetX, [int]
Habe ich es richtig aus dem Datenblatt gelesen, dass das POWER-ON-RESET-FLAG nur manuell gesetzt und zurückgesetzt werden kann? Man könnte es nuzen, um abzufragen, ob das Register MCUCSR per Software schon gelöscht wurde?
nein, die RESET_FLAGS im MCUCSR werden bei einem Reset von der auslösenden Quelle entsprechenden aktualisiert. Das MCUSR kann nach dem Programmstart ausgelesen und die Reset-Quelle ausgewertet werden. Ein setzten und löschen dieser Bits während des Programmablaufs ist auch jederzeit möglich.
@mmerten >die RESET_FLAGS im MCUCSR werden bei einem Reset von der >auslösenden Quelle entsprechenden aktualisiert Das stimmt, doch wie sieht es konkret mit dem "POWER-ON-RESET-FLAG" (Bit0) im MCUCSR aus?
Wenn man die Einschränkungen im Datenblatt beachtet (einige ältere AT90S Typen hatten da etwas Probleme) und auch beim Mega128 gibt es einige Besonderheiten, funktioniert die korrekte Erkennung der RESET-Quelle recht sicher. Ebenso muß man auf die passende Dimensionierung der externen Reset-Beschaltung und Fuse-Bits (Start-Delay) achten. Sonst wird nach einem POR evtl. noch ein normaler RESET oder Brown-Out-Reset detektiert. Ebenso sollte man den Hinweis für das Lesen und Löschen des MCUCSR im Datenblatt beachten.
Hallo, mich würde mal interessieren welche Besonderheiten des Mega128 der vorhergehende Beitrag wohl meint und von welchem Hinweis fürs Lesen und Löschen des MCUCSR dessen Autor spricht ??? Beim JTAG-Debuggen meines Mega128 Systems (Olimex/Studio4.11SP2) ist mir nämlich aufgefallen daß nach einem Break regelmässig nicht die letzte Resetquelle sondern merkwürdigerweise stets die davor angezeigt wird- und daß obwohl die Resetbits zwischenzeitlich zurückgesetzt wurden! Im normalen Betrieb dagegen funktioniert alles erwartungsgemäss... Rainer
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.