Forum: Mikrocontroller und Digitale Elektronik ersetzen von in/out durch lds/sts


von krengel (Gast)


Lesenswert?

hallo,
ich bin dabei ein assembler-projekt vom atmega8 auf den atmega88
anzupassen.
ich benutze das avr-studio und das ice-mk2.
in den application notes von atmel steht, dass man, um die I/O register
zu beschreiben einfach nur die befehle in/out durch lds/sts ersetzen
soll.
grund: beim atmega8 sind die adressen der register im bereich 0x00-0x31
und beim atmega88 werden sie in den sram bereich gemapped.

speziell geht es hier um folgendes problem:
atmega8:
ldi R24,UBR ; Baud rate = 19.200 bps UBR=33
out UBRRL,R24

atmega88:
ldi R24,UBR ; Baud rate = 19.200 bps UBR=33
sts UBRR0L,R24

im debugger werden die bits nicht in die register geschrieben.
daher funktioniert da die uart nicht.

wer weis abhilfe?

von Sebastian (Gast)


Lesenswert?

also im simulator funktioniert es aber auf diese weise

von krengel (Gast)


Lesenswert?

du hast recht, denkst du das ist nur ein darstellungsproblem, und das
wirkliche problem, dass naemlich dei uart nicht läuft ist ein anderes?

von A.K. (Gast)


Lesenswert?

Könnte es sein, dass man bei STS erst mal 0x20 draufsatteln muss?
Immerhin liegen die per IN/OUT 0x00-0x3F adressierbaren I/O-Register im
Datenadressraum im Bereich 0x20-0x5F.

von Sebastian (Gast)


Lesenswert?

das sollte eigentlich das include file machen... also es steht zumindest
drin das in/out nicht funzt... also wird die adresse schon stimmen.
hast du dir das app note "migration from mega8 to mega88" angeguckt?
da steht das bei der initialiersierung irgendwas anders ist...

ganz was anderes... im datenblatt find ich kein UBRR0L=33 für 19.2

von Sebastian (Gast)


Lesenswert?

interupt vectoren angepaßt??

von krengel (Gast)


Lesenswert?

interruptvektoren und adressoffsets werden im includefile geregelt.
muss man irgenwas freischalten, um auf die erweiterten I/O Register
zugreifen zu können?
wenn ich mir ein c prog schreibe und das debugge wird im disassembler
auf die register genauso zugegriffen, wie es auch von atmel
vorgeschlagen wird. seltsamerweise funktiert es da, allerdings im
richtigen assemblerprog nicht.

(UBRR0L=33 für 19.2 war übrigens leider ein falscher kommentar :-))

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.