Timer Handler: Robert Dubois Spring 2017

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 7

Timer Handler

Robert Dubois
Spring 2017
Main Code: Timer Initialization
LDR R4, =(T0TCR) ;Timer 0 control register
MOV R5, #1
STR R5, [R4]
LDR R4, =(T0MR0) ;Timer 0 match register 0
LDR R5, =0x7D0
STR R5, [R4]
LDR R4, =(T0MCR) ;Timer 0 match control register
LDR R5, =0x00000001
STR R5, [R4]
LDR R4, =(T0PR) ;Timer 0 prescale register
LDR R5, =0x2EDF
STR R5, [R4]
Main Code: Interrupt Initialization
LDR r4, =(VICVectAddr14) ;Set External Interrupt 0 address
LDR r5, =(EINT0_Handler)
STRr5, [r4]
LDR r4, =(VICVectCntl14);Set External Interrupt 0 priority
MOV r5, #1
STRr5, [r4]
LDR r4, =(VICVectAddr4) ;Set Timer 0 address
LDR r5, =(T0_Handler)
STRr5, [r4]
LDR r4, =(VICVectCntl4) ;Set Timer 0 priority
MOV r5, #0
STRr5, [r4]
LDR r4, =(VICIntEnable) ; VIC interrupt enable register
LDR r5, [r4]
MOV SIG_EN, #EINT0_INTMASK
ORR r5, r5, SIG_EN ; Enable EINT0
MOV SIG_EN, #T0_INTMASK
ORR r5, r5, SIG_EN ;Enable T0
STRr5, [r4]
Timer Handler: Initialization
T0_Handler
SUBS LR, LR, #4
STMIA SP!, {R4-R12, LR}
LDR r4, =(T0TCR)
MOV r5, #2 ;Stop and reset count
STR r5, [r4]
LDR r4, =(VICVectAddr)
MOV r5, #0 ;Reset VIC address
STR r5, [r4]
LDR r4, =(T0IR)
LDR r5, [r4] ;Reset interrupt flag
LDR r6, =0x1
ORR r5, r5, r6
STR r5, [r4]
LDR R6, =0x7FFFFFFF
MOV R7, #0
LDR R4, =(LED_CURRVAL)
Timer Handler: Lowest Time Loop
lowloop
ADD R7, #1
LDR R5, [R4]
CMP R5, R6
MOVLT R6, R5
CMP R7, #8
ADD R4, R4, #4
BNE lowloop
MOV R7, #0
LDR R4, =(LED_CURRVAL)
LDR R8, =(LED_POSNEG)
LDR R12, =0x7FFFFFFF
Timer Handler: Time Correction Loop
fixtimeloop LDREQ R11, =(LED_NEGPULSE)
LDR R5, [R4] LDRNE R11, =(LED_POSPULSE)
SUBS R5, R5, R6 MOV R9, #4
MLA R11, R7, R9, R11
BGT notcrit
LDR R5, [R11]
LDR R10, [R8] MOVEQ R10, #0
LSR R10, R7 MOVNE R10, #1
LDR R9, =0xFFFFFFFE BL LED_Handler
BIC R10, R9 notcrit
CMP R10, #1 STR R5, [R4]
LDR R10, [R8] CMP R5, R12
MOVLT R12, R5
MOV R9, #1
ADD R7, #1
BICEQ R10, R9, LSL R7
ADD R4, R4, #4
ORRNE R10, R9, LSL R7 CMP R7, #8
STR R10, [R8] BNE fixtimeloop
Timer Handler: End
LDR r4, =(T0TCR)
MOV r5, #1
STR r5, [r4]
LDR r4, =(T0PC)
MOV r5, #180
STR r5, [r4]
LDR R4, =(T0TC)
RSB R12, R12, #0x7D0
STR R12, [R4]
LDMDB SP!, {R4-R12, PC}^
END

You might also like