robotfreak
21.06.2005, 17:44
Hallo,
wenn ich von meinem ATmega16 die Zahlen von 0-255 zum Computer schicke,
wird z.B. die 13 zu einer 10, andere Zahlen verändern sich auch einfach so.
Dieses Problem besteht aber nur, wenn ich den ATmega16 in Assembler programmiere, in C funktioniert alles normal.
Ich sende und empfange mit 19200 baud. Oszi: 8MHz
Hier die Befehle mit denen ich das USART initialisiere:
.include "m16def.inc"
.equ BAUD = 8000000/(19200*16)-1
main:
;USART aktivieren
ldi r16, LOW(BAUD)
out UBRRL, r16
ldi r16, HIGH(BAUD)
out UBRRH, r16
ldi r16, 1<<TXEN
out UCSRB, r16
;Hauptprogramm ...........
ausgabe:
sbis UCSRA, UDRE
rjmp ausgabe
out UDR, r16
ret
Was mache ich falsch?
wenn ich von meinem ATmega16 die Zahlen von 0-255 zum Computer schicke,
wird z.B. die 13 zu einer 10, andere Zahlen verändern sich auch einfach so.
Dieses Problem besteht aber nur, wenn ich den ATmega16 in Assembler programmiere, in C funktioniert alles normal.
Ich sende und empfange mit 19200 baud. Oszi: 8MHz
Hier die Befehle mit denen ich das USART initialisiere:
.include "m16def.inc"
.equ BAUD = 8000000/(19200*16)-1
main:
;USART aktivieren
ldi r16, LOW(BAUD)
out UBRRL, r16
ldi r16, HIGH(BAUD)
out UBRRH, r16
ldi r16, 1<<TXEN
out UCSRB, r16
;Hauptprogramm ...........
ausgabe:
sbis UCSRA, UDRE
rjmp ausgabe
out UDR, r16
ret
Was mache ich falsch?