Prgramm startet unmotiviert neu

  • 1
  • 2
  • 3
  • Seite 3 von 3
Harald_K
 
Avatar
 
Betreff:

Re: Prgramm startet unmotiviert neu

 · 
Gepostet: 07.06.2015 - 17:45 Uhr  ·  #17
Upps - da hab ich doch vorhin zu schnell gelesen...

es heißt
ASM;
Ldi R16, MCUSR;
STS MidPed2501.MyMcUsr, R16;
ENDASM;


das lädt den Wert von MCUSR (hier also wohl die Registeradresse) ins R16 und speichert das dann nach mymcusr

es müßte heißen:
ASM;
Ld R16, MCUSR;
STS MidPed2501.MyMcUsr, R16;
ENDASM;

das lädt dann R16 mit dem Inhalt von MCUSR und speichert es in Mymcusr ab

daher wohl auch die falschen Bitmuster, das ist die Adresse, nicht der Inhalt.

Adresse 054h = 01010100 .. sieht gut aus .. ändert sich auch nie, da Registeradressen recht fest sind ;)
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Prgramm startet unmotiviert neu

 · 
Gepostet: 07.06.2015 - 18:09 Uhr  ·  #18
Hi,

es muss auf jeden Fall heissen:

LDS _ACCA, MCUCSR
oder evtl.
IN _ACCA, MCUCSR

LDI lädt eine Konstante.
LD benötigt einen Pointer als Quelle

rolf

rolf
Avra
Schreiberling
Avatar
Geschlecht:
Herkunft: Belgrade, Serbia
Alter: 54
Homepage: rs.linkedin.com/in…
Beiträge: 653
Dabei seit: 07 / 2002
Betreff:

Re: Prgramm startet unmotiviert neu

 · 
Gepostet: 10.06.2015 - 11:51 Uhr  ·  #19
Code
  asm;
    ld  R16, MCUSR;
    sts MidPed2501.MyMcUsr, R16;
  endasm;


If I understood well what you want, then using GetWatchdogFlag compiler function would perhaps be more readable and correct 100% without need to find out if "ld", "in" or something else is appropriate?

Zitat
4.17.18 GETWATCHDOGFLAG
Function. Returns a byte which is the copy of the "MCUSR" register content after the last reset or PowerOn.
Harald_K
 
Avatar
 
Betreff:

Re: Prgramm startet unmotiviert neu

 · 
Gepostet: 10.06.2015 - 16:57 Uhr  ·  #20
yeah, but for this you must include the watchdog in the compiler import list,

and then you can not test if anything has activated the watchdog ,what you havent done by the program

(and i think the getwatchdogfag function uses a statement like the lds Rn, MCUSR to read the processor register)

oh, by the way ...

the simple line

b := mcusr ;

will be compiled to

in _acca, mcusr
STS progname.b, _acca


and all without asm, etc ....
  • 1
  • 2
  • 3
  • Seite 3 von 3
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   75   89 · Page-Gen-Time: 0.022915s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI