
Projet S5 Lecture de l'accelerometre avec interruption
Dependencies: mbed PowerControl
Fork of Projet_S5 by
Diff: main.cpp
- Revision:
- 2:d7784cc39c81
- Parent:
- 1:feae56685ab1
- Child:
- 3:17a4ceb30535
--- a/main.cpp Thu Mar 27 15:36:48 2014 +0000 +++ b/main.cpp Thu Mar 27 19:25:59 2014 +0000 @@ -3,6 +3,7 @@ Serial pc(USBTX, USBRX); DigitalOut led1(LED1); +DigitalOut out(p26); void *accelerometer = Accelerometer_C_new(); bool capture = false; @@ -11,15 +12,13 @@ extern "C" void interruptCapture(void) { - led1 = 1; - pc.printf("ALLO"); if ((LPC_TIM2->IR & 0x10) == 0x10) // Interrupt capture { ready = !ready; if (first) { capture = !capture; - first = true; + first = false; LPC_TIM2->TC = 0; // clear timer counter LPC_TIM2->PC = 0; // clear prescale counter @@ -43,11 +42,11 @@ } else { - NVIC_DisableIRQ(TIMER3_IRQn); // Enable timer3 interrupt + NVIC_DisableIRQ(TIMER3_IRQn); // Disable timer3 interrupt } ready = false; - first = false; + first = true; LPC_TIM2->MCR = 0; } } @@ -62,7 +61,9 @@ values = Accelerometer_C_getAccelValue(accelerometer); for(int i = 0; i < 3; i++) - pc.printf("%d\n", values[i]); + pc.printf("%d; ", values[i]); + + pc.printf("\n"); LPC_TIM3->IR |= 0x01; // Reset timer @@ -82,9 +83,13 @@ LPC_TIM2->TC = 0; // clear timer counter LPC_TIM2->PC = 0; // clear prescale counter LPC_TIM2->PR = 0; // clear prescale register + LPC_TIM2->TCR |= (1 << 1); // reset timer + LPC_TIM2->TCR &= ~(1 << 1); // release reset LPC_TIM2->MR0 = SystemCoreClock / 10000; + + //LPC_TIM2->MCR |= 0x03; // interrupt and reset control LPC_TIM2->IR |= 0xFF; // Clear interrupt flag - LPC_TIM2->CCR |= (7 << 0); // enable cap2.0 rising-edge capture and falling-edge; interrupt on cap2.0 + LPC_TIM2->CCR |= 0x07; // enable cap2.0 rising-edge capture and falling-edge; interrupt on cap2.0 // Set timer 3 for match LPC_TIM3->MR0 = SystemCoreClock / 20;