lpcware

Timer configuration problem LPC 1769

Discussion created by lpcware Employee on Jun 15, 2016
Latest reply on Jun 15, 2016 by lpcware
Content originally posted in LPCWare by Fabienvg on Wed Oct 09 08:41:48 MST 2013
Hello,

I'm really new to microcontrollers and I have problems with setting up a timer (timer 0 in my case)  and interrupt. For Example the prescaler, I think I didn't set it right. I want to set the prescaler to 1 ms. Is 1000-1 then right? I cannot imagine it works on only 1 Mhz. I think I made multiple mistakes in the basic configuration. Could anyone modify this to right code or help me out?

Thanks a lot

User manual LPC 1769: http://www.nxp.com/documents/user_manual/UM10360.pdf
Basic configuration Timer starts at page 490.


#defineTMR16B0TC  0x40004008
#define PCLKSEL0        0x400FC1A8
#define TMR16B0IR 0x40004000
#define TMR16B0TCR 0x40004004
#define TMR16B0PR 0x4000400C
#define TMR16B0MR0 0x40004018
#define TMR16B0MCR  0x40004014
#define TMR16B0CTCR 0x40004070
#define PCONP 0x400FC0C4
#define ISER0 0xE000E100

int* pCLKSEL0= (int*) PCLKSEL0;
int* tMR16B0TCR = (int*) TMR16B0TCR;
int* tMR16B0PR = (int*) TMR16B0PR;
int* tMR16B0MR0 = (int*) TMR16B0MR0;
int* tMR16B0MCR = (int*) TMR16B0MCR;
int* tMR16B0CTCR = (int*) TMR16B0CTCR;
int* tMR16B0IR = (int*) TMR16B0IR;
int* iSER0 = (int*) ISER1;
int* tMR16B0TC = (int*) TMR16B0TC;
int* pCONP = (int*) PCONP;

void (*timer_tmr_callback)();

void init()
{
*pCONP = 0x2;
*pCLKSEL0    = 0xC;
*tMR16B0TC   = 0x0;
*tMR16B0PR     = 1000 - 1;
*tMR16B0CTCR    = 0;

}

void timer_async_usec( unsigned int msec, void (*callback)())
{
timer_tmr_callback = callback;
*tMR16B0MR0    = msec;
*tMR16B0MCR        = 0x07;
*iSER0    = (1 << 1);
*tMR16B0TCR    = 0x2;
*tMR16B0TCR    = 0x1;
}

void (TIMER0_IRQHandler(void))
{
*tMR16B0IR = 0x1F;
timer_tmr_callback();
}

Outcomes