APP 4
Dependencies: mbed CRC16 mbed-rtos
APP_match.cpp@0:ac5e42371639, 2016-02-20 (annotated)
- Committer:
- vinbel93
- Date:
- Sat Feb 20 18:26:09 2016 +0000
- Revision:
- 0:ac5e42371639
1st commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vinbel93 | 0:ac5e42371639 | 1 | #include "mbed.h" |
vinbel93 | 0:ac5e42371639 | 2 | #include "LPC17xx.h" |
vinbel93 | 0:ac5e42371639 | 3 | |
vinbel93 | 0:ac5e42371639 | 4 | #define CLOCKS_TO_SECOND 96000000 |
vinbel93 | 0:ac5e42371639 | 5 | |
vinbel93 | 0:ac5e42371639 | 6 | Serial pc(USBTX, USBRX); |
vinbel93 | 0:ac5e42371639 | 7 | |
vinbel93 | 0:ac5e42371639 | 8 | int state = 0; |
vinbel93 | 0:ac5e42371639 | 9 | int temps = -1; |
vinbel93 | 0:ac5e42371639 | 10 | float tempsHaut = 0.4; |
vinbel93 | 0:ac5e42371639 | 11 | float tempsBas = 0.1; |
vinbel93 | 0:ac5e42371639 | 12 | |
vinbel93 | 0:ac5e42371639 | 13 | void asdf() |
vinbel93 | 0:ac5e42371639 | 14 | { |
vinbel93 | 0:ac5e42371639 | 15 | for (int i = 0; i < 100000000; i++) |
vinbel93 | 0:ac5e42371639 | 16 | { |
vinbel93 | 0:ac5e42371639 | 17 | |
vinbel93 | 0:ac5e42371639 | 18 | } |
vinbel93 | 0:ac5e42371639 | 19 | } |
vinbel93 | 0:ac5e42371639 | 20 | |
vinbel93 | 0:ac5e42371639 | 21 | int benchSwag(void (*function) (void)) |
vinbel93 | 0:ac5e42371639 | 22 | { |
vinbel93 | 0:ac5e42371639 | 23 | int counter = LPC_TIM2->TC; |
vinbel93 | 0:ac5e42371639 | 24 | function(); |
vinbel93 | 0:ac5e42371639 | 25 | return LPC_TIM2->TC - counter; |
vinbel93 | 0:ac5e42371639 | 26 | |
vinbel93 | 0:ac5e42371639 | 27 | } |
vinbel93 | 0:ac5e42371639 | 28 | |
vinbel93 | 0:ac5e42371639 | 29 | void swagger() |
vinbel93 | 0:ac5e42371639 | 30 | { |
vinbel93 | 0:ac5e42371639 | 31 | if ((LPC_TIM2->IR & 0x01) == 0x01) // if MR0 interrupt, proceed |
vinbel93 | 0:ac5e42371639 | 32 | { |
vinbel93 | 0:ac5e42371639 | 33 | if (state == 0) |
vinbel93 | 0:ac5e42371639 | 34 | { |
vinbel93 | 0:ac5e42371639 | 35 | state = 1; |
vinbel93 | 0:ac5e42371639 | 36 | LPC_TIM2->MR0 = (int) CLOCKS_TO_SECOND * tempsHaut; |
vinbel93 | 0:ac5e42371639 | 37 | } |
vinbel93 | 0:ac5e42371639 | 38 | else if (state == 1) |
vinbel93 | 0:ac5e42371639 | 39 | { |
vinbel93 | 0:ac5e42371639 | 40 | state = 0; |
vinbel93 | 0:ac5e42371639 | 41 | LPC_TIM2->MR0 = (int) CLOCKS_TO_SECOND * tempsBas; |
vinbel93 | 0:ac5e42371639 | 42 | } |
vinbel93 | 0:ac5e42371639 | 43 | |
vinbel93 | 0:ac5e42371639 | 44 | LPC_TIM2->IR |= 1 << 0; // Clear MR0 interrupt flag |
vinbel93 | 0:ac5e42371639 | 45 | } |
vinbel93 | 0:ac5e42371639 | 46 | } |
vinbel93 | 0:ac5e42371639 | 47 | |
vinbel93 | 0:ac5e42371639 | 48 | extern "C" void TIMER2_IRQHandler() |
vinbel93 | 0:ac5e42371639 | 49 | { |
vinbel93 | 0:ac5e42371639 | 50 | temps = benchSwag(swagger); |
vinbel93 | 0:ac5e42371639 | 51 | } |
vinbel93 | 0:ac5e42371639 | 52 | |
vinbel93 | 0:ac5e42371639 | 53 | void initTimer2() |
vinbel93 | 0:ac5e42371639 | 54 | { |
vinbel93 | 0:ac5e42371639 | 55 | LPC_SC->PCLKSEL1 |= (1 << 12); // pclk = cclk timer2 |
vinbel93 | 0:ac5e42371639 | 56 | LPC_SC->PCONP |= (1 << 22); // timer2 power on |
vinbel93 | 0:ac5e42371639 | 57 | LPC_TIM2->MR0 = 9600000; // 100 msec |
vinbel93 | 0:ac5e42371639 | 58 | LPC_TIM2->MCR = 1; // interrupt and reset control |
vinbel93 | 0:ac5e42371639 | 59 | // 3 = Interrupt & reset timer2 on match |
vinbel93 | 0:ac5e42371639 | 60 | // 1 = Interrupt only, no reset of timer0 |
vinbel93 | 0:ac5e42371639 | 61 | LPC_TIM2->EMR = (3 << 4); // EMC0 = 11 (Toogle) |
vinbel93 | 0:ac5e42371639 | 62 | NVIC_EnableIRQ(TIMER2_IRQn); // enable timer2 interrupt |
vinbel93 | 0:ac5e42371639 | 63 | LPC_TIM2->TCR = 1; // enable Timer2 |
vinbel93 | 0:ac5e42371639 | 64 | } |
vinbel93 | 0:ac5e42371639 | 65 | |
vinbel93 | 0:ac5e42371639 | 66 | int main () |
vinbel93 | 0:ac5e42371639 | 67 | { |
vinbel93 | 0:ac5e42371639 | 68 | LPC_PINCON->PINSEL0 |= (3 << 12); // P0.6 = MAT2.0 |
vinbel93 | 0:ac5e42371639 | 69 | |
vinbel93 | 0:ac5e42371639 | 70 | initTimer2(); |
vinbel93 | 0:ac5e42371639 | 71 | |
vinbel93 | 0:ac5e42371639 | 72 | pc.printf("Time = %i\r\n", temps); |
vinbel93 | 0:ac5e42371639 | 73 | |
vinbel93 | 0:ac5e42371639 | 74 | while(1) |
vinbel93 | 0:ac5e42371639 | 75 | { |
vinbel93 | 0:ac5e42371639 | 76 | wait(1.0); |
vinbel93 | 0:ac5e42371639 | 77 | } |
vinbel93 | 0:ac5e42371639 | 78 | } |