Forum: Digitale Signalverarbeitung / DSP / Machine Learning Interrupt Service Routine beim TI TMS320C6713


von Martin H. (haeger)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich breche mir einen ab, ein einfaches Interrupt Programm auf dem C6713 
ans Laufen zu bringen.

Das Programm sieht wie folgt aus:

//sine8_buf Sine generation. Output buffer plotted within CCS



#include "dsk6713_aic23.h"            //support file for codec,DSK

Uint32 fs=DSK6713_AIC23_FREQ_8KHZ;      //set sampling rate
int loop = 0;                     //table index
short gain = 10;                  //gain factor
short sine_table[8]={0,707,1000,707,0,-707,-1000,-707};//sine values
short out_buffer[256];                  //output buffer
const short BUFFERLENGTH = 256;         //size of output buffer
int i = 0;                              //for buffer count

interrupt void c_int11()                //interrupt service routine
{
  output_sample(sine_table[loop]*gain);  //output sine values
  out_buffer[i] = sine_table[loop]*gain;     //output to buffer
  i++;                          //increment buffer count
  if(i==BUFFERLENGTH) i=0;            //if @ bottom reinit count
  if (loop < 7) ++loop;                  //check for end of table
  else loop = 0;                        //reinit table index
  return;                      //return from interrupt
}

void main()
{
  comm_intr();                          //init DSK, codec, McBSP
  while(1);                            //infinite loop
}


Die Headerdatei beinhaltet folgende, in der main Funktion benutzte, 
Initalfunktion für Interrupts:

void comm_intr()               //for communication/init using interrupt

{
  //Polling deaktivieren
  //poll auf 1 bedeutet das Polling genutzt wird
  //poll auf 0 bedeutet das Polling nicht genutzt werd
  poll=0;

  IRQ_globalDisable();
  c6713_dsk_init();
  CODECEventId=MCBSP_getXmtEventId(DSK6713_AIC23_codecdatahandle);

  #ifndef using_bios
    IRQ_setVecs(vectors);
  #endif

  IRQ_map(CODECEventId, 11);
  IRQ_reset(CODECEventId);
  IRQ_globalEnable();
  IRQ_nmiEnable();
  IRQ_enable(CODECEventId);

  output_sample(0);
}



Das verwendete Vector_intr.asm File ist angehängt.

Dummerweise wird die ISR nicht aufgerufen. Kann mir bitte jemand einen 
Hinweise geben wo ich Mist baue?

Gruß

Haeger

P.S.: Der verwendete Source-Code ist eins zu eins aus dem Buch Digital 
Signal Processing and Apps with C6713 and C6416 DSk von Rulph Chassaing 
übernommen. Sollte daher eigentlich out-of-the-box funktionieren. 
Eigentlich...

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.