Dependents:   cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more

Committer:
be_bryan
Date:
Mon Dec 11 17:54:04 2017 +0000
Revision:
0:b74591d5ab33
motor ++

Who changed what in which revision?

UserRevisionLine numberNew 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 }