Input capture measures period.
More...
|
| void | InputCapture_Init (uint32_t timerClkSrc, uint32_t timerClkPrescale, uint32_t priority) |
| | Initialize input capture. More...
|
| |
|
void | InputCapture_InitDual (uint32_t timerClkSrc, uint32_t timerClkPrescale, uint32_t priority) |
| |
Input capture measures period.
Input capture pins
| Pin | Timer | Description |
| PA12 | TIMG0 | interrupts on rising edge of PA12
|
◆ InputCapture_Init()
| void InputCapture_Init |
( |
uint32_t |
timerClkSrc, |
|
|
uint32_t |
timerClkPrescale, |
|
|
uint32_t |
priority |
|
) |
| |
Initialize input capture.
Arm interrupts on rising edge of PA12
Let P be the period of the selected clock
resolution = P*(timerClkPrescale+1)
precision = 16 bits
range = 65535*resolution (max)
timerClkDivRatio = 1
timerClkFreq = (timerClkSrc / (timerClkDivRatio * (timerClkPrescale + 1)))
resolution = (timerClkDivRatio * (timerClkPrescale + 1)))/timerClkSrc
User defines their own ISR like the following
uint32_t Data[20];
uint32_t Index=0;
uint32_t Time,Last,Period;
uint32_t iidx,count=0;
void TIMG0_IRQHandler(void){
count++;
iidx = TIMG0->CPU_INT.IIDX;
if((iidx) == 5){
Time = TIMG0->COUNTERREGS.CC_01[0];
Period = (Last-Time)&0xFFFF;
Last = Time;
if(Index < 20){
Data[Index] = Period;
Index++;
}
}
}
- timerClkSrc
- 2 for 32768 Hz LFCLK
- 4 for MFCLK (not tested)
- 8 for BUSCLK
- For example
- source=LFCLK, prescale=255, resolution = 7.8125ms
- source=BUSCLK, prescale=47, resolution = 1us
- Parameters
-
| timerClkSrc | could be LFCLK, MFCLK, or BUSCLK |
| timerClkPrescale | is prescale divide clock by timerClkPrescale+1, 0 to 255 |
| priority | is 0(highest),1,2 or 3(lowest) |
- Returns
- none
- Note
- Will invoke LaunchPad_Init