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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.