Ben Katz
/
DigitalSubCrossover
yep
main.cpp@0:2d2fa105dbb0, 2015-12-10 (annotated)
- Committer:
- benkatz
- Date:
- Thu Dec 10 08:38:16 2015 +0000
- Revision:
- 0:2d2fa105dbb0
hi mike;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |