Test program running on MAX32625MBED. Control through USB Serial commands using a terminal emulator such as teraterm or putty.

Dependencies:   MaximTinyTester CmdLine MAX541 USBDevice

Committer:
whismanoid
Date:
Tue Feb 11 01:16:34 2020 +0000
Revision:
52:607010f0c54e
Child:
53:3d5a3d241a5e
MAX11043 initial serial tester for investigation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 52:607010f0c54e 1 // /*******************************************************************************
whismanoid 52:607010f0c54e 2 // * Copyright (C) 2020 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 52:607010f0c54e 3 // *
whismanoid 52:607010f0c54e 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 52:607010f0c54e 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 52:607010f0c54e 6 // * to deal in the Software without restriction, including without limitation
whismanoid 52:607010f0c54e 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 52:607010f0c54e 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 52:607010f0c54e 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 52:607010f0c54e 10 // *
whismanoid 52:607010f0c54e 11 // * The above copyright notice and this permission notice shall be included
whismanoid 52:607010f0c54e 12 // * in all copies or substantial portions of the Software.
whismanoid 52:607010f0c54e 13 // *
whismanoid 52:607010f0c54e 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 52:607010f0c54e 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 52:607010f0c54e 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 52:607010f0c54e 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 52:607010f0c54e 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 52:607010f0c54e 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 52:607010f0c54e 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 52:607010f0c54e 21 // *
whismanoid 52:607010f0c54e 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 52:607010f0c54e 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 52:607010f0c54e 24 // * Products, Inc. Branding Policy.
whismanoid 52:607010f0c54e 25 // *
whismanoid 52:607010f0c54e 26 // * The mere transfer of this software does not imply any licenses
whismanoid 52:607010f0c54e 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 52:607010f0c54e 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 52:607010f0c54e 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 52:607010f0c54e 30 // * ownership rights.
whismanoid 52:607010f0c54e 31 // *******************************************************************************
whismanoid 52:607010f0c54e 32 // */
whismanoid 52:607010f0c54e 33 //---------- CODE GENERATOR: testMainCppCodeList
whismanoid 52:607010f0c54e 34 // CODE GENERATOR: example code includes
whismanoid 52:607010f0c54e 35
whismanoid 52:607010f0c54e 36 // example code includes
whismanoid 52:607010f0c54e 37 // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 52:607010f0c54e 38 #include "mbed.h"
whismanoid 52:607010f0c54e 39 // Platforms:
whismanoid 52:607010f0c54e 40 // - MAX32625MBED
whismanoid 52:607010f0c54e 41 // - supports mbed-os-5.11, requires USBDevice library
whismanoid 52:607010f0c54e 42 // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 52:607010f0c54e 43 // - remove max32630fthr library (if present)
whismanoid 52:607010f0c54e 44 // - remove MAX32620FTHR library (if present)
whismanoid 52:607010f0c54e 45 // - MAX32600MBED
whismanoid 52:607010f0c54e 46 // - remove max32630fthr library (if present)
whismanoid 52:607010f0c54e 47 // - remove MAX32620FTHR library (if present)
whismanoid 52:607010f0c54e 48 // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 52:607010f0c54e 49 // - NUCLEO_F446RE
whismanoid 52:607010f0c54e 50 // - remove USBDevice library
whismanoid 52:607010f0c54e 51 // - remove max32630fthr library (if present)
whismanoid 52:607010f0c54e 52 // - remove MAX32620FTHR library (if present)
whismanoid 52:607010f0c54e 53 // - NUCLEO_F401RE
whismanoid 52:607010f0c54e 54 // - remove USBDevice library
whismanoid 52:607010f0c54e 55 // - remove max32630fthr library (if present)
whismanoid 52:607010f0c54e 56 // - remove MAX32620FTHR library (if present)
whismanoid 52:607010f0c54e 57 // - MAX32630FTHR
whismanoid 52:607010f0c54e 58 // - #include "max32630fthr.h"
whismanoid 52:607010f0c54e 59 // - add http://os.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 52:607010f0c54e 60 // - remove MAX32620FTHR library (if present)
whismanoid 52:607010f0c54e 61 // - MAX32620FTHR
whismanoid 52:607010f0c54e 62 // - #include "MAX32620FTHR.h"
whismanoid 52:607010f0c54e 63 // - remove max32630fthr library (if present)
whismanoid 52:607010f0c54e 64 // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 52:607010f0c54e 65 // - not tested yet
whismanoid 52:607010f0c54e 66 // - MAX32625PICO
whismanoid 52:607010f0c54e 67 // - remove max32630fthr library (if present)
whismanoid 52:607010f0c54e 68 // - remove MAX32620FTHR library (if present)
whismanoid 52:607010f0c54e 69 // - not tested yet
whismanoid 52:607010f0c54e 70 //
whismanoid 52:607010f0c54e 71 // end Platform_Include_Boilerplate
whismanoid 52:607010f0c54e 72 #include "MAX11043.h"
whismanoid 52:607010f0c54e 73 #include "CmdLine.h"
whismanoid 52:607010f0c54e 74 #include "MaximTinyTester.h"
whismanoid 52:607010f0c54e 75
whismanoid 52:607010f0c54e 76 // optional: serial port
whismanoid 52:607010f0c54e 77 // note: some platforms such as Nucleo-F446RE do not support the USBSerial library.
whismanoid 52:607010f0c54e 78 // In those cases, remove the USBDevice lib from the project and rebuild.
whismanoid 52:607010f0c54e 79 #if defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 80 #include "USBSerial.h"
whismanoid 52:607010f0c54e 81 USBSerial serial; // virtual serial port over USB (DEV connector)
whismanoid 52:607010f0c54e 82 #elif defined(TARGET_MAX32630MBED)
whismanoid 52:607010f0c54e 83 #include "USBSerial.h"
whismanoid 52:607010f0c54e 84 USBSerial serial; // virtual serial port over USB (DEV connector)
whismanoid 52:607010f0c54e 85 #else
whismanoid 52:607010f0c54e 86 //#include "USBSerial.h"
whismanoid 52:607010f0c54e 87 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 52:607010f0c54e 88 #endif
whismanoid 52:607010f0c54e 89
whismanoid 52:607010f0c54e 90 void on_immediate_0x21(); // Unicode (U+0021) ! EXCLAMATION MARK
whismanoid 52:607010f0c54e 91 void on_immediate_0x7b(); // Unicode (U+007B) { LEFT CURLY BRACKET
whismanoid 52:607010f0c54e 92 void on_immediate_0x7d(); // Unicode (U+007D) } RIGHT CURLY BRACKET
whismanoid 52:607010f0c54e 93
whismanoid 52:607010f0c54e 94 #include "CmdLine.h"
whismanoid 52:607010f0c54e 95
whismanoid 52:607010f0c54e 96 # if HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 97 CmdLine cmdLine_DAPLINKserial(DAPLINKserial, "DAPLINK");
whismanoid 52:607010f0c54e 98 # endif // HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 99 CmdLine cmdLine_serial(serial, "serial");
whismanoid 52:607010f0c54e 100
whismanoid 52:607010f0c54e 101
whismanoid 52:607010f0c54e 102 //--------------------------------------------------
whismanoid 52:607010f0c54e 103
whismanoid 52:607010f0c54e 104
whismanoid 52:607010f0c54e 105 #if defined(TARGET)
whismanoid 52:607010f0c54e 106 // TARGET_NAME macros from targets/TARGET_Maxim/TARGET_MAX32625/device/mxc_device.h
whismanoid 52:607010f0c54e 107 // Create a string definition for the TARGET
whismanoid 52:607010f0c54e 108 #define STRING_ARG(arg) #arg
whismanoid 52:607010f0c54e 109 #define STRING_NAME(name) STRING_ARG(name)
whismanoid 52:607010f0c54e 110 #define TARGET_NAME STRING_NAME(TARGET)
whismanoid 52:607010f0c54e 111 #elif defined(TARGET_MAX32600)
whismanoid 52:607010f0c54e 112 #define TARGET_NAME "MAX32600"
whismanoid 52:607010f0c54e 113 #elif defined(TARGET_LPC1768)
whismanoid 52:607010f0c54e 114 #define TARGET_NAME "LPC1768"
whismanoid 52:607010f0c54e 115 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 52:607010f0c54e 116 #define TARGET_NAME "NUCLEO_F446RE"
whismanoid 52:607010f0c54e 117 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 52:607010f0c54e 118 #define TARGET_NAME "NUCLEO_F401RE"
whismanoid 52:607010f0c54e 119 #else
whismanoid 52:607010f0c54e 120 #error TARGET NOT DEFINED
whismanoid 52:607010f0c54e 121 #endif
whismanoid 52:607010f0c54e 122 #if defined(TARGET_MAX32630)
whismanoid 52:607010f0c54e 123 //--------------------------------------------------
whismanoid 52:607010f0c54e 124 // TARGET=MAX32630FTHR ARM Cortex-M4F 96MHz 2048kB Flash 512kB SRAM
whismanoid 52:607010f0c54e 125 // +-------------[microUSB]-------------+
whismanoid 52:607010f0c54e 126 // | J1 MAX32630FTHR J2 |
whismanoid 52:607010f0c54e 127 // ______ | [ ] RST GND [ ] |
whismanoid 52:607010f0c54e 128 // ______ | [ ] 3V3 BAT+[ ] |
whismanoid 52:607010f0c54e 129 // ______ | [ ] 1V8 reset SW1 |
whismanoid 52:607010f0c54e 130 // ______ | [ ] GND J4 J3 |
whismanoid 52:607010f0c54e 131 // analogIn0/4 | [a] AIN_0 1.2Vfs (bat) SYS [ ] | switched BAT+
whismanoid 52:607010f0c54e 132 // analogIn1/5 | [a] AIN_1 1.2Vfs PWR [ ] | external pwr btn
whismanoid 52:607010f0c54e 133 // analogIn2 | [a] AIN_2 1.2Vfs +5V VBUS [ ] | USB +5V power
whismanoid 52:607010f0c54e 134 // analogIn3 | [a] AIN_3 1.2Vfs 1-WIRE P4_0 [d] | D0 dig9
whismanoid 52:607010f0c54e 135 // (I2C2.SDA) | [d] P5_7 SDA2 SRN P5_6 [d] | D1 dig8
whismanoid 52:607010f0c54e 136 // (I2C2.SCL) | [d] P6_0 SCL2 SDIO3 P5_5 [d] | D2 dig7
whismanoid 52:607010f0c54e 137 // D13/SCLK | [s] P5_0 SCLK SDIO2 P5_4 [d] | D3 dig6
whismanoid 52:607010f0c54e 138 // D11/MOSI | [s] P5_1 MOSI SSEL P5_3 [d] | D4 dig5
whismanoid 52:607010f0c54e 139 // D12/MISO | [s] P5_2 MISO RTS P3_3 [d] | D5 dig4
whismanoid 52:607010f0c54e 140 // D10/CS | [s] P3_0 RX CTS P3_2 [d] | D6 dig3
whismanoid 52:607010f0c54e 141 // D9 dig0 | [d] P3_1 TX SCL P3_5 [d] | D7 dig2
whismanoid 52:607010f0c54e 142 // ______ | [ ] GND SDA P3_4 [d] | D8 dig1
whismanoid 52:607010f0c54e 143 // | |
whismanoid 52:607010f0c54e 144 // | XIP Flash MAX14690N |
whismanoid 52:607010f0c54e 145 // | XIP_SCLK P1_0 SDA2 P5_7 |
whismanoid 52:607010f0c54e 146 // | XIP_MOSI P1_1 SCL2 P6_0 |
whismanoid 52:607010f0c54e 147 // | XIP_MISO P1_2 PMIC_INIT P3_7 |
whismanoid 52:607010f0c54e 148 // | XIP_SSEL P1_3 MPC P2_7 |
whismanoid 52:607010f0c54e 149 // | XIP_DIO2 P1_4 MON AIN_0 |
whismanoid 52:607010f0c54e 150 // | XIP_DIO3 P1_5 |
whismanoid 52:607010f0c54e 151 // | |
whismanoid 52:607010f0c54e 152 // | PAN1326B MicroSD LED |
whismanoid 52:607010f0c54e 153 // | BT_RX P0_0 SD_SCLK P0_4 r P2_4 |
whismanoid 52:607010f0c54e 154 // | BT_TX P0_1 SD_MOSI P0_5 g P2_5 |
whismanoid 52:607010f0c54e 155 // | BT_CTS P0_2 SD_MISO P0_6 b P2_6 |
whismanoid 52:607010f0c54e 156 // | BT_RTS P0_3 SD_SSEL P0_7 |
whismanoid 52:607010f0c54e 157 // | BT_RST P1_6 DETECT P2_2 |
whismanoid 52:607010f0c54e 158 // | BT_CLK P1_7 SW2 P2_3 |
whismanoid 52:607010f0c54e 159 // +------------------------------------+
whismanoid 52:607010f0c54e 160 // MAX32630FTHR board has MAX14690 PMIC on I2C bus (P5_7 SDA, P6_0 SCL) at slave address 0101_000r 0x50 (or 0x28 for 7 MSbit address).
whismanoid 52:607010f0c54e 161 // MAX32630FTHR board has BMI160 accelerometer on I2C bus (P5_7 SDA, P6_0 SCL) at slave address 1101_000r 0xD0 (or 0x68 for 7 MSbit address).
whismanoid 52:607010f0c54e 162 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 163 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 164 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 165 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 166 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 167 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 168 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 169 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 52:607010f0c54e 170 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 52:607010f0c54e 171 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 52:607010f0c54e 172 // AIN_10 = x undefined?
whismanoid 52:607010f0c54e 173 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 174 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 175 //
whismanoid 52:607010f0c54e 176 #include "max32630fthr.h"
whismanoid 52:607010f0c54e 177 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 52:607010f0c54e 178 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 52:607010f0c54e 179 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 52:607010f0c54e 180 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 52:607010f0c54e 181 // Arduino connector
whismanoid 52:607010f0c54e 182 #ifndef A0
whismanoid 52:607010f0c54e 183 #define A0 AIN_0
whismanoid 52:607010f0c54e 184 #endif
whismanoid 52:607010f0c54e 185 #ifndef A1
whismanoid 52:607010f0c54e 186 #define A1 AIN_1
whismanoid 52:607010f0c54e 187 #endif
whismanoid 52:607010f0c54e 188 #ifndef A2
whismanoid 52:607010f0c54e 189 #define A2 AIN_2
whismanoid 52:607010f0c54e 190 #endif
whismanoid 52:607010f0c54e 191 #ifndef A3
whismanoid 52:607010f0c54e 192 #define A3 AIN_3
whismanoid 52:607010f0c54e 193 #endif
whismanoid 52:607010f0c54e 194 #ifndef D0
whismanoid 52:607010f0c54e 195 #define D0 P4_0
whismanoid 52:607010f0c54e 196 #endif
whismanoid 52:607010f0c54e 197 #ifndef D1
whismanoid 52:607010f0c54e 198 #define D1 P5_6
whismanoid 52:607010f0c54e 199 #endif
whismanoid 52:607010f0c54e 200 #ifndef D2
whismanoid 52:607010f0c54e 201 #define D2 P5_5
whismanoid 52:607010f0c54e 202 #endif
whismanoid 52:607010f0c54e 203 #ifndef D3
whismanoid 52:607010f0c54e 204 #define D3 P5_4
whismanoid 52:607010f0c54e 205 #endif
whismanoid 52:607010f0c54e 206 #ifndef D4
whismanoid 52:607010f0c54e 207 #define D4 P5_3
whismanoid 52:607010f0c54e 208 #endif
whismanoid 52:607010f0c54e 209 #ifndef D5
whismanoid 52:607010f0c54e 210 #define D5 P3_3
whismanoid 52:607010f0c54e 211 #endif
whismanoid 52:607010f0c54e 212 #ifndef D6
whismanoid 52:607010f0c54e 213 #define D6 P3_2
whismanoid 52:607010f0c54e 214 #endif
whismanoid 52:607010f0c54e 215 #ifndef D7
whismanoid 52:607010f0c54e 216 #define D7 P3_5
whismanoid 52:607010f0c54e 217 #endif
whismanoid 52:607010f0c54e 218 #ifndef D8
whismanoid 52:607010f0c54e 219 #define D8 P3_4
whismanoid 52:607010f0c54e 220 #endif
whismanoid 52:607010f0c54e 221 #ifndef D9
whismanoid 52:607010f0c54e 222 #define D9 P3_1
whismanoid 52:607010f0c54e 223 #endif
whismanoid 52:607010f0c54e 224 #ifndef D10
whismanoid 52:607010f0c54e 225 #define D10 P3_0
whismanoid 52:607010f0c54e 226 #endif
whismanoid 52:607010f0c54e 227 #ifndef D11
whismanoid 52:607010f0c54e 228 #define D11 P5_1
whismanoid 52:607010f0c54e 229 #endif
whismanoid 52:607010f0c54e 230 #ifndef D12
whismanoid 52:607010f0c54e 231 #define D12 P5_2
whismanoid 52:607010f0c54e 232 #endif
whismanoid 52:607010f0c54e 233 #ifndef D13
whismanoid 52:607010f0c54e 234 #define D13 P5_0
whismanoid 52:607010f0c54e 235 #endif
whismanoid 52:607010f0c54e 236 //--------------------------------------------------
whismanoid 52:607010f0c54e 237 #elif defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 238 //--------------------------------------------------
whismanoid 52:607010f0c54e 239 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 52:607010f0c54e 240 // +-------------------------------------+
whismanoid 52:607010f0c54e 241 // | MAX32625MBED Arduino UNO header |
whismanoid 52:607010f0c54e 242 // | |
whismanoid 52:607010f0c54e 243 // | A5/SCL[ ] | P1_7 dig15
whismanoid 52:607010f0c54e 244 // | A4/SDA[ ] | P1_6 dig14
whismanoid 52:607010f0c54e 245 // | AREF=N/C[ ] |
whismanoid 52:607010f0c54e 246 // | GND[ ] |
whismanoid 52:607010f0c54e 247 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 52:607010f0c54e 248 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 52:607010f0c54e 249 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 52:607010f0c54e 250 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 52:607010f0c54e 251 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 52:607010f0c54e 252 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 52:607010f0c54e 253 // | [ ]GND |
whismanoid 52:607010f0c54e 254 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 52:607010f0c54e 255 // | 6[ ]~| P0_6 dig6
whismanoid 52:607010f0c54e 256 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 52:607010f0c54e 257 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 52:607010f0c54e 258 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 52:607010f0c54e 259 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 52:607010f0c54e 260 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 52:607010f0c54e 261 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 52:607010f0c54e 262 // | [ ] [ ] [ ] |
whismanoid 52:607010f0c54e 263 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 52:607010f0c54e 264 // \_______________________/
whismanoid 52:607010f0c54e 265 //
whismanoid 52:607010f0c54e 266 // +------------------------+
whismanoid 52:607010f0c54e 267 // | |
whismanoid 52:607010f0c54e 268 // | MicroSD LED |
whismanoid 52:607010f0c54e 269 // | SD_SCLK P2_4 r P3_0 |
whismanoid 52:607010f0c54e 270 // | SD_MOSI P2_5 g P3_1 |
whismanoid 52:607010f0c54e 271 // | SD_MISO P2_6 b P3_2 |
whismanoid 52:607010f0c54e 272 // | SD_SSEL P2_7 y P3_3 |
whismanoid 52:607010f0c54e 273 // | |
whismanoid 52:607010f0c54e 274 // | DAPLINK BUTTONS |
whismanoid 52:607010f0c54e 275 // | TX P2_1 SW3 P2_3 |
whismanoid 52:607010f0c54e 276 // | RX P2_0 SW2 P2_2 |
whismanoid 52:607010f0c54e 277 // +------------------------+
whismanoid 52:607010f0c54e 278 //
whismanoid 52:607010f0c54e 279 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 280 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 281 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 282 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 283 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 284 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 285 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 286 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 52:607010f0c54e 287 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 52:607010f0c54e 288 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 52:607010f0c54e 289 // AIN_10 = x undefined?
whismanoid 52:607010f0c54e 290 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 291 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 292 //
whismanoid 52:607010f0c54e 293 //#include "max32625mbed.h" // ?
whismanoid 52:607010f0c54e 294 //MAX32625MBED mbed(MAX32625MBED::VIO_3V3); // ?
whismanoid 52:607010f0c54e 295 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 52:607010f0c54e 296 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 52:607010f0c54e 297 const float ADC_FULL_SCALE_VOLTAGE = 1.200; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 52:607010f0c54e 298 // Arduino connector
whismanoid 52:607010f0c54e 299 #ifndef A0
whismanoid 52:607010f0c54e 300 #define A0 AIN_0
whismanoid 52:607010f0c54e 301 #endif
whismanoid 52:607010f0c54e 302 #ifndef A1
whismanoid 52:607010f0c54e 303 #define A1 AIN_1
whismanoid 52:607010f0c54e 304 #endif
whismanoid 52:607010f0c54e 305 #ifndef A2
whismanoid 52:607010f0c54e 306 #define A2 AIN_2
whismanoid 52:607010f0c54e 307 #endif
whismanoid 52:607010f0c54e 308 #ifndef A3
whismanoid 52:607010f0c54e 309 #define A3 AIN_3
whismanoid 52:607010f0c54e 310 #endif
whismanoid 52:607010f0c54e 311 #ifndef D0
whismanoid 52:607010f0c54e 312 #define D0 P0_0
whismanoid 52:607010f0c54e 313 #endif
whismanoid 52:607010f0c54e 314 #ifndef D1
whismanoid 52:607010f0c54e 315 #define D1 P0_1
whismanoid 52:607010f0c54e 316 #endif
whismanoid 52:607010f0c54e 317 #ifndef D2
whismanoid 52:607010f0c54e 318 #define D2 P0_2
whismanoid 52:607010f0c54e 319 #endif
whismanoid 52:607010f0c54e 320 #ifndef D3
whismanoid 52:607010f0c54e 321 #define D3 P0_3
whismanoid 52:607010f0c54e 322 #endif
whismanoid 52:607010f0c54e 323 #ifndef D4
whismanoid 52:607010f0c54e 324 #define D4 P0_4
whismanoid 52:607010f0c54e 325 #endif
whismanoid 52:607010f0c54e 326 #ifndef D5
whismanoid 52:607010f0c54e 327 #define D5 P0_5
whismanoid 52:607010f0c54e 328 #endif
whismanoid 52:607010f0c54e 329 #ifndef D6
whismanoid 52:607010f0c54e 330 #define D6 P0_6
whismanoid 52:607010f0c54e 331 #endif
whismanoid 52:607010f0c54e 332 #ifndef D7
whismanoid 52:607010f0c54e 333 #define D7 P0_7
whismanoid 52:607010f0c54e 334 #endif
whismanoid 52:607010f0c54e 335 #ifndef D8
whismanoid 52:607010f0c54e 336 #define D8 P1_4
whismanoid 52:607010f0c54e 337 #endif
whismanoid 52:607010f0c54e 338 #ifndef D9
whismanoid 52:607010f0c54e 339 #define D9 P1_5
whismanoid 52:607010f0c54e 340 #endif
whismanoid 52:607010f0c54e 341 #ifndef D10
whismanoid 52:607010f0c54e 342 #define D10 P1_3
whismanoid 52:607010f0c54e 343 #endif
whismanoid 52:607010f0c54e 344 #ifndef D11
whismanoid 52:607010f0c54e 345 #define D11 P1_1
whismanoid 52:607010f0c54e 346 #endif
whismanoid 52:607010f0c54e 347 #ifndef D12
whismanoid 52:607010f0c54e 348 #define D12 P1_2
whismanoid 52:607010f0c54e 349 #endif
whismanoid 52:607010f0c54e 350 #ifndef D13
whismanoid 52:607010f0c54e 351 #define D13 P1_0
whismanoid 52:607010f0c54e 352 #endif
whismanoid 52:607010f0c54e 353 //--------------------------------------------------
whismanoid 52:607010f0c54e 354 #elif defined(TARGET_MAX32600)
whismanoid 52:607010f0c54e 355 // target MAX32600
whismanoid 52:607010f0c54e 356 //
whismanoid 52:607010f0c54e 357 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 52:607010f0c54e 358 const float ADC_FULL_SCALE_VOLTAGE = 1.500;
whismanoid 52:607010f0c54e 359 //
whismanoid 52:607010f0c54e 360 //--------------------------------------------------
whismanoid 52:607010f0c54e 361 #elif defined(TARGET_MAX32620FTHR)
whismanoid 52:607010f0c54e 362 #warning "TARGET_MAX32620FTHR not previously tested; need to define pins..."
whismanoid 52:607010f0c54e 363 #include "MAX32620FTHR.h"
whismanoid 52:607010f0c54e 364 // Initialize I/O voltages on MAX32620FTHR board
whismanoid 52:607010f0c54e 365 MAX32620FTHR fthr(MAX32620FTHR::VIO_3V3);
whismanoid 52:607010f0c54e 366 //#define USE_LEDS 0 ?
whismanoid 52:607010f0c54e 367 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 52:607010f0c54e 368 #warning "TARGET_MAX32620FTHR not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 52:607010f0c54e 369 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 52:607010f0c54e 370 //
whismanoid 52:607010f0c54e 371 //--------------------------------------------------
whismanoid 52:607010f0c54e 372 #elif defined(TARGET_MAX32625PICO)
whismanoid 52:607010f0c54e 373 #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 52:607010f0c54e 374 //#define USE_LEDS 0 ?
whismanoid 52:607010f0c54e 375 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 52:607010f0c54e 376 #warning "TARGET_MAX32625PICO not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 52:607010f0c54e 377 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 52:607010f0c54e 378 //
whismanoid 52:607010f0c54e 379 //--------------------------------------------------
whismanoid 52:607010f0c54e 380 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 52:607010f0c54e 381 // TODO1: target NUCLEO_F446RE
whismanoid 52:607010f0c54e 382 //
whismanoid 52:607010f0c54e 383 // USER_BUTTON PC13
whismanoid 52:607010f0c54e 384 // LED1 is shared with SPI_SCK on NUCLEO_F446RE PA_5, so don't use LED1.
whismanoid 52:607010f0c54e 385 #define USE_LEDS 0
whismanoid 52:607010f0c54e 386 // SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
whismanoid 52:607010f0c54e 387 // Serial serial(SERIAL_TX, SERIAL_RX);
whismanoid 52:607010f0c54e 388 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 52:607010f0c54e 389 const float ADC_FULL_SCALE_VOLTAGE = 3.300; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 52:607010f0c54e 390 //
whismanoid 52:607010f0c54e 391 //--------------------------------------------------
whismanoid 52:607010f0c54e 392 #elif defined(TARGET_LPC1768)
whismanoid 52:607010f0c54e 393 //--------------------------------------------------
whismanoid 52:607010f0c54e 394 // TARGET=LPC1768 ARM Cortex-M3 100 MHz 512kB flash 64kB SRAM
whismanoid 52:607010f0c54e 395 // +-------------[microUSB]-------------+
whismanoid 52:607010f0c54e 396 // ______ | [ ] GND +3.3V VOUT [ ] | ______
whismanoid 52:607010f0c54e 397 // ______ | [ ] 4.5V<VIN<9.0V +5.0V VU [ ] | ______
whismanoid 52:607010f0c54e 398 // ______ | [ ] VB USB.IF- [ ] | ______
whismanoid 52:607010f0c54e 399 // ______ | [ ] nR USB.IF+ [ ] | ______
whismanoid 52:607010f0c54e 400 // digitalInOut0 | [ ] p5 MOSI ETHERNET.RD- [ ] | ______
whismanoid 52:607010f0c54e 401 // digitalInOut1 | [ ] p6 MISO ETHERNET.RD+ [ ] | ______
whismanoid 52:607010f0c54e 402 // digitalInOut2 | [ ] p7 SCLK ETHERNET.TD- [ ] | ______
whismanoid 52:607010f0c54e 403 // digitalInOut3 | [ ] p8 ETHERNET.TD+ [ ] | ______
whismanoid 52:607010f0c54e 404 // digitalInOut4 | [ ] p9 TX SDA USB.D- [ ] | ______
whismanoid 52:607010f0c54e 405 // digitalInOut5 | [ ] p10 RX SCL USB.D+ [ ] | ______
whismanoid 52:607010f0c54e 406 // digitalInOut6 | [ ] p11 MOSI CAN-RD p30 [ ] | digitalInOut13
whismanoid 52:607010f0c54e 407 // digitalInOut7 | [ ] p12 MISO CAN-TD p29 [ ] | digitalInOut12
whismanoid 52:607010f0c54e 408 // digitalInOut8 | [ ] p13 TX SCLK SDA TX p28 [ ] | digitalInOut11
whismanoid 52:607010f0c54e 409 // digitalInOut9 | [ ] p14 RX SCL RX p27 [ ] | digitalInOut10
whismanoid 52:607010f0c54e 410 // analogIn0 | [ ] p15 AIN0 3.3Vfs PWM1 p26 [ ] | pwmDriver1
whismanoid 52:607010f0c54e 411 // analogIn1 | [ ] p16 AIN1 3.3Vfs PWM2 p25 [ ] | pwmDriver2
whismanoid 52:607010f0c54e 412 // analogIn2 | [ ] p17 AIN2 3.3Vfs PWM3 p24 [ ] | pwmDriver3
whismanoid 52:607010f0c54e 413 // analogIn3 | [ ] p18 AIN3 AOUT PWM4 p23 [ ] | pwmDriver4
whismanoid 52:607010f0c54e 414 // analogIn4 | [ ] p19 AIN4 3.3Vfs PWM5 p22 [ ] | pwmDriver5
whismanoid 52:607010f0c54e 415 // analogIn5 | [ ] p20 AIN5 3.3Vfs PWM6 p21 [ ] | pwmDriver6
whismanoid 52:607010f0c54e 416 // +------------------------------------+
whismanoid 52:607010f0c54e 417 // AIN6 = P0.3 = TGT_SBL_RXD?
whismanoid 52:607010f0c54e 418 // AIN7 = P0.2 = TGT_SBL_TXD?
whismanoid 52:607010f0c54e 419 //
whismanoid 52:607010f0c54e 420 //--------------------------------------------------
whismanoid 52:607010f0c54e 421 // LPC1768 board uses VREF = 3.300V +A3,3V thru L1 to bypass capacitor C14
whismanoid 52:607010f0c54e 422 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 52:607010f0c54e 423 const float ADC_FULL_SCALE_VOLTAGE = 3.300;
whismanoid 52:607010f0c54e 424 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 52:607010f0c54e 425 //--------------------------------------------------
whismanoid 52:607010f0c54e 426 // unknown target
whismanoid 52:607010f0c54e 427 //--------------------------------------------------
whismanoid 52:607010f0c54e 428 #endif // target definition
whismanoid 52:607010f0c54e 429
whismanoid 52:607010f0c54e 430
whismanoid 52:607010f0c54e 431
whismanoid 52:607010f0c54e 432 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 52:607010f0c54e 433 //--------------------------------------------------
whismanoid 52:607010f0c54e 434 // Declare the AnalogIn driver
whismanoid 52:607010f0c54e 435 // Optional analogIn support. If there is only one it should be analogIn1.
whismanoid 52:607010f0c54e 436 // A) analog input
whismanoid 52:607010f0c54e 437 #if defined(TARGET_MAX32630)
whismanoid 52:607010f0c54e 438 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 439 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 440 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 441 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 442 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 443 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 444 #define HAS_analogIn6 1
whismanoid 52:607010f0c54e 445 #define HAS_analogIn7 1
whismanoid 52:607010f0c54e 446 #define HAS_analogIn8 1
whismanoid 52:607010f0c54e 447 #define HAS_analogIn9 1
whismanoid 52:607010f0c54e 448 // #define HAS_analogIn10 0
whismanoid 52:607010f0c54e 449 // #define HAS_analogIn11 0
whismanoid 52:607010f0c54e 450 // #define HAS_analogIn12 0
whismanoid 52:607010f0c54e 451 // #define HAS_analogIn13 0
whismanoid 52:607010f0c54e 452 // #define HAS_analogIn14 0
whismanoid 52:607010f0c54e 453 // #define HAS_analogIn15 0
whismanoid 52:607010f0c54e 454 #if HAS_analogIn0
whismanoid 52:607010f0c54e 455 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 456 #endif
whismanoid 52:607010f0c54e 457 #if HAS_analogIn1
whismanoid 52:607010f0c54e 458 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 459 #endif
whismanoid 52:607010f0c54e 460 #if HAS_analogIn2
whismanoid 52:607010f0c54e 461 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 462 #endif
whismanoid 52:607010f0c54e 463 #if HAS_analogIn3
whismanoid 52:607010f0c54e 464 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 465 #endif
whismanoid 52:607010f0c54e 466 #if HAS_analogIn4
whismanoid 52:607010f0c54e 467 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 468 #endif
whismanoid 52:607010f0c54e 469 #if HAS_analogIn5
whismanoid 52:607010f0c54e 470 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 471 #endif
whismanoid 52:607010f0c54e 472 #if HAS_analogIn6
whismanoid 52:607010f0c54e 473 AnalogIn analogIn6(AIN_6); // TARGET_MAX32630 AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 474 #endif
whismanoid 52:607010f0c54e 475 #if HAS_analogIn7
whismanoid 52:607010f0c54e 476 AnalogIn analogIn7(AIN_7); // TARGET_MAX32630 AIN_7 = VDD18 fullscale is 1.2V
whismanoid 52:607010f0c54e 477 #endif
whismanoid 52:607010f0c54e 478 #if HAS_analogIn8
whismanoid 52:607010f0c54e 479 AnalogIn analogIn8(AIN_8); // TARGET_MAX32630 AIN_8 = VDD12 fullscale is 1.2V
whismanoid 52:607010f0c54e 480 #endif
whismanoid 52:607010f0c54e 481 #if HAS_analogIn9
whismanoid 52:607010f0c54e 482 AnalogIn analogIn9(AIN_9); // TARGET_MAX32630 AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 52:607010f0c54e 483 #endif
whismanoid 52:607010f0c54e 484 #if HAS_analogIn10
whismanoid 52:607010f0c54e 485 AnalogIn analogIn10(____); // TARGET_MAX32630 AIN_10 = x undefined?
whismanoid 52:607010f0c54e 486 #endif
whismanoid 52:607010f0c54e 487 #if HAS_analogIn11
whismanoid 52:607010f0c54e 488 AnalogIn analogIn11(____); // TARGET_MAX32630 AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 489 #endif
whismanoid 52:607010f0c54e 490 #if HAS_analogIn12
whismanoid 52:607010f0c54e 491 AnalogIn analogIn12(____); // TARGET_MAX32630 AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 492 #endif
whismanoid 52:607010f0c54e 493 #if HAS_analogIn13
whismanoid 52:607010f0c54e 494 AnalogIn analogIn13(____);
whismanoid 52:607010f0c54e 495 #endif
whismanoid 52:607010f0c54e 496 #if HAS_analogIn14
whismanoid 52:607010f0c54e 497 AnalogIn analogIn14(____);
whismanoid 52:607010f0c54e 498 #endif
whismanoid 52:607010f0c54e 499 #if HAS_analogIn15
whismanoid 52:607010f0c54e 500 AnalogIn analogIn15(____);
whismanoid 52:607010f0c54e 501 #endif
whismanoid 52:607010f0c54e 502 //--------------------------------------------------
whismanoid 52:607010f0c54e 503 #elif defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 504 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 505 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 506 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 507 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 508 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 509 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 510 #if HAS_analogIn0
whismanoid 52:607010f0c54e 511 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 512 #endif
whismanoid 52:607010f0c54e 513 #if HAS_analogIn1
whismanoid 52:607010f0c54e 514 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 515 #endif
whismanoid 52:607010f0c54e 516 #if HAS_analogIn2
whismanoid 52:607010f0c54e 517 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 518 #endif
whismanoid 52:607010f0c54e 519 #if HAS_analogIn3
whismanoid 52:607010f0c54e 520 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 521 #endif
whismanoid 52:607010f0c54e 522 #if HAS_analogIn4
whismanoid 52:607010f0c54e 523 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 524 #endif
whismanoid 52:607010f0c54e 525 #if HAS_analogIn5
whismanoid 52:607010f0c54e 526 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 527 #endif
whismanoid 52:607010f0c54e 528 //--------------------------------------------------
whismanoid 52:607010f0c54e 529 #elif defined(TARGET_MAX32620FTHR)
whismanoid 52:607010f0c54e 530 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 52:607010f0c54e 531 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 532 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 533 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 534 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 535 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 536 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 537 #define HAS_analogIn6 1
whismanoid 52:607010f0c54e 538 #define HAS_analogIn7 1
whismanoid 52:607010f0c54e 539 #define HAS_analogIn8 1
whismanoid 52:607010f0c54e 540 #define HAS_analogIn9 1
whismanoid 52:607010f0c54e 541 // #define HAS_analogIn10 0
whismanoid 52:607010f0c54e 542 // #define HAS_analogIn11 0
whismanoid 52:607010f0c54e 543 // #define HAS_analogIn12 0
whismanoid 52:607010f0c54e 544 // #define HAS_analogIn13 0
whismanoid 52:607010f0c54e 545 // #define HAS_analogIn14 0
whismanoid 52:607010f0c54e 546 // #define HAS_analogIn15 0
whismanoid 52:607010f0c54e 547 #if HAS_analogIn0
whismanoid 52:607010f0c54e 548 AnalogIn analogIn0(AIN_0); // TARGET_MAX32620FTHR J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 549 #endif
whismanoid 52:607010f0c54e 550 #if HAS_analogIn1
whismanoid 52:607010f0c54e 551 AnalogIn analogIn1(AIN_1); // TARGET_MAX32620FTHR J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 552 #endif
whismanoid 52:607010f0c54e 553 #if HAS_analogIn2
whismanoid 52:607010f0c54e 554 AnalogIn analogIn2(AIN_2); // TARGET_MAX32620FTHR J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 555 #endif
whismanoid 52:607010f0c54e 556 #if HAS_analogIn3
whismanoid 52:607010f0c54e 557 AnalogIn analogIn3(AIN_3); // TARGET_MAX32620FTHR J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 558 #endif
whismanoid 52:607010f0c54e 559 #if HAS_analogIn4
whismanoid 52:607010f0c54e 560 AnalogIn analogIn4(AIN_4); // TARGET_MAX32620FTHR J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 561 #endif
whismanoid 52:607010f0c54e 562 #if HAS_analogIn5
whismanoid 52:607010f0c54e 563 AnalogIn analogIn5(AIN_5); // TARGET_MAX32620FTHR J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 564 #endif
whismanoid 52:607010f0c54e 565 #if HAS_analogIn6
whismanoid 52:607010f0c54e 566 AnalogIn analogIn6(AIN_6); // TARGET_MAX32620FTHR AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 567 #endif
whismanoid 52:607010f0c54e 568 #if HAS_analogIn7
whismanoid 52:607010f0c54e 569 AnalogIn analogIn7(AIN_7); // TARGET_MAX32620FTHR AIN_7 = VDD18 fullscale is 1.2V
whismanoid 52:607010f0c54e 570 #endif
whismanoid 52:607010f0c54e 571 #if HAS_analogIn8
whismanoid 52:607010f0c54e 572 AnalogIn analogIn8(AIN_8); // TARGET_MAX32620FTHR AIN_8 = VDD12 fullscale is 1.2V
whismanoid 52:607010f0c54e 573 #endif
whismanoid 52:607010f0c54e 574 #if HAS_analogIn9
whismanoid 52:607010f0c54e 575 AnalogIn analogIn9(AIN_9); // TARGET_MAX32620FTHR AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 52:607010f0c54e 576 #endif
whismanoid 52:607010f0c54e 577 #if HAS_analogIn10
whismanoid 52:607010f0c54e 578 AnalogIn analogIn10(____); // TARGET_MAX32620FTHR AIN_10 = x undefined?
whismanoid 52:607010f0c54e 579 #endif
whismanoid 52:607010f0c54e 580 #if HAS_analogIn11
whismanoid 52:607010f0c54e 581 AnalogIn analogIn11(____); // TARGET_MAX32620FTHR AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 582 #endif
whismanoid 52:607010f0c54e 583 #if HAS_analogIn12
whismanoid 52:607010f0c54e 584 AnalogIn analogIn12(____); // TARGET_MAX32620FTHR AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 585 #endif
whismanoid 52:607010f0c54e 586 #if HAS_analogIn13
whismanoid 52:607010f0c54e 587 AnalogIn analogIn13(____);
whismanoid 52:607010f0c54e 588 #endif
whismanoid 52:607010f0c54e 589 #if HAS_analogIn14
whismanoid 52:607010f0c54e 590 AnalogIn analogIn14(____);
whismanoid 52:607010f0c54e 591 #endif
whismanoid 52:607010f0c54e 592 #if HAS_analogIn15
whismanoid 52:607010f0c54e 593 AnalogIn analogIn15(____);
whismanoid 52:607010f0c54e 594 #endif
whismanoid 52:607010f0c54e 595 //--------------------------------------------------
whismanoid 52:607010f0c54e 596 #elif defined(TARGET_MAX32625PICO)
whismanoid 52:607010f0c54e 597 #warning "TARGET_MAX32625PICO not previously tested; need to verify analogIn0..."
whismanoid 52:607010f0c54e 598 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 599 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 600 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 601 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 602 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 603 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 604 #if HAS_analogIn0
whismanoid 52:607010f0c54e 605 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 606 #endif
whismanoid 52:607010f0c54e 607 #if HAS_analogIn1
whismanoid 52:607010f0c54e 608 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 609 #endif
whismanoid 52:607010f0c54e 610 #if HAS_analogIn2
whismanoid 52:607010f0c54e 611 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 612 #endif
whismanoid 52:607010f0c54e 613 #if HAS_analogIn3
whismanoid 52:607010f0c54e 614 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 52:607010f0c54e 615 #endif
whismanoid 52:607010f0c54e 616 #if HAS_analogIn4
whismanoid 52:607010f0c54e 617 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 618 #endif
whismanoid 52:607010f0c54e 619 #if HAS_analogIn5
whismanoid 52:607010f0c54e 620 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 621 #endif
whismanoid 52:607010f0c54e 622 //--------------------------------------------------
whismanoid 52:607010f0c54e 623 #elif defined(TARGET_MAX32600)
whismanoid 52:607010f0c54e 624 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 625 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 626 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 627 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 628 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 629 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 630 #if HAS_analogIn0
whismanoid 52:607010f0c54e 631 AnalogIn analogIn0(A0);
whismanoid 52:607010f0c54e 632 #endif
whismanoid 52:607010f0c54e 633 #if HAS_analogIn1
whismanoid 52:607010f0c54e 634 AnalogIn analogIn1(A1);
whismanoid 52:607010f0c54e 635 #endif
whismanoid 52:607010f0c54e 636 #if HAS_analogIn2
whismanoid 52:607010f0c54e 637 AnalogIn analogIn2(A2);
whismanoid 52:607010f0c54e 638 #endif
whismanoid 52:607010f0c54e 639 #if HAS_analogIn3
whismanoid 52:607010f0c54e 640 AnalogIn analogIn3(A3);
whismanoid 52:607010f0c54e 641 #endif
whismanoid 52:607010f0c54e 642 #if HAS_analogIn4
whismanoid 52:607010f0c54e 643 AnalogIn analogIn4(A4);
whismanoid 52:607010f0c54e 644 #endif
whismanoid 52:607010f0c54e 645 #if HAS_analogIn5
whismanoid 52:607010f0c54e 646 AnalogIn analogIn5(A5);
whismanoid 52:607010f0c54e 647 #endif
whismanoid 52:607010f0c54e 648 //--------------------------------------------------
whismanoid 52:607010f0c54e 649 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 52:607010f0c54e 650 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 651 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 652 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 653 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 654 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 655 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 656 #if HAS_analogIn0
whismanoid 52:607010f0c54e 657 AnalogIn analogIn0(A0);
whismanoid 52:607010f0c54e 658 #endif
whismanoid 52:607010f0c54e 659 #if HAS_analogIn1
whismanoid 52:607010f0c54e 660 AnalogIn analogIn1(A1);
whismanoid 52:607010f0c54e 661 #endif
whismanoid 52:607010f0c54e 662 #if HAS_analogIn2
whismanoid 52:607010f0c54e 663 AnalogIn analogIn2(A2);
whismanoid 52:607010f0c54e 664 #endif
whismanoid 52:607010f0c54e 665 #if HAS_analogIn3
whismanoid 52:607010f0c54e 666 AnalogIn analogIn3(A3);
whismanoid 52:607010f0c54e 667 #endif
whismanoid 52:607010f0c54e 668 #if HAS_analogIn4
whismanoid 52:607010f0c54e 669 AnalogIn analogIn4(A4);
whismanoid 52:607010f0c54e 670 #endif
whismanoid 52:607010f0c54e 671 #if HAS_analogIn5
whismanoid 52:607010f0c54e 672 AnalogIn analogIn5(A5);
whismanoid 52:607010f0c54e 673 #endif
whismanoid 52:607010f0c54e 674 //--------------------------------------------------
whismanoid 52:607010f0c54e 675 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 52:607010f0c54e 676 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 677 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 678 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 679 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 680 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 681 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 682 #if HAS_analogIn0
whismanoid 52:607010f0c54e 683 AnalogIn analogIn0(A0);
whismanoid 52:607010f0c54e 684 #endif
whismanoid 52:607010f0c54e 685 #if HAS_analogIn1
whismanoid 52:607010f0c54e 686 AnalogIn analogIn1(A1);
whismanoid 52:607010f0c54e 687 #endif
whismanoid 52:607010f0c54e 688 #if HAS_analogIn2
whismanoid 52:607010f0c54e 689 AnalogIn analogIn2(A2);
whismanoid 52:607010f0c54e 690 #endif
whismanoid 52:607010f0c54e 691 #if HAS_analogIn3
whismanoid 52:607010f0c54e 692 AnalogIn analogIn3(A3);
whismanoid 52:607010f0c54e 693 #endif
whismanoid 52:607010f0c54e 694 #if HAS_analogIn4
whismanoid 52:607010f0c54e 695 AnalogIn analogIn4(A4);
whismanoid 52:607010f0c54e 696 #endif
whismanoid 52:607010f0c54e 697 #if HAS_analogIn5
whismanoid 52:607010f0c54e 698 AnalogIn analogIn5(A5);
whismanoid 52:607010f0c54e 699 #endif
whismanoid 52:607010f0c54e 700 //--------------------------------------------------
whismanoid 52:607010f0c54e 701 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 52:607010f0c54e 702 #elif defined(TARGET_LPC1768)
whismanoid 52:607010f0c54e 703 #define HAS_analogIn0 1
whismanoid 52:607010f0c54e 704 #define HAS_analogIn1 1
whismanoid 52:607010f0c54e 705 #define HAS_analogIn2 1
whismanoid 52:607010f0c54e 706 #define HAS_analogIn3 1
whismanoid 52:607010f0c54e 707 #define HAS_analogIn4 1
whismanoid 52:607010f0c54e 708 #define HAS_analogIn5 1
whismanoid 52:607010f0c54e 709 // #define HAS_analogIn6 1
whismanoid 52:607010f0c54e 710 // #define HAS_analogIn7 1
whismanoid 52:607010f0c54e 711 // #define HAS_analogIn8 1
whismanoid 52:607010f0c54e 712 // #define HAS_analogIn9 1
whismanoid 52:607010f0c54e 713 // #define HAS_analogIn10 1
whismanoid 52:607010f0c54e 714 // #define HAS_analogIn11 1
whismanoid 52:607010f0c54e 715 // #define HAS_analogIn12 1
whismanoid 52:607010f0c54e 716 // #define HAS_analogIn13 1
whismanoid 52:607010f0c54e 717 // #define HAS_analogIn14 1
whismanoid 52:607010f0c54e 718 // #define HAS_analogIn15 1
whismanoid 52:607010f0c54e 719 #if HAS_analogIn0
whismanoid 52:607010f0c54e 720 AnalogIn analogIn0(p15); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 52:607010f0c54e 721 #endif
whismanoid 52:607010f0c54e 722 #if HAS_analogIn1
whismanoid 52:607010f0c54e 723 AnalogIn analogIn1(p16); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 52:607010f0c54e 724 #endif
whismanoid 52:607010f0c54e 725 #if HAS_analogIn2
whismanoid 52:607010f0c54e 726 AnalogIn analogIn2(p17); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 52:607010f0c54e 727 #endif
whismanoid 52:607010f0c54e 728 #if HAS_analogIn3
whismanoid 52:607010f0c54e 729 AnalogIn analogIn3(p18); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 52:607010f0c54e 730 #endif
whismanoid 52:607010f0c54e 731 #if HAS_analogIn4
whismanoid 52:607010f0c54e 732 AnalogIn analogIn4(p19); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 52:607010f0c54e 733 #endif
whismanoid 52:607010f0c54e 734 #if HAS_analogIn5
whismanoid 52:607010f0c54e 735 AnalogIn analogIn5(p20); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 52:607010f0c54e 736 #endif
whismanoid 52:607010f0c54e 737 #if HAS_analogIn6
whismanoid 52:607010f0c54e 738 AnalogIn analogIn6(____);
whismanoid 52:607010f0c54e 739 #endif
whismanoid 52:607010f0c54e 740 #if HAS_analogIn7
whismanoid 52:607010f0c54e 741 AnalogIn analogIn7(____);
whismanoid 52:607010f0c54e 742 #endif
whismanoid 52:607010f0c54e 743 #if HAS_analogIn8
whismanoid 52:607010f0c54e 744 AnalogIn analogIn8(____);
whismanoid 52:607010f0c54e 745 #endif
whismanoid 52:607010f0c54e 746 #if HAS_analogIn9
whismanoid 52:607010f0c54e 747 AnalogIn analogIn9(____);
whismanoid 52:607010f0c54e 748 #endif
whismanoid 52:607010f0c54e 749 #if HAS_analogIn10
whismanoid 52:607010f0c54e 750 AnalogIn analogIn10(____);
whismanoid 52:607010f0c54e 751 #endif
whismanoid 52:607010f0c54e 752 #if HAS_analogIn11
whismanoid 52:607010f0c54e 753 AnalogIn analogIn11(____);
whismanoid 52:607010f0c54e 754 #endif
whismanoid 52:607010f0c54e 755 #if HAS_analogIn12
whismanoid 52:607010f0c54e 756 AnalogIn analogIn12(____);
whismanoid 52:607010f0c54e 757 #endif
whismanoid 52:607010f0c54e 758 #if HAS_analogIn13
whismanoid 52:607010f0c54e 759 AnalogIn analogIn13(____);
whismanoid 52:607010f0c54e 760 #endif
whismanoid 52:607010f0c54e 761 #if HAS_analogIn14
whismanoid 52:607010f0c54e 762 AnalogIn analogIn14(____);
whismanoid 52:607010f0c54e 763 #endif
whismanoid 52:607010f0c54e 764 #if HAS_analogIn15
whismanoid 52:607010f0c54e 765 AnalogIn analogIn15(____);
whismanoid 52:607010f0c54e 766 #endif
whismanoid 52:607010f0c54e 767 #else
whismanoid 52:607010f0c54e 768 // unknown target
whismanoid 52:607010f0c54e 769 #endif
whismanoid 52:607010f0c54e 770 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 52:607010f0c54e 771 #if HAS_analogIn0 || HAS_analogIn1 \
whismanoid 52:607010f0c54e 772 || HAS_analogIn2 || HAS_analogIn3 \
whismanoid 52:607010f0c54e 773 || HAS_analogIn4 || HAS_analogIn5 \
whismanoid 52:607010f0c54e 774 || HAS_analogIn6 || HAS_analogIn7 \
whismanoid 52:607010f0c54e 775 || HAS_analogIn8 || HAS_analogIn9 \
whismanoid 52:607010f0c54e 776 || HAS_analogIn10 || HAS_analogIn11 \
whismanoid 52:607010f0c54e 777 || HAS_analogIn12 || HAS_analogIn13 \
whismanoid 52:607010f0c54e 778 || HAS_analogIn14 || HAS_analogIn15
whismanoid 52:607010f0c54e 779 #define HAS_analogIns 1
whismanoid 52:607010f0c54e 780 #endif
whismanoid 52:607010f0c54e 781
whismanoid 52:607010f0c54e 782
whismanoid 52:607010f0c54e 783
whismanoid 52:607010f0c54e 784 // AnalogIn pin resource: search index
whismanoid 52:607010f0c54e 785 #if HAS_analogIns
whismanoid 52:607010f0c54e 786 AnalogIn& find_analogInPin(int cPinIndex)
whismanoid 52:607010f0c54e 787 {
whismanoid 52:607010f0c54e 788 switch (cPinIndex)
whismanoid 52:607010f0c54e 789 {
whismanoid 52:607010f0c54e 790 default: // default to the first defined analogIn pin
whismanoid 52:607010f0c54e 791 #if HAS_analogIn0
whismanoid 52:607010f0c54e 792 case '0': case 0x00: return analogIn0;
whismanoid 52:607010f0c54e 793 #endif
whismanoid 52:607010f0c54e 794 #if HAS_analogIn1
whismanoid 52:607010f0c54e 795 case '1': case 0x01: return analogIn1;
whismanoid 52:607010f0c54e 796 #endif
whismanoid 52:607010f0c54e 797 #if HAS_analogIn2
whismanoid 52:607010f0c54e 798 case '2': case 0x02: return analogIn2;
whismanoid 52:607010f0c54e 799 #endif
whismanoid 52:607010f0c54e 800 #if HAS_analogIn3
whismanoid 52:607010f0c54e 801 case '3': case 0x03: return analogIn3;
whismanoid 52:607010f0c54e 802 #endif
whismanoid 52:607010f0c54e 803 #if HAS_analogIn4
whismanoid 52:607010f0c54e 804 case '4': case 0x04: return analogIn4;
whismanoid 52:607010f0c54e 805 #endif
whismanoid 52:607010f0c54e 806 #if HAS_analogIn5
whismanoid 52:607010f0c54e 807 case '5': case 0x05: return analogIn5;
whismanoid 52:607010f0c54e 808 #endif
whismanoid 52:607010f0c54e 809 #if HAS_analogIn6
whismanoid 52:607010f0c54e 810 case '6': case 0x06: return analogIn6;
whismanoid 52:607010f0c54e 811 #endif
whismanoid 52:607010f0c54e 812 #if HAS_analogIn7
whismanoid 52:607010f0c54e 813 case '7': case 0x07: return analogIn7;
whismanoid 52:607010f0c54e 814 #endif
whismanoid 52:607010f0c54e 815 #if HAS_analogIn8
whismanoid 52:607010f0c54e 816 case '8': case 0x08: return analogIn8;
whismanoid 52:607010f0c54e 817 #endif
whismanoid 52:607010f0c54e 818 #if HAS_analogIn9
whismanoid 52:607010f0c54e 819 case '9': case 0x09: return analogIn9;
whismanoid 52:607010f0c54e 820 #endif
whismanoid 52:607010f0c54e 821 #if HAS_analogIn10
whismanoid 52:607010f0c54e 822 case 'a': case 0x0a: return analogIn10;
whismanoid 52:607010f0c54e 823 #endif
whismanoid 52:607010f0c54e 824 #if HAS_analogIn11
whismanoid 52:607010f0c54e 825 case 'b': case 0x0b: return analogIn11;
whismanoid 52:607010f0c54e 826 #endif
whismanoid 52:607010f0c54e 827 #if HAS_analogIn12
whismanoid 52:607010f0c54e 828 case 'c': case 0x0c: return analogIn12;
whismanoid 52:607010f0c54e 829 #endif
whismanoid 52:607010f0c54e 830 #if HAS_analogIn13
whismanoid 52:607010f0c54e 831 case 'd': case 0x0d: return analogIn13;
whismanoid 52:607010f0c54e 832 #endif
whismanoid 52:607010f0c54e 833 #if HAS_analogIn14
whismanoid 52:607010f0c54e 834 case 'e': case 0x0e: return analogIn14;
whismanoid 52:607010f0c54e 835 #endif
whismanoid 52:607010f0c54e 836 #if HAS_analogIn15
whismanoid 52:607010f0c54e 837 case 'f': case 0x0f: return analogIn15;
whismanoid 52:607010f0c54e 838 #endif
whismanoid 52:607010f0c54e 839 }
whismanoid 52:607010f0c54e 840 }
whismanoid 52:607010f0c54e 841 #endif
whismanoid 52:607010f0c54e 842
whismanoid 52:607010f0c54e 843 #if HAS_analogIns
whismanoid 52:607010f0c54e 844 const float analogInPin_fullScaleVoltage[] = {
whismanoid 52:607010f0c54e 845 # if defined(TARGET_MAX32630)
whismanoid 52:607010f0c54e 846 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 52:607010f0c54e 847 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 52:607010f0c54e 848 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 52:607010f0c54e 849 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 52:607010f0c54e 850 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 851 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 852 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 853 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 52:607010f0c54e 854 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 52:607010f0c54e 855 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 52:607010f0c54e 856 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 52:607010f0c54e 857 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 858 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 859 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 52:607010f0c54e 860 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 52:607010f0c54e 861 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 52:607010f0c54e 862 # elif defined(TARGET_MAX32620FTHR)
whismanoid 52:607010f0c54e 863 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 52:607010f0c54e 864 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 52:607010f0c54e 865 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 52:607010f0c54e 866 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 52:607010f0c54e 867 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 52:607010f0c54e 868 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 869 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 870 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 871 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 52:607010f0c54e 872 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 52:607010f0c54e 873 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 52:607010f0c54e 874 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 52:607010f0c54e 875 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 876 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 877 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 52:607010f0c54e 878 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 52:607010f0c54e 879 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 52:607010f0c54e 880 #elif defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 881 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn0 // fullscale is 1.2V
whismanoid 52:607010f0c54e 882 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn1 // fullscale is 1.2V
whismanoid 52:607010f0c54e 883 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn2 // fullscale is 1.2V
whismanoid 52:607010f0c54e 884 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn3 // fullscale is 1.2V
whismanoid 52:607010f0c54e 885 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 886 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 887 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 888 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 52:607010f0c54e 889 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 52:607010f0c54e 890 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 52:607010f0c54e 891 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 52:607010f0c54e 892 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 893 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 52:607010f0c54e 894 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 52:607010f0c54e 895 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 52:607010f0c54e 896 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 52:607010f0c54e 897 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 52:607010f0c54e 898 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 52:607010f0c54e 899 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 52:607010f0c54e 900 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 52:607010f0c54e 901 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 52:607010f0c54e 902 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 52:607010f0c54e 903 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 52:607010f0c54e 904 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 52:607010f0c54e 905 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 52:607010f0c54e 906 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 52:607010f0c54e 907 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 52:607010f0c54e 908 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 52:607010f0c54e 909 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 52:607010f0c54e 910 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 52:607010f0c54e 911 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 52:607010f0c54e 912 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 52:607010f0c54e 913 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 52:607010f0c54e 914 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 52:607010f0c54e 915 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 52:607010f0c54e 916 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 52:607010f0c54e 917 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 52:607010f0c54e 918 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 52:607010f0c54e 919 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 52:607010f0c54e 920 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 52:607010f0c54e 921 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 52:607010f0c54e 922 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 52:607010f0c54e 923 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 52:607010f0c54e 924 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 52:607010f0c54e 925 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 52:607010f0c54e 926 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 52:607010f0c54e 927 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 52:607010f0c54e 928 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 52:607010f0c54e 929 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 52:607010f0c54e 930 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 52:607010f0c54e 931 //#elif defined(TARGET_LPC1768)
whismanoid 52:607010f0c54e 932 #else
whismanoid 52:607010f0c54e 933 // unknown target
whismanoid 52:607010f0c54e 934 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 52:607010f0c54e 935 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 52:607010f0c54e 936 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 52:607010f0c54e 937 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 52:607010f0c54e 938 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 52:607010f0c54e 939 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 52:607010f0c54e 940 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 52:607010f0c54e 941 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 52:607010f0c54e 942 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 52:607010f0c54e 943 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 52:607010f0c54e 944 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 52:607010f0c54e 945 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 52:607010f0c54e 946 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 52:607010f0c54e 947 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 52:607010f0c54e 948 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 52:607010f0c54e 949 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 52:607010f0c54e 950 # endif
whismanoid 52:607010f0c54e 951 };
whismanoid 52:607010f0c54e 952 #endif
whismanoid 52:607010f0c54e 953
whismanoid 52:607010f0c54e 954
whismanoid 52:607010f0c54e 955
whismanoid 52:607010f0c54e 956
whismanoid 52:607010f0c54e 957 //--------------------------------------------------
whismanoid 52:607010f0c54e 958 // Option to use LEDs to show status
whismanoid 52:607010f0c54e 959 #ifndef USE_LEDS
whismanoid 52:607010f0c54e 960 #define USE_LEDS 1
whismanoid 52:607010f0c54e 961 #endif
whismanoid 52:607010f0c54e 962 #if USE_LEDS
whismanoid 52:607010f0c54e 963 #if defined(TARGET_MAX32630)
whismanoid 52:607010f0c54e 964 # define LED_ON 0
whismanoid 52:607010f0c54e 965 # define LED_OFF 1
whismanoid 52:607010f0c54e 966 //--------------------------------------------------
whismanoid 52:607010f0c54e 967 #elif defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 968 # define LED_ON 0
whismanoid 52:607010f0c54e 969 # define LED_OFF 1
whismanoid 52:607010f0c54e 970 //--------------------------------------------------
whismanoid 52:607010f0c54e 971 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 52:607010f0c54e 972 #elif defined(TARGET_LPC1768)
whismanoid 52:607010f0c54e 973 # define LED_ON 1
whismanoid 52:607010f0c54e 974 # define LED_OFF 0
whismanoid 52:607010f0c54e 975 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 52:607010f0c54e 976 // USE_LEDS with some platform other than MAX32630, MAX32625MBED, LPC1768
whismanoid 52:607010f0c54e 977 // bugfix for MAX32600MBED LED blink pattern: check if LED_ON/LED_OFF already defined
whismanoid 52:607010f0c54e 978 # ifndef LED_ON
whismanoid 52:607010f0c54e 979 # define LED_ON 0
whismanoid 52:607010f0c54e 980 # endif
whismanoid 52:607010f0c54e 981 # ifndef LED_OFF
whismanoid 52:607010f0c54e 982 # define LED_OFF 1
whismanoid 52:607010f0c54e 983 # endif
whismanoid 52:607010f0c54e 984 //# define LED_ON 1
whismanoid 52:607010f0c54e 985 //# define LED_OFF 0
whismanoid 52:607010f0c54e 986 #endif // target definition
whismanoid 52:607010f0c54e 987 DigitalOut led1(LED1, LED_OFF); // MAX32630FTHR: LED1 = LED_RED
whismanoid 52:607010f0c54e 988 DigitalOut led2(LED2, LED_OFF); // MAX32630FTHR: LED2 = LED_GREEN
whismanoid 52:607010f0c54e 989 DigitalOut led3(LED3, LED_OFF); // MAX32630FTHR: LED3 = LED_BLUE
whismanoid 52:607010f0c54e 990 DigitalOut led4(LED4, LED_OFF);
whismanoid 52:607010f0c54e 991 #else // USE_LEDS=0
whismanoid 52:607010f0c54e 992 // issue #41 support Nucleo_F446RE
whismanoid 52:607010f0c54e 993 // there are no LED indicators on the board, LED1 interferes with SPI;
whismanoid 52:607010f0c54e 994 // but we still need placeholders led1 led2 led3 led4.
whismanoid 52:607010f0c54e 995 // Declare DigitalOut led1 led2 led3 led4 targeting safe pins.
whismanoid 52:607010f0c54e 996 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 52:607010f0c54e 997 # define LED_ON 0
whismanoid 52:607010f0c54e 998 # define LED_OFF 1
whismanoid 52:607010f0c54e 999 DigitalOut led1(NC, LED_OFF);
whismanoid 52:607010f0c54e 1000 DigitalOut led2(NC, LED_OFF);
whismanoid 52:607010f0c54e 1001 DigitalOut led3(NC, LED_OFF);
whismanoid 52:607010f0c54e 1002 DigitalOut led4(NC, LED_OFF);
whismanoid 52:607010f0c54e 1003 #endif // USE_LEDS
whismanoid 52:607010f0c54e 1004 #define led1_RFailLED led1
whismanoid 52:607010f0c54e 1005 #define led2_GPassLED led2
whismanoid 52:607010f0c54e 1006 #define led3_BBusyLED led3
whismanoid 52:607010f0c54e 1007
whismanoid 52:607010f0c54e 1008 //--------------------------------------------------
whismanoid 52:607010f0c54e 1009
whismanoid 52:607010f0c54e 1010
whismanoid 52:607010f0c54e 1011 // example code board support
whismanoid 52:607010f0c54e 1012 //MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 52:607010f0c54e 1013 //DigitalOut rLED(LED1);
whismanoid 52:607010f0c54e 1014 //DigitalOut gLED(LED2);
whismanoid 52:607010f0c54e 1015 //DigitalOut bLED(LED3);
whismanoid 52:607010f0c54e 1016 //
whismanoid 52:607010f0c54e 1017 // Arduino "shield" connector port definitions (MAX32625MBED shown)
whismanoid 52:607010f0c54e 1018 #if defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 1019 #define A0 AIN_0
whismanoid 52:607010f0c54e 1020 #define A1 AIN_1
whismanoid 52:607010f0c54e 1021 #define A2 AIN_2
whismanoid 52:607010f0c54e 1022 #define A3 AIN_3
whismanoid 52:607010f0c54e 1023 #define D0 P0_0
whismanoid 52:607010f0c54e 1024 #define D1 P0_1
whismanoid 52:607010f0c54e 1025 #define D2 P0_2
whismanoid 52:607010f0c54e 1026 #define D3 P0_3
whismanoid 52:607010f0c54e 1027 #define D4 P0_4
whismanoid 52:607010f0c54e 1028 #define D5 P0_5
whismanoid 52:607010f0c54e 1029 #define D6 P0_6
whismanoid 52:607010f0c54e 1030 #define D7 P0_7
whismanoid 52:607010f0c54e 1031 #define D8 P1_4
whismanoid 52:607010f0c54e 1032 #define D9 P1_5
whismanoid 52:607010f0c54e 1033 #define D10 P1_3
whismanoid 52:607010f0c54e 1034 #define D11 P1_1
whismanoid 52:607010f0c54e 1035 #define D12 P1_2
whismanoid 52:607010f0c54e 1036 #define D13 P1_0
whismanoid 52:607010f0c54e 1037 #endif
whismanoid 52:607010f0c54e 1038
whismanoid 52:607010f0c54e 1039 // example code declare SPI interface
whismanoid 52:607010f0c54e 1040 #if defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 1041 SPI spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625MBED: P1_1 P1_2 P1_0 Arduino 10-pin header D11 D12 D13
whismanoid 52:607010f0c54e 1042 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 52:607010f0c54e 1043 #elif defined(TARGET_MAX32600MBED)
whismanoid 52:607010f0c54e 1044 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 52:607010f0c54e 1045 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 52:607010f0c54e 1046 #else
whismanoid 52:607010f0c54e 1047 SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 52:607010f0c54e 1048 DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 52:607010f0c54e 1049 #endif
whismanoid 52:607010f0c54e 1050
whismanoid 52:607010f0c54e 1051 // example code declare GPIO interface pins
whismanoid 52:607010f0c54e 1052 DigitalOut CONVRUN_pin(D9); // Digital Configuration Input to MAX11043 device
whismanoid 52:607010f0c54e 1053 DigitalOut SHDN_pin(D8); // Digital Configuration Input to MAX11043 device
whismanoid 52:607010f0c54e 1054 DigitalOut DACSTEP_pin(D7); // Digital Configuration Input to MAX11043 device
whismanoid 52:607010f0c54e 1055 DigitalOut UP_slash_DWNb_pin(D6); // Digital Configuration Input to MAX11043 device
whismanoid 52:607010f0c54e 1056 DigitalIn EOC_pin(D2); // Digital Event Output from MAX11043 device
whismanoid 52:607010f0c54e 1057 // example code declare device instance
whismanoid 52:607010f0c54e 1058 MAX11043 g_MAX11043_device(spi, spi_cs, CONVRUN_pin, SHDN_pin, DACSTEP_pin, UP_slash_DWNb_pin, EOC_pin, MAX11043::MAX11043_IC);
whismanoid 52:607010f0c54e 1059
whismanoid 52:607010f0c54e 1060
whismanoid 52:607010f0c54e 1061 //----------------------------------------
whismanoid 52:607010f0c54e 1062 // Global SPI options
whismanoid 52:607010f0c54e 1063 //
whismanoid 52:607010f0c54e 1064
whismanoid 52:607010f0c54e 1065 //----------------------------------------
whismanoid 52:607010f0c54e 1066 // Global I2C options
whismanoid 52:607010f0c54e 1067 //
whismanoid 52:607010f0c54e 1068
whismanoid 52:607010f0c54e 1069 #define APPLICATION_ArduinoPinsMonitor 1
whismanoid 52:607010f0c54e 1070
whismanoid 52:607010f0c54e 1071 //--------------------------------------------------
whismanoid 52:607010f0c54e 1072 // use BUTTON1 trigger some action
whismanoid 52:607010f0c54e 1073 #if defined(TARGET_MAX32630)
whismanoid 52:607010f0c54e 1074 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 52:607010f0c54e 1075 #define HAS_BUTTON2_DEMO 0
whismanoid 52:607010f0c54e 1076 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 52:607010f0c54e 1077 #elif defined(TARGET_MAX32625PICO)
whismanoid 52:607010f0c54e 1078 #warning "TARGET_MAX32625PICO not previously tested; need to define buttons..."
whismanoid 52:607010f0c54e 1079 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 52:607010f0c54e 1080 #define HAS_BUTTON2_DEMO 0
whismanoid 52:607010f0c54e 1081 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 52:607010f0c54e 1082 #elif defined(TARGET_MAX32625)
whismanoid 52:607010f0c54e 1083 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 52:607010f0c54e 1084 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 52:607010f0c54e 1085 #elif defined(TARGET_MAX32620FTHR)
whismanoid 52:607010f0c54e 1086 #warning "TARGET_MAX32620FTHR not previously tested; need to define buttons..."
whismanoid 52:607010f0c54e 1087 #define BUTTON1 SW1
whismanoid 52:607010f0c54e 1088 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 52:607010f0c54e 1089 #define HAS_BUTTON2_DEMO 0
whismanoid 52:607010f0c54e 1090 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 52:607010f0c54e 1091 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 52:607010f0c54e 1092 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 52:607010f0c54e 1093 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 52:607010f0c54e 1094 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 52:607010f0c54e 1095 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 52:607010f0c54e 1096 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 52:607010f0c54e 1097 #else
whismanoid 52:607010f0c54e 1098 #warning "target not previously tested; need to define buttons..."
whismanoid 52:607010f0c54e 1099 #endif
whismanoid 52:607010f0c54e 1100 //
whismanoid 52:607010f0c54e 1101 #ifndef HAS_BUTTON1_DEMO
whismanoid 52:607010f0c54e 1102 #define HAS_BUTTON1_DEMO 0
whismanoid 52:607010f0c54e 1103 #endif
whismanoid 52:607010f0c54e 1104 #ifndef HAS_BUTTON2_DEMO
whismanoid 52:607010f0c54e 1105 #define HAS_BUTTON2_DEMO 0
whismanoid 52:607010f0c54e 1106 #endif
whismanoid 52:607010f0c54e 1107 //
whismanoid 52:607010f0c54e 1108 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 52:607010f0c54e 1109 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 52:607010f0c54e 1110 #ifndef HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 52:607010f0c54e 1111 #define HAS_BUTTON1_DEMO_INTERRUPT_POLLING 1
whismanoid 52:607010f0c54e 1112 #endif
whismanoid 52:607010f0c54e 1113 //
whismanoid 52:607010f0c54e 1114 #ifndef HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1115 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 52:607010f0c54e 1116 #endif
whismanoid 52:607010f0c54e 1117 #ifndef HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1118 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 52:607010f0c54e 1119 #endif
whismanoid 52:607010f0c54e 1120 //
whismanoid 52:607010f0c54e 1121 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1122 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 52:607010f0c54e 1123 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 52:607010f0c54e 1124 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 52:607010f0c54e 1125 DigitalIn button1(BUTTON1);
whismanoid 52:607010f0c54e 1126 # else
whismanoid 52:607010f0c54e 1127 InterruptIn button1(BUTTON1);
whismanoid 52:607010f0c54e 1128 # endif
whismanoid 52:607010f0c54e 1129 #elif HAS_BUTTON1_DEMO
whismanoid 52:607010f0c54e 1130 DigitalIn button1(BUTTON1);
whismanoid 52:607010f0c54e 1131 #endif
whismanoid 52:607010f0c54e 1132 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1133 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 52:607010f0c54e 1134 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 52:607010f0c54e 1135 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 52:607010f0c54e 1136 DigitalIn button2(BUTTON2);
whismanoid 52:607010f0c54e 1137 # else
whismanoid 52:607010f0c54e 1138 InterruptIn button2(BUTTON2);
whismanoid 52:607010f0c54e 1139 # endif
whismanoid 52:607010f0c54e 1140 #elif HAS_BUTTON2_DEMO
whismanoid 52:607010f0c54e 1141 DigitalIn button2(BUTTON2);
whismanoid 52:607010f0c54e 1142 #endif
whismanoid 52:607010f0c54e 1143
whismanoid 52:607010f0c54e 1144 //--------------------------------------------------
whismanoid 52:607010f0c54e 1145 // When user presses button BUTTON1, perform self test
whismanoid 52:607010f0c54e 1146 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1147 void onButton1FallingEdge(void)
whismanoid 52:607010f0c54e 1148 {
whismanoid 52:607010f0c54e 1149 void SelfTest(CmdLine & cmdLine);
whismanoid 52:607010f0c54e 1150 SelfTest(cmdLine_serial);
whismanoid 52:607010f0c54e 1151 }
whismanoid 52:607010f0c54e 1152 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1153
whismanoid 52:607010f0c54e 1154 //--------------------------------------------------
whismanoid 52:607010f0c54e 1155 // When user presses button BUTTON2, perform demo configuration
whismanoid 52:607010f0c54e 1156 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1157 void onButton2FallingEdge(void)
whismanoid 52:607010f0c54e 1158 {
whismanoid 52:607010f0c54e 1159 // TBD demo configuration
whismanoid 52:607010f0c54e 1160 // TODO diagnostic LED
whismanoid 52:607010f0c54e 1161 }
whismanoid 52:607010f0c54e 1162 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1163
whismanoid 52:607010f0c54e 1164 //--------------------------------------------------
whismanoid 52:607010f0c54e 1165 void SelfTest(CmdLine & cmdLine)
whismanoid 52:607010f0c54e 1166 {
whismanoid 52:607010f0c54e 1167 //--------------------------------------------------
whismanoid 52:607010f0c54e 1168 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 52:607010f0c54e 1169 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 52:607010f0c54e 1170 MaximTinyTester tinyTester(cmdLine, analogIn4, analogIn5, analogIn2, analogIn3, analogIn0, analogIn4, led1_RFailLED, led2_GPassLED, led3_BBusyLED);
whismanoid 52:607010f0c54e 1171 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 52:607010f0c54e 1172 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 52:607010f0c54e 1173 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 52:607010f0c54e 1174 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 52:607010f0c54e 1175 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 52:607010f0c54e 1176 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 52:607010f0c54e 1177 // low range channels AIN0, AIN1, AIN2, AIN3
whismanoid 52:607010f0c54e 1178 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 52:607010f0c54e 1179 // Platform board uses simple analog inputs
whismanoid 52:607010f0c54e 1180 MaximTinyTester tinyTester(cmdLine, analogIn0, analogIn1, analogIn2, analogIn3, analogIn4, analogIn5, led1_RFailLED, led2_GPassLED, led3_BBusyLED);
whismanoid 52:607010f0c54e 1181 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 52:607010f0c54e 1182 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 52:607010f0c54e 1183 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 52:607010f0c54e 1184 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 52:607010f0c54e 1185 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 52:607010f0c54e 1186 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 52:607010f0c54e 1187 #endif
whismanoid 52:607010f0c54e 1188 tinyTester.clear();
whismanoid 52:607010f0c54e 1189
whismanoid 52:607010f0c54e 1190 // CODE GENERATOR: generate SelfTest based on function docstrings @test lines
whismanoid 52:607010f0c54e 1191
whismanoid 52:607010f0c54e 1192 //
whismanoid 52:607010f0c54e 1193 #if INJECT_SELFTEST_FAIL
whismanoid 52:607010f0c54e 1194 // Test of the pass/fail report mechanism
whismanoid 52:607010f0c54e 1195 tinyTester.FAIL();
whismanoid 52:607010f0c54e 1196 cmdLine.serial().print(F("injecting one false failure for test reporting"));
whismanoid 52:607010f0c54e 1197 #endif
whismanoid 52:607010f0c54e 1198 //
whismanoid 52:607010f0c54e 1199 // Report number of pass and number of fail test results
whismanoid 52:607010f0c54e 1200 tinyTester.Report_Summary();
whismanoid 52:607010f0c54e 1201 }
whismanoid 52:607010f0c54e 1202
whismanoid 52:607010f0c54e 1203
whismanoid 52:607010f0c54e 1204 //--------------------------------------------------
whismanoid 52:607010f0c54e 1205 inline void print_command_prompt()
whismanoid 52:607010f0c54e 1206 {
whismanoid 52:607010f0c54e 1207 cmdLine_serial.serial().printf("\r\n> ");
whismanoid 52:607010f0c54e 1208
whismanoid 52:607010f0c54e 1209 }
whismanoid 52:607010f0c54e 1210
whismanoid 52:607010f0c54e 1211
whismanoid 52:607010f0c54e 1212 //--------------------------------------------------
whismanoid 52:607010f0c54e 1213 void pinsMonitor_submenu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 52:607010f0c54e 1214 {
whismanoid 52:607010f0c54e 1215 // % diagnostic commands submenu
whismanoid 52:607010f0c54e 1216 // %Hpin -- digital output high
whismanoid 52:607010f0c54e 1217 // %Lpin -- digital output low
whismanoid 52:607010f0c54e 1218 // %?pin -- digital input
whismanoid 52:607010f0c54e 1219 // %A %Apin -- analog input
whismanoid 52:607010f0c54e 1220 // %Ppin df=xx -- pwm output
whismanoid 52:607010f0c54e 1221 // %Wpin -- measure high pulsewidth input in usec
whismanoid 52:607010f0c54e 1222 // %wpin -- measure low pulsewidth input in usec
whismanoid 52:607010f0c54e 1223 // %I... -- I2C diagnostics
whismanoid 52:607010f0c54e 1224 // %IP -- I2C probe
whismanoid 52:607010f0c54e 1225 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 52:607010f0c54e 1226 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 52:607010f0c54e 1227 // %IR ADDR=? RD=? -- read
whismanoid 52:607010f0c54e 1228 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 52:607010f0c54e 1229 // %S... -- SPI diagnostics
whismanoid 52:607010f0c54e 1230 // %SC sclk=1Mhz -- SPI configure
whismanoid 52:607010f0c54e 1231 // %SW -- write (write and read)
whismanoid 52:607010f0c54e 1232 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 52:607010f0c54e 1233 // A-Z,a-z,0-9 reserved for application use
whismanoid 52:607010f0c54e 1234 //
whismanoid 52:607010f0c54e 1235 char strPinIndex[3];
whismanoid 52:607010f0c54e 1236 strPinIndex[0] = cmdLine[2];
whismanoid 52:607010f0c54e 1237 strPinIndex[1] = cmdLine[3];
whismanoid 52:607010f0c54e 1238 strPinIndex[2] = '\0';
whismanoid 52:607010f0c54e 1239 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 52:607010f0c54e 1240 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 52:607010f0c54e 1241 //
whismanoid 52:607010f0c54e 1242 // get next character
whismanoid 52:607010f0c54e 1243 switch (cmdLine[1])
whismanoid 52:607010f0c54e 1244 {
whismanoid 52:607010f0c54e 1245 #if HAS_digitalInOuts
whismanoid 52:607010f0c54e 1246 case 'H': case 'h':
whismanoid 52:607010f0c54e 1247 {
whismanoid 52:607010f0c54e 1248 // %Hpin -- digital output high
whismanoid 52:607010f0c54e 1249 #if ARDUINO_STYLE
whismanoid 52:607010f0c54e 1250 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 52:607010f0c54e 1251 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 52:607010f0c54e 1252 #else
whismanoid 52:607010f0c54e 1253 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 52:607010f0c54e 1254 digitalInOutPin.output();
whismanoid 52:607010f0c54e 1255 digitalInOutPin.write(1);
whismanoid 52:607010f0c54e 1256 #endif
whismanoid 52:607010f0c54e 1257 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 52:607010f0c54e 1258 }
whismanoid 52:607010f0c54e 1259 break;
whismanoid 52:607010f0c54e 1260 case 'L': case 'l':
whismanoid 52:607010f0c54e 1261 {
whismanoid 52:607010f0c54e 1262 // %Lpin -- digital output low
whismanoid 52:607010f0c54e 1263 #if ARDUINO_STYLE
whismanoid 52:607010f0c54e 1264 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 52:607010f0c54e 1265 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 52:607010f0c54e 1266 #else
whismanoid 52:607010f0c54e 1267 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 52:607010f0c54e 1268 digitalInOutPin.output();
whismanoid 52:607010f0c54e 1269 digitalInOutPin.write(0);
whismanoid 52:607010f0c54e 1270 #endif
whismanoid 52:607010f0c54e 1271 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 52:607010f0c54e 1272 }
whismanoid 52:607010f0c54e 1273 break;
whismanoid 52:607010f0c54e 1274 case '?':
whismanoid 52:607010f0c54e 1275 {
whismanoid 52:607010f0c54e 1276 // %?pin -- digital input
whismanoid 52:607010f0c54e 1277 #if ARDUINO_STYLE
whismanoid 52:607010f0c54e 1278 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 52:607010f0c54e 1279 #else
whismanoid 52:607010f0c54e 1280 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 52:607010f0c54e 1281 digitalInOutPin.input();
whismanoid 52:607010f0c54e 1282 #endif
whismanoid 52:607010f0c54e 1283 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 52:607010f0c54e 1284 #if ARDUINO_STYLE
whismanoid 52:607010f0c54e 1285 int value = digitalRead(pinIndex);
whismanoid 52:607010f0c54e 1286 #else
whismanoid 52:607010f0c54e 1287 int value = digitalInOutPin.read();
whismanoid 52:607010f0c54e 1288 #endif
whismanoid 52:607010f0c54e 1289 cmdLine.serial().printf("%d ", value);
whismanoid 52:607010f0c54e 1290 }
whismanoid 52:607010f0c54e 1291 break;
whismanoid 52:607010f0c54e 1292 #endif
whismanoid 52:607010f0c54e 1293 //
whismanoid 52:607010f0c54e 1294 #if HAS_analogIns
whismanoid 52:607010f0c54e 1295 case 'A': case 'a':
whismanoid 52:607010f0c54e 1296 {
whismanoid 52:607010f0c54e 1297 // %A %Apin -- analog input
whismanoid 52:607010f0c54e 1298 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 52:607010f0c54e 1299 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 52:607010f0c54e 1300 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 52:607010f0c54e 1301 {
whismanoid 52:607010f0c54e 1302 int cPinIndex = '0' + pinIndex;
whismanoid 52:607010f0c54e 1303 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 52:607010f0c54e 1304 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 52:607010f0c54e 1305 float normValue_0_1 = analogInPin.read();
whismanoid 52:607010f0c54e 1306 //
whismanoid 52:607010f0c54e 1307 int pinIndexH = pinIndex + 4;
whismanoid 52:607010f0c54e 1308 int cPinIndexH = '0' + pinIndexH;
whismanoid 52:607010f0c54e 1309 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 52:607010f0c54e 1310 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 52:607010f0c54e 1311 float normValueH_0_1 = analogInPinH.read();
whismanoid 52:607010f0c54e 1312 //
whismanoid 52:607010f0c54e 1313 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV AIN%c = %7.3f%% = %1.3fV \r\n",
whismanoid 52:607010f0c54e 1314 cPinIndex,
whismanoid 52:607010f0c54e 1315 normValue_0_1 * 100.0,
whismanoid 52:607010f0c54e 1316 normValue_0_1 * adc_full_scale_voltage,
whismanoid 52:607010f0c54e 1317 cPinIndexH,
whismanoid 52:607010f0c54e 1318 normValueH_0_1 * 100.0,
whismanoid 52:607010f0c54e 1319 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 52:607010f0c54e 1320 );
whismanoid 52:607010f0c54e 1321 }
whismanoid 52:607010f0c54e 1322 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 52:607010f0c54e 1323 {
whismanoid 52:607010f0c54e 1324 int cPinIndex = '0' + pinIndex;
whismanoid 52:607010f0c54e 1325 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 52:607010f0c54e 1326 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 52:607010f0c54e 1327 float normValue_0_1 = analogInPin.read();
whismanoid 52:607010f0c54e 1328 //
whismanoid 52:607010f0c54e 1329 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 52:607010f0c54e 1330 cPinIndex,
whismanoid 52:607010f0c54e 1331 normValue_0_1 * 100.0,
whismanoid 52:607010f0c54e 1332 normValue_0_1 * adc_full_scale_voltage
whismanoid 52:607010f0c54e 1333 );
whismanoid 52:607010f0c54e 1334 }
whismanoid 52:607010f0c54e 1335 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 52:607010f0c54e 1336 // Platform board uses simple analog inputs
whismanoid 52:607010f0c54e 1337 // assume standard Arduino analog inputs A0-A5
whismanoid 52:607010f0c54e 1338 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 52:607010f0c54e 1339 {
whismanoid 52:607010f0c54e 1340 int cPinIndex = '0' + pinIndex;
whismanoid 52:607010f0c54e 1341 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 52:607010f0c54e 1342 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 52:607010f0c54e 1343 float normValue_0_1 = analogInPin.read();
whismanoid 52:607010f0c54e 1344 //
whismanoid 52:607010f0c54e 1345 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 52:607010f0c54e 1346 cPinIndex,
whismanoid 52:607010f0c54e 1347 normValue_0_1 * 100.0,
whismanoid 52:607010f0c54e 1348 normValue_0_1 * adc_full_scale_voltage
whismanoid 52:607010f0c54e 1349 );
whismanoid 52:607010f0c54e 1350 }
whismanoid 52:607010f0c54e 1351 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 52:607010f0c54e 1352 }
whismanoid 52:607010f0c54e 1353 break;
whismanoid 52:607010f0c54e 1354 #endif
whismanoid 52:607010f0c54e 1355 //
whismanoid 52:607010f0c54e 1356 #if HAS_SPI2_MAX541
whismanoid 52:607010f0c54e 1357 case 'D': case 'd':
whismanoid 52:607010f0c54e 1358 {
whismanoid 52:607010f0c54e 1359 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 52:607010f0c54e 1360 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 52:607010f0c54e 1361 float voltageV = max541.Get_Voltage();
whismanoid 52:607010f0c54e 1362 // if (cmdLine[2] == '+') {
whismanoid 52:607010f0c54e 1363 // // %D+
whismanoid 52:607010f0c54e 1364 // voltageV = voltageV * 1.25f;
whismanoid 52:607010f0c54e 1365 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 52:607010f0c54e 1366 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 52:607010f0c54e 1367 // }
whismanoid 52:607010f0c54e 1368 // else if (cmdLine[2] == '-') {
whismanoid 52:607010f0c54e 1369 // // %D-
whismanoid 52:607010f0c54e 1370 // voltageV = voltageV * 0.75f;
whismanoid 52:607010f0c54e 1371 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 52:607010f0c54e 1372 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 52:607010f0c54e 1373 // }
whismanoid 52:607010f0c54e 1374 if (cmdLine.parse_float("V", voltageV))
whismanoid 52:607010f0c54e 1375 {
whismanoid 52:607010f0c54e 1376 // %D V=1.234 -- set voltage
whismanoid 52:607010f0c54e 1377 max541.Set_Voltage(voltageV);
whismanoid 52:607010f0c54e 1378 }
whismanoid 52:607010f0c54e 1379 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 52:607010f0c54e 1380 {
whismanoid 52:607010f0c54e 1381 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 52:607010f0c54e 1382 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 52:607010f0c54e 1383 }
whismanoid 52:607010f0c54e 1384 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 52:607010f0c54e 1385 {
whismanoid 52:607010f0c54e 1386 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 52:607010f0c54e 1387
whismanoid 52:607010f0c54e 1388 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 52:607010f0c54e 1389 double max541_midscale_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 1390 const int average_count = 100;
whismanoid 52:607010f0c54e 1391 const double average_K = 0.25;
whismanoid 52:607010f0c54e 1392 for (int count = 0; count < average_count; count++) {
whismanoid 52:607010f0c54e 1393 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 52:607010f0c54e 1394 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 52:607010f0c54e 1395 }
whismanoid 52:607010f0c54e 1396 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 52:607010f0c54e 1397 cmdLine.serial().printf(
whismanoid 52:607010f0c54e 1398 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 52:607010f0c54e 1399 max541_midscale_V, max541.VRef);
whismanoid 52:607010f0c54e 1400 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 52:607010f0c54e 1401 voltageV = 1.0f;
whismanoid 52:607010f0c54e 1402 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 52:607010f0c54e 1403 }
whismanoid 52:607010f0c54e 1404 else {
whismanoid 52:607010f0c54e 1405 // %D -- print MAX541 DAC status
whismanoid 52:607010f0c54e 1406 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 52:607010f0c54e 1407 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 52:607010f0c54e 1408 }
whismanoid 52:607010f0c54e 1409 }
whismanoid 52:607010f0c54e 1410 break;
whismanoid 52:607010f0c54e 1411 #endif
whismanoid 52:607010f0c54e 1412
whismanoid 52:607010f0c54e 1413 //
whismanoid 52:607010f0c54e 1414 #if HAS_I2C // SUPPORT_I2C
whismanoid 52:607010f0c54e 1415 case 'I': case 'i':
whismanoid 52:607010f0c54e 1416 // %I... -- I2C diagnostics
whismanoid 52:607010f0c54e 1417 // %IP -- I2C probe
whismanoid 52:607010f0c54e 1418 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 52:607010f0c54e 1419 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 52:607010f0c54e 1420 // %IR ADDR=? RD=? -- read
whismanoid 52:607010f0c54e 1421 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 52:607010f0c54e 1422 // get next character
whismanoid 52:607010f0c54e 1423 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 52:607010f0c54e 1424 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 52:607010f0c54e 1425 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 52:607010f0c54e 1426 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 52:607010f0c54e 1427 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 52:607010f0c54e 1428 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 52:607010f0c54e 1429 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 52:607010f0c54e 1430 switch (cmdLine[2])
whismanoid 52:607010f0c54e 1431 {
whismanoid 52:607010f0c54e 1432 case 'P': case 'p':
whismanoid 52:607010f0c54e 1433 {
whismanoid 52:607010f0c54e 1434 // %IP -- I2C probe
whismanoid 52:607010f0c54e 1435 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 52:607010f0c54e 1436 }
whismanoid 52:607010f0c54e 1437 break;
whismanoid 52:607010f0c54e 1438 case 'C': case 'c':
whismanoid 52:607010f0c54e 1439 {
whismanoid 52:607010f0c54e 1440 bool isUpdatedI2CConfig = false;
whismanoid 52:607010f0c54e 1441 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 52:607010f0c54e 1442 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 52:607010f0c54e 1443 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 52:607010f0c54e 1444 {
whismanoid 52:607010f0c54e 1445 isUpdatedI2CConfig = true;
whismanoid 52:607010f0c54e 1446 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 52:607010f0c54e 1447 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 52:607010f0c54e 1448 {
whismanoid 52:607010f0c54e 1449 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 52:607010f0c54e 1450 }
whismanoid 52:607010f0c54e 1451 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 52:607010f0c54e 1452 {
whismanoid 52:607010f0c54e 1453 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 52:607010f0c54e 1454 }
whismanoid 52:607010f0c54e 1455 }
whismanoid 52:607010f0c54e 1456 if (isUpdatedI2CConfig)
whismanoid 52:607010f0c54e 1457 {
whismanoid 52:607010f0c54e 1458 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 52:607010f0c54e 1459 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 52:607010f0c54e 1460 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 52:607010f0c54e 1461 i2cMaster.start();
whismanoid 52:607010f0c54e 1462 i2cMaster.stop();
whismanoid 52:607010f0c54e 1463 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 52:607010f0c54e 1464 cmdLine.serial().printf(
whismanoid 52:607010f0c54e 1465 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 52:607010f0c54e 1466 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 52:607010f0c54e 1467 (g_I2C_SCL_Hz / 1000.));
whismanoid 52:607010f0c54e 1468 i2cMaster.start();
whismanoid 52:607010f0c54e 1469 i2cMaster.stop();
whismanoid 52:607010f0c54e 1470 }
whismanoid 52:607010f0c54e 1471 }
whismanoid 52:607010f0c54e 1472 break;
whismanoid 52:607010f0c54e 1473 case 'W': case 'w':
whismanoid 52:607010f0c54e 1474 {
whismanoid 52:607010f0c54e 1475 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 52:607010f0c54e 1476 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 52:607010f0c54e 1477 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 52:607010f0c54e 1478 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 52:607010f0c54e 1479 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 52:607010f0c54e 1480 #define MAX_I2C_BYTE_COUNT 32
whismanoid 52:607010f0c54e 1481 size_t byteCount = byteCount;
whismanoid 52:607010f0c54e 1482 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 52:607010f0c54e 1483 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 52:607010f0c54e 1484 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 52:607010f0c54e 1485 MAX_I2C_BYTE_COUNT))
whismanoid 52:607010f0c54e 1486 {
whismanoid 52:607010f0c54e 1487 // hex dump mosiData[0..byteCount-1]
whismanoid 52:607010f0c54e 1488 cmdLine.serial().printf(
whismanoid 52:607010f0c54e 1489 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 52:607010f0c54e 1490 g_I2C_deviceAddress7,
whismanoid 52:607010f0c54e 1491 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 52:607010f0c54e 1492 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 52:607010f0c54e 1493 {
whismanoid 52:607010f0c54e 1494 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 52:607010f0c54e 1495 }
whismanoid 52:607010f0c54e 1496 //
whismanoid 52:607010f0c54e 1497 // TODO: i2c transfer
whismanoid 52:607010f0c54e 1498 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 52:607010f0c54e 1499 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 52:607010f0c54e 1500 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 52:607010f0c54e 1501 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 52:607010f0c54e 1502 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 52:607010f0c54e 1503 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 52:607010f0c54e 1504 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 52:607010f0c54e 1505 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 52:607010f0c54e 1506 // /* int */ i2cMaster.transfer (int addr8bit, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false) // Start nonblocking I2C transfer. More...
whismanoid 52:607010f0c54e 1507 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 52:607010f0c54e 1508 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 52:607010f0c54e 1509 unsigned int misoLength = 0;
whismanoid 52:607010f0c54e 1510 bool repeated = (g_I2C_read_count > 0);
whismanoid 52:607010f0c54e 1511 //
whismanoid 52:607010f0c54e 1512 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 52:607010f0c54e 1513 switch (writeStatus)
whismanoid 52:607010f0c54e 1514 {
whismanoid 52:607010f0c54e 1515 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 52:607010f0c54e 1516 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 52:607010f0c54e 1517 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 52:607010f0c54e 1518 writeStatus);
whismanoid 52:607010f0c54e 1519 }
whismanoid 52:607010f0c54e 1520 if (repeated)
whismanoid 52:607010f0c54e 1521 {
whismanoid 52:607010f0c54e 1522 int readStatus =
whismanoid 52:607010f0c54e 1523 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 52:607010f0c54e 1524 switch (readStatus)
whismanoid 52:607010f0c54e 1525 {
whismanoid 52:607010f0c54e 1526 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 52:607010f0c54e 1527 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 52:607010f0c54e 1528 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 52:607010f0c54e 1529 readStatus);
whismanoid 52:607010f0c54e 1530 }
whismanoid 52:607010f0c54e 1531 }
whismanoid 52:607010f0c54e 1532 //
whismanoid 52:607010f0c54e 1533 if (misoLength > 0)
whismanoid 52:607010f0c54e 1534 {
whismanoid 52:607010f0c54e 1535 // hex dump misoData[0..byteCount-1]
whismanoid 52:607010f0c54e 1536 cmdLine.serial().printf(" MISO<-");
whismanoid 52:607010f0c54e 1537 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 52:607010f0c54e 1538 byteIndex++)
whismanoid 52:607010f0c54e 1539 {
whismanoid 52:607010f0c54e 1540 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 52:607010f0c54e 1541 }
whismanoid 52:607010f0c54e 1542 }
whismanoid 52:607010f0c54e 1543 cmdLine.serial().printf(" ");
whismanoid 52:607010f0c54e 1544 }
whismanoid 52:607010f0c54e 1545 }
whismanoid 52:607010f0c54e 1546 break;
whismanoid 52:607010f0c54e 1547 case 'R': case 'r':
whismanoid 52:607010f0c54e 1548 {
whismanoid 52:607010f0c54e 1549 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 52:607010f0c54e 1550 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 52:607010f0c54e 1551 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 52:607010f0c54e 1552 // %IR ADDR=? RD=? -- read
whismanoid 52:607010f0c54e 1553 // TODO: i2c transfer
whismanoid 52:607010f0c54e 1554 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 52:607010f0c54e 1555 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 52:607010f0c54e 1556 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 52:607010f0c54e 1557 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 52:607010f0c54e 1558 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 52:607010f0c54e 1559 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 52:607010f0c54e 1560 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 52:607010f0c54e 1561 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 52:607010f0c54e 1562 // /* int */ i2cMaster.transfer (int addr8bit, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false) // Start nonblocking I2C transfer. More...
whismanoid 52:607010f0c54e 1563 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 52:607010f0c54e 1564 }
whismanoid 52:607010f0c54e 1565 break;
whismanoid 52:607010f0c54e 1566 case '^':
whismanoid 52:607010f0c54e 1567 {
whismanoid 52:607010f0c54e 1568 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 52:607010f0c54e 1569 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 52:607010f0c54e 1570 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 52:607010f0c54e 1571 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 52:607010f0c54e 1572 // TODO: i2c transfer
whismanoid 52:607010f0c54e 1573 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 52:607010f0c54e 1574 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 52:607010f0c54e 1575 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 52:607010f0c54e 1576 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 52:607010f0c54e 1577 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 52:607010f0c54e 1578 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 52:607010f0c54e 1579 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 52:607010f0c54e 1580 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 52:607010f0c54e 1581 // /* int */ i2cMaster.transfer (int addr8bit, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false) // Start nonblocking I2C transfer. More...
whismanoid 52:607010f0c54e 1582 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 52:607010f0c54e 1583 }
whismanoid 52:607010f0c54e 1584 break;
whismanoid 52:607010f0c54e 1585 } // switch(cmdLine[2])
whismanoid 52:607010f0c54e 1586 break;
whismanoid 52:607010f0c54e 1587 #endif
whismanoid 52:607010f0c54e 1588 //
whismanoid 52:607010f0c54e 1589 #if HAS_SPI // SUPPORT_SPI
whismanoid 52:607010f0c54e 1590 case 'S': case 's':
whismanoid 52:607010f0c54e 1591 {
whismanoid 52:607010f0c54e 1592 // %S... -- SPI diagnostics
whismanoid 52:607010f0c54e 1593 // %SC sclk=1Mhz -- SPI configure
whismanoid 52:607010f0c54e 1594 // %SW -- write (write and read)
whismanoid 52:607010f0c54e 1595 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 52:607010f0c54e 1596 //
whismanoid 52:607010f0c54e 1597 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 52:607010f0c54e 1598 bool isUpdatedSPIConfig = false;
whismanoid 52:607010f0c54e 1599 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 52:607010f0c54e 1600 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 52:607010f0c54e 1601 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 52:607010f0c54e 1602 {
whismanoid 52:607010f0c54e 1603 isUpdatedSPIConfig = true;
whismanoid 52:607010f0c54e 1604 }
whismanoid 52:607010f0c54e 1605 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 52:607010f0c54e 1606 {
whismanoid 52:607010f0c54e 1607 isUpdatedSPIConfig = true;
whismanoid 52:607010f0c54e 1608 }
whismanoid 52:607010f0c54e 1609 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 52:607010f0c54e 1610 {
whismanoid 52:607010f0c54e 1611 isUpdatedSPIConfig = true;
whismanoid 52:607010f0c54e 1612 }
whismanoid 52:607010f0c54e 1613 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 52:607010f0c54e 1614 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 52:607010f0c54e 1615 {
whismanoid 52:607010f0c54e 1616 isUpdatedSPIConfig = true;
whismanoid 52:607010f0c54e 1617 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 52:607010f0c54e 1618 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 52:607010f0c54e 1619 {
whismanoid 52:607010f0c54e 1620 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 52:607010f0c54e 1621 }
whismanoid 52:607010f0c54e 1622 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 52:607010f0c54e 1623 {
whismanoid 52:607010f0c54e 1624 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 52:607010f0c54e 1625 }
whismanoid 52:607010f0c54e 1626 }
whismanoid 52:607010f0c54e 1627 // Update SPI configuration
whismanoid 52:607010f0c54e 1628 if (isUpdatedSPIConfig)
whismanoid 52:607010f0c54e 1629 {
whismanoid 52:607010f0c54e 1630 // %SC sclk=1Mhz -- SPI configure
whismanoid 52:607010f0c54e 1631 spi_cs = g_SPI_cs_state;
whismanoid 52:607010f0c54e 1632 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 52:607010f0c54e 1633 #if APPLICATION_MAX5715
whismanoid 52:607010f0c54e 1634 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 52:607010f0c54e 1635 #elif APPLICATION_MAX11131
whismanoid 52:607010f0c54e 1636 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 52:607010f0c54e 1637 #elif APPLICATION_MAX5171
whismanoid 52:607010f0c54e 1638 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 52:607010f0c54e 1639 #elif APPLICATION_MAX11410
whismanoid 52:607010f0c54e 1640 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 52:607010f0c54e 1641 #elif APPLICATION_MAX12345
whismanoid 52:607010f0c54e 1642 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 52:607010f0c54e 1643 #else
whismanoid 52:607010f0c54e 1644 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 52:607010f0c54e 1645 #endif
whismanoid 52:607010f0c54e 1646 //
whismanoid 52:607010f0c54e 1647 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 52:607010f0c54e 1648 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 52:607010f0c54e 1649 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 52:607010f0c54e 1650 //
whismanoid 52:607010f0c54e 1651 // fixed: mbed-os-5.11: [Warning] format '%d' expects argument of type 'int', but argument 6 has type 'uint32_t {aka long unsigned int}' [-Wformat=]
whismanoid 52:607010f0c54e 1652 cmdLine.serial().printf(
whismanoid 52:607010f0c54e 1653 "\r\n %%SC CPOL=%d CPHA=%d CS=%d SCLK=%ld=%1.3fMHz (%1.1fMHz/%1.2f = actual %1.3fMHz) -- SPI config",
whismanoid 52:607010f0c54e 1654 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 52:607010f0c54e 1655 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 52:607010f0c54e 1656 g_SPI_cs_state,
whismanoid 52:607010f0c54e 1657 g_SPI_SCLK_Hz,
whismanoid 52:607010f0c54e 1658 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 52:607010f0c54e 1659 ((double)(SystemCoreClock / 1000000.)),
whismanoid 52:607010f0c54e 1660 ideal_divisor,
whismanoid 52:607010f0c54e 1661 (actual_SCLK_Hz / 1000000.)
whismanoid 52:607010f0c54e 1662 );
whismanoid 52:607010f0c54e 1663 }
whismanoid 52:607010f0c54e 1664 // get next character
whismanoid 52:607010f0c54e 1665 switch (cmdLine[2])
whismanoid 52:607010f0c54e 1666 {
whismanoid 52:607010f0c54e 1667 case 'C': case 's':
whismanoid 52:607010f0c54e 1668 // %SC sclk=1Mhz -- SPI configure
whismanoid 52:607010f0c54e 1669 break;
whismanoid 52:607010f0c54e 1670 case 'W': case 'R': case 'w': case 'r':
whismanoid 52:607010f0c54e 1671 {
whismanoid 52:607010f0c54e 1672 // %SW -- write (write and read)
whismanoid 52:607010f0c54e 1673 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 52:607010f0c54e 1674 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 52:607010f0c54e 1675 #define MAX_SPI_BYTE_COUNT 32
whismanoid 52:607010f0c54e 1676 size_t byteCount = byteCount;
whismanoid 52:607010f0c54e 1677 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 52:607010f0c54e 1678 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 52:607010f0c54e 1679 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 52:607010f0c54e 1680 MAX_SPI_BYTE_COUNT))
whismanoid 52:607010f0c54e 1681 {
whismanoid 52:607010f0c54e 1682 // hex dump mosiData[0..byteCount-1]
whismanoid 52:607010f0c54e 1683 cmdLine.serial().printf("\r\nSPI");
whismanoid 52:607010f0c54e 1684 if (byteCount > 7) {
whismanoid 52:607010f0c54e 1685 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 52:607010f0c54e 1686 }
whismanoid 52:607010f0c54e 1687 cmdLine.serial().printf(" MOSI->");
whismanoid 52:607010f0c54e 1688 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 52:607010f0c54e 1689 {
whismanoid 52:607010f0c54e 1690 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 52:607010f0c54e 1691 }
whismanoid 52:607010f0c54e 1692 spi_cs = 0;
whismanoid 52:607010f0c54e 1693 unsigned int numBytesTransferred =
whismanoid 52:607010f0c54e 1694 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 52:607010f0c54e 1695 spi_cs = 1;
whismanoid 52:607010f0c54e 1696 // hex dump misoData[0..byteCount-1]
whismanoid 52:607010f0c54e 1697 cmdLine.serial().printf(" MISO<-");
whismanoid 52:607010f0c54e 1698 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 52:607010f0c54e 1699 byteIndex++)
whismanoid 52:607010f0c54e 1700 {
whismanoid 52:607010f0c54e 1701 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 52:607010f0c54e 1702 }
whismanoid 52:607010f0c54e 1703 cmdLine.serial().printf(" ");
whismanoid 52:607010f0c54e 1704 }
whismanoid 52:607010f0c54e 1705 }
whismanoid 52:607010f0c54e 1706 break;
whismanoid 52:607010f0c54e 1707 } // switch(cmdLine[2])
whismanoid 52:607010f0c54e 1708 } // case 'S': // %S... -- SPI diagnostics
whismanoid 52:607010f0c54e 1709 break;
whismanoid 52:607010f0c54e 1710 #endif
whismanoid 52:607010f0c54e 1711 //
whismanoid 52:607010f0c54e 1712 // A-Z,a-z,0-9 reserved for application use
whismanoid 52:607010f0c54e 1713 } // switch(cmdLine[1])
whismanoid 52:607010f0c54e 1714 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 52:607010f0c54e 1715
whismanoid 52:607010f0c54e 1716
whismanoid 52:607010f0c54e 1717 //--------------------------------------------------
whismanoid 52:607010f0c54e 1718 void main_menu_status(CmdLine & cmdLine)
whismanoid 52:607010f0c54e 1719 {
whismanoid 52:607010f0c54e 1720 cmdLine.serial().printf("\r\nMain menu");
whismanoid 52:607010f0c54e 1721
whismanoid 52:607010f0c54e 1722 cmdLine.serial().printf(" MAX11043 24-bit 200ksps Delta-Sigma ADC");
whismanoid 52:607010f0c54e 1723
whismanoid 52:607010f0c54e 1724 //cmdLine.serial().print(" %s", TARGET_NAME);
whismanoid 52:607010f0c54e 1725 if (cmdLine.nameStr())
whismanoid 52:607010f0c54e 1726 {
whismanoid 52:607010f0c54e 1727 cmdLine.serial().printf(" [%s]", cmdLine.nameStr());
whismanoid 52:607010f0c54e 1728
whismanoid 52:607010f0c54e 1729 }
whismanoid 52:607010f0c54e 1730 cmdLine.serial().printf("\r\n ? -- help");
whismanoid 52:607010f0c54e 1731
whismanoid 52:607010f0c54e 1732 }
whismanoid 52:607010f0c54e 1733
whismanoid 52:607010f0c54e 1734
whismanoid 52:607010f0c54e 1735 //--------------------------------------------------
whismanoid 52:607010f0c54e 1736 void main_menu_help(CmdLine & cmdLine)
whismanoid 52:607010f0c54e 1737 {
whismanoid 52:607010f0c54e 1738 // ? -- help
whismanoid 52:607010f0c54e 1739 //~ cmdLine.serial().print(F("\r\nMenu:"));
whismanoid 52:607010f0c54e 1740 cmdLine.serial().printf("\r\n # -- lines beginning with # are comments");
whismanoid 52:607010f0c54e 1741
whismanoid 52:607010f0c54e 1742 cmdLine.serial().printf("\r\n . -- SelfTest");
whismanoid 52:607010f0c54e 1743
whismanoid 52:607010f0c54e 1744 //cmdLine.serial().print(F("\r\n ! -- Initial Configuration"));
whismanoid 52:607010f0c54e 1745 //
whismanoid 52:607010f0c54e 1746 // % standardize diagnostic commands
whismanoid 52:607010f0c54e 1747 // %Hpin -- digital output high
whismanoid 52:607010f0c54e 1748 // %Lpin -- digital output low
whismanoid 52:607010f0c54e 1749 // %?pin -- digital input
whismanoid 52:607010f0c54e 1750 // %A %Apin -- analog input
whismanoid 52:607010f0c54e 1751 // %Ppin df=xx -- pwm output
whismanoid 52:607010f0c54e 1752 // %Wpin -- measure high pulsewidth input in usec
whismanoid 52:607010f0c54e 1753 // %wpin -- measure low pulsewidth input in usec
whismanoid 52:607010f0c54e 1754 // %I... -- I2C diagnostics
whismanoid 52:607010f0c54e 1755 // %IP -- I2C probe
whismanoid 52:607010f0c54e 1756 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 52:607010f0c54e 1757 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 52:607010f0c54e 1758 // %IR ADDR=? RD=? -- read
whismanoid 52:607010f0c54e 1759 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 52:607010f0c54e 1760 // %S... -- SPI diagnostics
whismanoid 52:607010f0c54e 1761 // %SC sclk=1Mhz -- SPI configure
whismanoid 52:607010f0c54e 1762 // %SW -- write (write and read)
whismanoid 52:607010f0c54e 1763 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 52:607010f0c54e 1764 // A-Z,a-z,0-9 reserved for application use
whismanoid 52:607010f0c54e 1765 //
whismanoid 52:607010f0c54e 1766 #if HAS_digitalInOuts
whismanoid 52:607010f0c54e 1767 // %Hpin -- digital output high
whismanoid 52:607010f0c54e 1768 // %Lpin -- digital output low
whismanoid 52:607010f0c54e 1769 // %?pin -- digital input
whismanoid 52:607010f0c54e 1770 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 52:607010f0c54e 1771 list_digitalInOutPins(cmdLine.serial());
whismanoid 52:607010f0c54e 1772 cmdLine.serial().printf("} -- High Output");
whismanoid 52:607010f0c54e 1773 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 52:607010f0c54e 1774 list_digitalInOutPins(cmdLine.serial());
whismanoid 52:607010f0c54e 1775 cmdLine.serial().printf("} -- Low Output");
whismanoid 52:607010f0c54e 1776 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 52:607010f0c54e 1777 list_digitalInOutPins(cmdLine.serial());
whismanoid 52:607010f0c54e 1778 cmdLine.serial().printf("} -- Input");
whismanoid 52:607010f0c54e 1779 #endif
whismanoid 52:607010f0c54e 1780
whismanoid 52:607010f0c54e 1781 #if HAS_analogIns
whismanoid 52:607010f0c54e 1782 // Menu A) analogRead A0..7
whismanoid 52:607010f0c54e 1783 // %A %Apin -- analog input
whismanoid 52:607010f0c54e 1784 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 52:607010f0c54e 1785 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 52:607010f0c54e 1786 #endif
whismanoid 52:607010f0c54e 1787
whismanoid 52:607010f0c54e 1788 #if HAS_SPI2_MAX541
whismanoid 52:607010f0c54e 1789 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 52:607010f0c54e 1790 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 52:607010f0c54e 1791 #endif
whismanoid 52:607010f0c54e 1792
whismanoid 52:607010f0c54e 1793 #if HAS_I2C // SUPPORT_I2C
whismanoid 52:607010f0c54e 1794 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 52:607010f0c54e 1795 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 52:607010f0c54e 1796 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 52:607010f0c54e 1797 // %I... -- I2C diagnostics
whismanoid 52:607010f0c54e 1798 // %IP -- I2C probe
whismanoid 52:607010f0c54e 1799 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 52:607010f0c54e 1800 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 52:607010f0c54e 1801 // %IR ADDR=? RD=? -- read
whismanoid 52:607010f0c54e 1802 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 52:607010f0c54e 1803 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 52:607010f0c54e 1804 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 52:607010f0c54e 1805 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 52:607010f0c54e 1806 (g_I2C_SCL_Hz / 1000.));
whismanoid 52:607010f0c54e 1807 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 52:607010f0c54e 1808 g_I2C_deviceAddress7);
whismanoid 52:607010f0c54e 1809 //
whismanoid 52:607010f0c54e 1810 #if SUPPORT_I2C
whismanoid 52:607010f0c54e 1811 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 52:607010f0c54e 1812 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 52:607010f0c54e 1813 // test low-level I2C i2c_smbus_read_word_data
whismanoid 52:607010f0c54e 1814 #endif // SUPPORT_I2C
whismanoid 52:607010f0c54e 1815 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 52:607010f0c54e 1816 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 52:607010f0c54e 1817 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 52:607010f0c54e 1818 #endif // SUPPORT_I2C
whismanoid 52:607010f0c54e 1819
whismanoid 52:607010f0c54e 1820 #if HAS_SPI // SUPPORT_SPI
whismanoid 52:607010f0c54e 1821 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 52:607010f0c54e 1822 // SPI test command S (mosiData)+
whismanoid 52:607010f0c54e 1823 // %S... -- SPI diagnostics
whismanoid 52:607010f0c54e 1824 // %SC sclk=1Mhz -- SPI configure
whismanoid 52:607010f0c54e 1825 // %SW -- write (write and read)
whismanoid 52:607010f0c54e 1826 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 52:607010f0c54e 1827 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 52:607010f0c54e 1828 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 52:607010f0c54e 1829 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 52:607010f0c54e 1830 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 52:607010f0c54e 1831 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 52:607010f0c54e 1832 // mode | POL PHA
whismanoid 52:607010f0c54e 1833 // -----+--------
whismanoid 52:607010f0c54e 1834 // 0 | 0 0
whismanoid 52:607010f0c54e 1835 // 1 | 0 1
whismanoid 52:607010f0c54e 1836 // 2 | 1 0
whismanoid 52:607010f0c54e 1837 // 3 | 1 1
whismanoid 52:607010f0c54e 1838 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 52:607010f0c54e 1839 // fixed: mbed-os-5.11: [Warning] format '%d' expects argument of type 'int', but argument 3 has type 'uint32_t {aka long unsigned int}' [-Wformat=]
whismanoid 52:607010f0c54e 1840 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 52:607010f0c54e 1841 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 52:607010f0c54e 1842 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 52:607010f0c54e 1843 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 52:607010f0c54e 1844 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 52:607010f0c54e 1845 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 52:607010f0c54e 1846 #endif // SUPPORT_SPI
whismanoid 52:607010f0c54e 1847 //
whismanoid 52:607010f0c54e 1848 // Application-specific commands (help text) here
whismanoid 52:607010f0c54e 1849 //
whismanoid 52:607010f0c54e 1850 #if APPLICATION_ArduinoPinsMonitor
whismanoid 52:607010f0c54e 1851 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 52:607010f0c54e 1852 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 52:607010f0c54e 1853 //
whismanoid 52:607010f0c54e 1854
whismanoid 52:607010f0c54e 1855 extern bool MAX11043_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11043.cpp\n
whismanoid 52:607010f0c54e 1856 MAX11043_menu_help(cmdLine);
whismanoid 52:607010f0c54e 1857 }
whismanoid 52:607010f0c54e 1858
whismanoid 52:607010f0c54e 1859
whismanoid 52:607010f0c54e 1860
whismanoid 52:607010f0c54e 1861 //--------------------------------------------------
whismanoid 52:607010f0c54e 1862 // main menu command-line parser
whismanoid 52:607010f0c54e 1863 // invoked by CmdLine::append(char ch) or CmdLine::idleAppendIfReadable()
whismanoid 52:607010f0c54e 1864 void main_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 52:607010f0c54e 1865 {
whismanoid 52:607010f0c54e 1866 // DIAGNOSTIC: print line buffer
whismanoid 52:607010f0c54e 1867 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 52:607010f0c54e 1868 //
whismanoid 52:607010f0c54e 1869 switch (cmdLine[0])
whismanoid 52:607010f0c54e 1870 {
whismanoid 52:607010f0c54e 1871 case '?':
whismanoid 52:607010f0c54e 1872 main_menu_status(cmdLine);
whismanoid 52:607010f0c54e 1873 main_menu_help(cmdLine);
whismanoid 52:607010f0c54e 1874 // print command prompt
whismanoid 52:607010f0c54e 1875 //cmdLine.serial().printf("\r\n>");
whismanoid 52:607010f0c54e 1876 break;
whismanoid 52:607010f0c54e 1877 case '\r': case '\n': // ignore blank line
whismanoid 52:607010f0c54e 1878 case '\0': // ignore empty line
whismanoid 52:607010f0c54e 1879 case '#': // ignore comment line
whismanoid 52:607010f0c54e 1880 // # -- lines beginning with # are comments
whismanoid 52:607010f0c54e 1881 main_menu_status(cmdLine);
whismanoid 52:607010f0c54e 1882 //~ main_menu_help(cmdLine);
whismanoid 52:607010f0c54e 1883 // print command prompt
whismanoid 52:607010f0c54e 1884 //cmdLine.serial().printf("\r\n>");
whismanoid 52:607010f0c54e 1885 break;
whismanoid 52:607010f0c54e 1886 #if ECHO_EOF_ON_EOL
whismanoid 52:607010f0c54e 1887 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 52:607010f0c54e 1888 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 52:607010f0c54e 1889 diagnostic_led_EOF();
whismanoid 52:607010f0c54e 1890 break;
whismanoid 52:607010f0c54e 1891 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 52:607010f0c54e 1892 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 52:607010f0c54e 1893 diagnostic_led_EOF();
whismanoid 52:607010f0c54e 1894 break;
whismanoid 52:607010f0c54e 1895 #endif
whismanoid 52:607010f0c54e 1896 #if APPLICATION_ArduinoPinsMonitor
whismanoid 52:607010f0c54e 1897 case '.':
whismanoid 52:607010f0c54e 1898 {
whismanoid 52:607010f0c54e 1899 // . -- SelfTest
whismanoid 52:607010f0c54e 1900 cmdLine.serial().printf("SelfTest()");
whismanoid 52:607010f0c54e 1901 SelfTest(cmdLine);
whismanoid 52:607010f0c54e 1902 }
whismanoid 52:607010f0c54e 1903 break;
whismanoid 52:607010f0c54e 1904 case '%':
whismanoid 52:607010f0c54e 1905 {
whismanoid 52:607010f0c54e 1906 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 52:607010f0c54e 1907 }
whismanoid 52:607010f0c54e 1908 break; // case '%'
whismanoid 52:607010f0c54e 1909 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 52:607010f0c54e 1910 //
whismanoid 52:607010f0c54e 1911 // Application-specific commands here
whismanoid 52:607010f0c54e 1912 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 52:607010f0c54e 1913 //
whismanoid 52:607010f0c54e 1914 #if APPLICATION_ArduinoPinsMonitor
whismanoid 52:607010f0c54e 1915 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 52:607010f0c54e 1916
whismanoid 52:607010f0c54e 1917 //
whismanoid 52:607010f0c54e 1918 // add new commands here
whismanoid 52:607010f0c54e 1919 //
whismanoid 52:607010f0c54e 1920 default:
whismanoid 52:607010f0c54e 1921 extern bool MAX11043_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11043.cpp
whismanoid 52:607010f0c54e 1922 if (!MAX11043_menu_onEOLcommandParser(cmdLine))
whismanoid 52:607010f0c54e 1923 { // not_handled_by_device_submenu
whismanoid 52:607010f0c54e 1924 cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 52:607010f0c54e 1925
whismanoid 52:607010f0c54e 1926 # if HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 1927 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 52:607010f0c54e 1928
whismanoid 52:607010f0c54e 1929 # endif // HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 1930 }
whismanoid 52:607010f0c54e 1931 } // switch (cmdLine[0])
whismanoid 52:607010f0c54e 1932 //
whismanoid 52:607010f0c54e 1933 // print command prompt
whismanoid 52:607010f0c54e 1934 cmdLine.serial().printf("\r\nMAX11043 > ");
whismanoid 52:607010f0c54e 1935
whismanoid 52:607010f0c54e 1936 } // end void main_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 52:607010f0c54e 1937
whismanoid 52:607010f0c54e 1938 //--------------------------------------------------
whismanoid 52:607010f0c54e 1939 void InitializeConfiguration()
whismanoid 52:607010f0c54e 1940 {
whismanoid 52:607010f0c54e 1941 // CODE GENERATOR: example code: member function Init
whismanoid 52:607010f0c54e 1942 # if HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 1943 cmdLine_DAPLINKserial.serial().printf("\r\nMAX11043_Init()");
whismanoid 52:607010f0c54e 1944
whismanoid 52:607010f0c54e 1945 # endif
whismanoid 52:607010f0c54e 1946 cmdLine_serial.serial().printf("\r\nMAX11043_Init()");
whismanoid 52:607010f0c54e 1947
whismanoid 52:607010f0c54e 1948 int initResult = g_MAX11043_device.Init(); // defined in #include MAX11043.h
whismanoid 52:607010f0c54e 1949 # if HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 1950 cmdLine_DAPLINKserial.serial().printf("\r\nMAX11043_Init() returned %d\r\n", initResult);
whismanoid 52:607010f0c54e 1951
whismanoid 52:607010f0c54e 1952 # endif
whismanoid 52:607010f0c54e 1953 cmdLine_serial.serial().printf("\r\nMAX11043_Init() returned %d\r\n", initResult);
whismanoid 52:607010f0c54e 1954
whismanoid 52:607010f0c54e 1955 # if MAX11043_ONSPIPRINT
whismanoid 52:607010f0c54e 1956 // Optional Diagnostic function to print SPI transactions
whismanoid 52:607010f0c54e 1957 g_MAX11043_device.onSPIprint = onSPIprint_handler;
whismanoid 52:607010f0c54e 1958 # endif
whismanoid 52:607010f0c54e 1959 }
whismanoid 52:607010f0c54e 1960
whismanoid 52:607010f0c54e 1961 //--------------------------------------------------
whismanoid 52:607010f0c54e 1962 // diagnostic rbg led GREEN
whismanoid 52:607010f0c54e 1963 void diagnostic_led_EOF()
whismanoid 52:607010f0c54e 1964 {
whismanoid 52:607010f0c54e 1965 #if USE_LEDS
whismanoid 52:607010f0c54e 1966 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 52:607010f0c54e 1967 // TODO1: mbed-os-5.11: [Warning] 'static osStatus rtos::Thread::wait(uint32_t)' is deprecated: Static methods only affecting current thread cause confusion. Replaced by ThisThread::sleep_for. [since mbed-os-5.10] [-Wdeprecated-declarations]
whismanoid 52:607010f0c54e 1968 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 52:607010f0c54e 1969 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 52:607010f0c54e 1970 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 52:607010f0c54e 1971 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 52:607010f0c54e 1972 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 52:607010f0c54e 1973 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 52:607010f0c54e 1974 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 52:607010f0c54e 1975 #endif // USE_LEDS
whismanoid 52:607010f0c54e 1976 }
whismanoid 52:607010f0c54e 1977
whismanoid 52:607010f0c54e 1978 //--------------------------------------------------
whismanoid 52:607010f0c54e 1979 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 52:607010f0c54e 1980 // handled as immediate command, do not append to buffer
whismanoid 52:607010f0c54e 1981 void on_immediate_0x21() // Unicode (U+0021) ! EXCLAMATION MARK
whismanoid 52:607010f0c54e 1982 {
whismanoid 52:607010f0c54e 1983 #if USE_LEDS
whismanoid 52:607010f0c54e 1984 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 52:607010f0c54e 1985 #endif // USE_LEDS
whismanoid 52:607010f0c54e 1986 InitializeConfiguration();
whismanoid 52:607010f0c54e 1987 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 1988 }
whismanoid 52:607010f0c54e 1989
whismanoid 52:607010f0c54e 1990 //--------------------------------------------------
whismanoid 52:607010f0c54e 1991 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 52:607010f0c54e 1992 // handled as immediate command, do not append to buffer
whismanoid 52:607010f0c54e 1993 void on_immediate_0x7b() // Unicode (U+007B) { LEFT CURLY BRACKET
whismanoid 52:607010f0c54e 1994 {
whismanoid 52:607010f0c54e 1995 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 1996 onButton2FallingEdge();
whismanoid 52:607010f0c54e 1997 #endif
whismanoid 52:607010f0c54e 1998 }
whismanoid 52:607010f0c54e 1999
whismanoid 52:607010f0c54e 2000 //--------------------------------------------------
whismanoid 52:607010f0c54e 2001 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 52:607010f0c54e 2002 // handled as immediate command, do not append to buffer
whismanoid 52:607010f0c54e 2003 void on_immediate_0x7d() // Unicode (U+007D) } RIGHT CURLY BRACKET
whismanoid 52:607010f0c54e 2004 {
whismanoid 52:607010f0c54e 2005 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 2006 onButton1FallingEdge();
whismanoid 52:607010f0c54e 2007 #endif
whismanoid 52:607010f0c54e 2008 }
whismanoid 52:607010f0c54e 2009
whismanoid 52:607010f0c54e 2010 //----------------------------------------
whismanoid 52:607010f0c54e 2011 // example code main function
whismanoid 52:607010f0c54e 2012 int main()
whismanoid 52:607010f0c54e 2013 {
whismanoid 52:607010f0c54e 2014 // Configure serial ports
whismanoid 52:607010f0c54e 2015 cmdLine_serial.clear();
whismanoid 52:607010f0c54e 2016 //~ cmdLine_serial.serial().printf("\r\n cmdLine_serial.serial().printf test\r\n");
whismanoid 52:607010f0c54e 2017 cmdLine_serial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 52:607010f0c54e 2018 cmdLine_serial.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 52:607010f0c54e 2019 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 52:607010f0c54e 2020 cmdLine_serial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 52:607010f0c54e 2021 cmdLine_serial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 52:607010f0c54e 2022 cmdLine_serial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 52:607010f0c54e 2023 # if HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 2024 cmdLine_DAPLINKserial.clear();
whismanoid 52:607010f0c54e 2025 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 52:607010f0c54e 2026 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 52:607010f0c54e 2027 /// @todo CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 52:607010f0c54e 2028 cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 52:607010f0c54e 2029 cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 52:607010f0c54e 2030 cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 52:607010f0c54e 2031 # endif
whismanoid 52:607010f0c54e 2032
whismanoid 52:607010f0c54e 2033
whismanoid 52:607010f0c54e 2034 //print_banner();
whismanoid 52:607010f0c54e 2035
whismanoid 52:607010f0c54e 2036
whismanoid 52:607010f0c54e 2037
whismanoid 52:607010f0c54e 2038 #if USE_LEDS
whismanoid 52:607010f0c54e 2039 #if defined(TARGET_MAX32630)
whismanoid 52:607010f0c54e 2040 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 52:607010f0c54e 2041 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2042 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 52:607010f0c54e 2043 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2044 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 52:607010f0c54e 2045 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2046 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 52:607010f0c54e 2047 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2048 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 52:607010f0c54e 2049 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2050 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 52:607010f0c54e 2051 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2052 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 52:607010f0c54e 2053 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2054 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 52:607010f0c54e 2055 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2056 #elif defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 2057 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 52:607010f0c54e 2058 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2059 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 52:607010f0c54e 2060 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2061 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 52:607010f0c54e 2062 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2063 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 52:607010f0c54e 2064 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2065 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 52:607010f0c54e 2066 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2067 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 52:607010f0c54e 2068 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2069 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 52:607010f0c54e 2070 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2071 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 52:607010f0c54e 2072 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 52:607010f0c54e 2073 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 52:607010f0c54e 2074 led1 = LED_ON;
whismanoid 52:607010f0c54e 2075 led2 = LED_OFF;
whismanoid 52:607010f0c54e 2076 led3 = LED_OFF;
whismanoid 52:607010f0c54e 2077 led4 = LED_OFF;
whismanoid 52:607010f0c54e 2078 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 52:607010f0c54e 2079 //led1 = LED_ON;
whismanoid 52:607010f0c54e 2080 led2 = LED_ON;
whismanoid 52:607010f0c54e 2081 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 52:607010f0c54e 2082 led1 = LED_OFF;
whismanoid 52:607010f0c54e 2083 //led2 = LED_ON;
whismanoid 52:607010f0c54e 2084 led3 = LED_ON;
whismanoid 52:607010f0c54e 2085 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 52:607010f0c54e 2086 led2 = LED_OFF;
whismanoid 52:607010f0c54e 2087 //led3 = LED_ON;
whismanoid 52:607010f0c54e 2088 led4 = LED_ON;
whismanoid 52:607010f0c54e 2089 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 52:607010f0c54e 2090 led3 = LED_OFF;
whismanoid 52:607010f0c54e 2091 led4 = LED_ON;
whismanoid 52:607010f0c54e 2092 //
whismanoid 52:607010f0c54e 2093 #endif // target definition
whismanoid 52:607010f0c54e 2094 #endif
whismanoid 52:607010f0c54e 2095
whismanoid 52:607010f0c54e 2096 // cmd_TE();
whismanoid 52:607010f0c54e 2097
whismanoid 52:607010f0c54e 2098 // #if USE_LEDS
whismanoid 52:607010f0c54e 2099 // rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 52:607010f0c54e 2100 // #endif // USE_LEDS
whismanoid 52:607010f0c54e 2101 led1 = LED_ON;
whismanoid 52:607010f0c54e 2102 led2 = LED_ON;
whismanoid 52:607010f0c54e 2103 led3 = LED_ON;
whismanoid 52:607010f0c54e 2104
whismanoid 52:607010f0c54e 2105 InitializeConfiguration();
whismanoid 52:607010f0c54e 2106 // CODE GENERATOR: example code: member function Init
whismanoid 52:607010f0c54e 2107 g_MAX11043_device.Init();
whismanoid 52:607010f0c54e 2108
whismanoid 52:607010f0c54e 2109 // example code: serial port banner message
whismanoid 52:607010f0c54e 2110 #if defined(TARGET_MAX32625MBED)
whismanoid 52:607010f0c54e 2111 serial.printf("MAX32625MBED ");
whismanoid 52:607010f0c54e 2112 #elif defined(TARGET_MAX32600MBED)
whismanoid 52:607010f0c54e 2113 serial.printf("MAX32600MBED ");
whismanoid 52:607010f0c54e 2114 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 52:607010f0c54e 2115 serial.printf("NUCLEO_F446RE ");
whismanoid 52:607010f0c54e 2116 #endif
whismanoid 52:607010f0c54e 2117 serial.printf("MAX11043BOB\r\n");
whismanoid 52:607010f0c54e 2118
whismanoid 52:607010f0c54e 2119
whismanoid 52:607010f0c54e 2120 while (1) {
whismanoid 52:607010f0c54e 2121 #if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 52:607010f0c54e 2122 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 52:607010f0c54e 2123 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 52:607010f0c54e 2124 # if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 2125 static int button1_value_prev = 1;
whismanoid 52:607010f0c54e 2126 static int button1_value_now = 1;
whismanoid 52:607010f0c54e 2127 button1_value_prev = button1_value_now;
whismanoid 52:607010f0c54e 2128 button1_value_now = button1.read();
whismanoid 52:607010f0c54e 2129 if ((button1_value_prev - button1_value_now) == 1)
whismanoid 52:607010f0c54e 2130 {
whismanoid 52:607010f0c54e 2131 // on button1 falling edge (button1 press)
whismanoid 52:607010f0c54e 2132 onButton1FallingEdge();
whismanoid 52:607010f0c54e 2133 }
whismanoid 52:607010f0c54e 2134 # endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 2135 # if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 2136 static int button2_value_prev = 1;
whismanoid 52:607010f0c54e 2137 static int button2_value_now = 1;
whismanoid 52:607010f0c54e 2138 button2_value_prev = button2_value_now;
whismanoid 52:607010f0c54e 2139 button2_value_now = button2.read();
whismanoid 52:607010f0c54e 2140 if ((button2_value_prev - button2_value_now) == 1)
whismanoid 52:607010f0c54e 2141 {
whismanoid 52:607010f0c54e 2142 // on button2 falling edge (button2 press)
whismanoid 52:607010f0c54e 2143 onButton2FallingEdge();
whismanoid 52:607010f0c54e 2144 }
whismanoid 52:607010f0c54e 2145 # endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 52:607010f0c54e 2146 #endif
whismanoid 52:607010f0c54e 2147 # if HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 2148 if (DAPLINKserial.readable()) {
whismanoid 52:607010f0c54e 2149 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 52:607010f0c54e 2150 }
whismanoid 52:607010f0c54e 2151 # endif // HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 2152 if (serial.readable()) {
whismanoid 52:607010f0c54e 2153 int c = serial.getc();
whismanoid 52:607010f0c54e 2154 cmdLine_serial.append(c);
whismanoid 52:607010f0c54e 2155 #if IGNORE_AT_COMMANDS
whismanoid 52:607010f0c54e 2156 # if HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 2157 cmdLine_DAPLINKserial.serial().printf("%c", c);
whismanoid 52:607010f0c54e 2158 # endif // HAS_DAPLINK_SERIAL
whismanoid 52:607010f0c54e 2159 #endif // IGNORE_AT_COMMANDS
whismanoid 52:607010f0c54e 2160 //
whismanoid 52:607010f0c54e 2161 }
whismanoid 52:607010f0c54e 2162 } // while(1)
whismanoid 52:607010f0c54e 2163 }
whismanoid 52:607010f0c54e 2164 //---------- CODE GENERATOR: end testMainCppCodeList
whismanoid 52:607010f0c54e 2165