6
area ponn, CODE, READONLY IO1DIR EQU 0XE0028018 IO1SET EQU 0XE0028014 IO1CLR EQU 0XE002801C IO1PIN EQU 0XE0028010 T0CTCR EQU 0XE0004070 T0PR EQU 0XE000400C T0TCR EQU 0XE0004004 T0TC EQU 0XE0004008 PINSEL0 EQU 0XE002C000 EXTMODE EQU 0XE01FC148 EXTPOLAR EQU 0XE01FC14C VICIntEnable EQU 0XFFFFF010 VICIntSelect EQU 0XFFFFF00C VICVectCntl2 EQU 0XFFFFF208 VICVectAddr2 EQU 0XFFFFF108 VICVectAddr EQU 0XFFFFF030 EXTINT EQU 0XE01FC140 MOV R11, #0X01 MOV R12, #0X09 LDR R2, =IO1DIR MOV R1, #0XFFFFFFFF STR R1,[R2]

WINSEM2015 16 CP2858 03 Mar 2016 RM01 Duty Ratio Control of Chopper Using Interrupt

  • Upload
    aakash

  • View
    215

  • Download
    2

Embed Size (px)

DESCRIPTION

ARM

Citation preview

Page 1: WINSEM2015 16 CP2858 03 Mar 2016 RM01 Duty Ratio Control of Chopper Using Interrupt

area ponn, CODE, READONLY

IO1DIR EQU 0XE0028018

IO1SET EQU 0XE0028014

IO1CLR EQU 0XE002801C

IO1PIN EQU 0XE0028010

T0CTCR EQU 0XE0004070

T0PR EQU 0XE000400C

T0TCR EQU 0XE0004004

T0TC EQU 0XE0004008

PINSEL0 EQU 0XE002C000

EXTMODE EQU 0XE01FC148

EXTPOLAR EQU 0XE01FC14C

VICIntEnable EQU 0XFFFFF010

VICIntSelect EQU 0XFFFFF00C

VICVectCntl2 EQU 0XFFFFF208

VICVectAddr2 EQU 0XFFFFF108

VICVectAddr EQU 0XFFFFF030

EXTINT EQU 0XE01FC140

MOV R11, #0X01

MOV R12, #0X09

LDR R2, =IO1DIR

MOV R1, #0XFFFFFFFF

STR R1,[R2]

LDR R2, =PINSEL0

MOV R1, #0X80000000

Page 2: WINSEM2015 16 CP2858 03 Mar 2016 RM01 Duty Ratio Control of Chopper Using Interrupt

STR R1,[R2]

LDR R2, =EXTMODE

MOV R1, #0X0

STR R1,[R2]

LDR R2, =EXTPOLAR

MOV R1, #0X0

STR R1,[R2]

LDR R2, =VICIntEnable

MOV R1, #0X00010000

STR R1,[R2]

LDR R2, =VICIntSelect

MOV R1, #0X00000000

STR R1,[R2]

LDR R2, =VICVectCntl2

MOV R1, #0X30

STR R1,[R2]

LDR R2, =VICVectAddr2

LDR R1, =IRQ_Handler

STR R1,[R2]

MAIN

LDR R9, =IO1SET

LDR R10, =IO1CLR

ldr r7, =0xffffffff

STR R7,[R9]

BL DELAY

ldr r8, =0xffffffff

STR R8,[R10]

Page 3: WINSEM2015 16 CP2858 03 Mar 2016 RM01 Duty Ratio Control of Chopper Using Interrupt

BL DELAY1

B MAIN

DELAY

MOV R6,LR

LDR R2, =T0CTCR

MOV R1, #0X0

STR R1,[R2]

LDR R2, =T0PR

ldr R1, =0X0BB7 ; the clock of timer gets pulses with freguency as fclk = fosc/4, since the fosc is 12 MHz then fclk is 3 MHz

; the timing is calculate by the formula t=PR+1/fclk, hence to get 1ms t = 2999+1/3000000, 2999D = 0BB7H

STR R1,[R2]

LDR R2, =T0TCR

MOV R1, #0X02

STR R1,[R2]

LDR R2, =T0TCR

MOV R1, #0X01

STR R1,[R2]

L LDR R2, =T0TC

LDR R3, [R2]

MOV R4, R11 ; this T0TC can be changed to get the multiples of l ms delay

CMP R3,R4

BLT L

MOV R5, #0X0

LDR R1, =T0TC

STR R5, [R1]

Page 4: WINSEM2015 16 CP2858 03 Mar 2016 RM01 Duty Ratio Control of Chopper Using Interrupt

LDR R1, =T0TCR

STR R5, [R1]

MOV LR,R6

BX LR

DELAY1

MOV R6,LR

LDR R2, =T0CTCR

MOV R1, #0X0

STR R1,[R2]

LDR R2, =T0PR

ldr R1, =0X0BB7 ; the clock of timer gets pulses with freguency as fclk = fosc/4, since the fosc is 12 MHz then fclk is 3 MHz

; the timing is calculate by the formula t=PR+1/fclk, hence to get 1ms t = 2999+1/3000000, 2999D = 0BB7H

STR R1,[R2]

LDR R2, =T0TCR

MOV R1, #0X02

STR R1,[R2]

LDR R2, =T0TCR

MOV R1, #0X01

STR R1,[R2]

LS LDR R2, =T0TC

LDR R3, [R2]

MOV R4, R12 ; this T0TC can be changed to get the multiples of l ms delay

CMP R3,R4

BLT LS

MOV R5, #0X0

Page 5: WINSEM2015 16 CP2858 03 Mar 2016 RM01 Duty Ratio Control of Chopper Using Interrupt

LDR R1, =T0TC

STR R5, [R1]

LDR R1, =T0TCR

STR R5, [R1]

MOV LR,R6

BX LR

IRQ_Handler

SUB LR,LR,#4

MOV R11, #0X06

MOV R12, #0X04

LDR R2, =VICVectAddr

LDR r1, =0x0

STR R1, [R2]

LDR R2, =EXTINT

LDR r1, =0x04

STR R1, [R2]

BX LR

END