; *************************************************************************** ; 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: .include "modules/com2/buffer.asm" ; *************************************************************************** ; data .dseg uartBitbangDataBegin: uartBitbangRecvBuffersUsed: .byte 1 uartBitbangMaxBuffersUsed: .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_TXD_DATA, COM_TXD_PIN ; disable internal pullup for TXD cbi COM_TXD_DDR, COM_TXD_PIN ; set TXD port as input cbi COM_RXD_DATA, COM_RXD_PIN ; disable internal pullup for RXD cbi COM_RXD_DDR, COM_RXD_PIN ; set RXD port as input cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN port as input 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<