sending works again with n20.
This commit is contained in:
@@ -104,33 +104,28 @@ uartBitbang_SendByte_loop: ; 11 for low bit
|
||||
uartBitbang_SendByte_setLow:
|
||||
sbi COM_DATA_DDR, COM_DATA_PIN ; +2 set DATA as output
|
||||
cbi COM_DATA_OUTPUT, COM_DATA_PIN ; +2 set DATA low
|
||||
Utils_WaitNanoSecs COM_BIT_LENGTH, 11, r22
|
||||
rjmp uartBitbang_SendByte_loopEnd ; +2
|
||||
rjmp uartBitbang_SendByte_wait ; +2
|
||||
uartBitbang_SendByte_setHigh:
|
||||
cbi COM_DATA_DDR, COM_DATA_PIN ; +2 set DATA as input, pullup R makes it ONE
|
||||
nop ; +1 (to make pin change available)
|
||||
Utils_WaitNanoSecs COM_HALFBIT_LENGTH, 0, r22 ; wait for half a bit length for line to safely settle
|
||||
sbis COM_DATA_INPUT, COM_DATA_PIN ; +1 if no skip, +2 if skipped
|
||||
rjmp uartBitbang_SendByte_error ; +2 if error (collision: we wanted line to be high but it is low)
|
||||
Utils_WaitNanoSecs COM_HALFBIT_LENGTH, 11, r22
|
||||
cbi COM_DATA_DDR, COM_DATA_PIN ; +2 set DATA as input, pullup R makes it ONE
|
||||
Utils_WaitNanoSecs COM_BIT_LENGTH, 8, r22
|
||||
cbi COM_DATA_OUTPUT, COM_DATA_PIN ; +2 disable internal pullup for DATA
|
||||
nop ; +1
|
||||
nop ; +1
|
||||
uartBitbang_SendByte_wait:
|
||||
Utils_WaitNanoSecs COM_BIT_LENGTH, 12, r22
|
||||
uartBitbang_SendByte_loopEnd:
|
||||
dec r21 ; +1
|
||||
brne uartBitbang_SendByte_loop ; +2, sum per loop: 11 cycles
|
||||
; send stopbit
|
||||
cbi COM_DATA_DDR, COM_DATA_PIN ; +2 set DATA as input, pullup R makes it ONE
|
||||
Utils_WaitNanoSecs COM_BIT_LENGTH, 0, r22 ; wait for one bit length
|
||||
cbi COM_DATA_OUTPUT, COM_DATA_PIN ; +2 disable internal pullup for DATA
|
||||
Utils_WaitNanoSecs COM_BIT_LENGTH, 1, r22 ; wait for one bit length
|
||||
sec
|
||||
ret
|
||||
|
||||
uartBitbang_SendByte_error:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine uartBitbangReceiveByte
|
||||
;
|
||||
@@ -204,50 +199,6 @@ uartBitbang_WaitForDataHigh:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine uartBitbang_WaitForAttnHigh
|
||||
;
|
||||
; Wait up to 1ms for data pin to become high
|
||||
; @return CFLAG set if okay, clear otherwise
|
||||
; @clobbers R17, R22
|
||||
|
||||
uartBitbang_WaitForAttnHigh:
|
||||
cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input
|
||||
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN
|
||||
UART_BB_M_WAIT_FOR_PIN_HIGH COM_ATTN_INPUT, COM_ATTN_PIN
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine uartBitbang_AcquireBus
|
||||
;
|
||||
; Reserve bus if free (otherwise return error)
|
||||
; Expects interrupts to be disabled.
|
||||
;
|
||||
; @return CFLAG set if okay (bus acquired), cleared on error
|
||||
; @clobbers: none
|
||||
|
||||
uartBitbang_AcquireBus:
|
||||
; check for ATTN line: busy?
|
||||
cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN as input
|
||||
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable pullup on ATTN
|
||||
nop ; needed to sample current input
|
||||
sbis COM_ATTN_INPUT, COM_ATTN_PIN ; ATTN low?
|
||||
rjmp uartBitbang_AcquireBus_busy ; jump if it is
|
||||
sbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN as output
|
||||
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; set ATTN low
|
||||
sec
|
||||
ret
|
||||
uartBitbang_AcquireBus_busy:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine uartBitbang_WaitForOneBitLength
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user