avr: adapted to latest changes in COM2 module (using uartBitbang)
This commit is contained in:
@@ -104,9 +104,9 @@ main:
|
||||
; ***************************************************************************
|
||||
; includes
|
||||
|
||||
.include "modules/com2/lowlevel.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
.include "modules/com2/crc.asm"
|
||||
.include "modules/com2/packets.asm"
|
||||
.include "common/crc8.asm"
|
||||
.include "common/utils_wait_fixed.asm"
|
||||
.include "common/utils_copy_from_flash.asm"
|
||||
|
||||
@@ -50,15 +50,19 @@
|
||||
.equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400
|
||||
.equ COM_HALFBIT_LENGTH = 26000 ; see https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter
|
||||
|
||||
.equ COM_DDR_DATA = DDRA
|
||||
.equ COM_PORT_DATA = PORTA
|
||||
.equ COM_PIN_DATA = PINA
|
||||
.equ COM_PINNUM_DATA = PORTA1
|
||||
.equ COM_TXD_DDR = DDRA
|
||||
.equ COM_TXD_DATA = PORTA
|
||||
.equ COM_TXD_PIN = PORTA1
|
||||
|
||||
.equ COM_DDR_ATTN = DDRA
|
||||
.equ COM_PORT_ATTN = PORTA
|
||||
.equ COM_PIN_ATTN = PINA
|
||||
.equ COM_PINNUM_ATTN = PORTA7
|
||||
.equ COM_RXD_DDR = DDRA
|
||||
.equ COM_RXD_INPUT = PINA
|
||||
.equ COM_RXD_OUTPUT = PORTA
|
||||
.equ COM_RXD_PIN = PORTA1
|
||||
|
||||
.equ COM_ATTN_DDR = DDRA
|
||||
.equ COM_ATTN_INPUT = PINA
|
||||
.equ COM_ATTN_OUTPUT = PORTA
|
||||
.equ COM_ATTN_PIN = PORTA7
|
||||
|
||||
.equ COM_IRQ_ADDR_ATTN = PCMSK0
|
||||
.equ COM_IRQ_BIT_ATTN = 7 ; bit 7 in PCMSK0
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
; rjmp main ; Reset vector
|
||||
rjmp BOOTLOADER_ADDR ; Reset vector ; use this for flashed system
|
||||
reti ; EXT_INT0
|
||||
rjmp com2IsrPcint0 ; PCI0
|
||||
rjmp uartBitbangIsrPcint0 ; PCI0
|
||||
reti ; PCI1
|
||||
reti ; WATCHDOG
|
||||
reti ; ICP1
|
||||
@@ -143,6 +143,11 @@ firmwareStart: rjmp main
|
||||
#ifdef MODULES_COM
|
||||
.include "modules/com2/defs.asm"
|
||||
.include "modules/com2/main.asm"
|
||||
.include "modules/com2/buffer.asm"
|
||||
.include "modules/uart_bitbang/defs.asm"
|
||||
.include "modules/uart_bitbang/main.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
#ifdef MODULES_COM_WITH_ADDR_PROTO
|
||||
.include "modules/comproto/defs.asm"
|
||||
.include "modules/comproto/main.asm"
|
||||
|
||||
@@ -104,9 +104,9 @@ main:
|
||||
; ***************************************************************************
|
||||
; includes
|
||||
|
||||
.include "modules/com2/lowlevel.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
.include "modules/com2/crc.asm"
|
||||
.include "modules/com2/packets.asm"
|
||||
.include "common/crc8.asm"
|
||||
.include "common/utils_wait_fixed.asm"
|
||||
.include "common/utils_copy_from_flash.asm"
|
||||
|
||||
@@ -50,15 +50,19 @@
|
||||
.equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400
|
||||
.equ COM_HALFBIT_LENGTH = 26000 ; see https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter
|
||||
|
||||
.equ COM_DDR_DATA = DDRA
|
||||
.equ COM_PORT_DATA = PORTA
|
||||
.equ COM_PIN_DATA = PINA
|
||||
.equ COM_PINNUM_DATA = PORTA1
|
||||
.equ COM_TXD_DDR = DDRA
|
||||
.equ COM_TXD_DATA = PORTA
|
||||
.equ COM_TXD_PIN = PORTA1
|
||||
|
||||
.equ COM_DDR_ATTN = DDRA
|
||||
.equ COM_PORT_ATTN = PORTA
|
||||
.equ COM_PIN_ATTN = PINA
|
||||
.equ COM_PINNUM_ATTN = PORTA7
|
||||
.equ COM_RXD_DDR = DDRA
|
||||
.equ COM_RXD_INPUT = PINA
|
||||
.equ COM_RXD_OUTPUT = PORTA
|
||||
.equ COM_RXD_PIN = PORTA1
|
||||
|
||||
.equ COM_ATTN_DDR = DDRA
|
||||
.equ COM_ATTN_INPUT = PINA
|
||||
.equ COM_ATTN_OUTPUT = PORTA
|
||||
.equ COM_ATTN_PIN = PORTA7
|
||||
|
||||
.equ COM_IRQ_ADDR_ATTN = PCMSK0
|
||||
.equ COM_IRQ_BIT_ATTN = PCINT7 ; bit 7 in PCMSK0
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
; rjmp main ; Reset vector
|
||||
rjmp BOOTLOADER_ADDR ; Reset vector ; use this for flashed system
|
||||
reti ; EXT_INT0
|
||||
rjmp com2IsrPcint0 ; PCI0
|
||||
rjmp uartBitbangIsrPcint0 ; PCI0
|
||||
reti ; PCI1
|
||||
reti ; WATCHDOG
|
||||
reti ; ICP1
|
||||
@@ -143,6 +143,11 @@ firmwareStart: rjmp main
|
||||
#ifdef MODULES_COM
|
||||
.include "modules/com2/defs.asm"
|
||||
.include "modules/com2/main.asm"
|
||||
.include "modules/com2/buffer.asm"
|
||||
.include "modules/uart_bitbang/defs.asm"
|
||||
.include "modules/uart_bitbang/main.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
#ifdef MODULES_COM_WITH_ADDR_PROTO
|
||||
.include "modules/comproto/defs.asm"
|
||||
.include "modules/comproto/main.asm"
|
||||
|
||||
@@ -104,9 +104,9 @@ main:
|
||||
; ***************************************************************************
|
||||
; includes
|
||||
|
||||
.include "modules/com2/lowlevel.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
.include "modules/com2/crc.asm"
|
||||
.include "modules/com2/packets.asm"
|
||||
.include "common/crc8.asm"
|
||||
.include "common/utils_wait_fixed.asm"
|
||||
.include "common/utils_copy_from_flash.asm"
|
||||
|
||||
@@ -48,15 +48,20 @@
|
||||
|
||||
.equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400
|
||||
.equ COM_HALFBIT_LENGTH = 26000 ; see https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter
|
||||
.equ COM_DDR_DATA = DDRA
|
||||
.equ COM_PORT_DATA = PORTA
|
||||
.equ COM_PIN_DATA = PINA
|
||||
.equ COM_PINNUM_DATA = PORTA1
|
||||
|
||||
.equ COM_DDR_ATTN = DDRA
|
||||
.equ COM_PORT_ATTN = PORTA
|
||||
.equ COM_PIN_ATTN = PINA
|
||||
.equ COM_PINNUM_ATTN = PORTA7
|
||||
.equ COM_TXD_DDR = DDRA
|
||||
.equ COM_TXD_DATA = PORTA
|
||||
.equ COM_TXD_PIN = PORTA1
|
||||
|
||||
.equ COM_RXD_DDR = DDRA
|
||||
.equ COM_RXD_INPUT = PINA
|
||||
.equ COM_RXD_OUTPUT = PORTA
|
||||
.equ COM_RXD_PIN = PORTA1
|
||||
|
||||
.equ COM_ATTN_DDR = DDRA
|
||||
.equ COM_ATTN_INPUT = PINA
|
||||
.equ COM_ATTN_OUTPUT = PORTA
|
||||
.equ COM_ATTN_PIN = PORTA7
|
||||
|
||||
.equ COM_IRQ_ADDR_ATTN = PCMSK0
|
||||
.equ COM_IRQ_BIT_ATTN = PCINT7 ; bit 7 in PCMSK0
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
; rjmp main ; Reset vector
|
||||
rjmp BOOTLOADER_ADDR ; Reset vector ; use this for flashed system
|
||||
reti ; EXT_INT0
|
||||
rjmp com2IsrPcint0 ; PCI0
|
||||
rjmp uartBitbangIsrPcint0 ; PCI0
|
||||
reti ; PCI1
|
||||
reti ; WATCHDOG
|
||||
reti ; ICP1
|
||||
@@ -148,6 +148,11 @@ firmwareStart: rjmp main
|
||||
#ifdef MODULES_COM
|
||||
.include "modules/com2/defs.asm"
|
||||
.include "modules/com2/main.asm"
|
||||
.include "modules/com2/buffer.asm"
|
||||
.include "modules/uart_bitbang/defs.asm"
|
||||
.include "modules/uart_bitbang/main.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
#ifdef MODULES_COM_WITH_ADDR_PROTO
|
||||
.include "modules/comproto/defs.asm"
|
||||
.include "modules/comproto/main.asm"
|
||||
|
||||
@@ -105,9 +105,9 @@ main:
|
||||
; ***************************************************************************
|
||||
; includes
|
||||
|
||||
.include "modules/com2/lowlevel.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
.include "modules/com2/crc.asm"
|
||||
.include "modules/com2/packets.asm"
|
||||
.include "common/crc8.asm"
|
||||
.include "common/utils_wait_fixed.asm"
|
||||
.include "common/utils_copy_from_flash.asm"
|
||||
|
||||
@@ -48,15 +48,20 @@
|
||||
.equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400
|
||||
.equ COM_HALFBIT_LENGTH = 26000 ; see https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter
|
||||
|
||||
.equ COM_DDR_DATA = DDRA
|
||||
.equ COM_PORT_DATA = PORTA
|
||||
.equ COM_PIN_DATA = PINA
|
||||
.equ COM_PINNUM_DATA = PORTA0
|
||||
.equ COM_TXD_DDR = DDRA
|
||||
.equ COM_TXD_DATA = PORTA
|
||||
.equ COM_TXD_PIN = PORTA0
|
||||
|
||||
.equ COM_RXD_DDR = DDRA
|
||||
.equ COM_RXD_INPUT = PINA
|
||||
.equ COM_RXD_OUTPUT = PORTA
|
||||
.equ COM_RXD_PIN = PORTA0
|
||||
|
||||
.equ COM_ATTN_DDR = DDRA
|
||||
.equ COM_ATTN_INPUT = PINA
|
||||
.equ COM_ATTN_OUTPUT = PORTA
|
||||
.equ COM_ATTN_PIN = PORTA1
|
||||
|
||||
.equ COM_DDR_ATTN = DDRA
|
||||
.equ COM_PORT_ATTN = PORTA
|
||||
.equ COM_PIN_ATTN = PINA
|
||||
.equ COM_PINNUM_ATTN = PORTA1
|
||||
|
||||
.equ COM_IRQ_ADDR_ATTN = PCMSK0
|
||||
.equ COM_IRQ_BIT_ATTN = 1 ; bit 1 in PCMSK0
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
; rjmp main ; Reset vector
|
||||
rjmp BOOTLOADER_ADDR ; Reset vector ; use this for flashed system
|
||||
reti ; EXT_INT0
|
||||
rjmp com2IsrPcint0 ; PCI0
|
||||
rjmp uartBitbangIsrPcint0 ; PCI0
|
||||
reti ; PCI1
|
||||
reti ; WATCHDOG
|
||||
reti ; ICP1
|
||||
@@ -137,6 +137,11 @@ firmwareStart: rjmp main
|
||||
#ifdef MODULES_COM
|
||||
.include "modules/com2/defs.asm"
|
||||
.include "modules/com2/main.asm"
|
||||
.include "modules/com2/buffer.asm"
|
||||
.include "modules/uart_bitbang/defs.asm"
|
||||
.include "modules/uart_bitbang/main.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
#ifdef MODULES_COM_WITH_ADDR_PROTO
|
||||
.include "modules/comproto/defs.asm"
|
||||
.include "modules/comproto/main.asm"
|
||||
|
||||
@@ -101,9 +101,9 @@ main:
|
||||
; ***************************************************************************
|
||||
; includes
|
||||
|
||||
.include "modules/com2/lowlevel.asm"
|
||||
.include "modules/uart_bitbang/bytelevel.asm"
|
||||
.include "modules/uart_bitbang/packetlevel.asm"
|
||||
.include "modules/com2/crc.asm"
|
||||
.include "modules/com2/packets.asm"
|
||||
.include "common/crc8.asm"
|
||||
.include "common/utils_wait_fixed.asm"
|
||||
.include "common/utils_copy_from_flash.asm"
|
||||
|
||||
@@ -45,16 +45,6 @@
|
||||
.equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400
|
||||
.equ COM_HALFBIT_LENGTH = 26000 ; see https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter
|
||||
|
||||
.equ COM_DDR_DATA = DDRB
|
||||
.equ COM_PORT_DATA = PORTB
|
||||
.equ COM_PIN_DATA = PINB
|
||||
.equ COM_PINNUM_DATA = PORTB1
|
||||
|
||||
.equ COM_DDR_ATTN = DDRB
|
||||
.equ COM_PORT_ATTN = PORTB
|
||||
.equ COM_PIN_ATTN = PINB
|
||||
.equ COM_PINNUM_ATTN = PORTB2
|
||||
|
||||
.equ COM_IRQ_ADDR_ATTN = PCMSK
|
||||
.equ COM_IRQ_BIT_ATTN = PCINT2 ; bit 2 in PCMSK0 (PCINT2)
|
||||
.equ COM_IRQ_GIFR_ATTN = PCIF
|
||||
|
||||
@@ -159,6 +159,12 @@ firmwareStart: rjmp main
|
||||
.include "modules/sk6812/main.asm"
|
||||
#endif
|
||||
|
||||
; test
|
||||
#include "modules/uart_irq/defs.asm"
|
||||
#include "modules/uart_irq/iface.asm"
|
||||
#include "modules/uart_irq/iface1.asm"
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; data in SRAM
|
||||
|
||||
@@ -72,12 +72,11 @@ bootLoader:
|
||||
; rcall watchdogOff ; turn off watchdog timer (sometimes it stays on after reboot)
|
||||
|
||||
; setup pins and interrupts
|
||||
cbi COM_PORT_DATA, COM_PINNUM_DATA ; disable internal pullup for DATA
|
||||
cbi COM_DDR_DATA, COM_PINNUM_DATA ; set DATA port as input
|
||||
|
||||
cbi COM_PORT_ATTN, COM_PINNUM_ATTN ; disable internal pullup for ATTN
|
||||
cbi COM_DDR_ATTN, COM_PINNUM_ATTN ; set ATTN port as input
|
||||
cbi COM_TXD_DATA, COM_TXD_PIN ; disable internal pullup for DATA
|
||||
cbi COM_TXD_DDR, COM_TXD_PIN ; set DATA 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 LED_DDR, LED_PINNUM ; out
|
||||
cbi LED_PORT, LED_PINNUM ; on
|
||||
|
||||
@@ -80,7 +80,7 @@ flashWaitForSpecificMessage_isLow: ; is low, receive message, check for
|
||||
ldi r17, FLASH_RECVBUFFER_MAXLEN-3
|
||||
ldi xl, LOW(flashRecvBuffer)
|
||||
ldi xh, HIGH(flashRecvBuffer)
|
||||
rcall com2ReceivePacketRaw
|
||||
rcall uartBitbang_ReceivePacketIntoBuffer
|
||||
pop r17
|
||||
brcc flashWaitForSpecificMessage_waitAttnHigh
|
||||
ldi xl, LOW(flashRecvBuffer)
|
||||
@@ -125,9 +125,9 @@ flashWaitForAttnState1ms:
|
||||
ldi r24, 100
|
||||
flashWaitForAttnState1ms_loop:
|
||||
push r17
|
||||
in r17, COM_PIN_ATTN
|
||||
in r17, COM_ATTN_INPUT
|
||||
eor r17, r16
|
||||
andi r17, (1<<COM_PINNUM_ATTN)
|
||||
andi r17, (1<<COM_ATTN_PIN)
|
||||
pop r17
|
||||
breq flashWaitForAttnState1ms_stateReached
|
||||
rcall Utils_WaitFor10MicroSecs ; wait for 10us (R22)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
flashSendPacketUntilSuccess:
|
||||
push xl
|
||||
push xh
|
||||
rcall COM2_SendPacketWithAttn ; (R16, R17, R21, R22, X)
|
||||
rcall uartBitbang_SendPacket ; (R16, R17, R21, R22, X)
|
||||
pop xh
|
||||
pop xl
|
||||
brcc flashSendPacket_error
|
||||
@@ -50,7 +50,7 @@ flashSendPacket_error:
|
||||
; REGS: (R16, R17, R18, R22, R24, R25)
|
||||
|
||||
flashWaitForAttnHigh:
|
||||
rcall com2WaitForAttnHigh ; (r17, r22)
|
||||
rcall uartBitbang_WaitForAttnHigh ; (r17, r22)
|
||||
brcc flashWaitForAttnHigh_stillLow
|
||||
ret
|
||||
flashWaitForAttnHigh_stillLow:
|
||||
|
||||
61
avr/modules/motion/main.asm
Normal file
61
avr/modules/motion/main.asm
Normal file
@@ -0,0 +1,61 @@
|
||||
; ***************************************************************************
|
||||
; 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. *
|
||||
; ***************************************************************************
|
||||
|
||||
; - check motion
|
||||
; - motion detected?
|
||||
; - yes:
|
||||
; - set motion HW bit
|
||||
; - reset motion timeout counter
|
||||
; - SW bit set?
|
||||
; - no:
|
||||
; - report motion
|
||||
; - reset motionReportTimeout (use lower value to repeat motion message once)
|
||||
; - set motion SW bit
|
||||
; - yes
|
||||
; - dec motionReportTimeout
|
||||
; - 0?
|
||||
; - report current SW state
|
||||
; - reset motionReportTimeout (use higher value since motion should already be known)
|
||||
; - no:
|
||||
; - clear motion hw bit
|
||||
; - dec motionTimeout
|
||||
; - 0?
|
||||
; - yes:
|
||||
; - clear SW motion bit
|
||||
; - report no motion
|
||||
|
||||
|
||||
|
||||
.equ MOTION_STATE_MOTION_HW_BIT = 0
|
||||
.equ MOTION_STATE_MOTION_SW_BIT = 1
|
||||
|
||||
|
||||
|
||||
.dseg
|
||||
|
||||
motionDataBegin:
|
||||
motionState: .byte 1
|
||||
motionTimeout: .byte 1
|
||||
motionReportTimeout: .byte 1
|
||||
motionDataEnd:
|
||||
|
||||
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
Motion_Init:
|
||||
Motion_Fini:
|
||||
Motion_Run:
|
||||
Motion_Every100ms:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -184,5 +184,19 @@ uartBitbang_WaitForDataHigh:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine uartBitbang_WaitForAttnHigh
|
||||
;
|
||||
; Wait up to 1ms for data pin to become high
|
||||
; @return CFLAG set if okay, clear otherwise
|
||||
; @clobbers R17, R22
|
||||
|
||||
uartBitbang_WaitForAttnHigh:
|
||||
UART_BB_M_WAIT_FOR_PIN_HIGH COM_ATTN_INPUT, COM_ATTN_PIN
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user