com2w: added support for pin change interrupts on atmega644P
This commit is contained in:
@@ -70,6 +70,20 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.macro M_COM2WSETUPPCICR
|
||||||
|
inr r16, COM_IRQ_ADDR_CLK ; enable pin change irq for CLK line
|
||||||
|
ori r16, (1<<COM_IRQ_BIT_CLK)
|
||||||
|
outr COM_IRQ_ADDR_CLK, r16
|
||||||
|
|
||||||
|
inr r16, COM_IRQ_ICR_ADDR ; enable pin change irq in PCICR
|
||||||
|
ori r16, (1<<COM_IRQ_ICR_BIT)
|
||||||
|
outr COM_IRQ_ICR_ADDR, R16
|
||||||
|
ldi r16, (1<<COM_IRQ_IFR_BIT) ; clear pending irq by writing 1 to CLK bit
|
||||||
|
out COM_IRQ_IFR_ADDR, r16
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.dseg
|
.dseg
|
||||||
@@ -116,14 +130,18 @@ COM2W_Init:
|
|||||||
rcall com2wEnableClkIrq
|
rcall com2wEnableClkIrq
|
||||||
|
|
||||||
; enable IRQ
|
; enable IRQ
|
||||||
.ifdef INT0
|
.ifdef COM_IRQ_ICR_ADDR
|
||||||
.if COM_IRQ_BIT_CLK == INT0
|
M_COM2WSETUPPCICR
|
||||||
M_COM2WSETUPINT0
|
.else
|
||||||
|
.ifdef INT0
|
||||||
|
.if COM_IRQ_BIT_CLK == INT0
|
||||||
|
M_COM2WSETUPINT0
|
||||||
|
.else
|
||||||
|
M_COM2WSETUPPCI
|
||||||
|
.endif
|
||||||
.else
|
.else
|
||||||
M_COM2WSETUPPCI
|
M_COM2WSETUPPCI
|
||||||
.endif
|
.endif
|
||||||
.else
|
|
||||||
M_COM2WSETUPPCI
|
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user