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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.