Hallo,
ich habe mit meiner UART_init-Routine compile-Probleme. Ich bekomme
unter avr-gcc (GCC) 3.4.1 folgende Meldung:
Assembling: uart.S
avr-gcc -c -mmcu=atmega128 -I. -x assembler-with-cpp
-Wa,-adhlns=uart.lst,-gstabs uart.S -o uart.o
uart.S: Assembler messages:
uart.S:88: Error: number must be less than 64
make.exe: *** [uart.o] Error 1
Der entsprechende Code ist:
; r25/r24
;void uart_init(u16 BaudRate)
.global uart_init
uart_init:
out UBRR0H, r25 // Das ist die Zeile 88
out UBRR0L, r24
ldi r25, (1 << RXCIE0) | (1<<RXEN0) | (1<<TXEN0)
out UCSR0B, r25
sei
ret
Aufrufen tue ich das im main.c mit "uart_init(UART_BAUD_SELECT_0);",
dabei hat UART_BAUD_SELECT_0 den Wert 7.
Was ist falsch dran? Wie kann ich es lösen (außer den UBRR0H Wert auf
default zu lassen)?
Hallo Tomasz, UBRR0H liegt nicht in dem Bereich (0-63), den Du mit out ansprechen kannst. Habe lange nichts mehr mit ASM gemacht, aber mit STS sollte es gehen. Volkmar
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.