use a clock and a data line to introduce synchronisation into the protocol to be able to work with the wide range of mcu speeds (no need for exact timing, no need for exact calibration).
292 lines
4.4 KiB
NASM
292 lines
4.4 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. *
|
|
; ***************************************************************************
|
|
|
|
|
|
; ***************************************************************************
|
|
; code
|
|
|
|
|
|
.cseg
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine initModules
|
|
;
|
|
; Call init functions of the used modules. Add your routine calls here.
|
|
|
|
initModules:
|
|
bigcall BaseTimer_Init ; unconditionally call this
|
|
|
|
#ifdef MODULES_HEAP
|
|
bigcall Heap_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_CLOCK
|
|
bigcall Clock_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_TIMER
|
|
bigcall Timer_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_XRAM
|
|
bigcall XRAM_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_LED
|
|
ldi zl, LOW(ledA3Flash)
|
|
ldi zh, HIGH(ledA3Flash)
|
|
ldi yl, LOW(ledA3Sram)
|
|
ldi yh, HIGH(ledA3Sram)
|
|
bigcall Led_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_LED_SIMPLE
|
|
bigcall LedSimple_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_COM
|
|
bigcall Com2_Init ; init COM module
|
|
bigcall CPRO_Init ; init COM protocol module
|
|
#endif
|
|
|
|
#ifdef MODULES_NETWORK
|
|
bigcall NET_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_UART_BITBANG
|
|
bigcall UART_BitBang_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_UART_HW
|
|
bigcall NET_Uart_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_TTYONUART1
|
|
bigcall TtyOnUart1_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_COMONUART0
|
|
bigcall ComOnUart0_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_COMONUART1
|
|
bigcall ComOnUart1_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_COM2W
|
|
bigcall COM2W_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_COM2W0
|
|
bigcall COM2W0_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_COM2W1
|
|
bigcall COM2W1_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_MOTION
|
|
bigcall Motion_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_TWI_MASTER
|
|
bigcall TWI_Master_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_OWI_MASTER
|
|
bigcall OwiMaster_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_SPI_HW
|
|
bigcall SPIHW_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_LCD
|
|
bigcall LCD_Init
|
|
#endif
|
|
#ifdef MODULES_BMP280
|
|
bigcall BMP280_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_SI7021
|
|
bigcall SI7021_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_SGP30
|
|
bigcall SGP30_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_SGP40
|
|
bigcall SGP40_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_DS18B20
|
|
bigcall Ds18b20_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_STATS
|
|
bigcall Stats_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_CNY70
|
|
bigcall CNY70_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_REED
|
|
bigcall REED_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_SK6812
|
|
bigcall SK6812_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_MOTION_LIGHT
|
|
bigcall MotionLight_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_TCRT1000
|
|
bigcall TCRT1K_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_CCS811
|
|
bigcall CCS811_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_ILI9341
|
|
bigcall ILI9341_Init
|
|
#endif
|
|
|
|
#ifdef MODULES_BRIGHTNESS
|
|
bigcall Brightness_Init
|
|
#endif
|
|
|
|
|
|
; done
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; runModules
|
|
;
|
|
; Call run functions of the used modules. Add your routine calls here.
|
|
;
|
|
; IN:
|
|
; - nothing
|
|
; OUT:
|
|
; - nothing
|
|
; USED: depending on called routines
|
|
|
|
runModules:
|
|
clr r16
|
|
|
|
push r16
|
|
bigcall BaseTimer_Run
|
|
pop r16
|
|
|
|
#ifdef MODULES_TTYONUART1
|
|
push r16
|
|
bigcall TtyOnUart1_Run
|
|
pop r16
|
|
#endif
|
|
|
|
push r16
|
|
rcall runComModules
|
|
pop r16
|
|
sbci r16, 0
|
|
|
|
; add more modules here
|
|
|
|
; check for repeat request
|
|
tst r16
|
|
clc
|
|
breq runModules_end
|
|
sec
|
|
runModules_end:
|
|
ret
|
|
|
|
|
|
; run until every module idle
|
|
|
|
runComModules:
|
|
clr r17
|
|
runComModules_loop:
|
|
push r17
|
|
clr r16
|
|
#ifdef MODULES_COMONUART0
|
|
push r16
|
|
bigcall ComOnUart0_Run
|
|
pop r16
|
|
sbci r16, 0
|
|
#endif
|
|
|
|
#ifdef MODULES_COMONUART1
|
|
push r16
|
|
bigcall ComOnUart1_Run
|
|
pop r16
|
|
sbci r16, 0
|
|
#endif
|
|
|
|
#ifdef MODULES_COM2W0
|
|
push r16
|
|
bigcall COM2W0_Run
|
|
pop r16
|
|
sbci r16, 0
|
|
#endif
|
|
|
|
#ifdef MODULES_COM2W1
|
|
push r16
|
|
bigcall COM2W1_Run
|
|
pop r16
|
|
sbci r16, 0
|
|
#endif
|
|
|
|
pop r17
|
|
; check for repeat request
|
|
tst r16
|
|
clc
|
|
breq runComModules_loopEnd
|
|
inc r17
|
|
cpi r17, 2
|
|
brne runComModules_loop
|
|
runComModules_loopEnd:
|
|
tst r17
|
|
clc
|
|
breq runComModules_end
|
|
sec
|
|
runComModules_end:
|
|
ret
|
|
|
|
|
|
|
|
|
|
mainModulesOnPacketReceived:
|
|
|
|
#ifdef MODULES_SK6812
|
|
bigcall SK6812_OnPacketReceived
|
|
#endif
|
|
|
|
#ifdef MODULES_LED_SIMPLE
|
|
#ifdef MODULES_NETWORK
|
|
bigcall LedSimple_OnPacketReceived
|
|
#endif
|
|
#endif
|
|
|
|
|
|
; add more here
|
|
|
|
ret
|
|
; @end
|
|
|
|
|
|
|