Forum: Mikrocontroller und Digitale Elektronik Fehler: "Operand out of range" bei out-Befehl


von Mark (Gast)


Lesenswert?

Hallo!

Habe einen Asm-Code erhalten um DMX-Signale auszuwerten.

Jedoch tauchen beim compilieren mehrere Fehler folgender Art auf:

Bei

ldi temp, 0x01
out UBRRL, temp

erhalte ich die Fehlermeldung "Operand 1 out of range: 0xc4"

Dies wunderte mich nach einem Blick in die Hilfe auch nicht mehr, da es 
dort heisst: OUT A, Rr 0 < r < 31, 0 < A < 63
OK! 0xc4 ist natürlich größer als 63, aber ich möchte nun halt mal das 
Baud-Register vom UART beschreiben. Nur welchen Befehl kann ich anstelle 
von "out" nehmen??

Kann mir jemand weiter helfen?

Gruß Mark

von Benedikt K. (benedikt)


Lesenswert?

Mit sts anstelle von out.

von Mark (Gast)


Lesenswert?

Danke!

Werd ich morgen gleich testen!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Bei neueren AVR-Controllern sind etliche Register in den erweiterten 
I/O-Bereich gewandert, der sich nur mit "lds" für Lesen und "sts" für 
Schreiben ansprechen läßt. Direkte Bitmanipulationen sind dort auch 
nicht mehr mit "cbi", "sbi", "sbis" und "sbic" zu machen, sondern 
indirekt über ein temporäres Register mit "cbr", "sbr", "sbrs" und 
"sbrc".

von Mark (Gast)


Lesenswert?

Hallo!

Ja ich habe ein Butterfly mit ATmega 169!

Das mit der Bitmanipulation war eigentlich meine nächste Frage, da es 
jetzt nur noch an denen hängt!
Aber das hat sich ja dann geklärt.

Danke für die Antwort!

Gruß Mark

von AxelR. (D1RTO) (Gast)


Lesenswert?

Appnote AVR001.zip von Atmel runterladen und
.include "macros.inc"
das hat mir manchen Stress erspart

http://www.atmel.com/dyn/resources/prod_documents/AVR001.zip

Gruß
AxelR.

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.