eXe
06.12.2004, 20:59
Hallo,
habe einen µC (AVR AT90S8535) und möchte damit Daten an meinen PC über die Serielle senden.
Habe mir also erstmal ein ganz einfaches Programm geschrieben, in dem ich ein Byte andauernd sende. Allerdings kommt am PC nicht das an, was ich eigentlich sende.
Hier der Code:
.INCLUDE "D:\Programme\AVR Studio\Appnotes\8535def.inc"
.DEF temp = R16
.DEF data = R17
.EQU clock = 8000000
.EQU baud = 2400
.EQU ubrrval = clock/(baud*16)-1
reset:
;Stackpointer initialisieren
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
;LED konfiguration
ldi temp, 0x04
out DDRA, temp
ldi temp, 0x00
out PORTA, temp
;Baudrate einstellen
ldi temp, ubrrval
out UBRR, temp
;Uart RX und RXInt aktivieren
sbi UCR, TXEN
ldi data, 0x1C
loop:
sbis USR, UDRE ;überspringe wenn bereit
rjmp loop
out UDR, data
rjmp loop
Und ein paar meiner Ergebnisse, wobei oft zwei verschiedene Bytes in unterschiedlichen Reihenfolgen empfangen werden:
Register im Programm -> Empfangen am PC
0F -> C8 oder D8
0E -> 88 oder 98
0D -> 48 oder 58
0C -> 08 oder 18
1F -> E4 oder F4
1E -> 44
1D -> A4 oder B4
1C -> 84
Kann auch noch weitere Ergebnisse ermitteln, wenn es helfen würde.
Hat vielleicht jemand eine Idee? Könnte das an der Hardware, Software oder an der Konfiguration liegen?
Danke im Voraus,
eXe
habe einen µC (AVR AT90S8535) und möchte damit Daten an meinen PC über die Serielle senden.
Habe mir also erstmal ein ganz einfaches Programm geschrieben, in dem ich ein Byte andauernd sende. Allerdings kommt am PC nicht das an, was ich eigentlich sende.
Hier der Code:
.INCLUDE "D:\Programme\AVR Studio\Appnotes\8535def.inc"
.DEF temp = R16
.DEF data = R17
.EQU clock = 8000000
.EQU baud = 2400
.EQU ubrrval = clock/(baud*16)-1
reset:
;Stackpointer initialisieren
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
;LED konfiguration
ldi temp, 0x04
out DDRA, temp
ldi temp, 0x00
out PORTA, temp
;Baudrate einstellen
ldi temp, ubrrval
out UBRR, temp
;Uart RX und RXInt aktivieren
sbi UCR, TXEN
ldi data, 0x1C
loop:
sbis USR, UDRE ;überspringe wenn bereit
rjmp loop
out UDR, data
rjmp loop
Und ein paar meiner Ergebnisse, wobei oft zwei verschiedene Bytes in unterschiedlichen Reihenfolgen empfangen werden:
Register im Programm -> Empfangen am PC
0F -> C8 oder D8
0E -> 88 oder 98
0D -> 48 oder 58
0C -> 08 oder 18
1F -> E4 oder F4
1E -> 44
1D -> A4 oder B4
1C -> 84
Kann auch noch weitere Ergebnisse ermitteln, wenn es helfen würde.
Hat vielleicht jemand eine Idee? Könnte das an der Hardware, Software oder an der Konfiguration liegen?
Danke im Voraus,
eXe