Hi,
ich möchte mit dem Timer 1 die Pulsbreite zwischen einer steigenden und
Fallenden Flanke messen (PWM).
Die Flanken werden mir auch korrekt auf dem Oszi angezeigt, wenn ich im
InterruptHandler Testweise jeweil eine Flanke ausgeben lasse.
Aber die Werte der Input Capture sind immer 0. Die Frage ist, ob der
Capture-Wert jedesmal von neuem "losläuft", wenn der Interrupt startet?
Hier der InterruptHandler Code.
void TIM1_CC_IRQHandler(void)
{
if(TIM1->CCER & TIM_CCER_CC2P) //fallende Flanke
{
ReadValue2 = TIM_GetCapture2(TIM1);
Pulsbreite = ReadValue2 - ReadValue1;
TIM1->CCER &= ~TIM_CCER_CC2P;
}
else //steigende Flanke
{
ReadValue1 = TIM_GetCapture2(TIM1);
TIM1->CCER |= TIM_CCER_CC2P;
}
TIM_ClearITPendingBit(TIM1, TIM_IT_CC2);
}
Vielen Dank im Vorraus.
ich glaub ich hab die Antwort selbst gefunden: RefManual: "If channel CC2 is configured as input: CCR2 is the counter value transferred by the last input capture 2 event (IC2)." Lieg ich da richtig?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.