Dependents: cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more
features/unsupported/tests/mbed/analog/main.cpp@0:b74591d5ab33, 2017-12-11 (annotated)
- Committer:
- be_bryan
- Date:
- Mon Dec 11 17:54:04 2017 +0000
- Revision:
- 0:b74591d5ab33
motor ++
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
be_bryan | 0:b74591d5ab33 | 1 | #include "test_env.h" |
be_bryan | 0:b74591d5ab33 | 2 | |
be_bryan | 0:b74591d5ab33 | 3 | #if !DEVICE_ANALOGIN |
be_bryan | 0:b74591d5ab33 | 4 | #error [NOT_SUPPORTED] AnalogIn not supported |
be_bryan | 0:b74591d5ab33 | 5 | #endif |
be_bryan | 0:b74591d5ab33 | 6 | |
be_bryan | 0:b74591d5ab33 | 7 | #if !DEVICE_ANALOGOUT |
be_bryan | 0:b74591d5ab33 | 8 | #error [NOT_SUPPORTED] AnalogOut not supported |
be_bryan | 0:b74591d5ab33 | 9 | #endif |
be_bryan | 0:b74591d5ab33 | 10 | |
be_bryan | 0:b74591d5ab33 | 11 | #if defined(TARGET_K64F) || defined(TARGET_K66F) || defined (TARGET_K22F) |
be_bryan | 0:b74591d5ab33 | 12 | AnalogIn in(A0); |
be_bryan | 0:b74591d5ab33 | 13 | AnalogOut out(DAC0_OUT); |
be_bryan | 0:b74591d5ab33 | 14 | |
be_bryan | 0:b74591d5ab33 | 15 | #elif defined(TARGET_KL25Z) |
be_bryan | 0:b74591d5ab33 | 16 | AnalogIn in(PTC2); |
be_bryan | 0:b74591d5ab33 | 17 | AnalogOut out(PTE30); |
be_bryan | 0:b74591d5ab33 | 18 | |
be_bryan | 0:b74591d5ab33 | 19 | #elif defined(TARGET_KL05Z) |
be_bryan | 0:b74591d5ab33 | 20 | AnalogIn in(PTB11); // D9 |
be_bryan | 0:b74591d5ab33 | 21 | AnalogOut out(PTB1); // D1 |
be_bryan | 0:b74591d5ab33 | 22 | |
be_bryan | 0:b74591d5ab33 | 23 | #elif defined(TARGET_KL46Z) || defined(TARGET_KL43Z) |
be_bryan | 0:b74591d5ab33 | 24 | AnalogIn in(PTB0); |
be_bryan | 0:b74591d5ab33 | 25 | AnalogOut out(PTE30); |
be_bryan | 0:b74591d5ab33 | 26 | |
be_bryan | 0:b74591d5ab33 | 27 | #elif defined(TARGET_KL82Z) |
be_bryan | 0:b74591d5ab33 | 28 | AnalogIn in(A2); |
be_bryan | 0:b74591d5ab33 | 29 | AnalogOut out(DAC0_OUT); |
be_bryan | 0:b74591d5ab33 | 30 | |
be_bryan | 0:b74591d5ab33 | 31 | #elif defined(TARGET_LPC1549) |
be_bryan | 0:b74591d5ab33 | 32 | AnalogIn in(A0); |
be_bryan | 0:b74591d5ab33 | 33 | AnalogOut out(D12); //D12 is P0_12, the DAC output pin |
be_bryan | 0:b74591d5ab33 | 34 | |
be_bryan | 0:b74591d5ab33 | 35 | // no pin to access DAC on these targets: |
be_bryan | 0:b74591d5ab33 | 36 | //TARGET_DISCO_F746NG |
be_bryan | 0:b74591d5ab33 | 37 | // No DAC on these targets: |
be_bryan | 0:b74591d5ab33 | 38 | //TARGET_NUCLEO_F030R8 |
be_bryan | 0:b74591d5ab33 | 39 | //TARGET_NUCLEO_F070RB |
be_bryan | 0:b74591d5ab33 | 40 | //TARGET_NUCLEO_F103RB |
be_bryan | 0:b74591d5ab33 | 41 | //TARGET_NUCLEO_F401RE |
be_bryan | 0:b74591d5ab33 | 42 | //TARGET_NUCLEO_F411RE |
be_bryan | 0:b74591d5ab33 | 43 | #elif defined(TARGET_NUCLEO_F072RB) || \ |
be_bryan | 0:b74591d5ab33 | 44 | defined(TARGET_NUCLEO_F091RC) || \ |
be_bryan | 0:b74591d5ab33 | 45 | defined(TARGET_NUCLEO_F302R8) || \ |
be_bryan | 0:b74591d5ab33 | 46 | defined(TARGET_NUCLEO_F303RE) || \ |
be_bryan | 0:b74591d5ab33 | 47 | defined(TARGET_NUCLEO_F334R8) || \ |
be_bryan | 0:b74591d5ab33 | 48 | defined(TARGET_NUCLEO_F446RE) || \ |
be_bryan | 0:b74591d5ab33 | 49 | defined(TARGET_NUCLEO_L053R8) || \ |
be_bryan | 0:b74591d5ab33 | 50 | defined(TARGET_NUCLEO_L073RZ) || \ |
be_bryan | 0:b74591d5ab33 | 51 | defined(TARGET_NUCLEO_L476RG) || \ |
be_bryan | 0:b74591d5ab33 | 52 | defined(TARGET_NUCLEO_L152RE) |
be_bryan | 0:b74591d5ab33 | 53 | AnalogIn in(A0); |
be_bryan | 0:b74591d5ab33 | 54 | AnalogOut out(A2); |
be_bryan | 0:b74591d5ab33 | 55 | |
be_bryan | 0:b74591d5ab33 | 56 | #elif defined(TARGET_NUCLEO_F303K8) |
be_bryan | 0:b74591d5ab33 | 57 | AnalogIn in(A0); |
be_bryan | 0:b74591d5ab33 | 58 | AnalogOut out(A3); |
be_bryan | 0:b74591d5ab33 | 59 | |
be_bryan | 0:b74591d5ab33 | 60 | #elif defined(TARGET_DISCO_F769NI) |
be_bryan | 0:b74591d5ab33 | 61 | AnalogIn in(A0); |
be_bryan | 0:b74591d5ab33 | 62 | AnalogOut out(A1); |
be_bryan | 0:b74591d5ab33 | 63 | |
be_bryan | 0:b74591d5ab33 | 64 | #elif defined(TARGET_NUCLEO_F207ZG) || \ |
be_bryan | 0:b74591d5ab33 | 65 | defined(TARGET_NUCLEO_F746ZG) || \ |
be_bryan | 0:b74591d5ab33 | 66 | defined(TARGET_NUCLEO_F303ZE) || \ |
be_bryan | 0:b74591d5ab33 | 67 | defined(TARGET_NUCLEO_F410RB) || \ |
be_bryan | 0:b74591d5ab33 | 68 | defined(TARGET_NUCLEO_F446ZE) || \ |
be_bryan | 0:b74591d5ab33 | 69 | defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_DISCO_L475VG_IOT01A) |
be_bryan | 0:b74591d5ab33 | 70 | AnalogIn in(A0); |
be_bryan | 0:b74591d5ab33 | 71 | AnalogOut out(D13); |
be_bryan | 0:b74591d5ab33 | 72 | |
be_bryan | 0:b74591d5ab33 | 73 | #elif defined(TARGET_ARCH_MAX) |
be_bryan | 0:b74591d5ab33 | 74 | AnalogIn in(PA_0); |
be_bryan | 0:b74591d5ab33 | 75 | AnalogOut out(PA_4); |
be_bryan | 0:b74591d5ab33 | 76 | |
be_bryan | 0:b74591d5ab33 | 77 | #elif defined(TARGET_DISCO_L053C8) || \ |
be_bryan | 0:b74591d5ab33 | 78 | defined(TARGET_DISCO_F334C8) |
be_bryan | 0:b74591d5ab33 | 79 | AnalogIn in(PA_1); |
be_bryan | 0:b74591d5ab33 | 80 | AnalogOut out(PA_4); |
be_bryan | 0:b74591d5ab33 | 81 | |
be_bryan | 0:b74591d5ab33 | 82 | #elif defined(TARGET_DISCO_F407VG) || \ |
be_bryan | 0:b74591d5ab33 | 83 | defined(TARGET_DISCO_F469NI) |
be_bryan | 0:b74591d5ab33 | 84 | AnalogIn in(PC_5); |
be_bryan | 0:b74591d5ab33 | 85 | AnalogOut out(PA_4); |
be_bryan | 0:b74591d5ab33 | 86 | |
be_bryan | 0:b74591d5ab33 | 87 | #elif defined(TARGET_DISCO_L476VG) |
be_bryan | 0:b74591d5ab33 | 88 | AnalogIn in(PA_0); |
be_bryan | 0:b74591d5ab33 | 89 | AnalogOut out(PA_5); |
be_bryan | 0:b74591d5ab33 | 90 | |
be_bryan | 0:b74591d5ab33 | 91 | #elif defined(TARGET_DISCO_F429ZI) |
be_bryan | 0:b74591d5ab33 | 92 | AnalogIn in(PC_3); |
be_bryan | 0:b74591d5ab33 | 93 | AnalogOut out(PA_5); |
be_bryan | 0:b74591d5ab33 | 94 | |
be_bryan | 0:b74591d5ab33 | 95 | #elif defined(TARGET_MAX32600MBED) |
be_bryan | 0:b74591d5ab33 | 96 | AnalogIn in(AIN_7P); |
be_bryan | 0:b74591d5ab33 | 97 | AnalogOut out(AOUT_DO); |
be_bryan | 0:b74591d5ab33 | 98 | |
be_bryan | 0:b74591d5ab33 | 99 | #elif defined(TARGET_SAMD21J18A) || defined(TARGET_SAML21J18A) |
be_bryan | 0:b74591d5ab33 | 100 | AnalogIn in(PA04); |
be_bryan | 0:b74591d5ab33 | 101 | AnalogOut out(PA02); |
be_bryan | 0:b74591d5ab33 | 102 | |
be_bryan | 0:b74591d5ab33 | 103 | #elif defined(TARGET_SAMD21G18A) |
be_bryan | 0:b74591d5ab33 | 104 | AnalogIn in(PB02); |
be_bryan | 0:b74591d5ab33 | 105 | AnalogOut out(PA02); |
be_bryan | 0:b74591d5ab33 | 106 | |
be_bryan | 0:b74591d5ab33 | 107 | #else |
be_bryan | 0:b74591d5ab33 | 108 | AnalogIn in(p17); |
be_bryan | 0:b74591d5ab33 | 109 | AnalogOut out(p18); |
be_bryan | 0:b74591d5ab33 | 110 | |
be_bryan | 0:b74591d5ab33 | 111 | #endif |
be_bryan | 0:b74591d5ab33 | 112 | |
be_bryan | 0:b74591d5ab33 | 113 | #define ERROR_TOLLERANCE 0.05 |
be_bryan | 0:b74591d5ab33 | 114 | |
be_bryan | 0:b74591d5ab33 | 115 | int main() { |
be_bryan | 0:b74591d5ab33 | 116 | bool check = true; |
be_bryan | 0:b74591d5ab33 | 117 | |
be_bryan | 0:b74591d5ab33 | 118 | for (float out_value=0.0; out_value<1.1; out_value+=0.1) { |
be_bryan | 0:b74591d5ab33 | 119 | out.write(out_value); |
be_bryan | 0:b74591d5ab33 | 120 | wait(0.1); |
be_bryan | 0:b74591d5ab33 | 121 | |
be_bryan | 0:b74591d5ab33 | 122 | float in_value = in.read(); |
be_bryan | 0:b74591d5ab33 | 123 | float diff = fabs(out_value - in_value); |
be_bryan | 0:b74591d5ab33 | 124 | if (diff > ERROR_TOLLERANCE) { |
be_bryan | 0:b74591d5ab33 | 125 | check = false; |
be_bryan | 0:b74591d5ab33 | 126 | printf("ERROR (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff); |
be_bryan | 0:b74591d5ab33 | 127 | } else { |
be_bryan | 0:b74591d5ab33 | 128 | printf("OK (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff); |
be_bryan | 0:b74591d5ab33 | 129 | } |
be_bryan | 0:b74591d5ab33 | 130 | } |
be_bryan | 0:b74591d5ab33 | 131 | |
be_bryan | 0:b74591d5ab33 | 132 | notify_completion(check); |
be_bryan | 0:b74591d5ab33 | 133 | } |