aboutsummaryrefslogtreecommitdiffstats
path: root/lab3/RTDSP/intio.c
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2018-01-21 19:46:42 +0000
committerYann Herklotz <ymherklotz@gmail.com>2018-01-21 19:46:42 +0000
commit921fd2865e785c53e3167f4588055c5a84d58b5a (patch)
treeccb01076119829e069fc1e677f1082e49134d1f1 /lab3/RTDSP/intio.c
parent4a9500af0549cf544c608c1dde7dd92f86f00c5c (diff)
downloadNoiseSilencer-921fd2865e785c53e3167f4588055c5a84d58b5a.tar.gz
NoiseSilencer-921fd2865e785c53e3167f4588055c5a84d58b5a.zip
Cleaning files
Diffstat (limited to 'lab3/RTDSP/intio.c')
-rw-r--r--lab3/RTDSP/intio.c151
1 files changed, 73 insertions, 78 deletions
diff --git a/lab3/RTDSP/intio.c b/lab3/RTDSP/intio.c
index 7c33ee8..4ee527a 100644
--- a/lab3/RTDSP/intio.c
+++ b/lab3/RTDSP/intio.c
@@ -1,32 +1,32 @@
/*************************************************************************************
- DEPARTMENT OF ELECTRICAL AND ELECTRONIC ENGINEERING
- IMPERIAL COLLEGE LONDON
+ DEPARTMENT OF ELECTRICAL AND ELECTRONIC ENGINEERING
+ IMPERIAL COLLEGE LONDON
- EE 3.19: Real Time Digital Signal Processing
- Dr Paul Mitcheson and Daniel Harvey
+ EE 3.19: Real Time Digital Signal Processing
+ Dr Paul Mitcheson and Daniel Harvey
- LAB 3: Interrupt I/O
+ LAB 3: Interrupt I/O
- ********* I N T I O. C **********
+ ********* I N T I O. C **********
- Demonstrates inputing and outputing data from the DSK's audio port using interrupts.
+ Demonstrates inputing and outputing data from the DSK's audio port using interrupts.
*************************************************************************************
- Updated for use on 6713 DSK by Danny Harvey: May-Aug 2006
- Updated for CCS V4 Sept 10
+ Updated for use on 6713 DSK by Danny Harvey: May-Aug 2006
+ Updated for CCS V4 Sept 10
************************************************************************************/
/*
- * You should modify the code so that interrupts are used to service the
+ * You should modify the code so that interrupts are used to service the
* audio port.
*/
/**************************** Pre-processor statements ******************************/
#include <stdlib.h>
-// Included so program can make use of DSP/BIOS configuration tool.
+// Included so program can make use of DSP/BIOS configuration tool.
#include "dsp_bios_cfg.h"
-/* The file dsk6713.h must be included in every program that uses the BSL. This
- example also includes dsk6713_aic23.h because it uses the
+/* The file dsk6713.h must be included in every program that uses the BSL. This
+ example also includes dsk6713_aic23.h because it uses the
AIC23 codec module (audio interface). */
#include "dsk6713.h"
#include "dsk6713_aic23.h"
@@ -40,17 +40,17 @@
// Some functions to help with configuring hardware
#include "helper_functions_polling.h"
-// PI defined here for use in your code
+// PI defined here for use in your code
#define PI 3.141592653589793
/******************************* Global declarations ********************************/
-/* Audio port configuration settings: these values set registers in the AIC23 audio
+/* Audio port configuration settings: these values set registers in the AIC23 audio
interface to configure it. See TI doc SLWS106D 3-3 to 3-10 for more info. */
DSK6713_AIC23_Config Config = { \
- /**********************************************************************/
- /* REGISTER FUNCTION SETTINGS */
- /**********************************************************************/\
+ /**********************************************************************/
+ /* REGISTER FUNCTION SETTINGS */
+ /**********************************************************************/\
0x0017, /* 0 LEFTINVOL Left line input channel volume 0dB */\
0x0017, /* 1 RIGHTINVOL Right line input channel volume 0dB */\
0x01f9, /* 2 LEFTHPVOL Left channel headphone volume 0dB */\
@@ -61,19 +61,19 @@ DSK6713_AIC23_Config Config = { \
0x0043, /* 7 DIGIF Digital audio interface format 16 bit */\
0x008d, /* 8 SAMPLERATE Sample rate control 8 KHZ */\
0x0001 /* 9 DIGACT Digital interface activation On */\
- /**********************************************************************/
+ /**********************************************************************/
};
-// Codec handle:- a variable used to identify audio interface
+// Codec handle:- a variable used to identify audio interface
DSK6713_AIC23_CodecHandle H_Codec;
/* Sampling frequency in HZ. Must only be set to 8000, 16000, 24000
-32000, 44100 (CD standard), 48000 or 96000 */
+32000, 44100 (CD standard), 48000 or 96000 */
int sampling_freq = 16000;
-/* Use this variable in your code to set the frequency of your sine wave
+/* Use this variable in your code to set the frequency of your sine wave
be carefull that you do not set it above the current nyquist frequency! */
float sine_freq = 2000.0;
@@ -90,104 +90,99 @@ Int32 R_Gain = 2100000000;
unsigned sine_phase_ind = 0;
/******************************* Function prototypes ********************************/
-void init_hardware(void);
-void init_HWI(void);
+void init_hardware(void);
+void init_HWI(void);
float sinegen(void);
void ISR_AIC(void);
void sine_init(void);
/********************************** Main routine ************************************/
void main(){
-
- // initialize board and the audio port
+ // initialize board and the audio port
init_hardware();
- sine_init();
- /* initialize hardware interrupts */
- init_HWI();
-
- /* loop indefinitely, waiting for interrupts */
- while(1) {
-
- };
+ sine_init();
+ /* initialize hardware interrupts */
+ init_HWI();
+ /* loop indefinitely, waiting for interrupts */
+ while(1) {};
}
-
-/********************************** init_hardware() **********************************/
+
+/********************************** init_hardware() **********************************/
void init_hardware()
{
- // Initialize the board support library, must be called first
+ // Initialize the board support library, must be called first
DSK6713_init();
-
- // Start the AIC23 codec using the settings defined above in config
+
+ // Start the AIC23 codec using the settings defined above in config
H_Codec = DSK6713_AIC23_openCodec(0, &Config);
- /* Function below sets the number of bits in word used by MSBSP (serial port) for
- receives from AIC23 (audio port). We are using a 32 bit packet containing two
- 16 bit numbers hence 32BIT is set for receive */
- MCBSP_FSETS(RCR1, RWDLEN1, 32BIT);
+ /* Function below sets the number of bits in word used by MSBSP (serial port) for
+ receives from AIC23 (audio port). We are using a 32 bit packet containing two
+ 16 bit numbers hence 32BIT is set for receive */
+ MCBSP_FSETS(RCR1, RWDLEN1, 32BIT);
- /* Configures interrupt to activate on each consecutive available 32 bits
- from Audio port hence an interrupt is generated for each L & R sample pair */
- MCBSP_FSETS(SPCR1, RINTM, FRM);
+ /* Configures interrupt to activate on each consecutive available 32 bits
+ from Audio port hence an interrupt is generated for each L & R sample pair */
+ MCBSP_FSETS(SPCR1, RINTM, FRM);
- /* These commands do the same thing as above but applied to data transfers to
- the audio port */
- MCBSP_FSETS(XCR1, XWDLEN1, 32BIT);
- MCBSP_FSETS(SPCR1, XINTM, FRM);
+ /* These commands do the same thing as above but applied to data transfers to
+ the audio port */
+ MCBSP_FSETS(XCR1, XWDLEN1, 32BIT);
+ MCBSP_FSETS(SPCR1, XINTM, FRM);
}
-/********************************** init_HWI() **************************************/
+/********************************** init_HWI() **************************************/
void init_HWI(void)
{
- IRQ_globalDisable(); // Globally disables interrupts
- IRQ_nmiEnable(); // Enables the NMI interrupt (used by the debugger)
- IRQ_map(IRQ_EVT_XINT1,4); // Maps an event to a physical interrupt
- IRQ_enable(IRQ_EVT_XINT1); // Enables the event
- IRQ_globalEnable(); // Globally enables interrupts
-
-}
+ IRQ_globalDisable(); // Globally disables interrupts
+ IRQ_nmiEnable(); // Enables the NMI interrupt (used by the debugger)
+ IRQ_map(IRQ_EVT_XINT1,4); // Maps an event to a physical interrupt
+ IRQ_enable(IRQ_EVT_XINT1); // Enables the event
+ IRQ_globalEnable(); // Globally enables interrupts
+}
//Populates the table with appropriate sine values
void sine_init(void)
{
- int i;
- for(i = 0; i < SINE_TABLE_SIZE; i++)
- {
- table[i] = sin(2 * PI * i / SINE_TABLE_SIZE);
- }
+ int i;
+ for(i = 0; i < SINE_TABLE_SIZE; i++)
+ {
+ table[i] = sin(2 * PI * i / SINE_TABLE_SIZE);
+ }
}
//Returns the sample according to the sampling frequency
float sinegen(void)
{
- unsigned sample_index = sine_phase_ind * sine_freq * SINE_TABLE_SIZE / sampling_freq;
- sample_index = sample_index % SINE_TABLE_SIZE;
- sine_phase_ind++;
- return table[sample_index];
+ unsigned sample_index = sine_phase_ind * sine_freq * SINE_TABLE_SIZE / sampling_freq;
+ sample_index = sample_index % SINE_TABLE_SIZE;
+ sine_phase_ind++;
+ return table[sample_index];
}
-/******************** INTERRUPT SERVICE ROUTINE ***********************/
+/******************** INTERRUPT SERVICE ROUTINE ***********************/
/********************************** Ex2 ***************************************/
void ISR_AIC(void)
{
- // temporary variable used to output values from function
- float wave_out, wave;
- sine_phase_ind = sine_phase_ind % sampling_freq;
- wave = sinegen();
- wave_out = wave < 0 ? wave : -wave;
+ // temporary variable used to output values from function
+ float wave_out, wave;
+ sine_phase_ind = sine_phase_ind % sampling_freq;
+ wave = sinegen();
+ wave_out = wave < 0 ? wave : -wave;
- mono_write_16Bit((short)(wave_out*32767));
+ mono_write_16Bit((short)(wave_out*32767));
}
/********************************** Ex1 ***************************************/
/*void ISR_AIC()
{
- short mono_out, mono_in;
- mono_in = mono_read_16Bit();
- mono_out = mono_in; //mono_in < 0 ? -mono_in : mono_in;
- mono_write_16Bit(mono_out);
+ short mono_out, mono_in;
+ mono_in = mono_read_16Bit();
+ mono_out = mono_in; //mono_in < 0 ? -mono_in : mono_in;
+ mono_write_16Bit(mono_out);
}
*/