faker 1968
/
Effector_110507
main.cpp@0:8e3468376286, 2011-05-07 (annotated)
- Committer:
- faker
- Date:
- Sat May 07 12:37:10 2011 +0000
- Revision:
- 0:8e3468376286
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
faker | 0:8e3468376286 | 1 | /*****************************************************/ |
faker | 0:8e3468376286 | 2 | /* MBED MULTI EFFECTOR */ |
faker | 0:8e3468376286 | 3 | /* */ |
faker | 0:8e3468376286 | 4 | /* */ |
faker | 0:8e3468376286 | 5 | /*****************************************************/ |
faker | 0:8e3468376286 | 6 | |
faker | 0:8e3468376286 | 7 | #include "mbed.h" |
faker | 0:8e3468376286 | 8 | #include "TextLCD.h" |
faker | 0:8e3468376286 | 9 | #include "R_Sw_Check.h" |
faker | 0:8e3468376286 | 10 | #include "Distotion_Unit.h" |
faker | 0:8e3468376286 | 11 | |
faker | 0:8e3468376286 | 12 | Ticker sampling; |
faker | 0:8e3468376286 | 13 | AnalogIn Ain(p17); |
faker | 0:8e3468376286 | 14 | AnalogOut Aout(p18); |
faker | 0:8e3468376286 | 15 | TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3) |
faker | 0:8e3468376286 | 16 | DigitalIn Rsw0A(p5); |
faker | 0:8e3468376286 | 17 | DigitalIn Rsw0B(p6); |
faker | 0:8e3468376286 | 18 | DigitalIn Rsw1A(p7); |
faker | 0:8e3468376286 | 19 | DigitalIn Rsw1B(p8); |
faker | 0:8e3468376286 | 20 | DigitalIn Rsw2A(p9); |
faker | 0:8e3468376286 | 21 | DigitalIn Rsw2B(p10); |
faker | 0:8e3468376286 | 22 | DigitalIn Rsw3A(p11); |
faker | 0:8e3468376286 | 23 | DigitalIn Rsw3B(p12); |
faker | 0:8e3468376286 | 24 | |
faker | 0:8e3468376286 | 25 | /*******************************/ |
faker | 0:8e3468376286 | 26 | /* For Test Signal */ |
faker | 0:8e3468376286 | 27 | /*******************************/ |
faker | 0:8e3468376286 | 28 | #define TEST_SIGNAL_ENABLE (0) // 1 : Internal SinWave for Debug |
faker | 0:8e3468376286 | 29 | #define TEST_SIGNAL_FREQ (1000.0) // Frequency [Hz] |
faker | 0:8e3468376286 | 30 | #define TEST_SIGNAL_AMP (30000.0) // Amplitude |
faker | 0:8e3468376286 | 31 | #define PAI (3.14159) |
faker | 0:8e3468376286 | 32 | |
faker | 0:8e3468376286 | 33 | /*******************************/ |
faker | 0:8e3468376286 | 34 | /* For ADC & DAC Setting */ |
faker | 0:8e3468376286 | 35 | /*******************************/ |
faker | 0:8e3468376286 | 36 | #define SAMPLING_TIME (25.0) // ADC Sampling Rate [us] |
faker | 0:8e3468376286 | 37 | |
faker | 0:8e3468376286 | 38 | volatile unsigned int *g_usiAd0cr, *g_usiAd0dr2; // ADC Reg |
faker | 0:8e3468376286 | 39 | unsigned int *g_usiDacr; // DAC Reg |
faker | 0:8e3468376286 | 40 | unsigned int g_usiFinalOut; |
faker | 0:8e3468376286 | 41 | int g_ssBuff[10]; |
faker | 0:8e3468376286 | 42 | float g_fTestWaveT; |
faker | 0:8e3468376286 | 43 | |
faker | 0:8e3468376286 | 44 | /*******************************/ |
faker | 0:8e3468376286 | 45 | /* Effect Process */ |
faker | 0:8e3468376286 | 46 | /*******************************/ |
faker | 0:8e3468376286 | 47 | void effectProcess() { |
faker | 0:8e3468376286 | 48 | // Line Out |
faker | 0:8e3468376286 | 49 | *g_usiDacr = g_usiFinalOut; |
faker | 0:8e3468376286 | 50 | // ADC Start |
faker | 0:8e3468376286 | 51 | *g_usiAd0cr = 0x01200204; |
faker | 0:8e3468376286 | 52 | |
faker | 0:8e3468376286 | 53 | #if (TEST_SIGNAL_ENABLE == 1) // Test Signal Sin Wave |
faker | 0:8e3468376286 | 54 | g_ssBuff[0] = TEST_SIGNAL_AMP * sin(g_fTestWaveT); |
faker | 0:8e3468376286 | 55 | g_fTestWaveT = g_fTestWaveT + 2.0 * PAI * SAMPLING_TIME * TEST_SIGNAL_FREQ / 1e6; |
faker | 0:8e3468376286 | 56 | if (g_fTestWaveT >= (2.0 * PAI))g_fTestWaveT = 0; |
faker | 0:8e3468376286 | 57 | #endif |
faker | 0:8e3468376286 | 58 | |
faker | 0:8e3468376286 | 59 | // |
faker | 0:8e3468376286 | 60 | // Effect Func(); |
faker | 0:8e3468376286 | 61 | // |
faker | 0:8e3468376286 | 62 | |
faker | 0:8e3468376286 | 63 | g_ssBuff[1] = distotion(g_ssBuff[0]); |
faker | 0:8e3468376286 | 64 | |
faker | 0:8e3468376286 | 65 | // |
faker | 0:8e3468376286 | 66 | // Effect Func(); |
faker | 0:8e3468376286 | 67 | // |
faker | 0:8e3468376286 | 68 | |
faker | 0:8e3468376286 | 69 | #if (TEST_SIGNAL_ENABLE == 0) |
faker | 0:8e3468376286 | 70 | while (1) { |
faker | 0:8e3468376286 | 71 | if ((*g_usiAd0dr2 & 0x80000000) != 0)break; // ADC Done ? |
faker | 0:8e3468376286 | 72 | } |
faker | 0:8e3468376286 | 73 | g_ssBuff[0] = (int)(*g_usiAd0dr2 & 0x0000FFF0) - 32768; |
faker | 0:8e3468376286 | 74 | #endif |
faker | 0:8e3468376286 | 75 | |
faker | 0:8e3468376286 | 76 | g_usiFinalOut = 0x00010000 | (g_ssBuff[1] + 32768); |
faker | 0:8e3468376286 | 77 | } |
faker | 0:8e3468376286 | 78 | |
faker | 0:8e3468376286 | 79 | |
faker | 0:8e3468376286 | 80 | /*******************************/ |
faker | 0:8e3468376286 | 81 | /* MAIN */ |
faker | 0:8e3468376286 | 82 | /*******************************/ |
faker | 0:8e3468376286 | 83 | int main() { |
faker | 0:8e3468376286 | 84 | |
faker | 0:8e3468376286 | 85 | int iParamSwPol[4]; |
faker | 0:8e3468376286 | 86 | |
faker | 0:8e3468376286 | 87 | // LCD INIT |
faker | 0:8e3468376286 | 88 | lcd.cls(); |
faker | 0:8e3468376286 | 89 | lcd.locate(0,0); |
faker | 0:8e3468376286 | 90 | lcd.printf("Dist Mode Type %d", g_distMode); |
faker | 0:8e3468376286 | 91 | lcd.locate(0,1); |
faker | 0:8e3468376286 | 92 | lcd.printf("Input Gain %4.1f", g_inputGain); |
faker | 0:8e3468376286 | 93 | lcd.locate(0,2); |
faker | 0:8e3468376286 | 94 | lcd.printf("Clip Level %6d", g_clipLevel); |
faker | 0:8e3468376286 | 95 | lcd.locate(0,3); |
faker | 0:8e3468376286 | 96 | lcd.printf("Output Gain %4.1f", g_outputGain); |
faker | 0:8e3468376286 | 97 | |
faker | 0:8e3468376286 | 98 | // ADC & DAC SETTING |
faker | 0:8e3468376286 | 99 | g_usiAd0cr = (unsigned int*)0x40034000; |
faker | 0:8e3468376286 | 100 | g_usiAd0dr2 = (unsigned int*)0x40034018; |
faker | 0:8e3468376286 | 101 | g_usiDacr = (unsigned int*)0x4008C000; |
faker | 0:8e3468376286 | 102 | |
faker | 0:8e3468376286 | 103 | // SAMPLING TIMER START |
faker | 0:8e3468376286 | 104 | sampling.attach_us(&effectProcess, SAMPLING_TIME); |
faker | 0:8e3468376286 | 105 | |
faker | 0:8e3468376286 | 106 | |
faker | 0:8e3468376286 | 107 | while (1) { |
faker | 0:8e3468376286 | 108 | |
faker | 0:8e3468376286 | 109 | // |
faker | 0:8e3468376286 | 110 | // Parameter Setting Func |
faker | 0:8e3468376286 | 111 | // |
faker | 0:8e3468376286 | 112 | |
faker | 0:8e3468376286 | 113 | switch(ucRotarySwPol(Rsw0A, Rsw0B, Rsw1A, Rsw1B, Rsw2A, Rsw2B, Rsw3A, Rsw3B, iParamSwPol)){ |
faker | 0:8e3468376286 | 114 | case 0: g_distMode = g_distMode + iParamSwPol[0]; |
faker | 0:8e3468376286 | 115 | if(g_distMode <= 0)g_distMode = 3; |
faker | 0:8e3468376286 | 116 | if(g_distMode > 3)g_distMode = 1; |
faker | 0:8e3468376286 | 117 | lcd.locate(0,0); |
faker | 0:8e3468376286 | 118 | lcd.printf(" "); |
faker | 0:8e3468376286 | 119 | lcd.locate(0,0); |
faker | 0:8e3468376286 | 120 | lcd.printf("Dist Mode Type %d", g_distMode); |
faker | 0:8e3468376286 | 121 | break; |
faker | 0:8e3468376286 | 122 | case 1: g_inputGain = g_inputGain + 0.5 * iParamSwPol[1]; |
faker | 0:8e3468376286 | 123 | lcd.locate(0,1); |
faker | 0:8e3468376286 | 124 | lcd.printf(" "); |
faker | 0:8e3468376286 | 125 | lcd.locate(0,1); |
faker | 0:8e3468376286 | 126 | lcd.printf("Input Gain %4.1f", g_inputGain); |
faker | 0:8e3468376286 | 127 | break; |
faker | 0:8e3468376286 | 128 | case 2: g_clipLevel = g_clipLevel + 1000 * iParamSwPol[2]; |
faker | 0:8e3468376286 | 129 | lcd.locate(0,2); |
faker | 0:8e3468376286 | 130 | lcd.printf(" "); |
faker | 0:8e3468376286 | 131 | lcd.locate(0,2); |
faker | 0:8e3468376286 | 132 | lcd.printf("Clip Level %6d", g_clipLevel); |
faker | 0:8e3468376286 | 133 | break; |
faker | 0:8e3468376286 | 134 | case 3: g_outputGain = g_outputGain + 0.5 * iParamSwPol[3]; |
faker | 0:8e3468376286 | 135 | lcd.locate(0,3); |
faker | 0:8e3468376286 | 136 | lcd.printf(" "); |
faker | 0:8e3468376286 | 137 | lcd.locate(0,3); |
faker | 0:8e3468376286 | 138 | lcd.printf("Output Gain %4.1f", g_outputGain); |
faker | 0:8e3468376286 | 139 | break; |
faker | 0:8e3468376286 | 140 | default:break; |
faker | 0:8e3468376286 | 141 | } |
faker | 0:8e3468376286 | 142 | |
faker | 0:8e3468376286 | 143 | // |
faker | 0:8e3468376286 | 144 | // Parameter Setting Func |
faker | 0:8e3468376286 | 145 | // |
faker | 0:8e3468376286 | 146 | |
faker | 0:8e3468376286 | 147 | } |
faker | 0:8e3468376286 | 148 | } |
faker | 0:8e3468376286 | 149 |