; *************************************************************************** ; copyright : (C) 2024 by Martin Preuss ; email : martin@libchipcard.de ; ; *************************************************************************** ; * This file is part of the project "AqHome". * ; * Please see toplevel file COPYING of that project for license details. * ; *************************************************************************** ; UART_BitBang_Init ; UART_BitBang_Fini ; UART_BitBang_Run ; UART_BitBang_SendPacket ; UART_BitBang_GetNextReceivedPacket ; UART_BitBang_ReleaseReceivedPacket ; *************************************************************************** ; data .dseg uartBitbangDataBegin: uartBitbangRecvBuffersUsed: .byte 1 uartBitbangRecvBuffersWritePos: .byte 1 uartBitbangRecvBuffersReadPos: .byte 1 uartBitbangRecvBuffers: .byte COM2_BUFFER_SIZE*UART_BITBANG_BUFFER_NUM uartBitbangDataEnd: ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine UART_BitBang_Init ; ; @return CFLAG set if okay, clear on error ; @clobbers R16, R17, X, Y UART_BitBang_Init: ; preset SRAM data area ldi xh, HIGH(uartBitbangDataBegin) ldi xl, LOW(uartBitbangDataBegin) clr r16 ldi r17, (uartBitbangDataEnd-uartBitbangDataBegin) rcall Utils_FillSram ; setup pins and interrupts cbi COM_DATA_DDR, COM_DATA_PIN ; set DATA port as input cbi COM_DATA_OUTPUT, COM_DATA_PIN ; disable internal pullup for TXD cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN sbi COM_IRQ_ADDR_ATTN, COM_IRQ_BIT_ATTN ; enable pin change irq for ATTN line in r16, GIMSK ; enable pin change irq PCIE0 or PCIE1 ori r16, (1<