faker 1968
/
Effector_110507
main.cpp
- Committer:
- faker
- Date:
- 2011-05-07
- Revision:
- 0:8e3468376286
File content as of revision 0:8e3468376286:
/*****************************************************/ /* MBED MULTI EFFECTOR */ /* */ /* */ /*****************************************************/ #include "mbed.h" #include "TextLCD.h" #include "R_Sw_Check.h" #include "Distotion_Unit.h" Ticker sampling; AnalogIn Ain(p17); AnalogOut Aout(p18); TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3) DigitalIn Rsw0A(p5); DigitalIn Rsw0B(p6); DigitalIn Rsw1A(p7); DigitalIn Rsw1B(p8); DigitalIn Rsw2A(p9); DigitalIn Rsw2B(p10); DigitalIn Rsw3A(p11); DigitalIn Rsw3B(p12); /*******************************/ /* For Test Signal */ /*******************************/ #define TEST_SIGNAL_ENABLE (0) // 1 : Internal SinWave for Debug #define TEST_SIGNAL_FREQ (1000.0) // Frequency [Hz] #define TEST_SIGNAL_AMP (30000.0) // Amplitude #define PAI (3.14159) /*******************************/ /* For ADC & DAC Setting */ /*******************************/ #define SAMPLING_TIME (25.0) // ADC Sampling Rate [us] volatile unsigned int *g_usiAd0cr, *g_usiAd0dr2; // ADC Reg unsigned int *g_usiDacr; // DAC Reg unsigned int g_usiFinalOut; int g_ssBuff[10]; float g_fTestWaveT; /*******************************/ /* Effect Process */ /*******************************/ void effectProcess() { // Line Out *g_usiDacr = g_usiFinalOut; // ADC Start *g_usiAd0cr = 0x01200204; #if (TEST_SIGNAL_ENABLE == 1) // Test Signal Sin Wave g_ssBuff[0] = TEST_SIGNAL_AMP * sin(g_fTestWaveT); g_fTestWaveT = g_fTestWaveT + 2.0 * PAI * SAMPLING_TIME * TEST_SIGNAL_FREQ / 1e6; if (g_fTestWaveT >= (2.0 * PAI))g_fTestWaveT = 0; #endif // // Effect Func(); // g_ssBuff[1] = distotion(g_ssBuff[0]); // // Effect Func(); // #if (TEST_SIGNAL_ENABLE == 0) while (1) { if ((*g_usiAd0dr2 & 0x80000000) != 0)break; // ADC Done ? } g_ssBuff[0] = (int)(*g_usiAd0dr2 & 0x0000FFF0) - 32768; #endif g_usiFinalOut = 0x00010000 | (g_ssBuff[1] + 32768); } /*******************************/ /* MAIN */ /*******************************/ int main() { int iParamSwPol[4]; // LCD INIT lcd.cls(); lcd.locate(0,0); lcd.printf("Dist Mode Type %d", g_distMode); lcd.locate(0,1); lcd.printf("Input Gain %4.1f", g_inputGain); lcd.locate(0,2); lcd.printf("Clip Level %6d", g_clipLevel); lcd.locate(0,3); lcd.printf("Output Gain %4.1f", g_outputGain); // ADC & DAC SETTING g_usiAd0cr = (unsigned int*)0x40034000; g_usiAd0dr2 = (unsigned int*)0x40034018; g_usiDacr = (unsigned int*)0x4008C000; // SAMPLING TIMER START sampling.attach_us(&effectProcess, SAMPLING_TIME); while (1) { // // Parameter Setting Func // switch(ucRotarySwPol(Rsw0A, Rsw0B, Rsw1A, Rsw1B, Rsw2A, Rsw2B, Rsw3A, Rsw3B, iParamSwPol)){ case 0: g_distMode = g_distMode + iParamSwPol[0]; if(g_distMode <= 0)g_distMode = 3; if(g_distMode > 3)g_distMode = 1; lcd.locate(0,0); lcd.printf(" "); lcd.locate(0,0); lcd.printf("Dist Mode Type %d", g_distMode); break; case 1: g_inputGain = g_inputGain + 0.5 * iParamSwPol[1]; lcd.locate(0,1); lcd.printf(" "); lcd.locate(0,1); lcd.printf("Input Gain %4.1f", g_inputGain); break; case 2: g_clipLevel = g_clipLevel + 1000 * iParamSwPol[2]; lcd.locate(0,2); lcd.printf(" "); lcd.locate(0,2); lcd.printf("Clip Level %6d", g_clipLevel); break; case 3: g_outputGain = g_outputGain + 0.5 * iParamSwPol[3]; lcd.locate(0,3); lcd.printf(" "); lcd.locate(0,3); lcd.printf("Output Gain %4.1f", g_outputGain); break; default:break; } // // Parameter Setting Func // } }