avr: t03 now at least writes tty message once!
This commit is contained in:
@@ -37,8 +37,6 @@ UART_HW_Init:
|
||||
ldi yl, LOW(uartHw_ringBufferMsgNumOut)
|
||||
ldi yh, HIGH(uartHw_ringBufferMsgNumOut)
|
||||
rcall RingBufferY_Init
|
||||
|
||||
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
@@ -57,156 +55,65 @@ UART_HW_InterfaceInit:
|
||||
ldi r17, UART_HW_IFACE_SIZE
|
||||
clr r16
|
||||
rcall Utils_FillSram ; (R17, X)
|
||||
; reset ringbuffer for recvd chars
|
||||
m_ringbuffer_y_reset UART_HW_IFACE_OFFS_READBUF_MAX, \
|
||||
UART_HW_IFACE_OFFS_READBUF_USED, \
|
||||
UART_HW_IFACE_OFFS_READBUF_RDPOS, \
|
||||
UART_HW_IFACE_OFFS_READBUF_WRPOS, \
|
||||
UART_HW_IFACE_OFFS_READBUF_DATA
|
||||
ldi r16, UART_HW_IFACE_READBUF_SIZE
|
||||
std Y+UART_HW_IFACE_OFFS_READBUF_MAX, r16
|
||||
|
||||
; reset ringbuffer for chars to transmit
|
||||
m_ringbuffer_y_reset UART_HW_IFACE_OFFS_WRITEBUF_MAX, \
|
||||
UART_HW_IFACE_OFFS_WRITEBUF_USED, \
|
||||
UART_HW_IFACE_OFFS_WRITEBUF_RDPOS, \
|
||||
UART_HW_IFACE_OFFS_WRITEBUF_WRPOS, \
|
||||
UART_HW_IFACE_OFFS_WRITEBUF_DATA
|
||||
ldi r16, UART_HW_IFACE_WRITEBUF_SIZE
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEBUF_MAX, r16
|
||||
|
||||
; reset ringbuffer for messages to be sent
|
||||
m_ringbuffer_y_reset UART_HW_IFACE_OFFS_OUTMSGBUF_MAX, \
|
||||
UART_HW_IFACE_OFFS_OUTMSGBUF_USED, \
|
||||
UART_HW_IFACE_OFFS_OUTMSGBUF_RDPOS, \
|
||||
UART_HW_IFACE_OFFS_OUTMSGBUF_WRPOS, \
|
||||
UART_HW_IFACE_OFFS_OUTMSGBUF_DATA
|
||||
ldi r16, UART_HW_IFACE_OUTMSGBUF_SIZE
|
||||
std Y+UART_HW_IFACE_OFFS_OUTMSGBUF_MAX, r16
|
||||
|
||||
ldi r16, 0xff
|
||||
std Y+UART_HW_IFACE_OFFS_READMSG_BUFNUM, r16
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEMSG_BUFNUM, r16
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFNUM, r16
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEBUFNUM, r16
|
||||
|
||||
ldi r16, UART_HW_READMODE_OFF
|
||||
std Y+UART_HW_IFACE_OFFS_READMODE, r16
|
||||
|
||||
ldi r16, UART_HW_WRITEMODE_IDLE
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEMODE, r16
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine UART_HW_InterfaceWriteToReadBuffer @global
|
||||
; @routine UART_HW_Interface_SetReadBuffer @global
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @param r16 byte to write
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
; @param Y pointer to interface data in SRAM (see @ref UART_HW_IFACE_OFFS_STATE)
|
||||
; @param r16 read buffer number
|
||||
; @param X read buffer pos
|
||||
; @clobbers R17
|
||||
|
||||
UART_HW_InterfaceWriteToReadBuffer:
|
||||
push yl
|
||||
push yh
|
||||
adiw yh:yl, UART_HW_IFACE_OFFS_READBUF
|
||||
rcall uartHwRingBufferWriteGuarded ; R17, R18, X
|
||||
pop yh
|
||||
pop yl
|
||||
UART_HW_Interface_SetReadBuffer:
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFNUM, r16
|
||||
adiw xh:xl, 1
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFPOSLOW, xl
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFPOSHIGH, xh
|
||||
sbiw xh:xl, 1
|
||||
clr r17
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFUSED, r17
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFLEFT, r17
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine UART_HW_InterfaceReadFromReadBuffer @global
|
||||
; @routine UART_HW_Interface_SetWriteBuffer @global
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @return R16 byte read
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
; @param Y pointer to interface data in SRAM (see @ref UART_HW_IFACE_OFFS_STATE)
|
||||
; @param r16 write buffer number
|
||||
; @param X write buffer pos
|
||||
; @clobbers r17
|
||||
|
||||
UART_HW_InterfaceReadFromReadBuffer:
|
||||
push yl
|
||||
push yh
|
||||
adiw yh:yl, UART_HW_IFACE_OFFS_READBUF
|
||||
rcall uartHwRingBufferReadGuarded ; R17, R18, X
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine UART_HW_InterfaceWriteToWriteBuffer @global
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @param r16 byte to write
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
|
||||
UART_HW_InterfaceWriteToWriteBuffer:
|
||||
push yl
|
||||
push yh
|
||||
adiw yh:yl, UART_HW_IFACE_OFFS_WRITEBUF
|
||||
rcall uartHwRingBufferWriteGuarded ; R17, R18, X
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine UART_HW_InterfaceReadFromWriteBuffer @global
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @return R16 byte read
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
|
||||
UART_HW_InterfaceReadFromWriteBuffer:
|
||||
push yl
|
||||
push yh
|
||||
adiw yh:yl, UART_HW_IFACE_OFFS_WRITEBUF
|
||||
rcall uartHwRingBufferReadGuarded ; R17, R18, X
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine UART_HW_InterfaceAddOutgoingMsgNum @global
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @param r16 byte to write
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
|
||||
UART_HW_InterfaceAddOutgoingMsgNum:
|
||||
push yl
|
||||
push yh
|
||||
adiw yh:yl, UART_HW_IFACE_OFFS_OUTMSGBUF
|
||||
rcall uartHwRingBufferWriteGuarded ; R17, R18, X
|
||||
pop yh
|
||||
pop yl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine UART_HW_InterfaceGetNextOutgoingMsgNum @global
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @return R16 byte read
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
|
||||
UART_HW_InterfaceGetNextOutgoingMsgNum:
|
||||
push yl
|
||||
push yh
|
||||
adiw yh:yl, UART_HW_IFACE_OFFS_OUTMSGBUF
|
||||
rcall uartHwRingBufferReadGuarded ; R17, R18, X
|
||||
pop yh
|
||||
pop yl
|
||||
UART_HW_Interface_SetWriteBuffer:
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEBUFNUM, r16
|
||||
adiw xh:xl, 1
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEBUFPOSLOW, xl ; begin of msg (dest addr byte)
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEBUFPOSHIGH, xh
|
||||
adiw xh:xl, 1
|
||||
ld r17, X ; payload length byte
|
||||
sbiw xh:xl, 2 ; back to start of buffer
|
||||
inc r17
|
||||
inc r17
|
||||
inc r17
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEBUFUSED, r17
|
||||
std Y+UART_HW_IFACE_OFFS_WRITEBUFLEFT, r17
|
||||
ret
|
||||
; @end
|
||||
|
||||
@@ -214,64 +121,3 @@ UART_HW_InterfaceGetNextOutgoingMsgNum:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine uartHwRingBufferReadGuarded
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @param r16 byte to write
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
|
||||
uartHwRingBufferReadGuarded:
|
||||
push r15
|
||||
in r15, SREG
|
||||
cli
|
||||
rcall RingBufferY_ReadByte ; R17, R18, X
|
||||
brcc uartHwRingBufferReadGuarded_error
|
||||
out SREG, r15
|
||||
pop r15
|
||||
sec
|
||||
ret
|
||||
uartHwRingBufferReadGuarded_error:
|
||||
out SREG, r15
|
||||
pop r15
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine uartHwRingBufferWriteGuarded
|
||||
;
|
||||
; @return CFLAG on success, cleared on error
|
||||
; @param r16 byte to write
|
||||
; @param Y pointer to start of interface data
|
||||
; @clobbers R17, R18, X
|
||||
|
||||
uartHwRingBufferWriteGuarded:
|
||||
push r15
|
||||
in r15, SREG
|
||||
cli
|
||||
rcall RingBufferY_WriteByte ; R17, R18, X
|
||||
brcc uartHwRingBufferWriteGuarded_error
|
||||
out SREG, r15
|
||||
pop r15
|
||||
sec
|
||||
ret
|
||||
uartHwRingBufferWriteGuarded_error:
|
||||
out SREG, r15
|
||||
pop r15
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user