
#include "L138_LCDK_aic3106_init.h"

interrupt void interrupt4 ( void )
{

//long sample;
short  sample;

/* sample32 = input_sample ( );
output_sample ( sample32 );
*/

sample = input_left_sample ( );

// senza niente, il guadagno e' (giustamente) ~= 1
// non guadagna esattamente 1, poco male

sample=sample;
// sample=sample/4;   // per mostrare la saturazione in ingresso (aumentando il guadagno di windows)
//sample=sample*4;  		// per mostrare l'overflow di int16

output_left_sample ( sample );

// c'e' un ritardo, ma batte: il ritardo dell'ADC e' di 17*Ts, quello dell'DAC di 21*Ts, totale 38*Ts,
// quindi ad es. con Fs=32.000 fa 1.2 ms, ci siamo abbastanza (a me viene 0.98 ms)
// quindi ad es. con Fs=24.000 fa 1.6 ms, ci siamo abbastanza (a me viene 1.4 ms)
// ok con il generatore di impulsi: con Fs=8 kHz vengono 5 ms



return ;
}


void main ( void )
{
	// per i parametri, v. L138_LCDK_aic3106_init.h (a sinistra, Project Explorer)

	// in L138_LCDK_aic3106_init.c, il codec - o meglio, la MCASP, multichannel audio serial port -
	// e' associato all'interrupt # 4 (linea 653)

	// L138_initialise_intr(FS_8000_HZ, ADC_GAIN_0DB, DAC_ATTEN_0DB, LCDK_LINE_INPUT); // ok, c'e' filtro anti-aliasing
	L138_initialise_intr(FS_16000_HZ, ADC_GAIN_0DB, DAC_ATTEN_0DB, LCDK_LINE_INPUT); // ok, c'e' filtro anti-aliasing
	//L138_initialise_intr(FS_24000_HZ, ADC_GAIN_0DB, DAC_ATTEN_0DB, LCDK_LINE_INPUT); // ok, c'e' filtro anti-aliasing
	//L138_initialise_intr(FS_32000_HZ, ADC_GAIN_0DB, DAC_ATTEN_0DB, LCDK_LINE_INPUT); // ok, c'e' filtro anti-aliasing
	//L138_initialise_intr(FS_48000_HZ, ADC_GAIN_0DB, DAC_ATTEN_0DB, LCDK_LINE_INPUT);

	// il codice di L138_initialise_intr() e' alla linea 627 di L138_LCDK_aic3106_init.c
    // volendo, si poteva fare non con interrupt ma con polling o DMA: v. L138_LCDK_aic3106_init.c, linee 96-98	

while ( 1 ) ;

}
