stm32 CC-Flag Verzögerung Timer 4 funktioniert nicht richtig

Gast #2518556
Lesenswert?

Grüße,
Ich möchte eine Aktion2 durch einen Interrupt auslösen. Die Aktion2 
schwankt jedoch um 1 µs. Die Aktion2 wird eine bestimmte Zeit nach einer 
vorangegangen anderen Aktion1 ausgeführt. Dazu messe ich den Timerstand 
bei der Ausfühung der Aktion1 und füge meine Verzögerungszeit an. 
Aktion2  wird dann über ein CC-Interrupt aufgerufen. Um Schwankungen 
durch den Aufruf des Interrupts zu vermindern wollte ich zusätzlich zum 
CC-Interrupt einen CC Flag des selben Timers setzen. Dieses sollte etwa 
4 µs nach dem Interrupt auslösen. Beide Zeiten haben somit die gleiche 
Zeitbasis aber unterschiedliche Längen. Im Interrupt habe ich nun 
folgende Zeilen stehen:
1
if(TIM_GetITStatus(TIM4, TIM_IT_CC1) == SET)      
2
{
3
TIM_ClearITPendingBit(TIM4, TIM_IT_CC1);  
4

5
TIM_ClearFlag(TIM4, TIM_FLAG_CC3);
6
while(TIM_GetFlagStatus(TIM4, TIM_FLAG_CC3) == RESET);
7

8
.
9
.
10
.
11
.


Sobald ich die das While einfüge wird meine Aktion2 nur noch 
unregelmäßig ausgeführt. Ich habe auch testweise schon versucht das CC3 
Flag direkt vor den letzten beiden Zeilen einzustellen, mit dem gleichen 
negativen Ergebnis. Kann mir jemand sagen was das sein kann?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren