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


von Visitor (Gast)


Angehängte Dateien:

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

von MachMal (Gast)


Lesenswert?

1
;Baudrate einstellen
2
LDI   R16, HIGH(UBRRVAL)
3
STS   UBRRH, R16
4
LDI   R16, LOW(UBRRVAL)
5
STS   UBRRL, R16

von Visitor (Gast)


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

von STK500-Besitzer (Gast)


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.

von Spess53 (Gast)


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

von STK500-Besitzer (Gast)


Lesenswert?

OK...

von Visitor (Gast)


Lesenswert?

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

von Johannes M. (johnny-m)


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...

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.