Forum: Mikrocontroller und Digitale Elektronik STM32 Input Capture


von Georg B. (dongeorg)


Lesenswert?

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.

von Georg B. (dongeorg)


Lesenswert?

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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.