mikrocontroller.net

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


Autor: krengel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also im simulator funktioniert es aber auf diese weise

Autor: krengel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
interupt vectoren angepaßt??

Autor: krengel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-))

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.