Rtos API example

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "test_env.h"
00002 
00003 #if !DEVICE_ANALOGIN
00004   #error [NOT_SUPPORTED] AnalogIn not supported
00005 #endif
00006 
00007 #if !DEVICE_ANALOGOUT
00008   #error [NOT_SUPPORTED] AnalogOut not supported
00009 #endif
00010 
00011 #if defined(TARGET_K64F) || defined(TARGET_K66F) || defined (TARGET_K22F)
00012 AnalogIn in(A0);
00013 AnalogOut out(DAC0_OUT);
00014 
00015 #elif defined(TARGET_KL25Z)
00016 AnalogIn in(PTC2);
00017 AnalogOut out(PTE30);
00018 
00019 #elif defined(TARGET_KL05Z)
00020 AnalogIn in(PTB11);  // D9
00021 AnalogOut out(PTB1); // D1
00022 
00023 #elif defined(TARGET_KL46Z) || defined(TARGET_KL43Z)
00024 AnalogIn in(PTB0);
00025 AnalogOut out(PTE30);
00026 
00027 #elif defined(TARGET_KL82Z)
00028 AnalogIn in(A2);
00029 AnalogOut out(DAC0_OUT);
00030 
00031 #elif defined(TARGET_LPC1549)
00032 AnalogIn in(A0);
00033 AnalogOut out(D12); //D12 is P0_12, the DAC output pin
00034 
00035 // no pin to access DAC on these targets:
00036 //TARGET_DISCO_F746NG
00037 // No DAC on these targets:
00038 //TARGET_NUCLEO_F030R8
00039 //TARGET_NUCLEO_F070RB
00040 //TARGET_NUCLEO_F103RB
00041 //TARGET_NUCLEO_F401RE
00042 //TARGET_NUCLEO_F411RE
00043 #elif defined(TARGET_NUCLEO_F072RB) || \
00044       defined(TARGET_NUCLEO_F091RC) || \
00045       defined(TARGET_NUCLEO_F302R8) || \
00046       defined(TARGET_NUCLEO_F303RE) || \
00047       defined(TARGET_NUCLEO_F334R8) || \
00048       defined(TARGET_NUCLEO_F446RE) || \
00049       defined(TARGET_NUCLEO_L053R8) || \
00050       defined(TARGET_NUCLEO_L073RZ) || \
00051       defined(TARGET_NUCLEO_L476RG) || \
00052       defined(TARGET_NUCLEO_L152RE)
00053 AnalogIn in(A0);
00054 AnalogOut out(A2);
00055 
00056 #elif defined(TARGET_NUCLEO_F303K8)
00057 AnalogIn in(A0);
00058 AnalogOut out(A3);
00059 
00060 #elif defined(TARGET_DISCO_F769NI)
00061 AnalogIn in(A0);
00062 AnalogOut out(A1);
00063 
00064 #elif defined(TARGET_NUCLEO_F207ZG) || \
00065       defined(TARGET_NUCLEO_F746ZG) || \
00066       defined(TARGET_NUCLEO_F303ZE) || \
00067       defined(TARGET_NUCLEO_F410RB) || \
00068       defined(TARGET_NUCLEO_F446ZE) || \
00069       defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_DISCO_L475VG_IOT01A)
00070 AnalogIn in(A0);
00071 AnalogOut out(D13);
00072 
00073 #elif defined(TARGET_ARCH_MAX)
00074 AnalogIn in(PA_0);
00075 AnalogOut out(PA_4);
00076 
00077 #elif defined(TARGET_DISCO_L053C8) || \
00078       defined(TARGET_DISCO_F334C8)
00079 AnalogIn in(PA_1);
00080 AnalogOut out(PA_4);
00081 
00082 #elif defined(TARGET_DISCO_F407VG) || \
00083       defined(TARGET_DISCO_F469NI)
00084 AnalogIn in(PC_5);
00085 AnalogOut out(PA_4);
00086 
00087 #elif defined(TARGET_DISCO_L476VG)
00088 AnalogIn in(PA_0);
00089 AnalogOut out(PA_5);
00090 
00091 #elif defined(TARGET_DISCO_F429ZI)
00092 AnalogIn in(PC_3);
00093 AnalogOut out(PA_5);
00094 
00095 #elif defined(TARGET_MAX32600MBED)
00096 AnalogIn in(AIN_7P);
00097 AnalogOut out(AOUT_DO);
00098 
00099 #elif defined(TARGET_SAMD21J18A) ||  defined(TARGET_SAML21J18A)
00100 AnalogIn in(PA04);
00101 AnalogOut out(PA02);
00102 
00103 #elif defined(TARGET_SAMD21G18A)
00104 AnalogIn in(PB02);
00105 AnalogOut out(PA02);
00106 
00107 #else
00108 AnalogIn in(p17);
00109 AnalogOut out(p18);
00110 
00111 #endif
00112 
00113 #define ERROR_TOLLERANCE    0.05
00114 
00115 int main() {
00116     bool check = true;
00117 
00118     for (float out_value=0.0; out_value<1.1; out_value+=0.1) {
00119         out.write(out_value);
00120         wait(0.1);
00121 
00122         float in_value = in.read();
00123         float diff = fabs(out_value - in_value);
00124         if (diff > ERROR_TOLLERANCE) {
00125             check = false;
00126             printf("ERROR (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff);
00127         } else {
00128             printf("OK    (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff);
00129         }
00130     }
00131 
00132     notify_completion(check);
00133 }