From fe922f612d886339faf7d5360990966e3f45ae2d Mon Sep 17 00:00:00 2001 From: ymherklotz Date: Tue, 27 Feb 2018 18:25:11 +0000 Subject: Finished direct form II --- lab5/RTDSP/.launches/RTDSP.launch | 6 +++--- lab5/RTDSP/intio.c | 27 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lab5/RTDSP/.launches/RTDSP.launch b/lab5/RTDSP/.launches/RTDSP.launch index 5ff2289..f76cfaa 100644 --- a/lab5/RTDSP/.launches/RTDSP.launch +++ b/lab5/RTDSP/.launches/RTDSP.launch @@ -12,8 +12,8 @@ - - + + @@ -21,6 +21,6 @@ - + diff --git a/lab5/RTDSP/intio.c b/lab5/RTDSP/intio.c index a083765..ec0d08d 100644 --- a/lab5/RTDSP/intio.c +++ b/lab5/RTDSP/intio.c @@ -46,7 +46,7 @@ #include "Matlab/coeff.txt" int N = sizeof(a)/sizeof(a[0]); -double* d; +double* v; /******************************* Global declarations ********************************/ @@ -80,8 +80,8 @@ void init_HWI(void); void ISR_AIC(void); /********************************** Main routine ************************************/ void main(){ - d = (double*)malloc(N * sizeof(double)); - memset(d, 0.0, N * sizeof(double)); + v = (double*)malloc(N * sizeof(double)); + memset(v, 0.0, N * sizeof(double)); // initialize board and the audio port init_hardware(); @@ -130,16 +130,21 @@ void init_HWI() /******************** INTERRUPT SERVICE ROUTINE ***********************/ void ISR_AIC() { - int i = 0; - short x_in = mono_read_16Bit(); - double y_out = d[0]; + int i; + double Y = 0.0; - //Shift the values - for (; i < N-2; ++i) { - d[i] = d[i+1] + b[i] * x_in - a[i] * y_out; + v[0] = mono_read_16Bit(); + + for (i = 1; i < N; ++i) { + v[0] -= a[i] * v[i]; + } + + for (i = N-1; i > 0; --i) { + Y += b[i] * v[i]; + v[i] = v[i-1]; } - d[N-1] = b[N-1] * x_in - a[N-1] * y_out; + Y += v[0] * b[0]; - mono_write_16Bit((short)d[0]); + mono_write_16Bit((short)Y); } -- cgit