Forum: Digitale Signalverarbeitung / DSP / Machine Learning nichtperiodischer Interrupt


von Horst (Gast)


Lesenswert?

Hallo zusammen,

ich habe eine kleine Interruptstruktur von zwei Interrupts die von
Timer1 und Timer2 periodisch aufgerufen werden. Nun brauche ich noch
einen dritten Interrupt, der immer dann läuft, wenn die anderen beiden
nicht laufen (quasi niederste Priorität). Kann mir jemand sagen, mit
welchem Ereignis dieser Interrupt angestoßen wird (er muß nicht
periodisch laufen). Wie könnte ich das realisieren?

Ich habe die Frage schonmal gestellt, hatte aber das Gefühl, daß es
unter gegangen ist, weil der Thread zu lang war...

Viele Grüße und herzlichen Dank,

Horst

von MSE (Gast)


Lesenswert?

Ich kenne Deinen alten Thread nicht (und werde jetzt auch nicht nach ihm
suchen) und habe auch nicht viel Ahnung von DSPs. Ich möchte Dich jedoch
darauf hinweisen, dass wahrscheinlich niemand wissen kann, was in Deinem
System wie funktioniert, wenn Du uns nichts darüber sagst (z.B. welcher
DSP bei Dir läuft).

Woher sollen wir wissen, was in Deiner Schaltung Interrupts auslösen
kann?

Gruß, Michael

von Horst (Gast)


Lesenswert?

OK, sorry:

DSP: F2812
Entwicklungsumgebung: Code Composer 2.20.0

Gruß, Horst

von Horst (Gast)


Lesenswert?

Hallo,

ich glaube, ich habe die Lösung:

Ich habe jetzt eine while(1)-Schleife am Ende der main-Routine
eingebaut, so daß die CPU nie aus der main-Routine raus laufen kann. In
dieser while(1)-Schleife rufe ich die Funktion auf, die ausgeführt
werden soll, wenn keiner der beiden anderen Interupts aktiv ist.

Müßte stimmen, oder?

Viele Grüße und herzlichen Dank,

Horst

von Andreas Fertl (Gast)


Lesenswert?

und du willst sonnst nichts anderes aufrufen?

nur die 2 ints und eine funktion?

Dann würd ich auch sagen dass das so klappt.
Aber nicht grad schön...

Du könntest doch ne art "Semaphore" benutzen.
2 stück, immer als erstes bei der INT Routine ausführen.
INT1Running=TRUE;
INT2Running=TRUE;

if ((INT1Running || INT2Running) == FALSE)
{
Funktionsaufruf();
}


Der if block in deiner while(1) dürfte das nun auch können.

Gruß Andreas

von Andreas Fertl (Gast)


Lesenswert?

hmm allerdings könnte auch der funktionsaufruf() dann natürlich noch
unterbrochen werden durch die 2 timerints. Falls du das nicht möchtest
schalt sie davor ab und danach wieder an.

Gruß Andreas

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.