n32: use com2w2 instead of com2w
This commit is contained in:
@@ -53,7 +53,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; firmware settings including list of modules used
|
||||
|
||||
@@ -63,7 +62,7 @@
|
||||
;#define MODULES_LED2
|
||||
;#define MODULES_LED3
|
||||
#define MODULES_NETWORK
|
||||
#define MODULES_COM2W
|
||||
#define MODULES_COM2W2
|
||||
;#define MODULES_TWI_MASTER
|
||||
;#define MODULES_LCD
|
||||
;#define LCD_MINIMAL_FONT
|
||||
@@ -76,7 +75,8 @@
|
||||
;#define MODULES_MOTION
|
||||
;#define MODULES_CCS811
|
||||
;#define MODULES_BRIGHTNESS
|
||||
#define MODULES_MULTIFAN
|
||||
|
||||
;#define MODULES_MULTIFAN
|
||||
|
||||
|
||||
#define APPS_NETWORK
|
||||
@@ -117,26 +117,25 @@
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Reset and interrupt vectors
|
||||
rjmp BOOTLOADER_ADDR ; 0x00: Reset vector Reset Vector
|
||||
reti ; 0x01: INT0 External Interrupt 0
|
||||
rjmp com2wPcintIsr ; 0x02: PCI Pin Change Interrupt
|
||||
; rjmp pinChangeIsr ; 0x02: PCI Pin Change Interrupt
|
||||
reti ; 0x03: OC1A Timer/Counter1 Compare Match 1A
|
||||
reti ; 0x04: OC1B Timer/Counter1 Compare Match 1B
|
||||
reti ; 0x05: OVF1 Timer/Counter1 Overflow
|
||||
reti ; 0x06: OVF0 Timer/Counter0 Overflow
|
||||
reti ; 0x07: USI_START USI Start
|
||||
reti ; 0x08: USI_OVF USI Overflow
|
||||
reti ; 0x09: ERDY EEPROM Ready
|
||||
reti ; 0x0a: ACI Analog Comparator
|
||||
reti ; 0x0b: ADCC ADC Conversion Complete
|
||||
reti ; 0x0c: WDT Watchdog Time-Out
|
||||
reti ; 0x0d: INT1 External Interrupt 1
|
||||
rjmp baseTimerIrqOC0A ; 0x0e: OC0A Timer/Counter0 Compare Match A
|
||||
reti ; 0x0f: OC0B Timer/Counter0 Compare Match B
|
||||
reti ; 0x10: ICP0 Interrupt Capture Event for Timer/Counter0
|
||||
reti ; 0x11: OC1D Timer/Counter1 Compare Match D
|
||||
reti ; 0x12: FAULT_PROT Timer/Counter1 Fault Protection
|
||||
rjmp BOOTLOADER_ADDR ; 1: Reset vector Reset Vector
|
||||
reti ; 2: INT0 External Interrupt 0
|
||||
reti ; 3: PCI Pin Change Interrupt
|
||||
reti ; 4: OC1A Timer/Counter1 Compare Match 1A
|
||||
reti ; 5: OC1B Timer/Counter1 Compare Match 1B
|
||||
reti ; 6: OVF1 Timer/Counter1 Overflow
|
||||
reti ; 7: OVF0 Timer/Counter0 Overflow
|
||||
reti ; 8: USI_START USI Start
|
||||
reti ; 9: USI_OVF USI Overflow
|
||||
reti ; 10: ERDY EEPROM Ready
|
||||
reti ; 11: ACI Analog Comparator
|
||||
reti ; 12: ADCC ADC Conversion Complete
|
||||
reti ; 13: WDT Watchdog Time-Out
|
||||
rjmp com2w2PcintIsr ; 14: INT1 External Interrupt 1
|
||||
rjmp baseTimerIrqOC0A ; 15: OC0A Timer/Counter0 Compare Match A
|
||||
reti ; 16: OC0B Timer/Counter0 Compare Match B
|
||||
reti ; 17: ICP0 Interrupt Capture Event for Timer/Counter0
|
||||
reti ; 18: OC1D Timer/Counter1 Compare Match D
|
||||
reti ; 19: FAULT_PROT Timer/Counter1 Fault Protection
|
||||
|
||||
devInfoBlock: ; 12 bytes
|
||||
devInfoManufacturer: .db 'A', 'Q', 'U', 'A'
|
||||
@@ -151,6 +150,10 @@ firmwareVersion: .db FIRMWARE_VARIANT_TEMP_WINDOW, FIRMWARE_VERSION_MAJOR
|
||||
; @routine firmwareStart @global
|
||||
|
||||
firmwareStart:
|
||||
ldi r16, 0xff
|
||||
sts sysPortAValue, r16
|
||||
sts sysPortBValue, r16
|
||||
|
||||
rjmp main
|
||||
; @end
|
||||
|
||||
@@ -202,6 +205,61 @@ onEveryLoop:
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine comSetupIrq
|
||||
;
|
||||
; setup IRQ for COM2W module
|
||||
|
||||
comIrqSetup:
|
||||
inr r16, MCUCR
|
||||
cbr r16, (1<<ISC01) | (1<<ISC00)
|
||||
ori r16, (1<<ISC01) | (0<<ISC00) ; falling edge triggers irq
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine comIrqEnable
|
||||
;
|
||||
; enable IRQ for COM2W module
|
||||
|
||||
comIrqEnable:
|
||||
push r16
|
||||
inr r16, GIMSK
|
||||
sbr r16, (1<<INT1) ; enable INT1 interrupt
|
||||
outr GIMSK, r16
|
||||
pop r16
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine comIrqEnable
|
||||
;
|
||||
; disable IRQ for COM2W module
|
||||
|
||||
comIrqDisable:
|
||||
push r16
|
||||
inr r16, GIMSK
|
||||
cbr r16, (1<<INT1) ; disable INT1 interrupt
|
||||
outr GIMSK, r16
|
||||
pop r16
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
.equ COM_SETUPIRQ_FN = comIrqSetup
|
||||
.equ COM_ENABLEIRQ_FN = comIrqEnable
|
||||
.equ COM_DISABLEIRQ_FN = comIrqDisable
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine pinChangeIsr @global @isr
|
||||
;
|
||||
@@ -210,14 +268,33 @@ onEveryLoop:
|
||||
; @clobbers: none
|
||||
|
||||
pinChangeIsr:
|
||||
rjmp DEBUG2
|
||||
|
||||
push r15
|
||||
in r15, SREG
|
||||
push r18
|
||||
push r19
|
||||
inr r18, PINA
|
||||
inr r19, PINB
|
||||
push r16
|
||||
push r17
|
||||
|
||||
push r16
|
||||
push r17
|
||||
inr r16, PINA
|
||||
inr r17, PINB
|
||||
push r18
|
||||
push r19
|
||||
lds r18, sysPortAValue
|
||||
lds r19, sysPortBValue
|
||||
sts sysPortAValue, r16
|
||||
sts sysPortBValue, r17
|
||||
eor r18, r16 ; r18: changes in bits=1
|
||||
com r18 ; r18: changes in bits=0
|
||||
or r18, r16 ; r18: 0=bit flipped to 0
|
||||
eor r19, r17 ; r19: changes in bits=1
|
||||
com r19 ; r19: changes in bits=0
|
||||
or r19, r17 ; r19: 0=bit flipped to 0
|
||||
|
||||
; check if CLK flipped to 0
|
||||
sbrc r18, COM_CLK_PIN
|
||||
rjmp pinChangeIsr_l1
|
||||
|
||||
; receive packet
|
||||
push r20
|
||||
push r21
|
||||
push r22
|
||||
@@ -227,11 +304,13 @@ pinChangeIsr:
|
||||
push xh
|
||||
push yl
|
||||
push yh
|
||||
push r18
|
||||
mov r16, r19 ; PINB
|
||||
bigcall MultiFan_CheckPort ; r17, r18, r24, r25, Y
|
||||
pop r16 ; pop PINA to r16
|
||||
bigcall COM2W_CheckPort ; (r16, r17, r18, r19, r20, r21, r22, r24, r25, X, Y)
|
||||
push r16 ; push PINA
|
||||
push r18 ; push CHANGEA
|
||||
ldi yl, LOW(com2w2_iface) ; recv next packet
|
||||
ldi yh, HIGH(com2w2_iface)
|
||||
rcall com2w2ReceiveNextPkg ; (R16, R17, R18, R19, R20, R21, R22, R24, R25, X)
|
||||
pop r18
|
||||
pop r16
|
||||
pop yh
|
||||
pop yl
|
||||
pop xh
|
||||
@@ -240,10 +319,12 @@ pinChangeIsr:
|
||||
pop r24
|
||||
pop r22
|
||||
pop r21
|
||||
pop r17
|
||||
pop r16
|
||||
pop r19
|
||||
pop r18
|
||||
pop r20
|
||||
pinChangeIsr_l1:
|
||||
pop r19
|
||||
pop r18
|
||||
pop r17
|
||||
pop r16
|
||||
out SREG, r15
|
||||
pop r15
|
||||
reti
|
||||
@@ -257,13 +338,14 @@ pinChangeIsr:
|
||||
.include "devices/all/hw_tn861.asm"
|
||||
.include "devices/all/includes.asm"
|
||||
.include "common/divide.asm"
|
||||
.include "common/debug.asm"
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; defines for network interface
|
||||
|
||||
.equ netInterfaceData = com2w_iface
|
||||
.equ netInterfaceData = com2w2_iface
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user