Wait function that uses 16 Bit Timer 1 instead of using 32 bit Timer 0 to be used in conjunction with 'TextLCD16x4_Wait' and 'PulseWidthCapture' to measure the +ve and -ve Pulsewdth of a signal
Dependents: PulseWidthCapture_Program
LCD_Wait.cpp
- Committer:
- Ellor1
- Date:
- 2014-12-10
- Revision:
- 0:538efd9574f7
- Child:
- 1:57aba608a20d
File content as of revision 0:538efd9574f7:
#include "mbed.h" #include "TextLCD_16x4.h" #include "LCD_Wait.h" //DigitalOut led(P0_9); //DigitalOut led2(P0_8); //DigitalOut led3(P0_7); //DigitalOut led4(P0_17); //DigitalOut led5(P0_1); LCD_Wait *LCD_Wait::instance; LCD_Wait::LCD_Wait(void) { LPC_SYSCON->SYSAHBCLKCTRL |= CT16B1_CLK_ENABLE; LPC_CT16B1->PR = 48000; //LPC_CT16B1->MCR = CT16B1_MR0I | CT16B1_MR0R; // LPC_CT16B1->IR = CT16B1_IR_MR0INT; //instance = this; //NVIC_SetVector(TIMER_16_1_IRQn, (uint32_t)&_Wait_ISR); } void LCD_Wait::Wait(float num_wait) { // wait_n = num_wait; //led = !led; LPC_CT16B1->TC = 0; // Start the timer LPC_CT16B1->TCR = CT16B1_TCR_CEN; // enable // blocking while loop that waits for the timer counter to exceed the set value // If another interrupt fires during this while loop, this Wait function might take a little longer than expected // while(LPC_CT16B1->TC < my_max_count_value); while(LPC_CT16B1->TC < num_wait); } //Enable interrupt // NVIC_EnableIRQ(TIMER_16_1_IRQn); // Start the timer // LPC_CT16B1->TCR = CT16B1_TCR_CEN; // enable // LPC_CT16B1->MR0 = wait_n; // } /* void LCD_Wait::Wait(int num_wait) { wait_n = num_wait; led = !led; //Enable interrupt NVIC_EnableIRQ(TIMER_16_1_IRQn); // Start the timer LPC_CT16B1->TCR = CT16B1_TCR_CEN; // enable //for ( //if (LPC_CT16B1->TC == wait_n) { // NVIC_DisableIRQ(TIMER_16_1_IRQn); //return; // } // LPC_CT16B1->MR0 = wait_n; } */ /* void LCD_Wait::Wait(int num_wait) { wait_n = num_wait; int x; for (x = 0; x < wait_n; x++) { } x = 0; } */ /* void LCD_Wait::_Wait_ISR(void) { instance->Wait_ISR(); } void LCD_Wait::Wait_ISR(void) { led2 = !led2; // NVIC_DisableIRQ(TIMER_32_0_IRQn); // NVIC_DisableIRQ(TIMER_32_1_IRQn); NVIC_DisableIRQ(TIMER_16_1_IRQn); LPC_CT16B1->IR = CT16B1_IR_MR0INT; return; } */