113 lines
2.2 KiB
NASM
113 lines
2.2 KiB
NASM
; ***************************************************************************
|
|
; copyright : (C) 2025 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. *
|
|
; ***************************************************************************
|
|
|
|
#ifndef AVR_MODULES_COM2W_COM2WN_INIT_H
|
|
#define AVR_MODULES_COM2W_COM2WN_INIT_H
|
|
|
|
|
|
; WORK IN PROGRESS
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @macro mCOM2WN_INIT
|
|
;
|
|
; @param @0 interface number (beginning with 0)
|
|
|
|
.macro mCOM2WN_INIT
|
|
ldi yl, LOW(com2w@0_iface)
|
|
ldi yh, HIGH(com2w@0_iface)
|
|
rcall com2wnInit
|
|
ldi r16, COM_MASK_CLK@0
|
|
std Y+COM2W_IFACE_OFFS_PINMASK_CLK, r16
|
|
ldi r16, COM_MASK_DATA@0
|
|
std Y+COM2W_IFACE_OFFS_PINMASK_DATA, r16
|
|
ldi r16, COM_MASK_IRQ@0
|
|
std Y+COM2W_IFACE_OFFS_PINMASK_IRQ, r16
|
|
.endmacro
|
|
; @end
|
|
|
|
|
|
|
|
|
|
|
|
.cseg
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine COM2WN_Init
|
|
;
|
|
|
|
COM2WN_Init:
|
|
ldi r16, 0xff ; start with all clock lines hi
|
|
sts com2wnIoCurrentClockStates, r16
|
|
sts com2wnIoLastClockStates, r16
|
|
|
|
clr r16
|
|
sts com2wnIoFlags, r16
|
|
|
|
ldi yl, LOW(com2wnIoRingBuffer)
|
|
ldi yh, HIGH(com2wnIoRingBuffer)
|
|
ldi r16, COM2WN_IO_RINGBUFFER_SIZE
|
|
rcall RingBufferY_Init ; (R17)
|
|
|
|
.if COM_PORTS >0
|
|
mCOM2WN_INIT 0
|
|
.endif
|
|
.if COM_PORTS >1
|
|
mCOM2WN_INIT 1
|
|
.endif
|
|
|
|
.if COM_PORTS >2
|
|
mCOM2WN_INIT 2
|
|
.endif
|
|
.if COM_PORTS >3
|
|
mCOM2WN_INIT 3
|
|
.endif
|
|
|
|
.if COM_PORTS >4
|
|
mCOM2WN_INIT 4
|
|
.endif
|
|
.if COM_PORTS >5
|
|
mCOM2WN_INIT 5
|
|
.endif
|
|
|
|
.if COM_PORTS >6
|
|
mCOM2WN_INIT 6
|
|
.endif
|
|
.if COM_PORTS >7
|
|
mCOM2WN_INIT 7
|
|
.endif
|
|
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine com2wInit
|
|
;
|
|
|
|
com2wnInit:
|
|
rcall NET_Interface_Init ; (R16, R17, X)
|
|
ldi r16, COM2W_MODE_IDLE
|
|
rcall com2wSetMode ; (R17)
|
|
|
|
rcall com2wSetupLines
|
|
rcall com2wnSetupIrq
|
|
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
#endif ; AVR_MODULES_COM2W_COM2WN_INIT_H
|
|
|
|
|