Forum: Mikrocontroller und Digitale Elektronik stm32 CC-Flag Verzögerung Timer 4 funktioniert nicht richtig


von Spell (Gast)


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?
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.