hi ,
I am configuring LPC 2148 timer 0 in interrupt mode, i am able to receive pnterrupt once but next time interrupt is not generating.(interrupt occurs at rate of 1 second)
Following are the routines
/**************************************************************************************** *Function :timer init *Inputs_gen : *Output : *Purpose :This function INTIALISES TIMER 0 ****************************************************************************************/
void timer0_init(void) {
T0TCR=0X02; // RESETTING THE TIMER COUNTER AND PRESCALER COUNTER
T0IR=0XFF; // RESETTING ALL THE INTERRUPT
T0CTCR=0X00; // SELECTING TIMER /COUNTER MODE
T0TC=0X00000000; // TIMER COUNT REGISTER
T0PR=0X10DFF; // PRESCALER REGISTER
T0PC=0X00; // PRESCALER COUNT REGISTER
T0MR0=0XFF; // MATCH REGISTER
T0MCR=0X0005; // RESET TC AND STOP TIMER & GENERATES INTERRUPT WHEN TC==TOMRO
}
/**************************************************************************************** *Function :timer0_start *Inputs_gen : *Output : *Purpose :This function is used to start ****************************************************************************************/ void timer0_start(void) { T0TCR=0X01; // RESETTING THE TIMER COUNTER AND PRESCALER COUNTER
/**************************************************************************************** *Function :timer0_reset *Inputs_gen : *Output : *Purpose :This function is used to reset pc and tc ****************************************************************************************/ void timer0_reset(void) {
/**************************************************************************************** *Function :timer0_int *Inputs_gen : *Output : *Purpose :This function is used to initalize timer interrupt ****************************************************************************************/ void timer0_int(void) {
VICIntEnable=0x00000010;
VICIntSelect=0x00000010;
} /**************************************************************************************** *Function :timer0_start *Inputs_gen : *Output : *Purpose :This function is used to start ****************************************************************************************/ void timer0_start(void) {
T0TCR=0X01;
/**************************************************************************************** *Function :timer0_int *Inputs_gen : *Output : *Purpose :This function is used to initalize timer interrupt ****************************************************************************************/ void timer0_int(void) { VICIntEnable=0x00000010;
/**************************************************************************************** *Function :FIQ_Handler *Inputs_gen : *Output : *Purpose :This function is FIQ interrupt ****************************************************************************************/
void FIQ_Handler (void) { if((VICFIQStatus & 0x00000010)==0x00000010) {
T0IR=0xFF;
puts_gen("\n\r Timer interrupt generated",0);
puts_gen("s",0);
//VICIntEnable=0x00000010;
timer0_reset();
timer0_start();
} else {
puts_gen("\n\r some one else",0); } }
Following is the change in startup file
Vectors LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
LDR PC, DAbt_Addr
NOP ; Reserved Vector
; LDR PC, IRQ_Addr
LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr
LDR PC, FIQ_Addr
IMPORT FIQ_Handler
Reset_Addr DCD Reset_Handler
Undef_Addr DCD Undef_Handler
SWI_Addr DCD SWI_Handler
PAbt_Addr DCD PAbt_Handler
DAbt_Addr DCD DAbt_Handler
DCD 0 ; Reserved Address
IRQ_Addr DCD IRQ_Handler
FIQ_Addr DCD FIQ_Handler
Undef_Handler B Undef_Handler
SWI_Handler B SWI_Handler
PAbt_Handler B PAbt_Handler
DAbt_Handler B DAbt_Handler
IRQ_Handler B IRQ_Handler
;FIQ_Handler B FIQ_Handler
I am suspecting some problem in my asm file changes of FIQ HANDLER can any body suggest the cause of problem
regards sumit