Wsk8
26.11.2012, 13:37
Hallo,
ich bin gerade beim usart am xmega und der will einfach nicht und ich weiß auch nicht was ich noch einstellen soll.
Hier mal der code zum initialisieren und senden.
RESET:
; Txd out
ldi r16, 0x08
sts PORTD_DIR, r16
; 16 MHz
call SETUP_CLK
UART_INIT:
; Rx/Tx enable
ldi r16, USART_RXEN_bm | USART_TXEN_bm
sts USARTC0_CTRLB, r16
; no parity, 2 stop bits, 8 bit char size
ldi r16, USART_PMODE_DISABLED_gc | USART_SBMODE_bm | USART_CHSIZE_8BIT_gc
sts USARTC0_CTRLC, r16
; baud 38400
ldi r16, BSEL
sts USARTC0_BAUDCTRLA, r16
ldi r16, BSCALE
sts USARTC0_BAUDCTRLB, r16
UARTC0_SEND_BYTE:
ldi r16, USART_DREIF_bm ; set dreif bit
sts USARTC0_STATUS, r16 ; enable transmit
sts USARTC0_DATA, zeichen ; zeichen in data reg
ret
BSEL und BSCALE hab ich mit dieser Seite berechnet: http://prototalk.net/forums/showthread.php?t=188
mfg
ich bin gerade beim usart am xmega und der will einfach nicht und ich weiß auch nicht was ich noch einstellen soll.
Hier mal der code zum initialisieren und senden.
RESET:
; Txd out
ldi r16, 0x08
sts PORTD_DIR, r16
; 16 MHz
call SETUP_CLK
UART_INIT:
; Rx/Tx enable
ldi r16, USART_RXEN_bm | USART_TXEN_bm
sts USARTC0_CTRLB, r16
; no parity, 2 stop bits, 8 bit char size
ldi r16, USART_PMODE_DISABLED_gc | USART_SBMODE_bm | USART_CHSIZE_8BIT_gc
sts USARTC0_CTRLC, r16
; baud 38400
ldi r16, BSEL
sts USARTC0_BAUDCTRLA, r16
ldi r16, BSCALE
sts USARTC0_BAUDCTRLB, r16
UARTC0_SEND_BYTE:
ldi r16, USART_DREIF_bm ; set dreif bit
sts USARTC0_STATUS, r16 ; enable transmit
sts USARTC0_DATA, zeichen ; zeichen in data reg
ret
BSEL und BSCALE hab ich mit dieser Seite berechnet: http://prototalk.net/forums/showthread.php?t=188
mfg