#line 1 ".\\Main.c" .\Release\Main.doj: .\Main.c #line 1 ".\\ADDS_21161_EzKit.h" .\Release\Main.doj: .\ADDS_21161_EzKit.h int Setup_AD1836(); void Program_SPORT02_TDM_Registers(); void Program_SPORT02_DMA_Channels(); void Receive_Samples(); void Transmit_Samples(); void Init_AD1852_DACs(); void Setup_SDRAM(); void Setup_ADSP21161N(); void Blink_LED_Test( int interations ); extern float Left_Channel0; extern float Left_Channel1; extern float Left_Channel2; extern float Left_Channel3; extern float Right_Channel0; extern float Right_Channel1; extern float Right_Channel2; extern float Right_Channel3; extern float Left_Channel_SPDIF_rx; extern float Right_Channel_SPDIF_rx; extern float Left_Channel_In0; extern float Left_Channel_In1; extern float Right_Channel_In0; extern float Right_Channel_In1; extern float Left_Channel_SPDIF_rx; extern float Right_Channel_SPDIF_rx; extern float Left_Channel_Out0; extern float Left_Channel_Out1; extern float Left_Channel_Out2; extern float Right_Channel_Out0; extern float Right_Channel_Out1; extern float Right_Channel_Out2; extern float Left_Channel_AD1852; extern float Right_Channel_AD1852; #line 69 ".\\ADDS_21161_EzKit.h" #line 83 ".\\ADDS_21161_EzKit.h" #line 92 ".\\ADDS_21161_EzKit.h" #line 119 ".\\ADDS_21161_EzKit.h" #line 2 ".\\Main.c" #line 1 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" .\Release\Main.doj: D:\Programy\visaulDSP++\211xx\include\def21161.h #line 141 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 163 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 176 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 204 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 213 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 222 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 231 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 241 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 251 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 263 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 273 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 370 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 380 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 390 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 400 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 482 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 491 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 500 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 509 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 533 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 566 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 581 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 626 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 650 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 661 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 672 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 704 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 718 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 728 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 758 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 770 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 795 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 811 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 852 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 877 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 908 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 934 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 943 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 960 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 969 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 980 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 989 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 1033 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 1044 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 1075 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 1354 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 1425 "D:\\Programy\\visaulDSP++\\211xx\\include\\def21161.h" #line 3 ".\\Main.c" #line 1 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" .\Release\Main.doj: D:\Programy\visaulDSP++\211xx\include\signal.h #line 40 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" #line 86 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" #line 98 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" #line 110 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" #line 155 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" #line 212 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" #line 278 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" #line 289 "D:\\Programy\\visaulDSP++\\211xx\\include\\signal.h" typedef int sig_atomic_t; void (*signal(int _sig, void (*func)(int))) (int); void (*signalf(int _sig, void (*func)(int))) (int); void (*signals(int _sig, void (*func)(int))) (int); void (*signalcb(int _sig, void (*func)(int))) (int); void (*signalss(int _sig, void (*func)(int))) (int); void (*signalnsm(int _sig, void (*func)(int))) (int); void (*signalfnsm(int _sig, void (*func)(int))) (int); void (*signalsnsm(int _sig, void (*func)(int))) (int); void (*signalcbnsm(int _sig, void (*func)(int))) (int); void (*signalssnsm(int _sig, void (*func)(int))) (int); void (*interrupt(int _sig, void (*func)(int))) (int); void (*interruptf(int _sig, void (*func)(int))) (int); void (*interrupts(int _sig, void (*func)(int))) (int); void (*interruptcb(int _sig, void (*func)(int))) (int); void (*interruptss(int _sig, void (*func)(int))) (int); void (*interruptnsm(int _sig, void (*func)(int))) (int); void (*interruptfnsm(int _sig, void (*func)(int))) (int); void (*interruptsnsm(int _sig, void (*func)(int))) (int); void (*interruptcbnsm(int _sig, void (*func)(int))) (int); void (*interruptssnsm(int _sig, void (*func)(int))) (int); int raise(int); int raisensm(int); int clear_interrupt(int _sig); #line 4 ".\\Main.c" #line 1 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" .\Release\Main.doj: D:\Programy\visaulDSP++\211xx\include\math.h #pragma once #pragma system_header /* math.h */ #line 1 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" .\Release\Main.doj: D:\Programy\visaulDSP++\211xx\include\math_21xxx.h #pragma once #pragma system_header /* math_21xxx.h */ float alogf(float); float alog10f(float); long double alogd(long double); long double alog10d(long double); _Pragma("linkage_name _alogf") double alog(double); _Pragma("linkage_name _alog10f") double alog10(double); float cotf(float); float rsqrtf(float); _Pragma("linkage_name _cot") long double cotd(long double); _Pragma("linkage_name _rsqrt") long double rsqrtd(long double); _Pragma("linkage_name _cotf") double cot(double); _Pragma("linkage_name _rsqrtf") double rsqrt(double); int isinff(float); int isnanf(float); _Pragma("linkage_name _isinf") int isinfd(long double); _Pragma("linkage_name _isnan") int isnand(long double); _Pragma("linkage_name _isinff") int isinf(double); _Pragma("linkage_name _isnanf") int isnan(double); #line 147 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 157 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" _Pragma("linkage_name _favg") long double favgd( long double, long double ); _Pragma("linkage_name _fclip") long double fclipd( long double, long double ); _Pragma("linkage_name _fmax") long double fmaxd( long double, long double ); _Pragma("linkage_name _fmin") long double fmind( long double, long double ); _Pragma("linkage_name _copysign") long double copysignd( long double, long double ); _Pragma("linkage_name _copysign") long double fsignd( long double, long double ); int __builtin_conv_fix(float); #line 184 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 195 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 206 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 217 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 228 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 240 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 481 "D:\\Programy\\visaulDSP++\\211xx\\include\\math_21xxx.h" #line 26 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" #line 38 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" float acosf(float); float asinf(float); float atanf(float); float atan2f(float, float); float cosf(float); float sinf(float); float tanf(float); float coshf(float); float sinhf(float); float tanhf(float); float expf(float); float ldexpf(float, int); float logf(float); float log10f(float); float __frexpfD(float, int __dm *); float __frexpfP(float, int __pm *); #line 80 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" float frexpf(float, int *); float __modffD(float, float __dm *); float __modffP(float, float __pm *); #line 105 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" float modff(float, float *); float powf(float, float); float sqrtf(float); float ceilf(float); float floorf(float); float fmodf(float, float); _Pragma("linkage_name _acos") long double acosd(long double); _Pragma("linkage_name _asin") long double asind(long double); _Pragma("linkage_name _atan") long double atand(long double); _Pragma("linkage_name _atan2") long double atan2d(long double, long double); _Pragma("linkage_name _cos") long double cosd(long double); _Pragma("linkage_name _sin") long double sind(long double); _Pragma("linkage_name _tan") long double tand(long double); _Pragma("linkage_name _cosh") long double coshd(long double); _Pragma("linkage_name _sinh") long double sinhd(long double); _Pragma("linkage_name _tanh") long double tanhd(long double); _Pragma("linkage_name _exp") long double expd(long double); _Pragma("linkage_name _ldexp") long double ldexpd(long double, int); _Pragma("linkage_name _log") long double logd(long double); _Pragma("linkage_name _log10") long double log10d(long double); _Pragma("linkage_name ___frexpD") long double __frexpdD(long double, int __dm *); _Pragma("linkage_name ___frexpP") long double __frexpdP(long double, int __pm *); #line 179 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" _Pragma("linkage_name _frexp") long double frexpd(long double, int *); _Pragma("linkage_name ___modfD") long double __modfdD(long double, long double __dm *); _Pragma("linkage_name ___modfP") long double __modfdP(long double, long double __pm *); #line 209 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" _Pragma("linkage_name _modf") long double modfd(long double, long double *); _Pragma("linkage_name _pow") long double powd(long double, long double); _Pragma("linkage_name _sqrt") long double sqrtd(long double); _Pragma("linkage_name _ceil") long double ceild(long double); _Pragma("linkage_name _fabs") long double fabsd(long double); _Pragma("linkage_name _floor") long double floord(long double); _Pragma("linkage_name _fmod") long double fmodd(long double, long double); _Pragma("linkage_name _acosf") double acos(double); _Pragma("linkage_name _asinf") double asin(double); _Pragma("linkage_name _atanf") double atan(double); _Pragma("linkage_name _atan2f") double atan2(double, double); _Pragma("linkage_name _cosf") double cos(double); _Pragma("linkage_name _sinf") double sin(double); _Pragma("linkage_name _tanf") double tan(double); _Pragma("linkage_name _coshf") double cosh(double); _Pragma("linkage_name _sinhf") double sinh(double); _Pragma("linkage_name _tanhf") double tanh(double); _Pragma("linkage_name _expf") double exp(double); _Pragma("linkage_name _ldexpf") double ldexp(double, int); _Pragma("linkage_name _logf") double log(double); _Pragma("linkage_name _log10f") double log10(double); _Pragma("linkage_name _frexpf") double frexp(double, int *); _Pragma("linkage_name ___frexpfD") double __frexpD(double, int __dm *); _Pragma("linkage_name ___frexpfP") double __frexpP(double, int __pm *); #line 307 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" _Pragma("linkage_name _modff") double modf(double, double *); _Pragma("linkage_name ___modffD") double __modfD(double, double __dm *); _Pragma("linkage_name ___modffP") double __modfP(double, double __pm *); #line 321 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" _Pragma("linkage_name _powf") double pow(double, double); _Pragma("linkage_name _sqrtf") double sqrt(double); _Pragma("linkage_name _ceilf") double ceil(double); #line 347 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" _Pragma("linkage_name _floorf") double floor(double); _Pragma("linkage_name _fmodf") double fmod(double, double); #line 814 "D:\\Programy\\visaulDSP++\\211xx\\include\\math.h" #line 5 ".\\Main.c" float * DelayLine; float Test_Wave[256]; int Index1 = 0; float phase = 0; float freq_ctrl = 0.05; int coef_ifir[36] = {112,1117,427,-753,422,476,-1091,544,899,-1729,641,1750,-2922,710,3962,-6558, 746,31245,31245,746,-6558,3962,710,-2922,1750,641,-1729,899,544,-1091,476,422,-753,427,1117,112}; int coef_ir[32] = {375,661,865,815,374,-475,-1564,-2529,-2883,-2154,-58,3355,7650,12065,15699, 17751,17751,15699,12065,7650,3355,-58,-2154,-2883,-2529,-1564,-475,374,815,865,661,375}; float taps_ifir[176]; float taps_ir[32]; int tap_ifir = 0; int tap_ir = 0; float result; float sample; float goertzel_coef[8] = {1.99155133, 1.98957126, 1.98738353, 1.98498837, 1.97497552, 1.96991047, 1.96243767, 1.95414554}; float q1[8]; float q2[8]; float r[8]; int sample_count = 0; int Index = 0; int PushB = 0; int Leds = 0; void Process_IRQ_0(int sig_int) { *(int*) 0x1b ^= 0x00000010; } void Process_IRQ_1(int sig_int) { *(int*) 0x1b ^= 0x00000020; } void Process_IRQ_2(int sig_int) { *(int*) 0x1b ^= 0x00000020|0x00000010; } void IFIR(void) { int i, tap; tap = tap_ifir; taps_ifir[tap] = sample / 60000; result = 0; for (i=0; i<36; i++) { result += taps_ifir[tap] * coef_ifir[i]; tap += 5; if (tap > 175) tap -= 176; } if (tap_ifir == 0) tap_ifir = 175; else tap_ifir--; tap = tap_ir; taps_ir[tap] = result / 100000; result = taps_ir[(tap++)&0x1F] * coef_ir[0]; result += taps_ir[(tap++)&0x1F] * coef_ir[1]; result += taps_ir[(tap++)&0x1F] * coef_ir[2]; result += taps_ir[(tap++)&0x1F] * coef_ir[3]; result += taps_ir[(tap++)&0x1F] * coef_ir[4]; result += taps_ir[(tap++)&0x1F] * coef_ir[5]; result += taps_ir[(tap++)&0x1F] * coef_ir[6]; result += taps_ir[(tap++)&0x1F] * coef_ir[7]; result += taps_ir[(tap++)&0x1F] * coef_ir[8]; result += taps_ir[(tap++)&0x1F] * coef_ir[9]; result += taps_ir[(tap++)&0x1F] * coef_ir[10]; result += taps_ir[(tap++)&0x1F] * coef_ir[11]; result += taps_ir[(tap++)&0x1F] * coef_ir[12]; result += taps_ir[(tap++)&0x1F] * coef_ir[13]; result += taps_ir[(tap++)&0x1F] * coef_ir[14]; result += taps_ir[(tap++)&0x1F] * coef_ir[15]; result += taps_ir[(tap++)&0x1F] * coef_ir[16]; result += taps_ir[(tap++)&0x1F] * coef_ir[17]; result += taps_ir[(tap++)&0x1F] * coef_ir[18]; result += taps_ir[(tap++)&0x1F] * coef_ir[19]; result += taps_ir[(tap++)&0x1F] * coef_ir[20]; result += taps_ir[(tap++)&0x1F] * coef_ir[21]; result += taps_ir[(tap++)&0x1F] * coef_ir[22]; result += taps_ir[(tap++)&0x1F] * coef_ir[23]; result += taps_ir[(tap++)&0x1F] * coef_ir[24]; result += taps_ir[(tap++)&0x1F] * coef_ir[25]; result += taps_ir[(tap++)&0x1F] * coef_ir[26]; result += taps_ir[(tap++)&0x1F] * coef_ir[27]; result += taps_ir[(tap++)&0x1F] * coef_ir[28]; result += taps_ir[(tap++)&0x1F] * coef_ir[29]; result += taps_ir[(tap++)&0x1F] * coef_ir[30]; result += taps_ir[(tap++)&0x1F] * coef_ir[31]; if (tap_ir == 0) tap_ir = 31; else tap_ir--; } void GOERTZEL(void) { int i, row, col, peak_count, max_index; float q0, maxval, t; _Bool dtmf_ok; if (sample_count < 1230) { sample_count++; for (i=0; i<8; i++) { q0 = goertzel_coef[i] * q1[i] - q2[i] + sample; q2[i] = q1[i]; q1[i] = q0; } } else { for (i=0; i<8; i++) { r[i] = (q1[i] * q1[i]) + (q2[i] * q2[i]) - (goertzel_coef[i] * q1[i] * q2[i]); q1[i] = 0; q2[i] = 0; } sample_count = 0; Leds = *(int*) 0x1b; Leds &= ~(0x00000001|0x00000002|0x00000004|0x00000008|0x00000010|0x00000020); row = 0; maxval = 0; for (i=0; i<4; i++) { if ( r[i] > maxval ) { maxval = r[i]; row = i; } } col = 4; maxval = 0; for (i=4; i<8; i++) { if ( r[i] > maxval ) { maxval = r[i]; col = i; } } if ((r[row] > 10) && (r[col] > 10)) { dtmf_ok = 1; if ( r[col] > r[row] ) { max_index = col; if ( r[row] < (r[col] * 0.158 ) ) dtmf_ok = 0; } else { max_index = row; if ( r[col] < (r[row] * 0.158 ) ) dtmf_ok = 0; } dtmf_ok = 1; #line 254 ".\\Main.c" t = r[max_index] * 0.200; peak_count = 0; for ( i=0; i<8; i++ ) { if ( r[i] > t ) peak_count++; } if ( peak_count > 2 ) dtmf_ok = 0; if (dtmf_ok) { if (col == 7) { Leds |= 0x00000010; Leds |= row; } else switch (row) { case 0: Leds |= (col-3); break; case 1: Leds |= col; break; case 2: Leds |= (col+3); break; case 3: switch (col) { case 4: Leds |= 0x0c; break; case 5: Leds |= 0; break; case 6: Leds |= 0x0f; break; } break; } Leds |= 0x00000020; } } *(int*) 0x1b = Leds; } } void Process_Samples( int sig_int) { Receive_Samples(); #line 312 ".\\Main.c" #line 336 ".\\Main.c" #line 345 ".\\Main.c" sample = Right_Channel_In1; GOERTZEL(); Left_Channel_Out0 = Right_Channel_Out0 = sample; Transmit_Samples(); } void main() { Setup_ADSP21161N(); Setup_SDRAM(); Setup_AD1836(); Program_SPORT02_TDM_Registers(); Program_SPORT02_DMA_Channels(); interruptf( 10, Process_Samples); Leds = *(int*) 0x1b; Leds &= ~(0x00000001|0x00000002|0x00000004|0x00000008|0x00000010|0x00000020); *(int*) 0x1b = Leds; *(int *) 0x1df |= 0x00000001; DelayLine = (float *) 0x00200000; for (;;) asm("idle;"); }