Upload
theresa-greene
View
217
Download
3
Embed Size (px)
Citation preview
Home Audio System
Stephen Whitaker
March 2, 2009
Microcomputer Systems I
Dr. Kepuska
Home Audio System
Purpose Code
ISR Process Data
Demo
Home Audio SystemEX_INTERRUPT_HANDLER(Sport0_RX_ISR){...switch (vol){ case 0x00: //no LEDs Process_Datadown4(); //volume muted break; case 0x01: //1 LED Process_Datadown3(); //volume level -4 break; case 0x03: //2 LEDs Process_Datadown2(); //volume level -3 break; case 0x07: //3 LEDs Process_Datadown1(); //volume level -2 break; case 0x0f: //4 LEDs Process_Datadown(); //volume level -1 break; case 0x1f: //5 LEDs Process_Data(); //volume base level break; case 0x3f: //6 LEDs Process_Dataup(); //volume level +1 break; default: Process_Data(); //base volume level in case something goes wrong…}
Home Audio SystemISR.c
Home Audio SystemEX_INTERRUPT_HANDLER(Timer0_ISR){...if(vol==0x00)
{if((ucActive_LED = ucActive_LED >> 1) == 0x00) ucActive_LED = 0x20;//LEDs blink "backwards"
}if(vol==0x01){
if((ucActive_LED = ucActive_LED << 1) == 0x02) ucActive_LED = 0x01;//first LED blinks fowards}if(vol==0x03){
if((ucActive_LED = ucActive_LED << 1) == 0x04) ucActive_LED = 0x01;//first 2 LEDs blinks fowards
}if(vol==0x07){
if((ucActive_LED = ucActive_LED << 1) == 0x08) ucActive_LED = 0x01;//first 3 LEDs blinks fowards
}if(vol==0x0f){
if((ucActive_LED = ucActive_LED << 1) == 0x10) ucActive_LED = 0x01;//first 4 LEDs blinks fowards
}if(vol==0x1f){
if((ucActive_LED = ucActive_LED << 1) == 0x20) ucActive_LED = 0x01;//first 5 LEDs blinks fowards
}if(vol==0x3f){
if((ucActive_LED = ucActive_LED << 1) == 0x40) ucActive_LED = 0x01;//all 6 LEDs blinks fowards}//creation of safty bit so that there is always a blinking of LEDsif(ucActive_LED == 0){
ucActive_LED = 1;}
… }
Home Audio SystemISR.c cont.
Home Audio SystemEX_INTERRUPT_HANDLER(FlagA_ISR){… //button pf8 decreases volume
{ if(vol==0x3f)vol=0x1f;
else if(vol==0x1f)vol=0x0f;
else if(vol==0x0f)vol=0x07;
else if(vol==0x07)vol=0x03;
else if(vol==0x03)vol=0x01;
else if(vol==0x01)vol=0x00;
}//button pf9 increases volume
{ if(vol==0x00)vol=0x01;
else if(vol==0x01)vol=0x03;
else if(vol==0x03)vol=0x07;
else if(vol==0x07)vol=0x0f;
else if(vol==0x0f)vol=0x1f;
else if(vol==0x1f)vol=0x3f; }
Home Audio SystemISR.c cont.
//button pf10 changes low/high pass filters{ if (state <2)
++state;else state=0;
}//button pf11 turns off and on
{
FIO_ANOM_0311_FLAG_W(0x0800,pFIO_FLAG_C);if (dep <1)++dep;else dep=0;
}
}
Home Audio SystemHome Audio SystemProccess_data.cvoid Process_Data(void) //base volume{ iChannel0LeftOut = iChannel0LeftIn;
iChannel0RightOut = iChannel0RightIn;}void Process_Dataup(void) //volume level +1{ iChannel0LeftOut = iChannel0LeftIn*2;
iChannel0RightOut = iChannel0RightIn*2;}void Process_Datadown(void) //volume level -1{ const int BL = 8;const static float B[8] = {.9};
float yL_low=0;float yR_low=0;int counter_low;int i_low;static float xL_low[8]={0};static float xR_low[8]={0};for(i_low=BL-1;i_low>=0;i_low--){
xL_low[i_low+1]=xL_low[i_low];xR_low[i_low+1]=xR_low[i_low];
}xL_low[0]=(float)(iChannel0LeftIn<<8);xR_low[0]=(float)(iChannel0RightIn<<8);for(counter_low=0;counter_low<BL;counter_low++){
yL_low+=B[counter_low]*xL_low[counter_low];yR_low+=B[counter_low]*xR_low[counter_low];
}iChannel0LeftOut=(int)yL_low>>8;iChannel0RightOut=(int)yR_low>>8;}
void Process_Datadown1(void)//volume level -2{ const int BL = 8;const static float B[8] = {.7};
float yL_low=0;float yR_low=0;int counter_low;int i_low;static float
xL_low[8]={0};static float
xR_low[8]={0};for(i_low=BL-
1;i_low>=0;i_low--){ xL_low[i_low+1]=xL_low[i_low];
xR_low[i_low+1]=xR_low[i_low];}xL_low[0]=(float)(iChannel0LeftIn<<8);xR_low[0]=(float)(iChannel0RightIn<<8);for(counter_low=0;counter_low<BL;counter_low++){yL_low+=B[counter_low]*xL_low[counter_low];yR_low+=B[counter_low]*xR_low[counter_low];}iChannel0LeftOut=(int)yL_low>>8;iChannel0RightOut=(int)yR_low>>8;}
Home Audio SystemHome Audio SystemProccess_data.c cont.void Process_Datadown2(void) //volume level -3{
const int BL = 8;const static float B[8] = {.5};
float yL_low=0;float yR_low=0;int counter_low;int i_low;static float xL_low[8]={0};static float xR_low[8]={0};for(i_low=BL-1;i_low>=0;i_low--){
xL_low[i_low+1]=xL_low[i_low];
xR_low[i_low+1]=xR_low[i_low];}xL_low[0]=(float)
(iChannel0LeftIn<<8);xR_low[0]=(float)
(iChannel0RightIn<<8);
for(counter_low=0;counter_low<BL;counter_low++){
yL_low+=B[counter_low]*xL_low[counter_low];
yR_low+=B[counter_low]*xR_low[counter_low];}
iChannel0LeftOut=(int)yL_low>>8;
iChannel0RightOut=(int)yR_low>>8;}
void Process_Datadown3(void) //volume level -4{
const int BL = 8;const static float B[8] = {.3};
float yL_low=0;float yR_low=0;int counter_low;int i_low;static float xL_low[8]={0};static float xR_low[8]={0};for(i_low=BL-1;i_low>=0;i_low--){
xL_low[i_low+1]=xL_low[i_low];
xR_low[i_low+1]=xR_low[i_low];}xL_low[0]=(float)
(iChannel0LeftIn<<8);xR_low[0]=(float)
(iChannel0RightIn<<8);
for(counter_low=0;counter_low<BL;counter_low++){
yL_low+=B[counter_low]*xL_low[counter_low];yR_low+=B[counter_low]*xR_low[counter_low];
}iChannel0LeftOut=(int)yL_low>>8;
iChannel0RightOut=(int)yR_low>>8;}
void Process_Datadown4(void) //volume level -5{ iChannel0LeftOut = iChannel0LeftIn-iChannel0LeftIn;
iChannel0RightOut = iChannel0RightIn-iChannel0RightIn;}
Home Audio SystemHome Audio SystemProccess_data.c cont.void low(void) //lowpass{
const int BL = 101;const static float B[101] = {...};
float yL_low=0;float yR_low=0;int counter_low;int i_low;static float xL_low[101]={0};static float xR_low[101]={0};for(i_low=BL-1;i_low>=0;i_low--){
xL_low[i_low+1]=xL_low[i_low];
xR_low[i_low+1]=xR_low[i_low];}xL_low[0]=(float)
(iChannel0LeftIn<<8);xR_low[0]=(float)
(iChannel0RightIn<<8);
for(counter_low=0;counter_low<BL;counter_low++){
yL_low+=B[counter_low]*xL_low[counter_low];
yR_low+=B[counter_low]*xR_low[counter_low];}iChannel1LeftOut=(int)yL_low>>8;
iChannel1RightOut=(int)yR_low>>8;
};
void high(void) //highpass{
const int BL = 101;const float A[101] = {...};
float yL_low=0;float yR_low=0;int counter_low;int i_low;static float xL_low[101]={0};static float xR_low[101]={0};for(i_low=BL-1;i_low>=0;i_low--){
xL_low[i_low+1]=xL_low[i_low];
xR_low[i_low+1]=xR_low[i_low];}xL_low[0]=(float)
(iChannel0LeftIn<<8);xR_low[0]=(float)
(iChannel0RightIn<<8);
for(counter_low=0;counter_low<BL;counter_low++){
yL_low+=A[counter_low]*xL_low[counter_low];
yR_low+=A[counter_low]*xR_low[counter_low];}iChannel1LeftOut=(int)yL_low>>8;
iChannel1RightOut=(int)yR_low>>8;};
Home Audio System
Demo