Steeve81
23.01.2007, 22:05
Hallo!
Ich versuche auf einem ARM7 Intterupts zu benutzen. Der Timer läuft richtig, nur Interrupts bekomme ich noch nicht... Welche Register hab ich vergessen?
Danke schon einmal!
#include <LPC21xx.H>
// olimex LPC-P2129: LEDs on P0.12/P0.13 (active low)
#define LED1PIN 12
#define LED2PIN 13
void T0IRQ (void) __irq;
unsigned short switcher = 0;
int main(void)
{
//INIT
// define LED-Pins as outputs
IODIR0 |= 1<<LED1PIN;
// set Bits = LEDs off (active low)
IOSET0 = 1<<LED1PIN;
//Sets peripheral clock = system clock
VPBDIV=0x01;
//initialise timer 0
T0TCR = 0x0;
T0TC = 0x0;
T0PR = 0x0;
T0PC = 0x0;
T0MR0 = 0xFF;
//Reset and interrupt on match
T0MCR = 0x3;
//TELL VIC WHAT TO DO!
VICIntSelect = 0x0; //NO FIQs
VICIntEnable = 0x4; //TIMER 0 on board
//Give the VIC the adress
VICVectAddr0=(unsigned long) T0IRQ;
//start the timer
T0TCR=0x1;
while(1){}
}
void T0IRQ (void) __irq
{
//TOGGLE LED
if(switcher) {
IOSET0 = 0<<LED1PIN;
switcher = 0;
} else {
switcher = 1;
IOSET0 = 1<<LED1PIN;
}
//RESET NECCESSARY TIMER VALUES
T0IR=0x1;
//END ISR
VICVectAddr=0xff;
}
Ich versuche auf einem ARM7 Intterupts zu benutzen. Der Timer läuft richtig, nur Interrupts bekomme ich noch nicht... Welche Register hab ich vergessen?
Danke schon einmal!
#include <LPC21xx.H>
// olimex LPC-P2129: LEDs on P0.12/P0.13 (active low)
#define LED1PIN 12
#define LED2PIN 13
void T0IRQ (void) __irq;
unsigned short switcher = 0;
int main(void)
{
//INIT
// define LED-Pins as outputs
IODIR0 |= 1<<LED1PIN;
// set Bits = LEDs off (active low)
IOSET0 = 1<<LED1PIN;
//Sets peripheral clock = system clock
VPBDIV=0x01;
//initialise timer 0
T0TCR = 0x0;
T0TC = 0x0;
T0PR = 0x0;
T0PC = 0x0;
T0MR0 = 0xFF;
//Reset and interrupt on match
T0MCR = 0x3;
//TELL VIC WHAT TO DO!
VICIntSelect = 0x0; //NO FIQs
VICIntEnable = 0x4; //TIMER 0 on board
//Give the VIC the adress
VICVectAddr0=(unsigned long) T0IRQ;
//start the timer
T0TCR=0x1;
while(1){}
}
void T0IRQ (void) __irq
{
//TOGGLE LED
if(switcher) {
IOSET0 = 0<<LED1PIN;
switcher = 0;
} else {
switcher = 1;
IOSET0 = 1<<LED1PIN;
}
//RESET NECCESSARY TIMER VALUES
T0IR=0x1;
//END ISR
VICVectAddr=0xff;
}