yep

Dependencies:   FastPWM2 mbed

Committer:
benkatz
Date:
Thu Dec 10 08:38:16 2015 +0000
Revision:
0:2d2fa105dbb0
hi mike;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benkatz 0:2d2fa105dbb0 1 #include "mbed.h"
benkatz 0:2d2fa105dbb0 2 #include "FastPWM.h"
benkatz 0:2d2fa105dbb0 3 AnalogIn ref_raw(A3);
benkatz 0:2d2fa105dbb0 4 Ticker read_adc;
benkatz 0:2d2fa105dbb0 5 AnalogOut output(A2);
benkatz 0:2d2fa105dbb0 6 FastPWM pwm_output(D3);
benkatz 0:2d2fa105dbb0 7 DigitalOut testing(D2);
benkatz 0:2d2fa105dbb0 8
benkatz 0:2d2fa105dbb0 9 double raw[5] = {0, 0, 0, 0, 0};
benkatz 0:2d2fa105dbb0 10 double ref[5] = {0, 0, 0, 0, 0};
benkatz 0:2d2fa105dbb0 11 /*
benkatz 0:2d2fa105dbb0 12 double raw;
benkatz 0:2d2fa105dbb0 13 double old_raw = 0;
benkatz 0:2d2fa105dbb0 14 double old_raw_2 = 0;
benkatz 0:2d2fa105dbb0 15 double old_raw_3 = 0;
benkatz 0:2d2fa105dbb0 16 double old_raw_4 = 0;
benkatz 0:2d2fa105dbb0 17 double ref;
benkatz 0:2d2fa105dbb0 18 double old_ref = 0;
benkatz 0:2d2fa105dbb0 19 double old_ref_2 = 0;
benkatz 0:2d2fa105dbb0 20 double old_ref_3 = 0;
benkatz 0:2d2fa105dbb0 21 double old_ref_4 = 0;
benkatz 0:2d2fa105dbb0 22 */
benkatz 0:2d2fa105dbb0 23 double b[5] = {0.000000018682489340283, 0.000000074729957361130, 0.000000112094936041696, 0.000000074729957361130, 0.000000018682489340283};
benkatz 0:2d2fa105dbb0 24 double a[5] = {1.000000000000000, -3.938430361819403, 5.817179417349660, -3.819034001378269, 0.940285244767841};
benkatz 0:2d2fa105dbb0 25
benkatz 0:2d2fa105dbb0 26 //double b[5] = {0.000144120224075409, 0.000576480896301634, 0.000864721344452452, 0.000576480896301634, 0.000144120224075409};
benkatz 0:2d2fa105dbb0 27 //double a[5] = {1.000000000000000, -3.384972728303897, 4.337061817421342, -2.489138293812547, 0.539355128280308};
benkatz 0:2d2fa105dbb0 28
benkatz 0:2d2fa105dbb0 29 void read_ref(void){
benkatz 0:2d2fa105dbb0 30 //ref = 3.3*(analog_value.read()-.5);
benkatz 0:2d2fa105dbb0 31 //output.write(ref_raw.read());
benkatz 0:2d2fa105dbb0 32 raw[0] = .85*(ref_raw.read()-.5)+.5;
benkatz 0:2d2fa105dbb0 33 // ref = raw;
benkatz 0:2d2fa105dbb0 34
benkatz 0:2d2fa105dbb0 35 ref[0] = b[0]*raw[0]+b[1]*raw[1]+b[2]*raw[2]+b[3]*raw[3]+b[4]*raw[4]-a[1]*ref[1]-a[2]*ref[2]-a[3]*ref[3]-a[4]*ref[4];
benkatz 0:2d2fa105dbb0 36
benkatz 0:2d2fa105dbb0 37 for (int i=4; i > 0; i--){
benkatz 0:2d2fa105dbb0 38 raw[i] = raw[i-1];
benkatz 0:2d2fa105dbb0 39 ref[i] = ref[i-1];
benkatz 0:2d2fa105dbb0 40 }
benkatz 0:2d2fa105dbb0 41
benkatz 0:2d2fa105dbb0 42 output.write(ref[0]);
benkatz 0:2d2fa105dbb0 43 pwm_output.write(ref[0]+.03);
benkatz 0:2d2fa105dbb0 44 //testing=!testing;
benkatz 0:2d2fa105dbb0 45 }
benkatz 0:2d2fa105dbb0 46
benkatz 0:2d2fa105dbb0 47 int main() {
benkatz 0:2d2fa105dbb0 48 testing=0;
benkatz 0:2d2fa105dbb0 49 pwm_output.period(.000025);
benkatz 0:2d2fa105dbb0 50 read_adc.attach(&read_ref, .000025);
benkatz 0:2d2fa105dbb0 51 testing = 0;
benkatz 0:2d2fa105dbb0 52 while(1) {
benkatz 0:2d2fa105dbb0 53 //ref_raw.read();
benkatz 0:2d2fa105dbb0 54 //pwm_output.write(.5);
benkatz 0:2d2fa105dbb0 55 //ref_raw.read();
benkatz 0:2d2fa105dbb0 56 //testing = !testing;
benkatz 0:2d2fa105dbb0 57 }
benkatz 0:2d2fa105dbb0 58 }