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