avr: new uart_bitbang module works now.

This commit is contained in:
Martin Preuss
2024-10-20 23:09:24 +02:00
parent c90c33ec11
commit efc91241d9
8 changed files with 137 additions and 318 deletions

View File

@@ -157,7 +157,7 @@ uartBitbang_ReceiveByte_error:
; ---------------------------------------------------------------------------
; @routine uartBitbang_WaitForDataLow
;
; Wait for data pin to become low
; Wait up to 1ms for data pin to become low
; @return CFLAG set if okay, clear otherwise
; @clobbers R17, R22
@@ -171,7 +171,7 @@ uartBitbang_WaitForDataLow:
; ---------------------------------------------------------------------------
; @routine uartBitbang_WaitForDataHigh
;
; Wait for data pin to become high
; Wait up to 1ms for data pin to become high
; @return CFLAG set if okay, clear otherwise
; @clobbers R17, R22

View File

@@ -12,12 +12,11 @@
; UART_BitBang_Init
; UART_BitBang_Fini
; UART_BitBang_Run
; UART_BitBang_SendPacket:
; UART_BitBang_GetNextReceivedPacket:
; UART_BitBang_ReleaseReceivedPacket:
; UART_BitBang_SendPacket
; UART_BitBang_GetNextReceivedPacket
; UART_BitBang_ReleaseReceivedPacket
.include "modules/com2/buffer.asm"
@@ -29,7 +28,6 @@
uartBitbangDataBegin:
uartBitbangRecvBuffersUsed: .byte 1
uartBitbangMaxBuffersUsed: .byte 1
uartBitbangRecvBuffersWritePos: .byte 1
uartBitbangRecvBuffersReadPos: .byte 1
uartBitbangRecvBuffers: .byte COM2_BUFFER_SIZE*UART_BITBANG_BUFFER_NUM
@@ -85,7 +83,7 @@ UART_BitBang_Init:
; ---------------------------------------------------------------------------
; @routine UART_BitBang_Init
; @routine UART_BitBang_Fini
;
; @return CFLAG set if okay, clear on error
; @clobbers R16, R17, X, Y
@@ -113,6 +111,7 @@ UART_BitBang_Fini:
; @clobbers any
UART_BitBang_Run:
clc
ret
; @end
@@ -127,6 +126,22 @@ UART_BitBang_Run:
; @clobbers r22, x (r18, r19, r22)
UART_BitBang_SendPacket:
push r15
in r15, SREG
cli
rcall UART_BitBang_SendPacket_noIrqs
brcc UART_BitBang_SendPacket_retErr
out SREG, r15
pop r15
sec
ret
UART_BitBang_SendPacket_retErr:
out SREG, r15
pop r15
clc
ret
UART_BitBang_SendPacket_noIrqs:
rcall uartBitbang_SendPacket
brcs UART_BitBang_SendPacket_okay
cpi r16, COM2_ERROR_BUSY
@@ -189,8 +204,8 @@ UART_BitBang_GetNextReceivedPacket_retNc:
; @clobbers r16, r17, r21
UART_BitBang_ReleaseReceivedPacket:
rjmp COM2_BufferDeallocFront ; (r16, r17, r21)
rjmp uartBitbang_BufferDeallocFront ; (r16, r17, r21)
; @end
@@ -285,7 +300,11 @@ uartBitbang_ReceivePacket_retnc:
; @clobbers r16, r17, r21
uartBitbang_BufferAlloc:
COM2_M_BufferAlloc UART_BITBANG_BUFFER_NUM, uartBitbangMaxBuffersUsed, uartBitbangRecvBuffersUsed, uartBitbangRecvBuffersWritePos
COM2_M_BufferAlloc UART_BITBANG_BUFFER_NUM, \
com2MaxRecvBuffersUsed, \
uartBitbangRecvBuffersUsed, \
uartBitbangRecvBuffersWritePos, \
uartBitbang_BufferPosToX
ret
; @end
@@ -394,10 +413,10 @@ uartBitbangIsrPcint0_end:
; set routine functions
.equ COMIO_Init = UART_BitBang_Init
.equ COMIO_Fini = UART_BitBang_Fini
.equ COMIO_Run = UART_BitBang_Run
.equ COMIO_SendPacket = UART_BitBang_SendPacket
.equ COMIO_Init = UART_BitBang_Init
.equ COMIO_Fini = UART_BitBang_Fini
.equ COMIO_Run = UART_BitBang_Run
.equ COMIO_SendPacket = UART_BitBang_SendPacket
.equ COMIO_GetNextReceivedPacket = UART_BitBang_GetNextReceivedPacket
.equ COMIO_ReleaseReceivedPacket = UART_BitBang_ReleaseReceivedPacket