www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART/ATmega169 im AVR-Studio


Autor: Visitor (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich das anhängende kurze Programm im AVR-Studio (Ver 4.13 Service 
Pack 2, Build 571 unter Win2000 SP 2) übersetzen will, kommt folgende 
Fehlermeldung:

error: Operand 1 out of range: 0xc5    Operand 1 ist UBRRH
error: Operand 1 out of range: 0xc4    Operand 1 ist UBRRL

Wenn ich die include-Datei von "m169def.inc“ in m16def.inc“ abändere 
erfolgt keine Fehlermeldung. Lt. Datenblatt des Atmega169 sollten die 
Register UBRRH und UBRRL verwendbar sein.

Lasse ich die UART-Initialisierung weg und erzeuge z.B. ein 
Blinkende-LED-Programm funktioniert die Compilierung als auch das 
Brennen in ein Atmega169-Board mit PonyProg ohne Probleme.
Die Deinstallation und erneute Installation von AVR-Studio war 
erfolglos.

Ich bin etwas verwirrt.

Gruß
Visitor

Autor: MachMal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

;Baudrate einstellen
LDI   R16, HIGH(UBRRVAL)
STS   UBRRH, R16
LDI   R16, LOW(UBRRVAL)
STS   UBRRL, R16


Autor: Visitor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@MachMal,

super, alles bestens. Vielen Dank!!

In der m169def.inc-Datei sind die fraglichen Register als

"Definitions marked "MEMORY MAPPED"are extended I/O ports
and cannot be used with IN/OUT instructions" beschrieben.

Ist das eine Besonderheit des ATmega169? Bisher habe ich nur mit 
ATmega8/8535/16 "gebastelt".

Visitor

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist das eine Besonderheit des ATmega169?

Nicht nur bei diesem Controller...
Irgendwann war der "Register-Bereich" komplett ausgenutzt, so dass Atmel 
auch noch Konfigurationsregister ins Memory legen musste.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>auch noch Konfigurationsregister ins Memory legen musste.

Die liegen schon immer im RAM-Bereich, genau wie die Register( 
Ram[0]=r0);
Nur die Befehle 'in/out' haben einen eingeschränkten Adressbereich.

MfG Spess

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK...

Autor: Visitor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessanterweise verwendet das Beispiel zur Initialisierung des UART 
im Datenblatt ATmega69 S.157 den OUT-Befehl.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Visitor wrote:
> Interessanterweise verwendet das Beispiel zur Initialisierung des UART
> im Datenblatt ATmega69 S.157 den OUT-Befehl.
Dann solltest Du Dir vielleicht mal ein aktuelles Datenblatt zulegen. 
Da steht's nämlich korrekt drin...

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.