APP 4

Dependencies:   mbed CRC16 mbed-rtos

APP.cpp

Committer:
vinbel93
Date:
2016-02-20
Revision:
1:f212b6676849
Parent:
APP_match.cpp@ 0:ac5e42371639
Child:
2:1250280a511b

File content as of revision 1:f212b6676849:

#include "mbed.h"
#include "LPC17xx.h"

#define CLOCKS_TO_SECOND 96000000

Serial pc(USBTX, USBRX);

int state = 0;
float tempsHaut = 0.4;
float tempsBas = 0.1;

int benchmark(void (*function) (void))
{
    int counter = LPC_TIM2->TC;
    function();
    return LPC_TIM2->TC - counter;
}

extern "C" void TIMER2_IRQHandler()
{
    if ((LPC_TIM2->IR & 0x01) == 0x01) // if MR0 interrupt, proceed
    {
        if (state == 0)
        {
            state = 1;
            LPC_TIM2->MR0 = (int) CLOCKS_TO_SECOND * tempsHaut;
        }
        else if (state == 1)
        {
            state = 0;
            LPC_TIM2->MR0 = (int) CLOCKS_TO_SECOND * tempsBas;
        }

        LPC_TIM2->IR |= 1 << 0;        // Clear MR0 interrupt flag
    }
}
 
void initTimer()
{
    LPC_SC->PCLKSEL1 |= (1 << 12);     // pclk = cclk timer2
    LPC_SC->PCONP |= (1 << 22);        // timer2 power on
    LPC_TIM2->MR0 = 9600000;           // 100 msec
    LPC_TIM2->MCR = 1;                 // interrupt and reset control
                                       // 3 = Interrupt & reset timer2 on match
                                       // 1 = Interrupt only, no reset of timer0
    LPC_TIM2->EMR = (3 << 4);          // EMC0 = 11 (Toogle)
    NVIC_EnableIRQ(TIMER2_IRQn);       // enable timer2 interrupt
    LPC_TIM2->TCR = 1;                 // enable Timer2
}

int main()
{
    LPC_PINCON->PINSEL0 |= (3 << 12);  // P0.6 = MAT2.0

    initTimer();
    
    while(1)
    {
        wait(1.0);
    }
}