Forum: Digitale Signalverarbeitung / DSP / Machine Learning C674x Interrupt Geschwindigkeit


von Kai Z. (liquidsteel)


Lesenswert?

Moin,

Ich habe mein System (DSP C6747) auf ECAP Interrupts configuriert um 
GPIO Pins zu triggern. Es sind insgesammt 8 GPIO Pins die getriggert 
werden muessen. Der ECAP kann selbst hat ja nur einen Output, deshalb 
leite ich den ECAP Interrupt Event an die CPU weiter um gleichzeitig 8 
Pins zu triggern.
Das Funktioniert jedoch nur bis zu eine Interrupt Frequenz von knapp 
200kHz. Schnellere Interrupt Zeiten kann die DSP nicht abarbeiten.
Ich habe es auch mit Timer Interrupts probiert um zu schaun woran es 
liegt. Bei Timer Interrupts das gleiche ergebniss, die Interrupts 
koennen auch nur bis knapp 200kHz abgearbeitet werden. Die Routine sieht 
folgendermassen aus:

interrupt void TIMER0_TINT12_isr()
{
  GPIO_OUT_DATA67 = defaultout;
  defaultout = defaultout ^ xor1;
  xor1 = xor1 ^ xor2;
}

Somit meine Frage, ist es "normal" das die CPU Interrupts nur bis zu 
einer gewissen Geschwindigkeit ausgeloest werden koennen?
Hat hier schon jemand hoehere Interrupt Geschwindigkeiten konfiguriert?

Gruss
Kai

von Der (Gast)


Lesenswert?

Hi,

ich kenne diesen Prozessor nicht genau. Es ist aber so, dass der 
Compiler ohne Optimierung alle möglichen Register auf den Stack 
speichert, und das kann lange dauern. Falls du es noch nicht probiert 
hast, kannst du die Optimierung einschalten (Probeweise auf Maximum 
Speed) und die Zeiten messen. Alternativ kannst du im Assembly-Listung 
schauen, ob bei der ISR viele PUSHs und POPs (bzw. MOV XXX, SP++) 
stehen.

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.