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?