Hi, ich habe ein Board mit dem TMS320VC5509A. Ich will jetzt das auf einen externen Interrupt eine Reaktion erfolgt. Zu Testzwecken ziehe ich den Interrupteingang INT3 auf Masse der sonst über nen PULL UP Wiederstand auf Versorgungsspannung liegt. Es passiert gar nix. Ausschnitte aus meinem Code: #include <stdio.h> #include <csl.h> #include <csl_mcbsp.h> #include <csl_irq.h> static void mcbsp1_init(void); interrupt void myIsr(void); void main() { CSL_init(); IRQ_plug(IRQ_EVT_INT2, &myIsr); IRQ_enable(IRQ_EVT_INT2); IRQ_globalEnable(); ... } interrupt void myIsr(void) { mcbsp1_init(); } Im spru433j.pdf von TI steht u.a im Bsp. noch die Zeilen: extern Uint32 myVec; .... IRQ_setVecs((Uint32)(&myvec) << 1)); mit denen ich nix anzufangen weiß. Muss ich da noch diese Asambler "einbinden" die manchmal in den Beispielen dabei ist (vectors.s55 o.ä.)? Wenn ja wie mache ich das und wie muss diese Datei aussehen? Ich hab überhaupt keinen Plan wie das hinhauen soll. Für Hilfe wäre ich sehr Dankbar. mfg Franz
Naja hab wohl meinen Fehler gefunden... man muß sich im DSP/BIOS config GUI sein Zeug noch zusammenklicken und das ganze muss auch noch passen ;-) naja klicki bunti halt... betet das Ihr nie so ein Teil programmieren müsst Franz
Hi, am Anfang, aus deinem Code: es ist merkwuerdig, dass mcbsp1_init im interrupt steht - wie soll der mcbsp die Funktion einfach starten? Es soll am Anfang im main() stehen.ich habe ganz aenliches Problem. Es ist zwar anderes Board/DSP - TMS320C54CST. Wollte einfach den McBSP einschalten und etwas hin und her schicken. Nachdem ich die alle IRQ_ Funktionen eingefuegt, dann die myIsr geschreieben, geht es so: 1. Wenn ich in zyklisch etwas in den port schreibe oder lese, geht die ISR ok. 2. Wenn die Loop aber leer ist - kommen keine Interrupts. Hast Du so etwas aenliches? Geht es richtig oder habe ich Fehler gemacht? Es soll ohne DSP/BIOS funktionieren. void main(void) { CSL_init(); MCBSP_init(); IRQ_plug( IRQ_EVT_XINT1, &intMCBSP1_write ); IRQ_clear( IRQ_EVT_XINT1 ); IRQ_enable( IRQ_EVT_XINT1 ); IRQ_plug( IRQ_EVT_RINT1, &intMCBSP1_read ); IRQ_clear( IRQ_EVT_RINT1 ); IRQ_enable( IRQ_EVT_RINT1 ); IRQ_globalEnable(); MCBSP_write16( McbspDataHandle, 0 ); // start to generate first int MCBSP_read16( McbspDataHandle ); for ( ; ; ) { // MCBSP_write16( McbspDataHandle, 0 ); // MCBSP_read16( McbspDataHandle ); } } interrupt void intMCBSP1_write() { MCBSP_write16( McbspDataHandle, sample ); } interrupt void intMCBSP1_read(void) { sample = MCBSP_read16( McbspDataHandle ); } -- Lukasz
Hi Jungs, sag mal wo gebt ihr eigentlich an wo die einsprungmarke der Interruptvektortabelle ist. Ich denke wenn ihr das einfügt ( vor der Initallisierung der CSL !!!, steht in irgenteiner Doc datei) sollte es gehen. Gruss
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.