avr: new com2 and timer stack basically works again.

This commit is contained in:
Martin Preuss
2023-04-12 21:46:34 +02:00
parent 18d34450e7
commit b4c0ab273d
15 changed files with 461 additions and 171 deletions

View File

@@ -61,12 +61,12 @@
#define MODULES_TIMER
#define MODULES_COM
;#define MODULES_COM_WITH_ADDR_PROTO
#define MODULES_COM_WITH_ADDR_PROTO
#define MODULES_LED
#define MODULES_TWI_MASTER
#define MODULES_LCD
#define MODULES_SI7021
#define MODULES_STATS
.set MODULES_MASK = 0
@@ -88,7 +88,9 @@
#ifdef MODULES_SI7021
.set MODULES_MASK = MODULES_MASK | (1<<AQHOME_FW_MODULE_SI7021)
#endif
#ifdef MODULES_STATS
.set MODULES_MASK = MODULES_MASK | (1<<AQHOME_FW_MODULE_STATS)
#endif
; ---------------------------------------------------------------------------
@@ -227,11 +229,14 @@
.include "comproto.asm"
.include "comproto_addr.asm"
.include "comproto_recvstats.asm"
.include "comproto_sysstats.asm"
.include "comproto_memstats.asm"
.include "comproto_pong.asm"
;.include "comproto_values.asm"
.include "twimaster.asm"
.include "lcd.asm"
.include "si7021.asm"
.include "stats.asm"
@@ -242,12 +247,14 @@
sramTimerProtocolEverySec: .byte 2
sramTimerEnqueueComStats: .byte 2
sramTimerWriteStats: .byte 2
sramTimerEnqueueMemStats: .byte 2
sramTimerEnqueueSysStats: .byte 2
sramTimerEnqueueValues: .byte 2
sramTimerSI7021Measure: .byte 2
sramPeriodicalLcdMark: .byte 2
#ifdef MODULES_LCD
sramPeriodicalLcdMark: .byte 2
#endif
; ***************************************************************************
@@ -269,10 +276,15 @@ blinkPattern: .db 2, 50, 0xff, 0xff ; 1 short blink, 2s pause, restart
timerList:
; SRAM variable/counter routine flags secs (0=don't start or restart)
#ifdef MODULES_COM_WITH_ADDR_PROTO
; .dw cproAddresModeTimer, CPRO_Address_OnTimer, 0, 0 ; (no restart)
.dw cproAddresModeTimer, CPRO_Address_OnTimer, 0, 0 ; (no restart)
#endif
.dw sramTimerEnqueueComStats, enqueueComStats, TIMER_FLAGS_IF_ADDR, 10 ; every 30s
#ifdef MODULES_STATS
.dw statsSendTimer, Stats_Timer, TIMER_FLAGS_IF_ADDR, 30 ; every 30s
#endif
#ifdef MODULES_LCD
.dw sramPeriodicalLcdMark, periodicalLcdMark, 0, 1 ; every sec
.dw sramTimerWriteStats, writeStats, 0, 10
#endif
; .dw sramTimerSI7021Measure, SI7021_PeriodicMeasurement, 0, 30 ; every 30s
; .dw sramTimerEnqueueValues, Main_SendValueMsg, TIMER_FLAGS_IF_ADDR, 60 ; every 1m
.dw 0 ; end of list
@@ -306,34 +318,18 @@ onSystemStart:
ret
#ifdef MODULES_LCD
periodicalLcdMark:
rcall printTimerMark
ret
#endif
enqueueComStats:
writeStats:
sbi PINA, PORTA2 ; debug (toggle)
rcall printSendStats
ldi r16, 0xff ; send to everybody
ldi xl, LOW(com2SendBuffer)
ldi xh, HIGH(com2SendBuffer)
rcall CPRO_WriteComRecvStats
rjmp COM2_SendPacket
ret
;enqueueMemStats:
; ldi r16, 0xff ; send to everybody
; rcall CPRO_EnqueueMemStats
; ldi r16, 0xff ; send to everybody
; rjmp CPRO_EnqueueDevice
;enqueueSysStats:
; ldi r16, 0xff ; send to everybody
; rjmp CPRO_EnqueueSysStats
ret
@@ -369,7 +365,6 @@ onEvery100ms:
onPacketReceived:
; rcall CPRO_OnPacketReceived
sbi PINA, PORTA2 ; debug (toggle)
ret