APP 4
Dependencies: mbed CRC16 mbed-rtos
Diff: APP.cpp
- Revision:
- 1:f212b6676849
- Parent:
- 0:ac5e42371639
- Child:
- 2:1250280a511b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/APP.cpp Sat Feb 20 19:14:36 2016 +0000 @@ -0,0 +1,61 @@ +#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); + } +}