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.