Forum: Mikrocontroller und Digitale Elektronik Duty Cycle messung-problem stm32


von Maxi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich wollte die Duty Cycle(Ton) eines PWM-Signales mit input capture mode 
messesn. Es klappt leider nur fast bis 65% der Duty cycle. sonst wird 
die T_off gemessen statt Ton. hat jemand eine Idee was man dieses 
Problem lösen kann?

Timer Konfiguration ist im Ahnhand zu sehen.

Timer Initialization:
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
HAL_TIM_Base_Start(&htim5);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_1);


Timer Interrupt:

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
  /* Prevent unused argument(s) compilation warning */
  UNUSED(htim);

if(htim==&htim5){
//  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
  capture= HAL_TIM_ReadCapturedValue(&htim5,TIM_CHANNEL_1);
  __HAL_TIM_SetCounter(&htim5,0);
}
}

von Maxi (Gast)


Lesenswert?

Nachtrag: der Timer hat eine Taktfreq von 1 Mhz.

von Stefan F. (Gast)


Lesenswert?

Soweit ich sehen kann misst du die Zeit zwischen zwei Flanken. Und du 
verwendest sowohl die steigenden als auch die fallenden Flanken.

Wie war denn dein Plan, sicherzustellen, dass die Messung nur bei der 
steigenden Flanke beginnt?

Ich möchte erwähnen, dass man den Chip selber anhand des 
Referenzhandbuches programmieren kann, wenn man mit der HAL nicht weiter 
kommt.

von Maxi (Gast)


Lesenswert?

Stefanus F. schrieb:
> Soweit ich sehen kann misst du die Zeit zwischen zwei Flanken. Und du verwendest 
sowohl die steigenden als auch die fallenden Flanken.

ganz genau.

> Wie war denn dein Plan, sicherzustellen, dass die Messung nur bei der
> steigenden Flanke beginnt?

kein Plan um ehrlich zu sein

> Ich möchte erwähnen, dass man den Chip selber anhand des
> Referenzhandbuches programmieren kann, wenn man mit der HAL nicht weiter
> kommt.

ich weiß aber kann das nicht.

LG

von Stefan F. (Gast)


Lesenswert?

Vielleicht erfasst du einfach beide Zeitspannen (High und Low) und 
verwirfst die falsche nach der Messung.

von Maxi (Gast)


Lesenswert?

Stefanus F. schrieb:
> Vielleicht erfasst du einfach beide Zeitspannen (High und Low) und
> verwirfst die falsche nach der Messung.

das heißt 2 Timers oder (:

von Jitterer (Gast)


Lesenswert?

Nein nur zwei channel des selben timers einen auf rising und einen auf 
falling

von Stefan F. (Gast)


Lesenswert?

Oder du fragst nach jeder Messung, ob das Signal gerade High oder Low 
ist. Die Messung davor hatte dann den anderen Pegel, daran kannst du 
entscheiden, ob du das Ergebnis verwenden oder verwerfen willst.

Vorraussetzung wäre dabei allerdings, dass das Signal nicht allzu 
schnell seinen Pegel wechselt.

von m.n. (Gast)


Lesenswert?

Vielleicht kannst Du hiermit etwas anfangen: 
http://mino-elektronik.de/FM_407/fmeter_407.htm#a5

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.