AVR-GCC Assembler und USART

Gast #3659912
Lesenswert?

Hallo,

laut Datenblatt des ATMega (z.B. 1284) geht das Empfangen ganz leicht:
1
USART_Receive:
2
; Wait for data to be received
3
sbis UCSR0A, RXC0
4
rjmp USART_Receive
5
; Get and return received data from buffer 
6
in r16, UDR0
7
ret

Wenn ich das versuche als Inline Assembler mit dem GCC zu kompilieren 
geht das nicht. Der GCC verwendet bei dem übersetzten C-Code immer 
"lds", um UCSR0A von 0xc0 und UDR0 von 0xc6 zu laden. Nicht, dass ich 
dafür ein Register brauche, auch dauert lds 2 Zyklen und in nur ein 
Zyklus.

Mache ich da irgendwas falsch oder ist das einfach so, dass der AVR-ASM 
"komfortabler" ist in dieser Beziehung?

Viele Grüße,
Maxl

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren