This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LPC1768 problem with timer0

Hi, this is my first thread in this forum and at the beginning i want to apologize for my English OK, I've just written small program with timer0 and interrupt. I want to toggle one of the LED on board, but...It doesn't work and I really don't know what's wrong with this code. Each LED is lit and nothing more... Could you help with it ? Thank you in advance and best regards :)

#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif

#include <cr_section_macros.h>
#include <NXP/crp.h>

// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;

// TODO: insert other include files here

// TODO: insert other definitions and declarations here
int main(void)
{
    LPC_GPIO2->FIODIR |= 1 << 29;
    LPC_SC->PCONP |= 1 << 1;
    LPC_SC->PCLKSEL0 |= 1 << 3;
    LPC_TIM0->TCR |= 0x00000002;
    LPC_TIM0->MCR |= 0x00000003;
    LPC_TIM0->MR0 |= 6000000;
    NVIC_EnableIRQ(TIMER0_IRQn);
    LPC_TIM0->TCR |= 0x00000001;
    while(1){}
    return 0 ;
}

void TIMER0_IRQHandler (void)
{
    if((LPC_TIM0->IR & 0x01) == 0x01)
    {
        LPC_TIM0->IR |= 1 << 0;
        LPC_GPIO2->FIOPIN ^= 1 << 29;
    }
}

Parents
  • Not sure if you actually used the processor user manual, or if you just looked at any blinky application.

    But when you did find the FIOSET register - didn't you then also find any FIOCLR register?

    By the way - I see you wrote a hysterese function to reduce problems with noise from the potentiometer. But why did you select a variable name errCnt? Where is the error?

    Another thing - why is curVal a global variable? You give it a value the first thing you do in the readADC() function - and then you return the value of curVal - so no need to retain the value of it until next call...

Reply
  • Not sure if you actually used the processor user manual, or if you just looked at any blinky application.

    But when you did find the FIOSET register - didn't you then also find any FIOCLR register?

    By the way - I see you wrote a hysterese function to reduce problems with noise from the potentiometer. But why did you select a variable name errCnt? Where is the error?

    Another thing - why is curVal a global variable? You give it a value the first thing you do in the readADC() function - and then you return the value of curVal - so no need to retain the value of it until next call...

Children