Forum: Mikrocontroller und Digitale Elektronik AVR-GCC Assembler und USART


von Maxl (Gast)


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

von Bastler (Gast)


Lesenswert?

Eventuell weil OxC0 nicht mehr per in/out erreichbar ist?

von der alte Hanns (Gast)


Lesenswert?

>laut Datenblatt des ATMega (z.B. 1284) geht das Empfangen ganz leicht

Es empfiehlt sich, alles zu lesen, auch die Fußnoten, in diesem Fall den 
Verweis auf "4. About code examples".

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.