Forum: Compiler & IDEs SFRs mit GCC falsch gesetzt?


von David Reis (Gast)


Lesenswert?

Tag,

habe hier grade ein kleines Problem mit dem SimulAVR aufgestoebert.
Grundlegend: Es werden Register an wohl ungueltigen Stellen festgelegt,
 was mit Meldungen wie
memory.c:259: WARNING: **** Attempt to write invalid io reg: TWBR at
0x0020
quittiert wird.
Ein Nachlesen in der iom16.h ergibt: TWBR liegt an 0x00, so steht es
auch primaer im Datenblatt. Dummerweise dahinter eine zweite Zahl in
Klammern: 0x20 - leider ohne Kommentar, was das bedeuten soll. Genauso
mit allen anderen Registern, alle um 20H nach oben verschoben.

Ist das normal? Falls nein, wie bringe ich meinem Compiler anderes bei?
Falls ja, wie mache ich selbiges mit der simulavr/avr-gdb/ddd-Kette?
Und: Wird das Programm in jedem Fall auf dem uC lauffaehig sein? Zeit
bis Projektende wird leider langsam kritisch...

Ach ja: Das Problem taucht genau 2x in Google auf - leider immer ohne
Kommentar...

Danke im Voraus,
David

PS: Nebenbei: Kann ich mit DDD den Status der SFRs anzeigen? Die
Registerliste enthaelt nur die Rs, SREG, SP und PC...

von A.K. (Gast)


Lesenswert?

Alle I/O-Register sind um 0x20 verschoben. An 00.1F liegen die
Prozessorregister. I/O-Adresse 0x00 entspricht also der Speicheradresse
0x20.

von David Reis (Gast)


Lesenswert?

Ah, das ist schon einmal gut zu wissen :) Danke Dir!
Nur: Warum kennt der simulavr die Register dann nicht? Version ist
0.1.2.2.

David

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
Noch kein Account? Hier anmelden.