mikrocontroller.net

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


Autor: Martin H. (haeger)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.