TMS320VC55 Interrupt Problem

OP #428044
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

OP
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.