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

Dependencies:   MaximTinyTester MAX11410 CmdLine USBDevice

Committer:
whismanoid
Date:
Mon Dec 23 21:15:23 2019 +0000
Revision:
44:a2040e43aa53
Parent:
40:2f8ce101d5bc
onSPIprint diagnostic WIP; need %SD show/hide

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:3edb3708c8c5 1 /*******************************************************************************
whismanoid 0:3edb3708c8c5 2 * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:3edb3708c8c5 3 *
whismanoid 0:3edb3708c8c5 4 * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:3edb3708c8c5 5 * copy of this software and associated documentation files (the "Software"),
whismanoid 0:3edb3708c8c5 6 * to deal in the Software without restriction, including without limitation
whismanoid 0:3edb3708c8c5 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:3edb3708c8c5 8 * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:3edb3708c8c5 9 * Software is furnished to do so, subject to the following conditions:
whismanoid 0:3edb3708c8c5 10 *
whismanoid 0:3edb3708c8c5 11 * The above copyright notice and this permission notice shall be included
whismanoid 0:3edb3708c8c5 12 * in all copies or substantial portions of the Software.
whismanoid 0:3edb3708c8c5 13 *
whismanoid 0:3edb3708c8c5 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:3edb3708c8c5 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:3edb3708c8c5 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:3edb3708c8c5 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:3edb3708c8c5 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:3edb3708c8c5 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:3edb3708c8c5 20 * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:3edb3708c8c5 21 *
whismanoid 0:3edb3708c8c5 22 * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:3edb3708c8c5 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:3edb3708c8c5 24 * Products, Inc. Branding Policy.
whismanoid 0:3edb3708c8c5 25 *
whismanoid 0:3edb3708c8c5 26 * The mere transfer of this software does not imply any licenses
whismanoid 0:3edb3708c8c5 27 * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:3edb3708c8c5 28 * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:3edb3708c8c5 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:3edb3708c8c5 30 * ownership rights.
whismanoid 0:3edb3708c8c5 31 *******************************************************************************
whismanoid 0:3edb3708c8c5 32 */
whismanoid 0:3edb3708c8c5 33
whismanoid 0:3edb3708c8c5 34 // Test fixture and application menu for breakout boards:
whismanoid 0:3edb3708c8c5 35 // - MAX5715BOB
whismanoid 0:3edb3708c8c5 36 // - MAX11131BOB
whismanoid 0:3edb3708c8c5 37 // - MAX5171BOB
whismanoid 0:3edb3708c8c5 38 // Platforms:
whismanoid 0:3edb3708c8c5 39 // - MAX32625MBED
whismanoid 13:e36d51f46794 40 // - supports mbed-os-5.11, requires USBDevice library
whismanoid 17:bf4efc8f5eee 41 // - remove max32630fthr library (if present)
whismanoid 17:bf4efc8f5eee 42 // - remove MAX32620FTHR library (if present)
whismanoid 13:e36d51f46794 43 // - MAX32600MBED
whismanoid 17:bf4efc8f5eee 44 // - remove max32630fthr library (if present)
whismanoid 17:bf4efc8f5eee 45 // - remove MAX32620FTHR library (if present)
whismanoid 0:3edb3708c8c5 46 // - NUCLEO_F446RE
whismanoid 13:e36d51f46794 47 // - remove USBDevice library
whismanoid 17:bf4efc8f5eee 48 // - remove max32630fthr library (if present)
whismanoid 17:bf4efc8f5eee 49 // - remove MAX32620FTHR library (if present)
whismanoid 0:3edb3708c8c5 50 // - NUCLEO_F401RE
whismanoid 13:e36d51f46794 51 // - remove USBDevice library
whismanoid 17:bf4efc8f5eee 52 // - remove max32630fthr library (if present)
whismanoid 17:bf4efc8f5eee 53 // - remove MAX32620FTHR library (if present)
whismanoid 13:e36d51f46794 54 // - MAX32630FTHR
whismanoid 17:bf4efc8f5eee 55 // - add http://os.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 17:bf4efc8f5eee 56 // - remove MAX32620FTHR library (if present)
whismanoid 17:bf4efc8f5eee 57 // - MAX32620FTHR
whismanoid 17:bf4efc8f5eee 58 // - remove max32630fthr library (if present)
whismanoid 17:bf4efc8f5eee 59 // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 17:bf4efc8f5eee 60 // - not tested yet
whismanoid 17:bf4efc8f5eee 61 // - MAX32625PICO
whismanoid 17:bf4efc8f5eee 62 // - remove max32630fthr library (if present)
whismanoid 17:bf4efc8f5eee 63 // - remove MAX32620FTHR library (if present)
whismanoid 17:bf4efc8f5eee 64 // - not tested yet
whismanoid 0:3edb3708c8c5 65
whismanoid 0:3edb3708c8c5 66 #include "mbed.h"
whismanoid 16:3c75011e705a 67 // mbed shared event queue run onTimerTick() in Thread context not Interrupt context
whismanoid 16:3c75011e705a 68 #include "mbed_events.h"
whismanoid 0:3edb3708c8c5 69 #if defined(TARGET)
whismanoid 0:3edb3708c8c5 70 // TARGET_NAME macros from targets/TARGET_Maxim/TARGET_MAX32625/device/mxc_device.h
whismanoid 0:3edb3708c8c5 71 // Create a string definition for the TARGET
whismanoid 0:3edb3708c8c5 72 #define STRING_ARG(arg) #arg
whismanoid 0:3edb3708c8c5 73 #define STRING_NAME(name) STRING_ARG(name)
whismanoid 0:3edb3708c8c5 74 #define TARGET_NAME STRING_NAME(TARGET)
whismanoid 11:9fa2402071de 75 #elif defined(TARGET_MAX32600)
whismanoid 11:9fa2402071de 76 #define TARGET_NAME "MAX32600"
whismanoid 0:3edb3708c8c5 77 #elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 78 #define TARGET_NAME "LPC1768"
whismanoid 0:3edb3708c8c5 79 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:3edb3708c8c5 80 #define TARGET_NAME "NUCLEO_F446RE"
whismanoid 0:3edb3708c8c5 81 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 82 #define TARGET_NAME "NUCLEO_F401RE"
whismanoid 0:3edb3708c8c5 83 #else
whismanoid 0:3edb3708c8c5 84 #error TARGET NOT DEFINED
whismanoid 0:3edb3708c8c5 85 #endif
whismanoid 0:3edb3708c8c5 86 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 87 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 88 // TARGET=MAX32630FTHR ARM Cortex-M4F 96MHz 2048kB Flash 512kB SRAM
whismanoid 0:3edb3708c8c5 89 // +-------------[microUSB]-------------+
whismanoid 0:3edb3708c8c5 90 // | J1 MAX32630FTHR J2 |
whismanoid 0:3edb3708c8c5 91 // ______ | [ ] RST GND [ ] |
whismanoid 0:3edb3708c8c5 92 // ______ | [ ] 3V3 BAT+[ ] |
whismanoid 0:3edb3708c8c5 93 // ______ | [ ] 1V8 reset SW1 |
whismanoid 0:3edb3708c8c5 94 // ______ | [ ] GND J4 J3 |
whismanoid 0:3edb3708c8c5 95 // analogIn0/4 | [a] AIN_0 1.2Vfs (bat) SYS [ ] | switched BAT+
whismanoid 0:3edb3708c8c5 96 // analogIn1/5 | [a] AIN_1 1.2Vfs PWR [ ] | external pwr btn
whismanoid 0:3edb3708c8c5 97 // analogIn2 | [a] AIN_2 1.2Vfs +5V VBUS [ ] | USB +5V power
whismanoid 13:e36d51f46794 98 // analogIn3 | [a] AIN_3 1.2Vfs 1-WIRE P4_0 [d] | D0 dig9
whismanoid 13:e36d51f46794 99 // (I2C2.SDA) | [d] P5_7 SDA2 SRN P5_6 [d] | D1 dig8
whismanoid 13:e36d51f46794 100 // (I2C2.SCL) | [d] P6_0 SCL2 SDIO3 P5_5 [d] | D2 dig7
whismanoid 13:e36d51f46794 101 // D13/SCLK | [s] P5_0 SCLK SDIO2 P5_4 [d] | D3 dig6
whismanoid 13:e36d51f46794 102 // D11/MOSI | [s] P5_1 MOSI SSEL P5_3 [d] | D4 dig5
whismanoid 13:e36d51f46794 103 // D12/MISO | [s] P5_2 MISO RTS P3_3 [d] | D5 dig4
whismanoid 13:e36d51f46794 104 // D10/CS | [s] P3_0 RX CTS P3_2 [d] | D6 dig3
whismanoid 13:e36d51f46794 105 // D9 dig0 | [d] P3_1 TX SCL P3_5 [d] | D7 dig2
whismanoid 13:e36d51f46794 106 // ______ | [ ] GND SDA P3_4 [d] | D8 dig1
whismanoid 0:3edb3708c8c5 107 // | |
whismanoid 0:3edb3708c8c5 108 // | XIP Flash MAX14690N |
whismanoid 0:3edb3708c8c5 109 // | XIP_SCLK P1_0 SDA2 P5_7 |
whismanoid 0:3edb3708c8c5 110 // | XIP_MOSI P1_1 SCL2 P6_0 |
whismanoid 0:3edb3708c8c5 111 // | XIP_MISO P1_2 PMIC_INIT P3_7 |
whismanoid 0:3edb3708c8c5 112 // | XIP_SSEL P1_3 MPC P2_7 |
whismanoid 0:3edb3708c8c5 113 // | XIP_DIO2 P1_4 MON AIN_0 |
whismanoid 0:3edb3708c8c5 114 // | XIP_DIO3 P1_5 |
whismanoid 0:3edb3708c8c5 115 // | |
whismanoid 0:3edb3708c8c5 116 // | PAN1326B MicroSD LED |
whismanoid 0:3edb3708c8c5 117 // | BT_RX P0_0 SD_SCLK P0_4 r P2_4 |
whismanoid 0:3edb3708c8c5 118 // | BT_TX P0_1 SD_MOSI P0_5 g P2_5 |
whismanoid 0:3edb3708c8c5 119 // | BT_CTS P0_2 SD_MISO P0_6 b P2_6 |
whismanoid 0:3edb3708c8c5 120 // | BT_RTS P0_3 SD_SSEL P0_7 |
whismanoid 0:3edb3708c8c5 121 // | BT_RST P1_6 DETECT P2_2 |
whismanoid 0:3edb3708c8c5 122 // | BT_CLK P1_7 SW2 P2_3 |
whismanoid 0:3edb3708c8c5 123 // +------------------------------------+
whismanoid 0:3edb3708c8c5 124 // 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 0:3edb3708c8c5 125 // 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 0:3edb3708c8c5 126 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 127 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 128 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 129 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 130 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 131 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 132 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 133 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 134 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 135 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:3edb3708c8c5 136 // AIN_10 = x undefined?
whismanoid 0:3edb3708c8c5 137 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 138 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 139 //
whismanoid 0:3edb3708c8c5 140 #include "max32630fthr.h"
whismanoid 0:3edb3708c8c5 141 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 0:3edb3708c8c5 142 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:3edb3708c8c5 143 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 0:3edb3708c8c5 144 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 13:e36d51f46794 145 // Arduino connector
whismanoid 13:e36d51f46794 146 #ifndef A0
whismanoid 13:e36d51f46794 147 #define A0 AIN_0
whismanoid 13:e36d51f46794 148 #endif
whismanoid 13:e36d51f46794 149 #ifndef A1
whismanoid 13:e36d51f46794 150 #define A1 AIN_1
whismanoid 13:e36d51f46794 151 #endif
whismanoid 13:e36d51f46794 152 #ifndef A2
whismanoid 13:e36d51f46794 153 #define A2 AIN_2
whismanoid 13:e36d51f46794 154 #endif
whismanoid 13:e36d51f46794 155 #ifndef A3
whismanoid 13:e36d51f46794 156 #define A3 AIN_3
whismanoid 13:e36d51f46794 157 #endif
whismanoid 13:e36d51f46794 158 #ifndef D0
whismanoid 13:e36d51f46794 159 #define D0 P4_0
whismanoid 13:e36d51f46794 160 #endif
whismanoid 13:e36d51f46794 161 #ifndef D1
whismanoid 13:e36d51f46794 162 #define D1 P5_6
whismanoid 13:e36d51f46794 163 #endif
whismanoid 13:e36d51f46794 164 #ifndef D2
whismanoid 13:e36d51f46794 165 #define D2 P5_5
whismanoid 13:e36d51f46794 166 #endif
whismanoid 13:e36d51f46794 167 #ifndef D3
whismanoid 13:e36d51f46794 168 #define D3 P5_4
whismanoid 13:e36d51f46794 169 #endif
whismanoid 13:e36d51f46794 170 #ifndef D4
whismanoid 13:e36d51f46794 171 #define D4 P5_3
whismanoid 13:e36d51f46794 172 #endif
whismanoid 13:e36d51f46794 173 #ifndef D5
whismanoid 13:e36d51f46794 174 #define D5 P3_3
whismanoid 13:e36d51f46794 175 #endif
whismanoid 13:e36d51f46794 176 #ifndef D6
whismanoid 13:e36d51f46794 177 #define D6 P3_2
whismanoid 13:e36d51f46794 178 #endif
whismanoid 13:e36d51f46794 179 #ifndef D7
whismanoid 13:e36d51f46794 180 #define D7 P3_5
whismanoid 13:e36d51f46794 181 #endif
whismanoid 13:e36d51f46794 182 #ifndef D8
whismanoid 13:e36d51f46794 183 #define D8 P3_4
whismanoid 13:e36d51f46794 184 #endif
whismanoid 13:e36d51f46794 185 #ifndef D9
whismanoid 13:e36d51f46794 186 #define D9 P3_1
whismanoid 13:e36d51f46794 187 #endif
whismanoid 13:e36d51f46794 188 #ifndef D10
whismanoid 13:e36d51f46794 189 #define D10 P3_0
whismanoid 13:e36d51f46794 190 #endif
whismanoid 13:e36d51f46794 191 #ifndef D11
whismanoid 13:e36d51f46794 192 #define D11 P5_1
whismanoid 13:e36d51f46794 193 #endif
whismanoid 13:e36d51f46794 194 #ifndef D12
whismanoid 13:e36d51f46794 195 #define D12 P5_2
whismanoid 13:e36d51f46794 196 #endif
whismanoid 13:e36d51f46794 197 #ifndef D13
whismanoid 13:e36d51f46794 198 #define D13 P5_0
whismanoid 13:e36d51f46794 199 #endif
whismanoid 0:3edb3708c8c5 200 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 201 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 202 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 203 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:3edb3708c8c5 204 // +-------------------------------------+
whismanoid 0:3edb3708c8c5 205 // | MAX32625MBED Arduino UNO header |
whismanoid 0:3edb3708c8c5 206 // | |
whismanoid 0:3edb3708c8c5 207 // | A5/SCL[ ] | P1_7 dig15
whismanoid 0:3edb3708c8c5 208 // | A4/SDA[ ] | P1_6 dig14
whismanoid 0:3edb3708c8c5 209 // | AREF=N/C[ ] |
whismanoid 0:3edb3708c8c5 210 // | GND[ ] |
whismanoid 0:3edb3708c8c5 211 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 0:3edb3708c8c5 212 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 0:3edb3708c8c5 213 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 0:3edb3708c8c5 214 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 0:3edb3708c8c5 215 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 0:3edb3708c8c5 216 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 0:3edb3708c8c5 217 // | [ ]GND |
whismanoid 0:3edb3708c8c5 218 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 0:3edb3708c8c5 219 // | 6[ ]~| P0_6 dig6
whismanoid 0:3edb3708c8c5 220 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 0:3edb3708c8c5 221 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 0:3edb3708c8c5 222 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 0:3edb3708c8c5 223 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 0:3edb3708c8c5 224 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 0:3edb3708c8c5 225 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 0:3edb3708c8c5 226 // | [ ] [ ] [ ] |
whismanoid 0:3edb3708c8c5 227 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 0:3edb3708c8c5 228 // \_______________________/
whismanoid 0:3edb3708c8c5 229 //
whismanoid 0:3edb3708c8c5 230 // +------------------------+
whismanoid 0:3edb3708c8c5 231 // | |
whismanoid 0:3edb3708c8c5 232 // | MicroSD LED |
whismanoid 0:3edb3708c8c5 233 // | SD_SCLK P2_4 r P3_0 |
whismanoid 0:3edb3708c8c5 234 // | SD_MOSI P2_5 g P3_1 |
whismanoid 0:3edb3708c8c5 235 // | SD_MISO P2_6 b P3_2 |
whismanoid 0:3edb3708c8c5 236 // | SD_SSEL P2_7 y P3_3 |
whismanoid 0:3edb3708c8c5 237 // | |
whismanoid 0:3edb3708c8c5 238 // | DAPLINK BUTTONS |
whismanoid 0:3edb3708c8c5 239 // | TX P2_1 SW3 P2_3 |
whismanoid 0:3edb3708c8c5 240 // | RX P2_0 SW2 P2_2 |
whismanoid 0:3edb3708c8c5 241 // +------------------------+
whismanoid 0:3edb3708c8c5 242 //
whismanoid 0:3edb3708c8c5 243 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 244 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 245 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 246 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 247 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 248 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 249 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 250 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 251 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 252 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:3edb3708c8c5 253 // AIN_10 = x undefined?
whismanoid 0:3edb3708c8c5 254 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 255 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 256 //
whismanoid 0:3edb3708c8c5 257 //#include "max32625mbed.h" // ?
whismanoid 0:3edb3708c8c5 258 //MAX32625MBED mbed(MAX32625MBED::VIO_3V3); // ?
whismanoid 0:3edb3708c8c5 259 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:3edb3708c8c5 260 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 0:3edb3708c8c5 261 const float ADC_FULL_SCALE_VOLTAGE = 1.200; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 0:3edb3708c8c5 262 // Arduino connector
whismanoid 0:3edb3708c8c5 263 #ifndef A0
whismanoid 0:3edb3708c8c5 264 #define A0 AIN_0
whismanoid 0:3edb3708c8c5 265 #endif
whismanoid 0:3edb3708c8c5 266 #ifndef A1
whismanoid 0:3edb3708c8c5 267 #define A1 AIN_1
whismanoid 0:3edb3708c8c5 268 #endif
whismanoid 0:3edb3708c8c5 269 #ifndef A2
whismanoid 0:3edb3708c8c5 270 #define A2 AIN_2
whismanoid 0:3edb3708c8c5 271 #endif
whismanoid 0:3edb3708c8c5 272 #ifndef A3
whismanoid 0:3edb3708c8c5 273 #define A3 AIN_3
whismanoid 0:3edb3708c8c5 274 #endif
whismanoid 0:3edb3708c8c5 275 #ifndef D0
whismanoid 0:3edb3708c8c5 276 #define D0 P0_0
whismanoid 0:3edb3708c8c5 277 #endif
whismanoid 0:3edb3708c8c5 278 #ifndef D1
whismanoid 0:3edb3708c8c5 279 #define D1 P0_1
whismanoid 0:3edb3708c8c5 280 #endif
whismanoid 0:3edb3708c8c5 281 #ifndef D2
whismanoid 0:3edb3708c8c5 282 #define D2 P0_2
whismanoid 0:3edb3708c8c5 283 #endif
whismanoid 0:3edb3708c8c5 284 #ifndef D3
whismanoid 0:3edb3708c8c5 285 #define D3 P0_3
whismanoid 0:3edb3708c8c5 286 #endif
whismanoid 0:3edb3708c8c5 287 #ifndef D4
whismanoid 0:3edb3708c8c5 288 #define D4 P0_4
whismanoid 0:3edb3708c8c5 289 #endif
whismanoid 0:3edb3708c8c5 290 #ifndef D5
whismanoid 0:3edb3708c8c5 291 #define D5 P0_5
whismanoid 0:3edb3708c8c5 292 #endif
whismanoid 0:3edb3708c8c5 293 #ifndef D6
whismanoid 0:3edb3708c8c5 294 #define D6 P0_6
whismanoid 0:3edb3708c8c5 295 #endif
whismanoid 0:3edb3708c8c5 296 #ifndef D7
whismanoid 0:3edb3708c8c5 297 #define D7 P0_7
whismanoid 0:3edb3708c8c5 298 #endif
whismanoid 0:3edb3708c8c5 299 #ifndef D8
whismanoid 0:3edb3708c8c5 300 #define D8 P1_4
whismanoid 0:3edb3708c8c5 301 #endif
whismanoid 0:3edb3708c8c5 302 #ifndef D9
whismanoid 0:3edb3708c8c5 303 #define D9 P1_5
whismanoid 0:3edb3708c8c5 304 #endif
whismanoid 0:3edb3708c8c5 305 #ifndef D10
whismanoid 0:3edb3708c8c5 306 #define D10 P1_3
whismanoid 0:3edb3708c8c5 307 #endif
whismanoid 0:3edb3708c8c5 308 #ifndef D11
whismanoid 0:3edb3708c8c5 309 #define D11 P1_1
whismanoid 0:3edb3708c8c5 310 #endif
whismanoid 0:3edb3708c8c5 311 #ifndef D12
whismanoid 0:3edb3708c8c5 312 #define D12 P1_2
whismanoid 0:3edb3708c8c5 313 #endif
whismanoid 0:3edb3708c8c5 314 #ifndef D13
whismanoid 0:3edb3708c8c5 315 #define D13 P1_0
whismanoid 0:3edb3708c8c5 316 #endif
whismanoid 0:3edb3708c8c5 317 //--------------------------------------------------
whismanoid 11:9fa2402071de 318 #elif defined(TARGET_MAX32600)
whismanoid 11:9fa2402071de 319 // target MAX32600
whismanoid 11:9fa2402071de 320 //
whismanoid 11:9fa2402071de 321 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 11:9fa2402071de 322 const float ADC_FULL_SCALE_VOLTAGE = 1.500;
whismanoid 11:9fa2402071de 323 //
whismanoid 11:9fa2402071de 324 //--------------------------------------------------
whismanoid 16:3c75011e705a 325 #elif defined(TARGET_MAX32620FTHR)
whismanoid 16:3c75011e705a 326 #warning "TARGET_MAX32620FTHR not previously tested; need to define pins..."
whismanoid 17:bf4efc8f5eee 327 #include "MAX32620FTHR.h"
whismanoid 17:bf4efc8f5eee 328 // Initialize I/O voltages on MAX32620FTHR board
whismanoid 17:bf4efc8f5eee 329 MAX32620FTHR fthr(MAX32620FTHR::VIO_3V3);
whismanoid 16:3c75011e705a 330 //#define USE_LEDS 0 ?
whismanoid 16:3c75011e705a 331 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 16:3c75011e705a 332 #warning "TARGET_MAX32620FTHR not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 16:3c75011e705a 333 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 16:3c75011e705a 334 //
whismanoid 16:3c75011e705a 335 //--------------------------------------------------
whismanoid 16:3c75011e705a 336 #elif defined(TARGET_MAX32625PICO)
whismanoid 16:3c75011e705a 337 #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 16:3c75011e705a 338 //#define USE_LEDS 0 ?
whismanoid 16:3c75011e705a 339 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 18:14afc2a2150f 340 #warning "TARGET_MAX32625PICO not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 16:3c75011e705a 341 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 16:3c75011e705a 342 //
whismanoid 16:3c75011e705a 343 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 344 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 345 // TODO1: target NUCLEO_F446RE
whismanoid 0:3edb3708c8c5 346 //
whismanoid 0:3edb3708c8c5 347 // USER_BUTTON PC13
whismanoid 0:3edb3708c8c5 348 // LED1 is shared with SPI_SCK on NUCLEO_F446RE PA_5, so don't use LED1.
whismanoid 0:3edb3708c8c5 349 #define USE_LEDS 0
whismanoid 0:3edb3708c8c5 350 // SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
whismanoid 7:bf501f8cb637 351 // Serial serial(SERIAL_TX, SERIAL_RX);
whismanoid 0:3edb3708c8c5 352 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:3edb3708c8c5 353 const float ADC_FULL_SCALE_VOLTAGE = 3.300; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 0:3edb3708c8c5 354 //
whismanoid 0:3edb3708c8c5 355 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 356 #elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 357 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 358 // TARGET=LPC1768 ARM Cortex-M3 100 MHz 512kB flash 64kB SRAM
whismanoid 0:3edb3708c8c5 359 // +-------------[microUSB]-------------+
whismanoid 0:3edb3708c8c5 360 // ______ | [ ] GND +3.3V VOUT [ ] | ______
whismanoid 0:3edb3708c8c5 361 // ______ | [ ] 4.5V<VIN<9.0V +5.0V VU [ ] | ______
whismanoid 0:3edb3708c8c5 362 // ______ | [ ] VB USB.IF- [ ] | ______
whismanoid 0:3edb3708c8c5 363 // ______ | [ ] nR USB.IF+ [ ] | ______
whismanoid 0:3edb3708c8c5 364 // digitalInOut0 | [ ] p5 MOSI ETHERNET.RD- [ ] | ______
whismanoid 0:3edb3708c8c5 365 // digitalInOut1 | [ ] p6 MISO ETHERNET.RD+ [ ] | ______
whismanoid 0:3edb3708c8c5 366 // digitalInOut2 | [ ] p7 SCLK ETHERNET.TD- [ ] | ______
whismanoid 0:3edb3708c8c5 367 // digitalInOut3 | [ ] p8 ETHERNET.TD+ [ ] | ______
whismanoid 0:3edb3708c8c5 368 // digitalInOut4 | [ ] p9 TX SDA USB.D- [ ] | ______
whismanoid 0:3edb3708c8c5 369 // digitalInOut5 | [ ] p10 RX SCL USB.D+ [ ] | ______
whismanoid 0:3edb3708c8c5 370 // digitalInOut6 | [ ] p11 MOSI CAN-RD p30 [ ] | digitalInOut13
whismanoid 0:3edb3708c8c5 371 // digitalInOut7 | [ ] p12 MISO CAN-TD p29 [ ] | digitalInOut12
whismanoid 0:3edb3708c8c5 372 // digitalInOut8 | [ ] p13 TX SCLK SDA TX p28 [ ] | digitalInOut11
whismanoid 0:3edb3708c8c5 373 // digitalInOut9 | [ ] p14 RX SCL RX p27 [ ] | digitalInOut10
whismanoid 0:3edb3708c8c5 374 // analogIn0 | [ ] p15 AIN0 3.3Vfs PWM1 p26 [ ] | pwmDriver1
whismanoid 0:3edb3708c8c5 375 // analogIn1 | [ ] p16 AIN1 3.3Vfs PWM2 p25 [ ] | pwmDriver2
whismanoid 0:3edb3708c8c5 376 // analogIn2 | [ ] p17 AIN2 3.3Vfs PWM3 p24 [ ] | pwmDriver3
whismanoid 0:3edb3708c8c5 377 // analogIn3 | [ ] p18 AIN3 AOUT PWM4 p23 [ ] | pwmDriver4
whismanoid 0:3edb3708c8c5 378 // analogIn4 | [ ] p19 AIN4 3.3Vfs PWM5 p22 [ ] | pwmDriver5
whismanoid 0:3edb3708c8c5 379 // analogIn5 | [ ] p20 AIN5 3.3Vfs PWM6 p21 [ ] | pwmDriver6
whismanoid 0:3edb3708c8c5 380 // +------------------------------------+
whismanoid 0:3edb3708c8c5 381 // AIN6 = P0.3 = TGT_SBL_RXD?
whismanoid 0:3edb3708c8c5 382 // AIN7 = P0.2 = TGT_SBL_TXD?
whismanoid 0:3edb3708c8c5 383 //
whismanoid 0:3edb3708c8c5 384 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 385 // LPC1768 board uses VREF = 3.300V +A3,3V thru L1 to bypass capacitor C14
whismanoid 0:3edb3708c8c5 386 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:3edb3708c8c5 387 const float ADC_FULL_SCALE_VOLTAGE = 3.300;
whismanoid 0:3edb3708c8c5 388 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 0:3edb3708c8c5 389 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 390 // unknown target
whismanoid 0:3edb3708c8c5 391 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 392 #endif // target definition
whismanoid 0:3edb3708c8c5 393
whismanoid 0:3edb3708c8c5 394
whismanoid 0:3edb3708c8c5 395 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 396 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 0:3edb3708c8c5 397 #ifndef APPLICATION_ArduinoPinsMonitor
whismanoid 0:3edb3708c8c5 398 #define APPLICATION_ArduinoPinsMonitor 1
whismanoid 0:3edb3708c8c5 399 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 0:3edb3708c8c5 400
whismanoid 0:3edb3708c8c5 401 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 402 // Support MAX5715BOB Breakout Board
whismanoid 0:3edb3708c8c5 403 #ifndef APPLICATION_MAX5715
whismanoid 19:8f951e448ab1 404 #define APPLICATION_MAX5715 0
whismanoid 0:3edb3708c8c5 405 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 406 #if APPLICATION_MAX5715 // header file
whismanoid 0:3edb3708c8c5 407 #include "MAX5715.h"
whismanoid 0:3edb3708c8c5 408 // suppress the I2C diagnostics, not relevant to this chip
whismanoid 0:3edb3708c8c5 409 #define HAS_I2C 0
whismanoid 0:3edb3708c8c5 410 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 411
whismanoid 0:3edb3708c8c5 412 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 413 // Support MAX11131BOB Breakout Board
whismanoid 0:3edb3708c8c5 414 #ifndef APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 415 #define APPLICATION_MAX11131 0
whismanoid 0:3edb3708c8c5 416 #endif // APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 417 #if APPLICATION_MAX11131 // header file
whismanoid 0:3edb3708c8c5 418 #include "MAX11131.h"
whismanoid 0:3edb3708c8c5 419 // suppress the I2C diagnostics, not relevant to this chip
whismanoid 0:3edb3708c8c5 420 #define HAS_I2C 0
whismanoid 0:3edb3708c8c5 421 #endif // APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 422
whismanoid 0:3edb3708c8c5 423 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 424 // Support MAX5171BOB Breakout Board
whismanoid 0:3edb3708c8c5 425 #ifndef APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 426 #define APPLICATION_MAX5171 0
whismanoid 0:3edb3708c8c5 427 #endif // APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 428 #if APPLICATION_MAX5171 // header file
whismanoid 0:3edb3708c8c5 429 #include "MAX5171.h"
whismanoid 0:3edb3708c8c5 430 // suppress the I2C diagnostics, not relevant to this chip
whismanoid 0:3edb3708c8c5 431 #define HAS_I2C 0
whismanoid 0:3edb3708c8c5 432 #endif // APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 433
whismanoid 0:3edb3708c8c5 434 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 435 // Support MAX11410BOB Breakout Board (placeholder)
whismanoid 0:3edb3708c8c5 436 #ifndef APPLICATION_MAX11410
whismanoid 19:8f951e448ab1 437 #define APPLICATION_MAX11410 1
whismanoid 0:3edb3708c8c5 438 #endif // APPLICATION_MAX11410
whismanoid 0:3edb3708c8c5 439 #if APPLICATION_MAX11410 // header file
whismanoid 0:3edb3708c8c5 440 #include "MAX11410.h"
whismanoid 15:2c21eaa9188b 441 #define HAS_I2C 0
whismanoid 44:a2040e43aa53 442 // Optional Diagnostic function to print SPI transactions
whismanoid 44:a2040e43aa53 443 #ifndef MAX11410_ONSPIPRINT
whismanoid 44:a2040e43aa53 444 #define MAX11410_ONSPIPRINT 1
whismanoid 44:a2040e43aa53 445 #endif
whismanoid 0:3edb3708c8c5 446 #endif // APPLICATION_MAX11410
whismanoid 0:3edb3708c8c5 447
whismanoid 0:3edb3708c8c5 448 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 449 // Support MAX12345BOB Breakout Board (placeholder)
whismanoid 0:3edb3708c8c5 450 #ifndef APPLICATION_MAX12345
whismanoid 0:3edb3708c8c5 451 #define APPLICATION_MAX12345 0
whismanoid 0:3edb3708c8c5 452 #endif // APPLICATION_MAX12345
whismanoid 0:3edb3708c8c5 453 #if APPLICATION_MAX12345 // header file
whismanoid 0:3edb3708c8c5 454 #include "MAX12345.h"
whismanoid 15:2c21eaa9188b 455 #define HAS_I2C 0
whismanoid 0:3edb3708c8c5 456 #endif // APPLICATION_MAX12345
whismanoid 0:3edb3708c8c5 457
whismanoid 0:3edb3708c8c5 458
whismanoid 0:3edb3708c8c5 459 #include "MAX541.h"
whismanoid 0:3edb3708c8c5 460
whismanoid 0:3edb3708c8c5 461 #include "MaximTinyTester.h"
whismanoid 0:3edb3708c8c5 462
whismanoid 0:3edb3708c8c5 463 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 464 // Option to dedicate SPI port pins
whismanoid 0:3edb3708c8c5 465 //
whismanoid 0:3edb3708c8c5 466 // SPI2_MOSI = P5_1
whismanoid 0:3edb3708c8c5 467 // SPI2_MISO = P5_2
whismanoid 0:3edb3708c8c5 468 // SPI2_SCK = P5_0
whismanoid 0:3edb3708c8c5 469 // On this board I'm using P3_0 as spi_cs
whismanoid 0:3edb3708c8c5 470 // SPI2_SS = P5_3
whismanoid 0:3edb3708c8c5 471 // SPI2_SDIO2 = P5_4
whismanoid 0:3edb3708c8c5 472 // SPI2_SDIO3 = P5_5
whismanoid 0:3edb3708c8c5 473 // SPI2_SRN = P5_6
whismanoid 0:3edb3708c8c5 474 //
whismanoid 0:3edb3708c8c5 475 #ifndef HAS_SPI
whismanoid 0:3edb3708c8c5 476 #define HAS_SPI 1
whismanoid 0:3edb3708c8c5 477 #endif
whismanoid 0:3edb3708c8c5 478 #if HAS_SPI
whismanoid 0:3edb3708c8c5 479 #define SPI_MODE0 0
whismanoid 0:3edb3708c8c5 480 #define SPI_MODE1 1
whismanoid 0:3edb3708c8c5 481 #define SPI_MODE2 2
whismanoid 0:3edb3708c8c5 482 #define SPI_MODE3 3
whismanoid 0:3edb3708c8c5 483 //
whismanoid 0:3edb3708c8c5 484 // Define application-specific default SPI_SCLK_Hz and SPI_dataMode
whismanoid 0:3edb3708c8c5 485 #if APPLICATION_MAX5715 // SPI interface default settings
whismanoid 0:3edb3708c8c5 486 //
whismanoid 0:3edb3708c8c5 487 //#define SPI_SCLK_Hz 48000000 // 48MHz
whismanoid 0:3edb3708c8c5 488 //#define SPI_SCLK_Hz 24000000 // 24MHz
whismanoid 0:3edb3708c8c5 489 #define SPI_SCLK_Hz 12000000 // 12MHz
whismanoid 0:3edb3708c8c5 490 //#define SPI_SCLK_Hz 4000000 // 4MHz
whismanoid 0:3edb3708c8c5 491 //#define SPI_SCLK_Hz 2000000 // 2MHz
whismanoid 0:3edb3708c8c5 492 //#define SPI_SCLK_Hz 1000000 // 1MHz
whismanoid 0:3edb3708c8c5 493 #define SPI_dataMode SPI_MODE2 // CPOL=1,CPHA=0: Falling Edge stable; SCLK idle High
whismanoid 0:3edb3708c8c5 494 //
whismanoid 0:3edb3708c8c5 495 #elif APPLICATION_MAX11131 // SPI interface default settings
whismanoid 0:3edb3708c8c5 496 //
whismanoid 0:3edb3708c8c5 497 //#define SPI_SCLK_Hz 48000000 // 48MHz
whismanoid 0:3edb3708c8c5 498 //#define SPI_SCLK_Hz 24000000 // 24MHz
whismanoid 0:3edb3708c8c5 499 #define SPI_SCLK_Hz 12000000 // 12MHz
whismanoid 0:3edb3708c8c5 500 //#define SPI_SCLK_Hz 4000000 // 4MHz
whismanoid 0:3edb3708c8c5 501 //#define SPI_SCLK_Hz 2000000 // 2MHz
whismanoid 0:3edb3708c8c5 502 //#define SPI_SCLK_Hz 1000000 // 1MHz
whismanoid 0:3edb3708c8c5 503 #define SPI_dataMode SPI_MODE3 // CPOL=1,CPHA=1: Rising Edge stable; SCLK idle High
whismanoid 0:3edb3708c8c5 504 //
whismanoid 0:3edb3708c8c5 505 #elif APPLICATION_MAX5171 // SPI interface default settings
whismanoid 0:3edb3708c8c5 506 //
whismanoid 0:3edb3708c8c5 507 //#define SPI_SCLK_Hz 48000000 // 48MHz
whismanoid 0:3edb3708c8c5 508 //#define SPI_SCLK_Hz 24000000 // 24MHz
whismanoid 0:3edb3708c8c5 509 #define SPI_SCLK_Hz 12000000 // 12MHz
whismanoid 0:3edb3708c8c5 510 //#define SPI_SCLK_Hz 4000000 // 4MHz
whismanoid 0:3edb3708c8c5 511 //#define SPI_SCLK_Hz 2000000 // 2MHz
whismanoid 0:3edb3708c8c5 512 //#define SPI_SCLK_Hz 1000000 // 1MHz
whismanoid 0:3edb3708c8c5 513 #define SPI_dataMode SPI_MODE3 // CPOL=1,CPHA=1: Rising Edge stable; SCLK idle High
whismanoid 0:3edb3708c8c5 514 //
whismanoid 0:3edb3708c8c5 515 #elif APPLICATION_MAX11410 // SPI interface default settings
whismanoid 0:3edb3708c8c5 516 //
whismanoid 0:3edb3708c8c5 517 //#define SPI_SCLK_Hz 48000000 // 48MHz
whismanoid 0:3edb3708c8c5 518 //#define SPI_SCLK_Hz 24000000 // 24MHz
whismanoid 0:3edb3708c8c5 519 //#define SPI_SCLK_Hz 12000000 // 12MHz
whismanoid 0:3edb3708c8c5 520 #define SPI_SCLK_Hz 8000000 // 8MHz
whismanoid 0:3edb3708c8c5 521 //#define SPI_SCLK_Hz 4000000 // 4MHz
whismanoid 0:3edb3708c8c5 522 //#define SPI_SCLK_Hz 2000000 // 2MHz
whismanoid 0:3edb3708c8c5 523 //#define SPI_SCLK_Hz 1000000 // 1MHz
whismanoid 0:3edb3708c8c5 524 #define SPI_dataMode SPI_MODE0 // CPOL=0,CPHA=0: Falling Edge stable; SCLK idle Low
whismanoid 0:3edb3708c8c5 525 //
whismanoid 0:3edb3708c8c5 526 #elif APPLICATION_MAX12345 // SPI interface default settings
whismanoid 0:3edb3708c8c5 527 //
whismanoid 0:3edb3708c8c5 528 //#define SPI_SCLK_Hz 48000000 // 48MHz
whismanoid 0:3edb3708c8c5 529 //#define SPI_SCLK_Hz 24000000 // 24MHz
whismanoid 0:3edb3708c8c5 530 #define SPI_SCLK_Hz 12000000 // 12MHz
whismanoid 0:3edb3708c8c5 531 //#define SPI_SCLK_Hz 4000000 // 4MHz
whismanoid 0:3edb3708c8c5 532 //#define SPI_SCLK_Hz 2000000 // 2MHz
whismanoid 0:3edb3708c8c5 533 //#define SPI_SCLK_Hz 1000000 // 1MHz
whismanoid 0:3edb3708c8c5 534 #define SPI_dataMode SPI_MODE3 // CPOL=1,CPHA=1: Rising Edge stable; SCLK idle High
whismanoid 0:3edb3708c8c5 535 //
whismanoid 0:3edb3708c8c5 536 #else // APPLICATION_ArduinoPinsMonitor diagnostic
whismanoid 0:3edb3708c8c5 537 //
whismanoid 0:3edb3708c8c5 538 //#define SPI_SCLK_Hz 48000000 // 48MHz
whismanoid 0:3edb3708c8c5 539 //#define SPI_SCLK_Hz 4000000 // 4MHz
whismanoid 0:3edb3708c8c5 540 //#define SPI_SCLK_Hz 2000000 // 2MHz
whismanoid 0:3edb3708c8c5 541 #define SPI_SCLK_Hz 1000000 // 1MHz
whismanoid 0:3edb3708c8c5 542 //#define SPI_dataMode SPI_MODE0 // CPOL=0,CPHA=0: Rising Edge stable; SCLK idle Low
whismanoid 0:3edb3708c8c5 543 //#define SPI_dataMode SPI_MODE1 // CPOL=0,CPHA=1: Falling Edge stable; SCLK idle Low
whismanoid 0:3edb3708c8c5 544 //#define SPI_dataMode SPI_MODE2 // CPOL=1,CPHA=0: Falling Edge stable; SCLK idle High
whismanoid 0:3edb3708c8c5 545 #define SPI_dataMode SPI_MODE3 // CPOL=1,CPHA=1: Rising Edge stable; SCLK idle High
whismanoid 0:3edb3708c8c5 546 //
whismanoid 0:3edb3708c8c5 547 #endif
whismanoid 0:3edb3708c8c5 548 //
whismanoid 14:cbe972986136 549 #if defined(TARGET_MAX32630)
whismanoid 14:cbe972986136 550 // Before setting global variables g_SPI_SCLK_Hz and g_SPI_dataMode,
whismanoid 14:cbe972986136 551 // workaround for TARGET_MAX32630 SPI_MODE2 SPI_MODE3 problem (issue #30)
whismanoid 14:cbe972986136 552 #warning "MAX32630 SPI workaround..."
whismanoid 14:cbe972986136 553 // replace SPI_MODE2 (CPOL=1,CPHA=0) with SPI_MODE1 (CPOL=0,CPHA=1) Falling Edge stable
whismanoid 14:cbe972986136 554 // replace SPI_MODE3 (CPOL=1,CPHA=1) with SPI_MODE0 (CPOL=0,CPHA=0) Rising Edge stable
whismanoid 14:cbe972986136 555 # if ((SPI_dataMode) == (SPI_MODE2))
whismanoid 14:cbe972986136 556 #warning "MAX32630 SPI_MODE2 workaround, changing SPI_dataMode to SPI_MODE1..."
whismanoid 14:cbe972986136 557 // SPI_dataMode SPI_MODE2 // CPOL=1,CPHA=0: Falling Edge stable; SCLK idle High
whismanoid 14:cbe972986136 558 # undef SPI_dataMode
whismanoid 14:cbe972986136 559 # define SPI_dataMode SPI_MODE1 // CPOL=0,CPHA=1: Falling Edge stable; SCLK idle Low
whismanoid 14:cbe972986136 560 # elif ((SPI_dataMode) == (SPI_MODE3))
whismanoid 14:cbe972986136 561 #warning "MAX32630 SPI_MODE3 workaround, changing SPI_dataMode to SPI_MODE0..."
whismanoid 14:cbe972986136 562 // SPI_dataMode SPI_MODE3 // CPOL=1,CPHA=1: Rising Edge stable; SCLK idle High
whismanoid 14:cbe972986136 563 # undef SPI_dataMode
whismanoid 14:cbe972986136 564 # define SPI_dataMode SPI_MODE0 // CPOL=0,CPHA=0: Rising Edge stable; SCLK idle Low
whismanoid 14:cbe972986136 565 # endif // workaround for TARGET_MAX32630 SPI_MODE2 SPI_MODE3 problem
whismanoid 14:cbe972986136 566 // workaround for TARGET_MAX32630 SPI_MODE2 SPI_MODE3 problem (issue #30)
whismanoid 14:cbe972986136 567 // limit SPI SCLK speed to 6MHz or less
whismanoid 14:cbe972986136 568 # if ((SPI_SCLK_Hz) > (6000000))
whismanoid 14:cbe972986136 569 #warning "MAX32630 SPI speed workaround, changing SPI_SCLK_Hz to 6000000 or 6MHz..."
whismanoid 14:cbe972986136 570 # undef SPI_SCLK_Hz
whismanoid 14:cbe972986136 571 # define SPI_SCLK_Hz 6000000 // 6MHz
whismanoid 14:cbe972986136 572 # endif
whismanoid 14:cbe972986136 573 #endif
whismanoid 14:cbe972986136 574 //
whismanoid 0:3edb3708c8c5 575 uint32_t g_SPI_SCLK_Hz = SPI_SCLK_Hz;
whismanoid 0:3edb3708c8c5 576 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency SystemCoreClock F_CPU
whismanoid 0:3edb3708c8c5 577 #if defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 578 // Nucleo SPI frequency isn't working quite as expected...
whismanoid 0:3edb3708c8c5 579 // Looks like STMF4 has an spi clock prescaler (2,4,8,16,32,64,128,256)
whismanoid 0:3edb3708c8c5 580 // so 180MHz->[90.0, 45.0, 22.5, 11.25, 5.625, 2.8125, 1.40625, 0.703125]
whismanoid 0:3edb3708c8c5 581 // %SC SCLK=1MHz sets spi frequency 703.125kHz
whismanoid 0:3edb3708c8c5 582 // %SC SCLK=2MHz sets spi frequency 1.40625MHz
whismanoid 0:3edb3708c8c5 583 // %SC SCLK=3MHz sets spi frequency 2.8125MHz
whismanoid 0:3edb3708c8c5 584 // %SC SCLK=6MHz sets spi frequency 5.625MHz
whismanoid 0:3edb3708c8c5 585 // %SC SCLK=12MHz sets spi frequency 11.25MHz
whismanoid 0:3edb3708c8c5 586 // %SC SCLK=23MHz sets spi frequency 22.5MHz
whismanoid 0:3edb3708c8c5 587 // %SC SCLK=45MHz sets spi frequency 45.0MHz
whismanoid 0:3edb3708c8c5 588 // Don't know why I can't reach spi frequency 90.0MHz, but ok whatever.
whismanoid 0:3edb3708c8c5 589 const uint32_t limit_min_SPI_SCLK_divisor = 2;
whismanoid 0:3edb3708c8c5 590 const uint32_t limit_max_SPI_SCLK_divisor = 256;
whismanoid 0:3edb3708c8c5 591 // not really a divisor, just a powers-of-two prescaler with no intermediate divisors.
whismanoid 0:3edb3708c8c5 592 #else
whismanoid 0:3edb3708c8c5 593 const uint32_t limit_min_SPI_SCLK_divisor = 2;
whismanoid 0:3edb3708c8c5 594 const uint32_t limit_max_SPI_SCLK_divisor = 8191;
whismanoid 0:3edb3708c8c5 595 #endif
whismanoid 0:3edb3708c8c5 596 const uint32_t limit_max_SPI_SCLK_Hz = (SystemCoreClock / limit_min_SPI_SCLK_divisor); // F_CPU / 2; // 8MHz / 2 = 4MHz
whismanoid 0:3edb3708c8c5 597 const uint32_t limit_min_SPI_SCLK_Hz = (SystemCoreClock / limit_max_SPI_SCLK_divisor); // F_CPU / 128; // 8MHz / 128 = 62.5kHz
whismanoid 0:3edb3708c8c5 598 //
whismanoid 0:3edb3708c8c5 599 uint8_t g_SPI_dataMode = SPI_dataMode;
whismanoid 0:3edb3708c8c5 600 uint8_t g_SPI_cs_state = 1;
whismanoid 0:3edb3708c8c5 601 //
whismanoid 0:3edb3708c8c5 602 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 603 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:3edb3708c8c5 604 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:3edb3708c8c5 605 //SPI spi0(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi0 MAX32630FTHR: P0_5 P0_6 P0_4 ok but this is the microSD card, can't contact pins
whismanoid 0:3edb3708c8c5 606 //SPI spi1(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 MAX32630FTHR: P1_1 P1_2 P1_0 ok but this is the xip flash, can't contact pins
whismanoid 0:3edb3708c8c5 607 //SPI spi2(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi2 MAX32630FTHR: P5_1, P5_2, P5_0
whismanoid 0:3edb3708c8c5 608 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi2 MAX32630FTHR: P5_1, P5_2, P5_0
whismanoid 0:3edb3708c8c5 609 //
whismanoid 0:3edb3708c8c5 610 DigitalOut spi_cs(P3_0);
whismanoid 0:3edb3708c8c5 611 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 612 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:3edb3708c8c5 613 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:3edb3708c8c5 614 //SPI spi(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi0 TARGET_MAX32635MBED: P0_5 P0_6 P0_4 Arduino 8-pin header D5 D6 D7
whismanoid 0:3edb3708c8c5 615 //DigitalOut spi_cs(SPI0_SS); // TARGET_MAX32635MBED: P0_7 Arduino 8-pin header D4
whismanoid 0:3edb3708c8c5 616 SPI spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 TARGET_MAX32635MBED: P1_1 P1_2 P1_0 Arduino 10-pin header D11 D12 D13
whismanoid 0:3edb3708c8c5 617 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32635MBED: P1_3 Arduino 10-pin header D10
whismanoid 0:3edb3708c8c5 618 SPI spi2_max541(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi2 TARGET_MAX32635MBED: P2_5 P2_6 P2_4 Arduino 2x3-pin header; microSD
whismanoid 0:3edb3708c8c5 619 DigitalOut spi2_max541_cs(SPI2_SS); // TARGET_MAX32635MBED: P2_7 Arduino 2x3-pin header
whismanoid 0:3edb3708c8c5 620 #define HAS_SPI2_MAX541 1
whismanoid 0:3edb3708c8c5 621 //
whismanoid 16:3c75011e705a 622 #elif defined(TARGET_MAX32620FTHR)
whismanoid 16:3c75011e705a 623 #warning "TARGET_MAX32620FTHR not previously tested; need to define SPI pins..."
whismanoid 16:3c75011e705a 624 //
whismanoid 16:3c75011e705a 625 // SPI0 P0_ PMOD Port 0 Back access
whismanoid 16:3c75011e705a 626 //SPI spi0(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi1 TARGET_MAX32620FTHR: PMOD Port 0 Back access
whismanoid 16:3c75011e705a 627 //DigitalOut spi_cs0(SPI0_SS); // TARGET_MAX32620FTHR: PMOD Port 0 Back access
whismanoid 16:3c75011e705a 628 //
whismanoid 16:3c75011e705a 629 // SPI1 P1_ PMOD Port 1 Top Access
whismanoid 16:3c75011e705a 630 SPI spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 TARGET_MAX32620FTHR: PMOD Port 1 Top Access
whismanoid 16:3c75011e705a 631 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32620FTHR: PMOD Port 1 Top Access
whismanoid 16:3c75011e705a 632 //
whismanoid 16:3c75011e705a 633 // SPI2 P5_ Feather J1.11,12,13
whismanoid 16:3c75011e705a 634 //SPI spi2(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32620FTHR: Feather J1.11,12,13
whismanoid 16:3c75011e705a 635 //DigitalOut spi_cs2(SPI2_SS); // TARGET_MAX32620FTHR: Feather J1.11,12,13
whismanoid 16:3c75011e705a 636 //
whismanoid 16:3c75011e705a 637 #elif defined(TARGET_MAX32625PICO)
whismanoid 16:3c75011e705a 638 #warning "TARGET_MAX32625PICO not previously tested; need to define SPI pins..."
whismanoid 16:3c75011e705a 639 // Note to software maintainer:
whismanoid 16:3c75011e705a 640 // when adding new platform support,
whismanoid 16:3c75011e705a 641 // add another #elif block above to support the new platform
whismanoid 16:3c75011e705a 642 SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625PICO: 15 P0_5 MOSI; 14 P0_6 MISO; 16 P0_4 SCLK
whismanoid 16:3c75011e705a 643 DigitalOut spi_cs(SPI_SS); // TARGET_MAX32625PICO: 13 P0_7 SSEL
whismanoid 16:3c75011e705a 644 //
whismanoid 11:9fa2402071de 645 #elif defined(TARGET_MAX32600)
whismanoid 11:9fa2402071de 646 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 11:9fa2402071de 647 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 11:9fa2402071de 648 //
whismanoid 0:3edb3708c8c5 649 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 650 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:3edb3708c8c5 651 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:3edb3708c8c5 652 //
whismanoid 0:3edb3708c8c5 653 // TODO1: NUCLEO_F446RE SPI not working; CS and MOSI data looks OK but no SCLK clock pulses.
whismanoid 0:3edb3708c8c5 654 SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk spi1 TARGET_NUCLEO_F446RE: Arduino 10-pin header D11 D12 D13
whismanoid 0:3edb3708c8c5 655 DigitalOut spi_cs(SPI_CS); // TARGET_NUCLEO_F446RE: PB_6 Arduino 10-pin header D10
whismanoid 0:3edb3708c8c5 656 //
whismanoid 0:3edb3708c8c5 657 #elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 658 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:3edb3708c8c5 659 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:3edb3708c8c5 660 //SPI spi0(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi0 MAX32630FTHR: P0_5 P0_6 P0_4 ok but this is the microSD card, can't contact pins
whismanoid 0:3edb3708c8c5 661 //SPI spi1(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 MAX32630FTHR: P1_1 P1_2 P1_0 ok but this is the xip flash, can't contact pins
whismanoid 0:3edb3708c8c5 662 //SPI spi2(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi2 MAX32630FTHR: P5_1, P5_2, P5_0
whismanoid 0:3edb3708c8c5 663 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi2 MAX32630FTHR: P5_1, P5_2, P5_0
whismanoid 0:3edb3708c8c5 664 //
whismanoid 0:3edb3708c8c5 665 DigitalOut spi_cs(P3_0);
whismanoid 16:3c75011e705a 666 //
whismanoid 0:3edb3708c8c5 667 #else
whismanoid 0:3edb3708c8c5 668 // unknown target
whismanoid 16:3c75011e705a 669 #warning "target not previously tested; need to define SPI pins..."
whismanoid 16:3c75011e705a 670 // Note to software maintainer:
whismanoid 16:3c75011e705a 671 // when adding new platform support,
whismanoid 16:3c75011e705a 672 // add another #elif block above to support the new platform
whismanoid 16:3c75011e705a 673 //SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk spi1 TARGET_xxx: Arduino 10-pin header D11 D12 D13
whismanoid 16:3c75011e705a 674 //DigitalOut spi_cs(SPI_CS); // TARGET_xxx: PX_x Arduino 10-pin header D10
whismanoid 0:3edb3708c8c5 675 #endif
whismanoid 0:3edb3708c8c5 676 #endif
whismanoid 0:3edb3708c8c5 677
whismanoid 0:3edb3708c8c5 678 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 679 // Device driver object
whismanoid 0:3edb3708c8c5 680 #if APPLICATION_MAX5715 // SPI interface default settings
whismanoid 0:3edb3708c8c5 681 DigitalOut LDACb_pin(D9); // Arduino 10-pin header D9
whismanoid 0:3edb3708c8c5 682 DigitalOut CLRb_pin(D8); // Arduino 10-pin header D8
whismanoid 0:3edb3708c8c5 683 //~ DigitalIn RDYb_pin(D12); // Arduino 10-pin header D12 (MISO)
whismanoid 0:3edb3708c8c5 684 MAX5715 g_MAX5715_device(spi, spi_cs,
whismanoid 0:3edb3708c8c5 685 LDACb_pin,
whismanoid 0:3edb3708c8c5 686 CLRb_pin,
whismanoid 0:3edb3708c8c5 687 ///* RDYb_pin */ digitalInOut12,
whismanoid 0:3edb3708c8c5 688 MAX5715::MAX5715_IC);
whismanoid 0:3edb3708c8c5 689 //
whismanoid 0:3edb3708c8c5 690 #elif APPLICATION_MAX11131 // SPI interface default settings
whismanoid 0:3edb3708c8c5 691 DigitalOut CNVSTb_pin(D9); // Arduino 10-pin header D9
whismanoid 0:3edb3708c8c5 692 //DigitalOut CLRb_pin(D8); // Arduino 10-pin header D8
whismanoid 0:3edb3708c8c5 693 DigitalIn EOCb_pin(D12); // Arduino 10-pin header D12 (MISO)
whismanoid 0:3edb3708c8c5 694 MAX11131 g_MAX11131_device(spi, spi_cs,
whismanoid 0:3edb3708c8c5 695 CNVSTb_pin,
whismanoid 0:3edb3708c8c5 696 EOCb_pin,
whismanoid 0:3edb3708c8c5 697 ///* RDYb_pin */ digitalInOut12,
whismanoid 0:3edb3708c8c5 698 MAX11131::MAX11131_IC);
whismanoid 0:3edb3708c8c5 699 //
whismanoid 0:3edb3708c8c5 700 //
whismanoid 0:3edb3708c8c5 701 #elif APPLICATION_MAX5171 // SPI interface default settings
whismanoid 0:3edb3708c8c5 702 // AnalogOut FB_pin(Px_x_PortName_To_Be_Determined); // Analog Input to MAX5171 device
whismanoid 0:3edb3708c8c5 703 DigitalOut RS_pin(D9); // Digital Configuration Input to MAX5171 device
whismanoid 0:3edb3708c8c5 704 DigitalOut PDLb_pin(D8); // Digital Configuration Input to MAX5171 device
whismanoid 0:3edb3708c8c5 705 DigitalOut CLRb_pin(D7); // Digital Configuration Input to MAX5171 device
whismanoid 0:3edb3708c8c5 706 DigitalOut SHDN_pin(D6); // Digital Configuration Input to MAX5171 device
whismanoid 0:3edb3708c8c5 707 // AnalogIn OUT_pin(A0); // Analog Output from MAX5171 device
whismanoid 0:3edb3708c8c5 708 DigitalIn UPO_pin(D2); // Digital General-Purpose Output from MAX5171 device
whismanoid 0:3edb3708c8c5 709 MAX5171 g_MAX5171_device(spi, spi_cs, RS_pin, PDLb_pin, CLRb_pin, SHDN_pin, UPO_pin, MAX5171::MAX5171_IC);
whismanoid 0:3edb3708c8c5 710 //
whismanoid 0:3edb3708c8c5 711 #elif APPLICATION_MAX11410 // SPI interface default settings
whismanoid 0:3edb3708c8c5 712 //
whismanoid 0:3edb3708c8c5 713 MAX11410 g_MAX11410_device(spi, spi_cs, MAX11410::MAX11410_IC);
whismanoid 0:3edb3708c8c5 714 //
whismanoid 0:3edb3708c8c5 715 #elif APPLICATION_MAX12345 // SPI interface default settings
whismanoid 0:3edb3708c8c5 716 //
whismanoid 0:3edb3708c8c5 717 MAX12345 g_MAX12345_device(spi, spi_cs, ...);
whismanoid 0:3edb3708c8c5 718 //
whismanoid 0:3edb3708c8c5 719 #else // APPLICATION_ArduinoPinsMonitor diagnostic
whismanoid 0:3edb3708c8c5 720 //
whismanoid 0:3edb3708c8c5 721 #endif
whismanoid 0:3edb3708c8c5 722
whismanoid 0:3edb3708c8c5 723
whismanoid 0:3edb3708c8c5 724 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 725 // Option to dedicate I2C port pins
whismanoid 0:3edb3708c8c5 726 //
whismanoid 0:3edb3708c8c5 727 #ifndef HAS_I2C
whismanoid 0:3edb3708c8c5 728 #define HAS_I2C 1
whismanoid 0:3edb3708c8c5 729 #endif
whismanoid 0:3edb3708c8c5 730 #if HAS_I2C
whismanoid 0:3edb3708c8c5 731 //#include "I2C.h"
whismanoid 0:3edb3708c8c5 732 //#include "I2CSlave.h"
whismanoid 0:3edb3708c8c5 733 //#define I2C_SCL_Hz 400000 // 400kHz
whismanoid 0:3edb3708c8c5 734 //#define I2C_SCL_Hz 200000 // 200kHz
whismanoid 0:3edb3708c8c5 735 #define I2C_SCL_Hz 100000 // 100kHz
whismanoid 0:3edb3708c8c5 736 //
whismanoid 0:3edb3708c8c5 737 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 738 // TODO1: validate g_I2C_SCL_Hz against system clock frequency SystemCoreClock F_CPU
whismanoid 0:3edb3708c8c5 739 const uint32_t limit_max_I2C_SCL_Hz = (SystemCoreClock / 2); // F_CPU / 2; // 8MHz / 2 = 4MHz
whismanoid 0:3edb3708c8c5 740 const uint32_t limit_min_I2C_SCL_Hz = (SystemCoreClock / 8191); // F_CPU / 128; // 8MHz / 128 = 62.5kHz
whismanoid 0:3edb3708c8c5 741 //
whismanoid 0:3edb3708c8c5 742 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:3edb3708c8c5 743 //I2C i2cMaster0(I2C0_SDA, I2C0_SCL); // sda scl MAX32630FTHR: NOT_CONNECTED
whismanoid 0:3edb3708c8c5 744 //I2C i2cMaster1(I2C1_SDA, I2C1_SCL); // sda scl MAX32630FTHR: P3_4, P3_5
whismanoid 0:3edb3708c8c5 745 //I2C i2cMaster2(I2C2_SDA, I2C2_SCL); // sda scl MAX32630FTHR: P5_7, P6_0
whismanoid 0:3edb3708c8c5 746 //I2C i2cMaster(I2C2_SDA, I2C2_SCL); // sda scl MAX32630FTHR: P5_7, P6_0
whismanoid 0:3edb3708c8c5 747 //
whismanoid 0:3edb3708c8c5 748 //I2CSlave i2cSlave0(I2C0_SDA, I2C0_SCL); // sda scl MAX32630FTHR: NOT_CONNECTED
whismanoid 0:3edb3708c8c5 749 //I2CSlave i2cSlave1(I2C1_SDA, I2C1_SCL); // sda scl MAX32630FTHR: P3_4, P3_5
whismanoid 0:3edb3708c8c5 750 //I2CSlave i2cSlave2(I2C2_SDA, I2C2_SCL); // sda scl MAX32630FTHR: P5_7, P6_0
whismanoid 0:3edb3708c8c5 751 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 752 // TODO1: validate g_I2C_SCL_Hz against system clock frequency SystemCoreClock F_CPU
whismanoid 0:3edb3708c8c5 753 const uint32_t limit_max_I2C_SCL_Hz = (SystemCoreClock / 2); // F_CPU / 2; // 8MHz / 2 = 4MHz
whismanoid 0:3edb3708c8c5 754 const uint32_t limit_min_I2C_SCL_Hz = (SystemCoreClock / 8191); // F_CPU / 128; // 8MHz / 128 = 62.5kHz
whismanoid 0:3edb3708c8c5 755 //
whismanoid 0:3edb3708c8c5 756 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:3edb3708c8c5 757 //I2C i2cMaster0(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 0:3edb3708c8c5 758 //I2C i2cMaster1(I2C1_SDA, I2C1_SCL); // sda scl TARGET_MAX32635MBED: P3_4, P3_5 Arduino 6-pin header
whismanoid 0:3edb3708c8c5 759 // declare in narrower scope: MAX32625MBED I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 0:3edb3708c8c5 760 //
whismanoid 0:3edb3708c8c5 761 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:3edb3708c8c5 762 // TODO1: validate g_I2C_SCL_Hz against system clock frequency SystemCoreClock F_CPU
whismanoid 0:3edb3708c8c5 763 const uint32_t limit_max_I2C_SCL_Hz = (SystemCoreClock / 2); // F_CPU / 2; // 8MHz / 2 = 4MHz
whismanoid 0:3edb3708c8c5 764 const uint32_t limit_min_I2C_SCL_Hz = (SystemCoreClock / 8191); // F_CPU / 128; // 8MHz / 128 = 62.5kHz
whismanoid 0:3edb3708c8c5 765 //
whismanoid 0:3edb3708c8c5 766 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:3edb3708c8c5 767 //I2C i2cMaster0(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 0:3edb3708c8c5 768 //I2C i2cMaster1(I2C1_SDA, I2C1_SCL); // sda scl TARGET_MAX32635MBED: P3_4, P3_5 Arduino 6-pin header
whismanoid 0:3edb3708c8c5 769 // declare in narrower scope: MAX32625MBED I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 0:3edb3708c8c5 770 # ifndef I2C0_SDA
whismanoid 0:3edb3708c8c5 771 # define I2C0_SDA I2C_SDA
whismanoid 0:3edb3708c8c5 772 # define I2C0_SCL I2C_SCL
whismanoid 0:3edb3708c8c5 773 # endif
whismanoid 0:3edb3708c8c5 774 //
whismanoid 0:3edb3708c8c5 775 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 776 // TODO1: validate g_I2C_SCL_Hz against system clock frequency SystemCoreClock F_CPU
whismanoid 0:3edb3708c8c5 777 const uint32_t limit_max_I2C_SCL_Hz = (SystemCoreClock / 2); // F_CPU / 2; // 8MHz / 2 = 4MHz
whismanoid 0:3edb3708c8c5 778 const uint32_t limit_min_I2C_SCL_Hz = (SystemCoreClock / 8191); // F_CPU / 128; // 8MHz / 128 = 62.5kHz
whismanoid 0:3edb3708c8c5 779 //
whismanoid 0:3edb3708c8c5 780 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:3edb3708c8c5 781 //I2C i2cMaster0(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 0:3edb3708c8c5 782 //I2C i2cMaster1(I2C1_SDA, I2C1_SCL); // sda scl TARGET_MAX32635MBED: P3_4, P3_5 Arduino 6-pin header
whismanoid 0:3edb3708c8c5 783 // declare in narrower scope: MAX32625MBED I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 0:3edb3708c8c5 784 # ifndef I2C0_SDA
whismanoid 0:3edb3708c8c5 785 # define I2C0_SDA I2C_SDA
whismanoid 0:3edb3708c8c5 786 # define I2C0_SCL I2C_SCL
whismanoid 0:3edb3708c8c5 787 # endif
whismanoid 0:3edb3708c8c5 788 //
whismanoid 0:3edb3708c8c5 789 #elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 790 #else
whismanoid 0:3edb3708c8c5 791 // unknown target
whismanoid 16:3c75011e705a 792 #warning "target not previously tested; need to define I2C pins..."
whismanoid 0:3edb3708c8c5 793 #endif
whismanoid 0:3edb3708c8c5 794 //
whismanoid 0:3edb3708c8c5 795 #endif
whismanoid 0:3edb3708c8c5 796 #if HAS_I2C
whismanoid 0:3edb3708c8c5 797 uint32_t g_I2C_SCL_Hz = I2C_SCL_Hz;
whismanoid 0:3edb3708c8c5 798 uint8_t g_I2C_status = 0; // g_I2C_status = Wire_Sr.endTransmission();
whismanoid 0:3edb3708c8c5 799 uint8_t g_I2C_deviceAddress7 = (0xA0 >> 1); // I2C device address (slave address on I2C bus), 7-bits, RIGHT-justified.
whismanoid 0:3edb3708c8c5 800 uint8_t g_I2C_read_count = 0;
whismanoid 0:3edb3708c8c5 801 uint8_t g_I2C_write_count = 0;
whismanoid 0:3edb3708c8c5 802 uint8_t g_I2C_write_data[256];
whismanoid 0:3edb3708c8c5 803 uint8_t g_I2C_command_regAddress;
whismanoid 0:3edb3708c8c5 804 //
whismanoid 0:3edb3708c8c5 805 // TODO: i2c init
whismanoid 0:3edb3708c8c5 806 // i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 0:3edb3708c8c5 807 #endif
whismanoid 0:3edb3708c8c5 808 #if HAS_I2C
whismanoid 0:3edb3708c8c5 809 // TODO: i2c transfer
whismanoid 0:3edb3708c8c5 810 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 0:3edb3708c8c5 811 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 0:3edb3708c8c5 812 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 0:3edb3708c8c5 813 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 0:3edb3708c8c5 814 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 0:3edb3708c8c5 815 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 0:3edb3708c8c5 816 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 0:3edb3708c8c5 817 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 0:3edb3708c8c5 818 // /* 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 0:3edb3708c8c5 819 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 0:3edb3708c8c5 820 #endif
whismanoid 0:3edb3708c8c5 821
whismanoid 0:3edb3708c8c5 822
whismanoid 0:3edb3708c8c5 823 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 824 // Declare the Serial driver
whismanoid 0:3edb3708c8c5 825 // default baud rate settings are 9600 8N1
whismanoid 0:3edb3708c8c5 826 // install device driver from http://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe
whismanoid 0:3edb3708c8c5 827 // see docs https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/getting_started/what_need/
whismanoid 0:3edb3708c8c5 828 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 829 #include "USBSerial.h"
whismanoid 0:3edb3708c8c5 830 // Hardware serial port over DAPLink
whismanoid 0:3edb3708c8c5 831 // The default baud rate for the DapLink UART is 9600
whismanoid 0:3edb3708c8c5 832 Serial DAPLINKserial(P2_1, P2_0); // tx, rx
whismanoid 0:3edb3708c8c5 833 #define HAS_DAPLINK_SERIAL 1
whismanoid 0:3edb3708c8c5 834 // Virtual serial port over USB
whismanoid 0:3edb3708c8c5 835 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 7:bf501f8cb637 836 USBSerial serial;
whismanoid 0:3edb3708c8c5 837 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 838 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 839 #include "USBSerial.h"
whismanoid 0:3edb3708c8c5 840 // Hardware serial port over DAPLink
whismanoid 0:3edb3708c8c5 841 // The default baud rate for the DapLink UART is 9600
whismanoid 0:3edb3708c8c5 842 Serial DAPLINKserial(P2_1, P2_0); // tx, rx
whismanoid 0:3edb3708c8c5 843 #define HAS_DAPLINK_SERIAL 1
whismanoid 0:3edb3708c8c5 844 // Virtual serial port over USB
whismanoid 0:3edb3708c8c5 845 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 7:bf501f8cb637 846 USBSerial serial;
whismanoid 16:3c75011e705a 847 //
whismanoid 16:3c75011e705a 848 //--------------------------------------------------
whismanoid 16:3c75011e705a 849 #elif defined(TARGET_MAX32620FTHR)
whismanoid 16:3c75011e705a 850 #warning "TARGET_MAX32620FTHR not previously tested; need to define serial pins..."
whismanoid 18:14afc2a2150f 851 // Hardware serial port over DAPLink
whismanoid 18:14afc2a2150f 852 // The default baud rate for the DapLink UART is 9600
whismanoid 18:14afc2a2150f 853 Serial DAPLINKserial(USBTX, USBRX); // tx, rx MAX32620FTHR: P2_1,P2_0
whismanoid 18:14afc2a2150f 854 //Serial DAPLINKserial(STDIO_UART_TX, STDIO_UART_RX); // tx, rx
whismanoid 18:14afc2a2150f 855 #define HAS_DAPLINK_SERIAL 1
whismanoid 18:14afc2a2150f 856 // Virtual serial port over USB
whismanoid 18:14afc2a2150f 857 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 18:14afc2a2150f 858 // #include "USBSerial.h"
whismanoid 18:14afc2a2150f 859 //USBSerial serial;
whismanoid 18:14afc2a2150f 860 //Serial serial(UART0_TX, UART0_RX); // tx, rx MAX32620FTHR: P0_1,P0_0 (PMOD Port 0)
whismanoid 18:14afc2a2150f 861 //Serial serial(UART1_TX, UART1_RX); // tx, rx MAX32620FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 18:14afc2a2150f 862 Serial serial(UART2_TX, UART2_RX); // tx, rx MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 18:14afc2a2150f 863 //Serial serial(UART3_TX, UART3_RX); // tx, rx MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 16:3c75011e705a 864 //Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 18:14afc2a2150f 865 //Serial serial(USBTX, USBRX); // tx, rx
whismanoid 16:3c75011e705a 866 //Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 16:3c75011e705a 867 //
whismanoid 16:3c75011e705a 868 //--------------------------------------------------
whismanoid 16:3c75011e705a 869 #elif defined(TARGET_MAX32625PICO)
whismanoid 16:3c75011e705a 870 #warning "TARGET_MAX32625PICO not previously tested; need to verify serial pins..."
whismanoid 16:3c75011e705a 871 // Note to software maintainer:
whismanoid 16:3c75011e705a 872 // when adding new platform support,
whismanoid 16:3c75011e705a 873 // add another #elif block above to support the new platform
whismanoid 16:3c75011e705a 874 Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 16:3c75011e705a 875 //
whismanoid 0:3edb3708c8c5 876 //--------------------------------------------------
whismanoid 11:9fa2402071de 877 #elif defined(TARGET_MAX32600)
whismanoid 11:9fa2402071de 878 #include "USBSerial.h"
whismanoid 11:9fa2402071de 879 // Hardware serial port over DAPLink
whismanoid 11:9fa2402071de 880 // The default baud rate for the DapLink UART is 9600
whismanoid 11:9fa2402071de 881 Serial DAPLINKserial(P1_1, P1_0); // tx, rx
whismanoid 11:9fa2402071de 882 #define HAS_DAPLINK_SERIAL 1
whismanoid 11:9fa2402071de 883 // Virtual serial port over USB
whismanoid 11:9fa2402071de 884 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 11:9fa2402071de 885 USBSerial serial;
whismanoid 11:9fa2402071de 886 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 887 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 7:bf501f8cb637 888 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 0:3edb3708c8c5 889 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 890 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:3edb3708c8c5 891 #elif defined(TARGET_LPC1768)
whismanoid 7:bf501f8cb637 892 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 0:3edb3708c8c5 893 #else
whismanoid 0:3edb3708c8c5 894 // unknown target
whismanoid 16:3c75011e705a 895 #if defined(SERIAL_TX)
whismanoid 16:3c75011e705a 896 #warning "target not previously tested; guess serial pins are SERIAL_TX, SERIAL_RX..."
whismanoid 16:3c75011e705a 897 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 16:3c75011e705a 898 #elif defined(USBTX)
whismanoid 16:3c75011e705a 899 #warning "target not previously tested; guess serial pins are USBTX, USBRX..."
whismanoid 16:3c75011e705a 900 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 16:3c75011e705a 901 #elif defined(UART_TX)
whismanoid 16:3c75011e705a 902 #warning "target not previously tested; guess serial pins are UART_TX, UART_RX..."
whismanoid 16:3c75011e705a 903 Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 16:3c75011e705a 904 #else
whismanoid 16:3c75011e705a 905 #warning "target not previously tested; need to define serial pins..."
whismanoid 16:3c75011e705a 906 #endif
whismanoid 0:3edb3708c8c5 907 #endif
whismanoid 0:3edb3708c8c5 908
whismanoid 0:3edb3708c8c5 909 void on_immediate_0x21(); // Unicode (U+0021) ! EXCLAMATION MARK
whismanoid 0:3edb3708c8c5 910 void on_immediate_0x7b(); // Unicode (U+007B) { LEFT CURLY BRACKET
whismanoid 0:3edb3708c8c5 911 void on_immediate_0x7d(); // Unicode (U+007D) } RIGHT CURLY BRACKET
whismanoid 0:3edb3708c8c5 912
whismanoid 0:3edb3708c8c5 913 #include "CmdLine.h"
whismanoid 0:3edb3708c8c5 914
whismanoid 0:3edb3708c8c5 915 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 916 CmdLine cmdLine_DAPLINKserial(DAPLINKserial, "DAPLINK");
whismanoid 0:3edb3708c8c5 917 # endif // HAS_DAPLINK_SERIAL
whismanoid 7:bf501f8cb637 918 CmdLine cmdLine_serial(serial, "serial");
whismanoid 0:3edb3708c8c5 919
whismanoid 0:3edb3708c8c5 920
whismanoid 0:3edb3708c8c5 921 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 922 // tolerate AT commands, which may be sent during probe, such as:
whismanoid 0:3edb3708c8c5 923 // AT
whismanoid 0:3edb3708c8c5 924 // AT+CGMI -- request manufacturer identification AT+CMGI=?
whismanoid 0:3edb3708c8c5 925 // AT+CGMM -- request manufacturer model
whismanoid 0:3edb3708c8c5 926 // AT%IPSYS?
whismanoid 0:3edb3708c8c5 927 // ATE0 -- echo disable
whismanoid 0:3edb3708c8c5 928 // ATV1 -- verbose result codes OK | ERROR | NO CARRIER
whismanoid 0:3edb3708c8c5 929 // AT+CMEE=1
whismanoid 0:3edb3708c8c5 930 // ATX4
whismanoid 0:3edb3708c8c5 931 // AT&C1
whismanoid 0:3edb3708c8c5 932 // ATE0
whismanoid 0:3edb3708c8c5 933 // AT+CMEE=1
whismanoid 0:3edb3708c8c5 934 // AT+GCAP
whismanoid 0:3edb3708c8c5 935 // ATI
whismanoid 0:3edb3708c8c5 936 // AT+CPIN?
whismanoid 0:3edb3708c8c5 937 // AT+CGMM
whismanoid 0:3edb3708c8c5 938 #ifndef IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 939 #define IGNORE_AT_COMMANDS 1
whismanoid 0:3edb3708c8c5 940 #endif
whismanoid 0:3edb3708c8c5 941
whismanoid 0:3edb3708c8c5 942
whismanoid 0:3edb3708c8c5 943 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:3edb3708c8c5 944 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 945 // Declare the DigitalInOut GPIO pins
whismanoid 0:3edb3708c8c5 946 // Optional digitalInOut support. If there is only one it should be digitalInOut1.
whismanoid 0:3edb3708c8c5 947 // D) Digital High/Low/Input Pin
whismanoid 0:3edb3708c8c5 948 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 949 // +-------------[microUSB]-------------+
whismanoid 0:3edb3708c8c5 950 // | J1 MAX32630FTHR J2 |
whismanoid 0:3edb3708c8c5 951 // | [ ] RST GND [ ] |
whismanoid 0:3edb3708c8c5 952 // | [ ] 3V3 BAT+[ ] |
whismanoid 0:3edb3708c8c5 953 // | [ ] 1V8 reset SW1 |
whismanoid 0:3edb3708c8c5 954 // | [ ] GND J4 J3 |
whismanoid 0:3edb3708c8c5 955 // | [ ] AIN_0 1.2Vfs (bat) SYS [ ] |
whismanoid 0:3edb3708c8c5 956 // | [ ] AIN_1 1.2Vfs PWR [ ] |
whismanoid 0:3edb3708c8c5 957 // | [ ] AIN_2 1.2Vfs +5V VBUS [ ] |
whismanoid 0:3edb3708c8c5 958 // | [ ] AIN_3 1.2Vfs 1-WIRE P4_0 [ ] | dig9
whismanoid 0:3edb3708c8c5 959 // dig10 | [x] P5_7 SDA2 SRN P5_6 [ ] | dig8
whismanoid 0:3edb3708c8c5 960 // dig11 | [x] P6_0 SCL2 SDIO3 P5_5 [ ] | dig7
whismanoid 0:3edb3708c8c5 961 // dig12 | [x] P5_0 SCLK SDIO2 P5_4 [ ] | dig6
whismanoid 0:3edb3708c8c5 962 // dig13 | [x] P5_1 MOSI SSEL P5_3 [x] | dig5
whismanoid 0:3edb3708c8c5 963 // dig14 | [ ] P5_2 MISO RTS P3_3 [ ] | dig4
whismanoid 0:3edb3708c8c5 964 // dig15 | [ ] P3_0 RX CTS P3_2 [ ] | dig3
whismanoid 0:3edb3708c8c5 965 // dig0 | [ ] P3_1 TX SCL P3_5 [x] | dig2
whismanoid 0:3edb3708c8c5 966 // | [ ] GND SDA P3_4 [x] | dig1
whismanoid 0:3edb3708c8c5 967 // +------------------------------------+
whismanoid 0:3edb3708c8c5 968 #define HAS_digitalInOut0 1 // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:3edb3708c8c5 969 #define HAS_digitalInOut1 1 // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:3edb3708c8c5 970 #define HAS_digitalInOut2 1 // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:3edb3708c8c5 971 #define HAS_digitalInOut3 1 // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:3edb3708c8c5 972 #define HAS_digitalInOut4 1 // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:3edb3708c8c5 973 #define HAS_digitalInOut5 1 // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:3edb3708c8c5 974 #define HAS_digitalInOut6 1 // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:3edb3708c8c5 975 #define HAS_digitalInOut7 1 // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:3edb3708c8c5 976 #define HAS_digitalInOut8 1 // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:3edb3708c8c5 977 #define HAS_digitalInOut9 1 // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:3edb3708c8c5 978 #if HAS_I2C
whismanoid 0:3edb3708c8c5 979 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:3edb3708c8c5 980 #define HAS_digitalInOut10 0 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:3edb3708c8c5 981 #define HAS_digitalInOut11 0 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:3edb3708c8c5 982 #else // HAS_I2C
whismanoid 0:3edb3708c8c5 983 #define HAS_digitalInOut10 1 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:3edb3708c8c5 984 #define HAS_digitalInOut11 1 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:3edb3708c8c5 985 #endif // HAS_I2C
whismanoid 0:3edb3708c8c5 986 #if HAS_SPI
whismanoid 0:3edb3708c8c5 987 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:3edb3708c8c5 988 #define HAS_digitalInOut12 0 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:3edb3708c8c5 989 #define HAS_digitalInOut13 0 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:3edb3708c8c5 990 #define HAS_digitalInOut14 0 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:3edb3708c8c5 991 #define HAS_digitalInOut15 0 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:3edb3708c8c5 992 #else // HAS_SPI
whismanoid 0:3edb3708c8c5 993 #define HAS_digitalInOut12 1 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:3edb3708c8c5 994 #define HAS_digitalInOut13 1 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:3edb3708c8c5 995 #define HAS_digitalInOut14 1 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:3edb3708c8c5 996 #define HAS_digitalInOut15 1 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:3edb3708c8c5 997 #endif // HAS_SPI
whismanoid 0:3edb3708c8c5 998 #if HAS_digitalInOut0
whismanoid 0:3edb3708c8c5 999 DigitalInOut digitalInOut0(P3_1, PIN_INPUT, PullUp, 1); // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:3edb3708c8c5 1000 #endif
whismanoid 0:3edb3708c8c5 1001 #if HAS_digitalInOut1
whismanoid 0:3edb3708c8c5 1002 DigitalInOut digitalInOut1(P3_4, PIN_INPUT, PullUp, 1); // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:3edb3708c8c5 1003 #endif
whismanoid 0:3edb3708c8c5 1004 #if HAS_digitalInOut2
whismanoid 0:3edb3708c8c5 1005 DigitalInOut digitalInOut2(P3_5, PIN_INPUT, PullUp, 1); // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:3edb3708c8c5 1006 #endif
whismanoid 0:3edb3708c8c5 1007 #if HAS_digitalInOut3
whismanoid 0:3edb3708c8c5 1008 DigitalInOut digitalInOut3(P3_2, PIN_INPUT, PullUp, 1); // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:3edb3708c8c5 1009 #endif
whismanoid 0:3edb3708c8c5 1010 #if HAS_digitalInOut4
whismanoid 0:3edb3708c8c5 1011 DigitalInOut digitalInOut4(P3_3, PIN_INPUT, PullUp, 1); // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:3edb3708c8c5 1012 #endif
whismanoid 0:3edb3708c8c5 1013 #if HAS_digitalInOut5
whismanoid 0:3edb3708c8c5 1014 DigitalInOut digitalInOut5(P5_3, PIN_INPUT, PullUp, 1); // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:3edb3708c8c5 1015 #endif
whismanoid 0:3edb3708c8c5 1016 #if HAS_digitalInOut6
whismanoid 0:3edb3708c8c5 1017 DigitalInOut digitalInOut6(P5_4, PIN_INPUT, PullUp, 1); // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:3edb3708c8c5 1018 #endif
whismanoid 0:3edb3708c8c5 1019 #if HAS_digitalInOut7
whismanoid 0:3edb3708c8c5 1020 DigitalInOut digitalInOut7(P5_5, PIN_INPUT, PullUp, 1); // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:3edb3708c8c5 1021 #endif
whismanoid 0:3edb3708c8c5 1022 #if HAS_digitalInOut8
whismanoid 0:3edb3708c8c5 1023 DigitalInOut digitalInOut8(P5_6, PIN_INPUT, PullUp, 1); // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:3edb3708c8c5 1024 #endif
whismanoid 0:3edb3708c8c5 1025 #if HAS_digitalInOut9
whismanoid 0:3edb3708c8c5 1026 DigitalInOut digitalInOut9(P4_0, PIN_INPUT, PullUp, 1); // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:3edb3708c8c5 1027 #endif
whismanoid 0:3edb3708c8c5 1028 #if HAS_digitalInOut10
whismanoid 0:3edb3708c8c5 1029 DigitalInOut digitalInOut10(P5_7, PIN_INPUT, PullUp, 1); // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:3edb3708c8c5 1030 #endif
whismanoid 0:3edb3708c8c5 1031 #if HAS_digitalInOut11
whismanoid 0:3edb3708c8c5 1032 DigitalInOut digitalInOut11(P6_0, PIN_INPUT, PullUp, 1); // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:3edb3708c8c5 1033 #endif
whismanoid 0:3edb3708c8c5 1034 #if HAS_digitalInOut12
whismanoid 0:3edb3708c8c5 1035 DigitalInOut digitalInOut12(P5_0, PIN_INPUT, PullUp, 1); // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:3edb3708c8c5 1036 #endif
whismanoid 0:3edb3708c8c5 1037 #if HAS_digitalInOut13
whismanoid 0:3edb3708c8c5 1038 DigitalInOut digitalInOut13(P5_1, PIN_INPUT, PullUp, 1); // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:3edb3708c8c5 1039 #endif
whismanoid 0:3edb3708c8c5 1040 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 1041 DigitalInOut digitalInOut14(P5_2, PIN_INPUT, PullUp, 1); // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:3edb3708c8c5 1042 #endif
whismanoid 0:3edb3708c8c5 1043 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 1044 DigitalInOut digitalInOut15(P3_0, PIN_INPUT, PullUp, 1); // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:3edb3708c8c5 1045 #endif
whismanoid 0:3edb3708c8c5 1046 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1047 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 1048 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:3edb3708c8c5 1049 // +-------------------------------------+
whismanoid 0:3edb3708c8c5 1050 // | MAX32625MBED Arduino UNO header |
whismanoid 0:3edb3708c8c5 1051 // | |
whismanoid 0:3edb3708c8c5 1052 // | A5/SCL[ ] | P1_7 dig15
whismanoid 0:3edb3708c8c5 1053 // | A4/SDA[ ] | P1_6 dig14
whismanoid 0:3edb3708c8c5 1054 // | AREF=N/C[ ] |
whismanoid 0:3edb3708c8c5 1055 // | GND[ ] |
whismanoid 0:3edb3708c8c5 1056 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 0:3edb3708c8c5 1057 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 0:3edb3708c8c5 1058 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 0:3edb3708c8c5 1059 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 0:3edb3708c8c5 1060 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 0:3edb3708c8c5 1061 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 0:3edb3708c8c5 1062 // | [ ]GND |
whismanoid 0:3edb3708c8c5 1063 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 0:3edb3708c8c5 1064 // | 6[ ]~| P0_6 dig6
whismanoid 0:3edb3708c8c5 1065 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 0:3edb3708c8c5 1066 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 0:3edb3708c8c5 1067 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 0:3edb3708c8c5 1068 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 0:3edb3708c8c5 1069 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 0:3edb3708c8c5 1070 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 0:3edb3708c8c5 1071 // | [ ] [ ] [ ] |
whismanoid 0:3edb3708c8c5 1072 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 0:3edb3708c8c5 1073 // \_______________________/
whismanoid 0:3edb3708c8c5 1074 //
whismanoid 0:3edb3708c8c5 1075 #define HAS_digitalInOut0 1 // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:3edb3708c8c5 1076 #define HAS_digitalInOut1 1 // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:3edb3708c8c5 1077 #if APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 1078 #define HAS_digitalInOut2 0 // P0_2 TARGET_MAX32625MBED D2 -- MAX11131 EOC DigitalIn
whismanoid 0:3edb3708c8c5 1079 #else
whismanoid 0:3edb3708c8c5 1080 #define HAS_digitalInOut2 1 // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:3edb3708c8c5 1081 #endif
whismanoid 0:3edb3708c8c5 1082 #define HAS_digitalInOut3 1 // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:3edb3708c8c5 1083 #define HAS_digitalInOut4 1 // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:3edb3708c8c5 1084 #define HAS_digitalInOut5 1 // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:3edb3708c8c5 1085 #define HAS_digitalInOut6 1 // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:3edb3708c8c5 1086 #define HAS_digitalInOut7 1 // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:3edb3708c8c5 1087 #define HAS_digitalInOut8 1 // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:3edb3708c8c5 1088 #if APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 1089 #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:3edb3708c8c5 1090 #else
whismanoid 0:3edb3708c8c5 1091 #define HAS_digitalInOut9 1 // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:3edb3708c8c5 1092 #endif
whismanoid 0:3edb3708c8c5 1093 #if HAS_SPI
whismanoid 0:3edb3708c8c5 1094 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:3edb3708c8c5 1095 #define HAS_digitalInOut10 0 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:3edb3708c8c5 1096 #define HAS_digitalInOut11 0 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:3edb3708c8c5 1097 #define HAS_digitalInOut12 0 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:3edb3708c8c5 1098 #define HAS_digitalInOut13 0 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:3edb3708c8c5 1099 #else // HAS_SPI
whismanoid 0:3edb3708c8c5 1100 #define HAS_digitalInOut10 1 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:3edb3708c8c5 1101 #define HAS_digitalInOut11 1 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:3edb3708c8c5 1102 #define HAS_digitalInOut12 1 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:3edb3708c8c5 1103 #define HAS_digitalInOut13 1 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:3edb3708c8c5 1104 #endif // HAS_SPI
whismanoid 0:3edb3708c8c5 1105 #if HAS_I2C
whismanoid 0:3edb3708c8c5 1106 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:3edb3708c8c5 1107 #define HAS_digitalInOut14 0 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:3edb3708c8c5 1108 #define HAS_digitalInOut15 0 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:3edb3708c8c5 1109 #define HAS_digitalInOut16 0 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:3edb3708c8c5 1110 #define HAS_digitalInOut17 0 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:3edb3708c8c5 1111 #else // HAS_I2C
whismanoid 0:3edb3708c8c5 1112 #define HAS_digitalInOut14 1 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:3edb3708c8c5 1113 #define HAS_digitalInOut15 1 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:3edb3708c8c5 1114 #define HAS_digitalInOut16 1 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:3edb3708c8c5 1115 #define HAS_digitalInOut17 1 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:3edb3708c8c5 1116 #endif // HAS_I2C
whismanoid 0:3edb3708c8c5 1117 #if HAS_digitalInOut0
whismanoid 0:3edb3708c8c5 1118 DigitalInOut digitalInOut0(P0_0, PIN_INPUT, PullUp, 1); // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:3edb3708c8c5 1119 #endif
whismanoid 0:3edb3708c8c5 1120 #if HAS_digitalInOut1
whismanoid 0:3edb3708c8c5 1121 DigitalInOut digitalInOut1(P0_1, PIN_INPUT, PullUp, 1); // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:3edb3708c8c5 1122 #endif
whismanoid 0:3edb3708c8c5 1123 #if HAS_digitalInOut2
whismanoid 0:3edb3708c8c5 1124 DigitalInOut digitalInOut2(P0_2, PIN_INPUT, PullUp, 1); // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:3edb3708c8c5 1125 #endif
whismanoid 0:3edb3708c8c5 1126 #if HAS_digitalInOut3
whismanoid 0:3edb3708c8c5 1127 DigitalInOut digitalInOut3(P0_3, PIN_INPUT, PullUp, 1); // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:3edb3708c8c5 1128 #endif
whismanoid 0:3edb3708c8c5 1129 #if HAS_digitalInOut4
whismanoid 0:3edb3708c8c5 1130 DigitalInOut digitalInOut4(P0_4, PIN_INPUT, PullUp, 1); // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:3edb3708c8c5 1131 #endif
whismanoid 0:3edb3708c8c5 1132 #if HAS_digitalInOut5
whismanoid 0:3edb3708c8c5 1133 DigitalInOut digitalInOut5(P0_5, PIN_INPUT, PullUp, 1); // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:3edb3708c8c5 1134 #endif
whismanoid 0:3edb3708c8c5 1135 #if HAS_digitalInOut6
whismanoid 0:3edb3708c8c5 1136 DigitalInOut digitalInOut6(P0_6, PIN_INPUT, PullUp, 1); // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:3edb3708c8c5 1137 #endif
whismanoid 0:3edb3708c8c5 1138 #if HAS_digitalInOut7
whismanoid 0:3edb3708c8c5 1139 DigitalInOut digitalInOut7(P0_7, PIN_INPUT, PullUp, 1); // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:3edb3708c8c5 1140 #endif
whismanoid 0:3edb3708c8c5 1141 #if HAS_digitalInOut8
whismanoid 0:3edb3708c8c5 1142 DigitalInOut digitalInOut8(P1_4, PIN_INPUT, PullUp, 1); // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:3edb3708c8c5 1143 #endif
whismanoid 0:3edb3708c8c5 1144 #if HAS_digitalInOut9
whismanoid 0:3edb3708c8c5 1145 DigitalInOut digitalInOut9(P1_5, PIN_INPUT, PullUp, 1); // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:3edb3708c8c5 1146 #endif
whismanoid 0:3edb3708c8c5 1147 #if HAS_digitalInOut10
whismanoid 0:3edb3708c8c5 1148 DigitalInOut digitalInOut10(P1_3, PIN_INPUT, PullUp, 1); // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:3edb3708c8c5 1149 #endif
whismanoid 0:3edb3708c8c5 1150 #if HAS_digitalInOut11
whismanoid 0:3edb3708c8c5 1151 DigitalInOut digitalInOut11(P1_1, PIN_INPUT, PullUp, 1); // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:3edb3708c8c5 1152 #endif
whismanoid 0:3edb3708c8c5 1153 #if HAS_digitalInOut12
whismanoid 0:3edb3708c8c5 1154 DigitalInOut digitalInOut12(P1_2, PIN_INPUT, PullUp, 1); // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:3edb3708c8c5 1155 #endif
whismanoid 0:3edb3708c8c5 1156 #if HAS_digitalInOut13
whismanoid 0:3edb3708c8c5 1157 DigitalInOut digitalInOut13(P1_0, PIN_INPUT, PullUp, 1); // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:3edb3708c8c5 1158 #endif
whismanoid 0:3edb3708c8c5 1159 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 1160 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:3edb3708c8c5 1161 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:3edb3708c8c5 1162 DigitalInOut digitalInOut14(P1_6, PIN_INPUT, OpenDrain, 1); // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:3edb3708c8c5 1163 #endif
whismanoid 0:3edb3708c8c5 1164 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 1165 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:3edb3708c8c5 1166 DigitalInOut digitalInOut15(P1_7, PIN_INPUT, OpenDrain, 1); // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:3edb3708c8c5 1167 #endif
whismanoid 0:3edb3708c8c5 1168 #if HAS_digitalInOut16
whismanoid 0:3edb3708c8c5 1169 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:3edb3708c8c5 1170 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:3edb3708c8c5 1171 // PullUp-->3.4V, PullDown-->1.7V, PullNone-->3.5V, OpenDrain-->0.00V
whismanoid 0:3edb3708c8c5 1172 DigitalInOut digitalInOut16(P3_4, PIN_INPUT, OpenDrain, 0); // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:3edb3708c8c5 1173 #endif
whismanoid 0:3edb3708c8c5 1174 #if HAS_digitalInOut17
whismanoid 0:3edb3708c8c5 1175 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:3edb3708c8c5 1176 DigitalInOut digitalInOut17(P3_5, PIN_INPUT, OpenDrain, 0); // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:3edb3708c8c5 1177 #endif
whismanoid 0:3edb3708c8c5 1178 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1179 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 1180 #define HAS_digitalInOut0 0 // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:3edb3708c8c5 1181 #define HAS_digitalInOut1 0 // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:3edb3708c8c5 1182 #if APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 1183 #define HAS_digitalInOut2 0 // P0_2 TARGET_MAX32625MBED D2 -- MAX11131 EOC DigitalIn
whismanoid 0:3edb3708c8c5 1184 #else
whismanoid 0:3edb3708c8c5 1185 #define HAS_digitalInOut2 1 // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:3edb3708c8c5 1186 #endif
whismanoid 0:3edb3708c8c5 1187 #define HAS_digitalInOut3 1 // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:3edb3708c8c5 1188 #define HAS_digitalInOut4 1 // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:3edb3708c8c5 1189 #define HAS_digitalInOut5 1 // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:3edb3708c8c5 1190 #define HAS_digitalInOut6 1 // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:3edb3708c8c5 1191 #define HAS_digitalInOut7 1 // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:3edb3708c8c5 1192 #if APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 1193 #define HAS_digitalInOut8 0 // P1_4 TARGET_MAX32625MBED D8 -- MAX5715 CLRb DigitalOut
whismanoid 0:3edb3708c8c5 1194 #else
whismanoid 0:3edb3708c8c5 1195 #define HAS_digitalInOut8 1 // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:3edb3708c8c5 1196 #endif
whismanoid 0:3edb3708c8c5 1197 #if APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 1198 #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX5715 LDACb DigitalOut
whismanoid 0:3edb3708c8c5 1199 #elif APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 1200 #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:3edb3708c8c5 1201 #else
whismanoid 0:3edb3708c8c5 1202 #define HAS_digitalInOut9 1 // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:3edb3708c8c5 1203 #endif
whismanoid 0:3edb3708c8c5 1204 #if HAS_SPI
whismanoid 0:3edb3708c8c5 1205 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:3edb3708c8c5 1206 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:3edb3708c8c5 1207 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:3edb3708c8c5 1208 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:3edb3708c8c5 1209 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:3edb3708c8c5 1210 #define HAS_digitalInOut10 0
whismanoid 0:3edb3708c8c5 1211 #define HAS_digitalInOut11 0
whismanoid 0:3edb3708c8c5 1212 #define HAS_digitalInOut12 0
whismanoid 0:3edb3708c8c5 1213 #define HAS_digitalInOut13 0
whismanoid 0:3edb3708c8c5 1214 #else // HAS_SPI
whismanoid 0:3edb3708c8c5 1215 #define HAS_digitalInOut10 1
whismanoid 0:3edb3708c8c5 1216 #define HAS_digitalInOut11 1
whismanoid 0:3edb3708c8c5 1217 #define HAS_digitalInOut12 1
whismanoid 0:3edb3708c8c5 1218 #define HAS_digitalInOut13 1
whismanoid 0:3edb3708c8c5 1219 #endif // HAS_SPI
whismanoid 0:3edb3708c8c5 1220 #if HAS_I2C
whismanoid 0:3edb3708c8c5 1221 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:3edb3708c8c5 1222 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:3edb3708c8c5 1223 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:3edb3708c8c5 1224 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:3edb3708c8c5 1225 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:3edb3708c8c5 1226 #define HAS_digitalInOut14 0
whismanoid 0:3edb3708c8c5 1227 #define HAS_digitalInOut15 0
whismanoid 0:3edb3708c8c5 1228 #define HAS_digitalInOut16 0
whismanoid 0:3edb3708c8c5 1229 #define HAS_digitalInOut17 0
whismanoid 0:3edb3708c8c5 1230 #else // HAS_I2C
whismanoid 0:3edb3708c8c5 1231 #define HAS_digitalInOut14 1
whismanoid 0:3edb3708c8c5 1232 #define HAS_digitalInOut15 1
whismanoid 0:3edb3708c8c5 1233 #define HAS_digitalInOut16 0
whismanoid 0:3edb3708c8c5 1234 #define HAS_digitalInOut17 0
whismanoid 0:3edb3708c8c5 1235 #endif // HAS_I2C
whismanoid 0:3edb3708c8c5 1236 #if HAS_digitalInOut0
whismanoid 0:3edb3708c8c5 1237 DigitalInOut digitalInOut0(D0, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1238 #endif
whismanoid 0:3edb3708c8c5 1239 #if HAS_digitalInOut1
whismanoid 0:3edb3708c8c5 1240 DigitalInOut digitalInOut1(D1, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1241 #endif
whismanoid 0:3edb3708c8c5 1242 #if HAS_digitalInOut2
whismanoid 0:3edb3708c8c5 1243 DigitalInOut digitalInOut2(D2, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1244 #endif
whismanoid 0:3edb3708c8c5 1245 #if HAS_digitalInOut3
whismanoid 0:3edb3708c8c5 1246 DigitalInOut digitalInOut3(D3, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1247 #endif
whismanoid 0:3edb3708c8c5 1248 #if HAS_digitalInOut4
whismanoid 0:3edb3708c8c5 1249 DigitalInOut digitalInOut4(D4, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1250 #endif
whismanoid 0:3edb3708c8c5 1251 #if HAS_digitalInOut5
whismanoid 0:3edb3708c8c5 1252 DigitalInOut digitalInOut5(D5, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1253 #endif
whismanoid 0:3edb3708c8c5 1254 #if HAS_digitalInOut6
whismanoid 0:3edb3708c8c5 1255 DigitalInOut digitalInOut6(D6, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1256 #endif
whismanoid 0:3edb3708c8c5 1257 #if HAS_digitalInOut7
whismanoid 0:3edb3708c8c5 1258 DigitalInOut digitalInOut7(D7, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1259 #endif
whismanoid 0:3edb3708c8c5 1260 #if HAS_digitalInOut8
whismanoid 0:3edb3708c8c5 1261 DigitalInOut digitalInOut8(D8, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1262 #endif
whismanoid 0:3edb3708c8c5 1263 #if HAS_digitalInOut9
whismanoid 0:3edb3708c8c5 1264 DigitalInOut digitalInOut9(D9, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1265 #endif
whismanoid 0:3edb3708c8c5 1266 #if HAS_digitalInOut10
whismanoid 0:3edb3708c8c5 1267 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:3edb3708c8c5 1268 DigitalInOut digitalInOut10(D10, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1269 #endif
whismanoid 0:3edb3708c8c5 1270 #if HAS_digitalInOut11
whismanoid 0:3edb3708c8c5 1271 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:3edb3708c8c5 1272 DigitalInOut digitalInOut11(D11, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1273 #endif
whismanoid 0:3edb3708c8c5 1274 #if HAS_digitalInOut12
whismanoid 0:3edb3708c8c5 1275 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:3edb3708c8c5 1276 DigitalInOut digitalInOut12(D12, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1277 #endif
whismanoid 0:3edb3708c8c5 1278 #if HAS_digitalInOut13
whismanoid 0:3edb3708c8c5 1279 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:3edb3708c8c5 1280 DigitalInOut digitalInOut13(D13, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1281 #endif
whismanoid 0:3edb3708c8c5 1282 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 1283 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:3edb3708c8c5 1284 DigitalInOut digitalInOut14(D14, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1285 #endif
whismanoid 0:3edb3708c8c5 1286 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 1287 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:3edb3708c8c5 1288 DigitalInOut digitalInOut15(D15, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1289 #endif
whismanoid 0:3edb3708c8c5 1290 #if HAS_digitalInOut16
whismanoid 0:3edb3708c8c5 1291 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:3edb3708c8c5 1292 DigitalInOut digitalInOut16(D16, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1293 #endif
whismanoid 0:3edb3708c8c5 1294 #if HAS_digitalInOut17
whismanoid 0:3edb3708c8c5 1295 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:3edb3708c8c5 1296 DigitalInOut digitalInOut17(D17, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1297 #endif
whismanoid 0:3edb3708c8c5 1298 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1299 #elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 1300 #define HAS_digitalInOut0 1
whismanoid 0:3edb3708c8c5 1301 #define HAS_digitalInOut1 1
whismanoid 0:3edb3708c8c5 1302 #define HAS_digitalInOut2 1
whismanoid 0:3edb3708c8c5 1303 #define HAS_digitalInOut3 1
whismanoid 0:3edb3708c8c5 1304 #define HAS_digitalInOut4 1
whismanoid 0:3edb3708c8c5 1305 #define HAS_digitalInOut5 1
whismanoid 0:3edb3708c8c5 1306 #define HAS_digitalInOut6 1
whismanoid 0:3edb3708c8c5 1307 #define HAS_digitalInOut7 1
whismanoid 0:3edb3708c8c5 1308 #define HAS_digitalInOut8 1
whismanoid 0:3edb3708c8c5 1309 #define HAS_digitalInOut9 1
whismanoid 0:3edb3708c8c5 1310 // #define HAS_digitalInOut10 1
whismanoid 0:3edb3708c8c5 1311 // #define HAS_digitalInOut11 1
whismanoid 0:3edb3708c8c5 1312 // #define HAS_digitalInOut12 1
whismanoid 0:3edb3708c8c5 1313 // #define HAS_digitalInOut13 1
whismanoid 0:3edb3708c8c5 1314 // #define HAS_digitalInOut14 1
whismanoid 0:3edb3708c8c5 1315 // #define HAS_digitalInOut15 1
whismanoid 0:3edb3708c8c5 1316 #if HAS_digitalInOut0
whismanoid 0:3edb3708c8c5 1317 DigitalInOut digitalInOut0(p5, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.9/I2STX_SDA/MOSI1/MAT2.3
whismanoid 0:3edb3708c8c5 1318 #endif
whismanoid 0:3edb3708c8c5 1319 #if HAS_digitalInOut1
whismanoid 0:3edb3708c8c5 1320 DigitalInOut digitalInOut1(p6, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.8/I2STX_WS/MISO1/MAT2.2
whismanoid 0:3edb3708c8c5 1321 #endif
whismanoid 0:3edb3708c8c5 1322 #if HAS_digitalInOut2
whismanoid 0:3edb3708c8c5 1323 DigitalInOut digitalInOut2(p7, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.7/I2STX_CLK/SCK1/MAT2.1
whismanoid 0:3edb3708c8c5 1324 #endif
whismanoid 0:3edb3708c8c5 1325 #if HAS_digitalInOut3
whismanoid 0:3edb3708c8c5 1326 DigitalInOut digitalInOut3(p8, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.6/I2SRX_SDA/SSEL1/MAT2.0
whismanoid 0:3edb3708c8c5 1327 #endif
whismanoid 0:3edb3708c8c5 1328 #if HAS_digitalInOut4
whismanoid 0:3edb3708c8c5 1329 DigitalInOut digitalInOut4(p9, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.0/CAN_RX1/TXD3/SDA1
whismanoid 0:3edb3708c8c5 1330 #endif
whismanoid 0:3edb3708c8c5 1331 #if HAS_digitalInOut5
whismanoid 0:3edb3708c8c5 1332 DigitalInOut digitalInOut5(p10, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.1/CAN_TX1/RXD3/SCL1
whismanoid 0:3edb3708c8c5 1333 #endif
whismanoid 0:3edb3708c8c5 1334 #if HAS_digitalInOut6
whismanoid 0:3edb3708c8c5 1335 DigitalInOut digitalInOut6(p11, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.18/DCD1/MOSI0/MOSI1
whismanoid 0:3edb3708c8c5 1336 #endif
whismanoid 0:3edb3708c8c5 1337 #if HAS_digitalInOut7
whismanoid 0:3edb3708c8c5 1338 DigitalInOut digitalInOut7(p12, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.17/CTS1/MISO0/MISO
whismanoid 0:3edb3708c8c5 1339 #endif
whismanoid 0:3edb3708c8c5 1340 #if HAS_digitalInOut8
whismanoid 0:3edb3708c8c5 1341 DigitalInOut digitalInOut8(p13, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.15/TXD1/SCK0/SCK
whismanoid 0:3edb3708c8c5 1342 #endif
whismanoid 0:3edb3708c8c5 1343 #if HAS_digitalInOut9
whismanoid 0:3edb3708c8c5 1344 DigitalInOut digitalInOut9(p14, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.16/RXD1/SSEL0/SSEL
whismanoid 0:3edb3708c8c5 1345 #endif
whismanoid 0:3edb3708c8c5 1346 //
whismanoid 0:3edb3708c8c5 1347 // these pins support analog input analogIn0 .. analogIn5
whismanoid 0:3edb3708c8c5 1348 //DigitalInOut digitalInOut_(p15, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:3edb3708c8c5 1349 //DigitalInOut digitalInOut_(p16, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:3edb3708c8c5 1350 //DigitalInOut digitalInOut_(p17, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:3edb3708c8c5 1351 //DigitalInOut digitalInOut_(p18, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:3edb3708c8c5 1352 //DigitalInOut digitalInOut_(p19, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:3edb3708c8c5 1353 //DigitalInOut digitalInOut_(p20, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:3edb3708c8c5 1354 //
whismanoid 0:3edb3708c8c5 1355 // these pins support PWM pwmDriver1 .. pwmDriver6
whismanoid 0:3edb3708c8c5 1356 //DigitalInOut digitalInOut_(p21, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.5/PWM1.6/DTR1/TRACEDATA0
whismanoid 0:3edb3708c8c5 1357 //DigitalInOut digitalInOut_(p22, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.4/PWM1.5/DSR1/TRACEDATA1
whismanoid 0:3edb3708c8c5 1358 //DigitalInOut digitalInOut_(p23, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.3/PWM1.4/DCD1/TRACEDATA2
whismanoid 0:3edb3708c8c5 1359 //DigitalInOut digitalInOut_(p24, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.2/PWM1.3/CTS1/TRACEDATA3
whismanoid 0:3edb3708c8c5 1360 //DigitalInOut digitalInOut_(p25, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.1/PWM1.2/RXD1
whismanoid 0:3edb3708c8c5 1361 //DigitalInOut digitalInOut_(p26, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.0/PWM1.1/TXD1/TRACECLK
whismanoid 0:3edb3708c8c5 1362 //
whismanoid 0:3edb3708c8c5 1363 // these could be additional digitalInOut pins
whismanoid 0:3edb3708c8c5 1364 #if HAS_digitalInOut10
whismanoid 0:3edb3708c8c5 1365 DigitalInOut digitalInOut10(p27, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.11/RXD2/SCL2/MAT3.1
whismanoid 0:3edb3708c8c5 1366 #endif
whismanoid 0:3edb3708c8c5 1367 #if HAS_digitalInOut11
whismanoid 0:3edb3708c8c5 1368 DigitalInOut digitalInOut11(p28, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.10/TXD2/SDA2/MAT3.0
whismanoid 0:3edb3708c8c5 1369 #endif
whismanoid 0:3edb3708c8c5 1370 #if HAS_digitalInOut12
whismanoid 0:3edb3708c8c5 1371 DigitalInOut digitalInOut12(p29, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.5/I2SRX_WS/CAN_TX2/CAP2.1
whismanoid 0:3edb3708c8c5 1372 #endif
whismanoid 0:3edb3708c8c5 1373 #if HAS_digitalInOut13
whismanoid 0:3edb3708c8c5 1374 DigitalInOut digitalInOut13(p30, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.4/I2SRX_CLK/CAN_RX2/CAP2.0
whismanoid 0:3edb3708c8c5 1375 #endif
whismanoid 0:3edb3708c8c5 1376 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 1377 DigitalInOut digitalInOut14(___, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1378 #endif
whismanoid 0:3edb3708c8c5 1379 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 1380 DigitalInOut digitalInOut15(___, PIN_INPUT, PullUp, 1);
whismanoid 0:3edb3708c8c5 1381 #endif
whismanoid 0:3edb3708c8c5 1382 #else
whismanoid 0:3edb3708c8c5 1383 // unknown target
whismanoid 0:3edb3708c8c5 1384 #endif
whismanoid 0:3edb3708c8c5 1385 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:3edb3708c8c5 1386 #if HAS_digitalInOut0 || HAS_digitalInOut1 \
whismanoid 0:3edb3708c8c5 1387 || HAS_digitalInOut2 || HAS_digitalInOut3 \
whismanoid 0:3edb3708c8c5 1388 || HAS_digitalInOut4 || HAS_digitalInOut5 \
whismanoid 0:3edb3708c8c5 1389 || HAS_digitalInOut6 || HAS_digitalInOut7 \
whismanoid 0:3edb3708c8c5 1390 || HAS_digitalInOut8 || HAS_digitalInOut9 \
whismanoid 0:3edb3708c8c5 1391 || HAS_digitalInOut10 || HAS_digitalInOut11 \
whismanoid 0:3edb3708c8c5 1392 || HAS_digitalInOut12 || HAS_digitalInOut13 \
whismanoid 0:3edb3708c8c5 1393 || HAS_digitalInOut14 || HAS_digitalInOut15 \
whismanoid 0:3edb3708c8c5 1394 || HAS_digitalInOut16 || HAS_digitalInOut17
whismanoid 0:3edb3708c8c5 1395 #define HAS_digitalInOuts 1
whismanoid 0:3edb3708c8c5 1396 #endif
whismanoid 0:3edb3708c8c5 1397
whismanoid 0:3edb3708c8c5 1398 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:3edb3708c8c5 1399 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1400 // Declare the AnalogIn driver
whismanoid 0:3edb3708c8c5 1401 // Optional analogIn support. If there is only one it should be analogIn1.
whismanoid 0:3edb3708c8c5 1402 // A) analog input
whismanoid 0:3edb3708c8c5 1403 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 1404 #define HAS_analogIn0 1
whismanoid 0:3edb3708c8c5 1405 #define HAS_analogIn1 1
whismanoid 0:3edb3708c8c5 1406 #define HAS_analogIn2 1
whismanoid 0:3edb3708c8c5 1407 #define HAS_analogIn3 1
whismanoid 0:3edb3708c8c5 1408 #define HAS_analogIn4 1
whismanoid 0:3edb3708c8c5 1409 #define HAS_analogIn5 1
whismanoid 0:3edb3708c8c5 1410 #define HAS_analogIn6 1
whismanoid 0:3edb3708c8c5 1411 #define HAS_analogIn7 1
whismanoid 0:3edb3708c8c5 1412 #define HAS_analogIn8 1
whismanoid 0:3edb3708c8c5 1413 #define HAS_analogIn9 1
whismanoid 0:3edb3708c8c5 1414 // #define HAS_analogIn10 0
whismanoid 0:3edb3708c8c5 1415 // #define HAS_analogIn11 0
whismanoid 0:3edb3708c8c5 1416 // #define HAS_analogIn12 0
whismanoid 0:3edb3708c8c5 1417 // #define HAS_analogIn13 0
whismanoid 0:3edb3708c8c5 1418 // #define HAS_analogIn14 0
whismanoid 0:3edb3708c8c5 1419 // #define HAS_analogIn15 0
whismanoid 0:3edb3708c8c5 1420 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 1421 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1422 #endif
whismanoid 0:3edb3708c8c5 1423 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 1424 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1425 #endif
whismanoid 0:3edb3708c8c5 1426 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 1427 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1428 #endif
whismanoid 0:3edb3708c8c5 1429 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 1430 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1431 #endif
whismanoid 0:3edb3708c8c5 1432 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 1433 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 1434 #endif
whismanoid 0:3edb3708c8c5 1435 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 1436 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 1437 #endif
whismanoid 0:3edb3708c8c5 1438 #if HAS_analogIn6
whismanoid 0:3edb3708c8c5 1439 AnalogIn analogIn6(AIN_6); // TARGET_MAX32630 AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 1440 #endif
whismanoid 0:3edb3708c8c5 1441 #if HAS_analogIn7
whismanoid 0:3edb3708c8c5 1442 AnalogIn analogIn7(AIN_7); // TARGET_MAX32630 AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1443 #endif
whismanoid 0:3edb3708c8c5 1444 #if HAS_analogIn8
whismanoid 0:3edb3708c8c5 1445 AnalogIn analogIn8(AIN_8); // TARGET_MAX32630 AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1446 #endif
whismanoid 0:3edb3708c8c5 1447 #if HAS_analogIn9
whismanoid 0:3edb3708c8c5 1448 AnalogIn analogIn9(AIN_9); // TARGET_MAX32630 AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:3edb3708c8c5 1449 #endif
whismanoid 0:3edb3708c8c5 1450 #if HAS_analogIn10
whismanoid 0:3edb3708c8c5 1451 AnalogIn analogIn10(____); // TARGET_MAX32630 AIN_10 = x undefined?
whismanoid 0:3edb3708c8c5 1452 #endif
whismanoid 0:3edb3708c8c5 1453 #if HAS_analogIn11
whismanoid 0:3edb3708c8c5 1454 AnalogIn analogIn11(____); // TARGET_MAX32630 AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 1455 #endif
whismanoid 0:3edb3708c8c5 1456 #if HAS_analogIn12
whismanoid 0:3edb3708c8c5 1457 AnalogIn analogIn12(____); // TARGET_MAX32630 AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 1458 #endif
whismanoid 0:3edb3708c8c5 1459 #if HAS_analogIn13
whismanoid 0:3edb3708c8c5 1460 AnalogIn analogIn13(____);
whismanoid 0:3edb3708c8c5 1461 #endif
whismanoid 0:3edb3708c8c5 1462 #if HAS_analogIn14
whismanoid 0:3edb3708c8c5 1463 AnalogIn analogIn14(____);
whismanoid 0:3edb3708c8c5 1464 #endif
whismanoid 0:3edb3708c8c5 1465 #if HAS_analogIn15
whismanoid 0:3edb3708c8c5 1466 AnalogIn analogIn15(____);
whismanoid 0:3edb3708c8c5 1467 #endif
whismanoid 0:3edb3708c8c5 1468 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1469 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 1470 #define HAS_analogIn0 1
whismanoid 0:3edb3708c8c5 1471 #define HAS_analogIn1 1
whismanoid 0:3edb3708c8c5 1472 #define HAS_analogIn2 1
whismanoid 0:3edb3708c8c5 1473 #define HAS_analogIn3 1
whismanoid 0:3edb3708c8c5 1474 #define HAS_analogIn4 1
whismanoid 0:3edb3708c8c5 1475 #define HAS_analogIn5 1
whismanoid 0:3edb3708c8c5 1476 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 1477 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1478 #endif
whismanoid 0:3edb3708c8c5 1479 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 1480 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1481 #endif
whismanoid 0:3edb3708c8c5 1482 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 1483 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1484 #endif
whismanoid 0:3edb3708c8c5 1485 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 1486 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:3edb3708c8c5 1487 #endif
whismanoid 0:3edb3708c8c5 1488 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 1489 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 1490 #endif
whismanoid 0:3edb3708c8c5 1491 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 1492 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 1493 #endif
whismanoid 0:3edb3708c8c5 1494 //--------------------------------------------------
whismanoid 16:3c75011e705a 1495 #elif defined(TARGET_MAX32620FTHR)
whismanoid 16:3c75011e705a 1496 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 16:3c75011e705a 1497 #define HAS_analogIn0 1
whismanoid 16:3c75011e705a 1498 #define HAS_analogIn1 1
whismanoid 16:3c75011e705a 1499 #define HAS_analogIn2 1
whismanoid 16:3c75011e705a 1500 #define HAS_analogIn3 1
whismanoid 16:3c75011e705a 1501 #define HAS_analogIn4 1
whismanoid 16:3c75011e705a 1502 #define HAS_analogIn5 1
whismanoid 16:3c75011e705a 1503 #define HAS_analogIn6 1
whismanoid 16:3c75011e705a 1504 #define HAS_analogIn7 1
whismanoid 16:3c75011e705a 1505 #define HAS_analogIn8 1
whismanoid 16:3c75011e705a 1506 #define HAS_analogIn9 1
whismanoid 16:3c75011e705a 1507 // #define HAS_analogIn10 0
whismanoid 16:3c75011e705a 1508 // #define HAS_analogIn11 0
whismanoid 16:3c75011e705a 1509 // #define HAS_analogIn12 0
whismanoid 16:3c75011e705a 1510 // #define HAS_analogIn13 0
whismanoid 16:3c75011e705a 1511 // #define HAS_analogIn14 0
whismanoid 16:3c75011e705a 1512 // #define HAS_analogIn15 0
whismanoid 16:3c75011e705a 1513 #if HAS_analogIn0
whismanoid 16:3c75011e705a 1514 AnalogIn analogIn0(AIN_0); // TARGET_MAX32620FTHR J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1515 #endif
whismanoid 16:3c75011e705a 1516 #if HAS_analogIn1
whismanoid 16:3c75011e705a 1517 AnalogIn analogIn1(AIN_1); // TARGET_MAX32620FTHR J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1518 #endif
whismanoid 16:3c75011e705a 1519 #if HAS_analogIn2
whismanoid 16:3c75011e705a 1520 AnalogIn analogIn2(AIN_2); // TARGET_MAX32620FTHR J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1521 #endif
whismanoid 16:3c75011e705a 1522 #if HAS_analogIn3
whismanoid 16:3c75011e705a 1523 AnalogIn analogIn3(AIN_3); // TARGET_MAX32620FTHR J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1524 #endif
whismanoid 16:3c75011e705a 1525 #if HAS_analogIn4
whismanoid 16:3c75011e705a 1526 AnalogIn analogIn4(AIN_4); // TARGET_MAX32620FTHR J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 16:3c75011e705a 1527 #endif
whismanoid 16:3c75011e705a 1528 #if HAS_analogIn5
whismanoid 16:3c75011e705a 1529 AnalogIn analogIn5(AIN_5); // TARGET_MAX32620FTHR J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 16:3c75011e705a 1530 #endif
whismanoid 16:3c75011e705a 1531 #if HAS_analogIn6
whismanoid 16:3c75011e705a 1532 AnalogIn analogIn6(AIN_6); // TARGET_MAX32620FTHR AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 16:3c75011e705a 1533 #endif
whismanoid 16:3c75011e705a 1534 #if HAS_analogIn7
whismanoid 16:3c75011e705a 1535 AnalogIn analogIn7(AIN_7); // TARGET_MAX32620FTHR AIN_7 = VDD18 fullscale is 1.2V
whismanoid 16:3c75011e705a 1536 #endif
whismanoid 16:3c75011e705a 1537 #if HAS_analogIn8
whismanoid 16:3c75011e705a 1538 AnalogIn analogIn8(AIN_8); // TARGET_MAX32620FTHR AIN_8 = VDD12 fullscale is 1.2V
whismanoid 16:3c75011e705a 1539 #endif
whismanoid 16:3c75011e705a 1540 #if HAS_analogIn9
whismanoid 16:3c75011e705a 1541 AnalogIn analogIn9(AIN_9); // TARGET_MAX32620FTHR AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 16:3c75011e705a 1542 #endif
whismanoid 16:3c75011e705a 1543 #if HAS_analogIn10
whismanoid 16:3c75011e705a 1544 AnalogIn analogIn10(____); // TARGET_MAX32620FTHR AIN_10 = x undefined?
whismanoid 16:3c75011e705a 1545 #endif
whismanoid 16:3c75011e705a 1546 #if HAS_analogIn11
whismanoid 16:3c75011e705a 1547 AnalogIn analogIn11(____); // TARGET_MAX32620FTHR AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 16:3c75011e705a 1548 #endif
whismanoid 16:3c75011e705a 1549 #if HAS_analogIn12
whismanoid 16:3c75011e705a 1550 AnalogIn analogIn12(____); // TARGET_MAX32620FTHR AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 16:3c75011e705a 1551 #endif
whismanoid 16:3c75011e705a 1552 #if HAS_analogIn13
whismanoid 16:3c75011e705a 1553 AnalogIn analogIn13(____);
whismanoid 16:3c75011e705a 1554 #endif
whismanoid 16:3c75011e705a 1555 #if HAS_analogIn14
whismanoid 16:3c75011e705a 1556 AnalogIn analogIn14(____);
whismanoid 16:3c75011e705a 1557 #endif
whismanoid 16:3c75011e705a 1558 #if HAS_analogIn15
whismanoid 16:3c75011e705a 1559 AnalogIn analogIn15(____);
whismanoid 16:3c75011e705a 1560 #endif
whismanoid 16:3c75011e705a 1561 //--------------------------------------------------
whismanoid 16:3c75011e705a 1562 #elif defined(TARGET_MAX32625PICO)
whismanoid 16:3c75011e705a 1563 #warning "TARGET_MAX32625PICO not previously tested; need to verify analogIn0..."
whismanoid 16:3c75011e705a 1564 #define HAS_analogIn0 1
whismanoid 16:3c75011e705a 1565 #define HAS_analogIn1 1
whismanoid 16:3c75011e705a 1566 #define HAS_analogIn2 1
whismanoid 16:3c75011e705a 1567 #define HAS_analogIn3 1
whismanoid 16:3c75011e705a 1568 #define HAS_analogIn4 1
whismanoid 16:3c75011e705a 1569 #define HAS_analogIn5 1
whismanoid 16:3c75011e705a 1570 #if HAS_analogIn0
whismanoid 16:3c75011e705a 1571 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1572 #endif
whismanoid 16:3c75011e705a 1573 #if HAS_analogIn1
whismanoid 16:3c75011e705a 1574 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1575 #endif
whismanoid 16:3c75011e705a 1576 #if HAS_analogIn2
whismanoid 16:3c75011e705a 1577 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1578 #endif
whismanoid 16:3c75011e705a 1579 #if HAS_analogIn3
whismanoid 16:3c75011e705a 1580 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 16:3c75011e705a 1581 #endif
whismanoid 16:3c75011e705a 1582 #if HAS_analogIn4
whismanoid 16:3c75011e705a 1583 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 16:3c75011e705a 1584 #endif
whismanoid 16:3c75011e705a 1585 #if HAS_analogIn5
whismanoid 16:3c75011e705a 1586 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 16:3c75011e705a 1587 #endif
whismanoid 16:3c75011e705a 1588 //--------------------------------------------------
whismanoid 11:9fa2402071de 1589 #elif defined(TARGET_MAX32600)
whismanoid 11:9fa2402071de 1590 #define HAS_analogIn0 1
whismanoid 11:9fa2402071de 1591 #define HAS_analogIn1 1
whismanoid 11:9fa2402071de 1592 #define HAS_analogIn2 1
whismanoid 11:9fa2402071de 1593 #define HAS_analogIn3 1
whismanoid 11:9fa2402071de 1594 #define HAS_analogIn4 1
whismanoid 11:9fa2402071de 1595 #define HAS_analogIn5 1
whismanoid 11:9fa2402071de 1596 #if HAS_analogIn0
whismanoid 11:9fa2402071de 1597 AnalogIn analogIn0(A0);
whismanoid 11:9fa2402071de 1598 #endif
whismanoid 11:9fa2402071de 1599 #if HAS_analogIn1
whismanoid 11:9fa2402071de 1600 AnalogIn analogIn1(A1);
whismanoid 11:9fa2402071de 1601 #endif
whismanoid 11:9fa2402071de 1602 #if HAS_analogIn2
whismanoid 11:9fa2402071de 1603 AnalogIn analogIn2(A2);
whismanoid 11:9fa2402071de 1604 #endif
whismanoid 11:9fa2402071de 1605 #if HAS_analogIn3
whismanoid 11:9fa2402071de 1606 AnalogIn analogIn3(A3);
whismanoid 11:9fa2402071de 1607 #endif
whismanoid 11:9fa2402071de 1608 #if HAS_analogIn4
whismanoid 11:9fa2402071de 1609 AnalogIn analogIn4(A4);
whismanoid 11:9fa2402071de 1610 #endif
whismanoid 11:9fa2402071de 1611 #if HAS_analogIn5
whismanoid 11:9fa2402071de 1612 AnalogIn analogIn5(A5);
whismanoid 11:9fa2402071de 1613 #endif
whismanoid 11:9fa2402071de 1614 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1615 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:3edb3708c8c5 1616 #define HAS_analogIn0 1
whismanoid 0:3edb3708c8c5 1617 #define HAS_analogIn1 1
whismanoid 0:3edb3708c8c5 1618 #define HAS_analogIn2 1
whismanoid 0:3edb3708c8c5 1619 #define HAS_analogIn3 1
whismanoid 0:3edb3708c8c5 1620 #define HAS_analogIn4 1
whismanoid 0:3edb3708c8c5 1621 #define HAS_analogIn5 1
whismanoid 0:3edb3708c8c5 1622 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 1623 AnalogIn analogIn0(A0);
whismanoid 0:3edb3708c8c5 1624 #endif
whismanoid 0:3edb3708c8c5 1625 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 1626 AnalogIn analogIn1(A1);
whismanoid 0:3edb3708c8c5 1627 #endif
whismanoid 0:3edb3708c8c5 1628 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 1629 AnalogIn analogIn2(A2);
whismanoid 0:3edb3708c8c5 1630 #endif
whismanoid 0:3edb3708c8c5 1631 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 1632 AnalogIn analogIn3(A3);
whismanoid 0:3edb3708c8c5 1633 #endif
whismanoid 0:3edb3708c8c5 1634 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 1635 AnalogIn analogIn4(A4);
whismanoid 0:3edb3708c8c5 1636 #endif
whismanoid 0:3edb3708c8c5 1637 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 1638 AnalogIn analogIn5(A5);
whismanoid 0:3edb3708c8c5 1639 #endif
whismanoid 0:3edb3708c8c5 1640 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1641 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 1642 #define HAS_analogIn0 1
whismanoid 0:3edb3708c8c5 1643 #define HAS_analogIn1 1
whismanoid 0:3edb3708c8c5 1644 #define HAS_analogIn2 1
whismanoid 0:3edb3708c8c5 1645 #define HAS_analogIn3 1
whismanoid 0:3edb3708c8c5 1646 #define HAS_analogIn4 1
whismanoid 0:3edb3708c8c5 1647 #define HAS_analogIn5 1
whismanoid 0:3edb3708c8c5 1648 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 1649 AnalogIn analogIn0(A0);
whismanoid 0:3edb3708c8c5 1650 #endif
whismanoid 0:3edb3708c8c5 1651 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 1652 AnalogIn analogIn1(A1);
whismanoid 0:3edb3708c8c5 1653 #endif
whismanoid 0:3edb3708c8c5 1654 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 1655 AnalogIn analogIn2(A2);
whismanoid 0:3edb3708c8c5 1656 #endif
whismanoid 0:3edb3708c8c5 1657 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 1658 AnalogIn analogIn3(A3);
whismanoid 0:3edb3708c8c5 1659 #endif
whismanoid 0:3edb3708c8c5 1660 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 1661 AnalogIn analogIn4(A4);
whismanoid 0:3edb3708c8c5 1662 #endif
whismanoid 0:3edb3708c8c5 1663 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 1664 AnalogIn analogIn5(A5);
whismanoid 0:3edb3708c8c5 1665 #endif
whismanoid 0:3edb3708c8c5 1666 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1667 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:3edb3708c8c5 1668 #elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 1669 #define HAS_analogIn0 1
whismanoid 0:3edb3708c8c5 1670 #define HAS_analogIn1 1
whismanoid 0:3edb3708c8c5 1671 #define HAS_analogIn2 1
whismanoid 0:3edb3708c8c5 1672 #define HAS_analogIn3 1
whismanoid 0:3edb3708c8c5 1673 #define HAS_analogIn4 1
whismanoid 0:3edb3708c8c5 1674 #define HAS_analogIn5 1
whismanoid 0:3edb3708c8c5 1675 // #define HAS_analogIn6 1
whismanoid 0:3edb3708c8c5 1676 // #define HAS_analogIn7 1
whismanoid 0:3edb3708c8c5 1677 // #define HAS_analogIn8 1
whismanoid 0:3edb3708c8c5 1678 // #define HAS_analogIn9 1
whismanoid 0:3edb3708c8c5 1679 // #define HAS_analogIn10 1
whismanoid 0:3edb3708c8c5 1680 // #define HAS_analogIn11 1
whismanoid 0:3edb3708c8c5 1681 // #define HAS_analogIn12 1
whismanoid 0:3edb3708c8c5 1682 // #define HAS_analogIn13 1
whismanoid 0:3edb3708c8c5 1683 // #define HAS_analogIn14 1
whismanoid 0:3edb3708c8c5 1684 // #define HAS_analogIn15 1
whismanoid 0:3edb3708c8c5 1685 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 1686 AnalogIn analogIn0(p15); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:3edb3708c8c5 1687 #endif
whismanoid 0:3edb3708c8c5 1688 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 1689 AnalogIn analogIn1(p16); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:3edb3708c8c5 1690 #endif
whismanoid 0:3edb3708c8c5 1691 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 1692 AnalogIn analogIn2(p17); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:3edb3708c8c5 1693 #endif
whismanoid 0:3edb3708c8c5 1694 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 1695 AnalogIn analogIn3(p18); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:3edb3708c8c5 1696 #endif
whismanoid 0:3edb3708c8c5 1697 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 1698 AnalogIn analogIn4(p19); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:3edb3708c8c5 1699 #endif
whismanoid 0:3edb3708c8c5 1700 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 1701 AnalogIn analogIn5(p20); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:3edb3708c8c5 1702 #endif
whismanoid 0:3edb3708c8c5 1703 #if HAS_analogIn6
whismanoid 0:3edb3708c8c5 1704 AnalogIn analogIn6(____);
whismanoid 0:3edb3708c8c5 1705 #endif
whismanoid 0:3edb3708c8c5 1706 #if HAS_analogIn7
whismanoid 0:3edb3708c8c5 1707 AnalogIn analogIn7(____);
whismanoid 0:3edb3708c8c5 1708 #endif
whismanoid 0:3edb3708c8c5 1709 #if HAS_analogIn8
whismanoid 0:3edb3708c8c5 1710 AnalogIn analogIn8(____);
whismanoid 0:3edb3708c8c5 1711 #endif
whismanoid 0:3edb3708c8c5 1712 #if HAS_analogIn9
whismanoid 0:3edb3708c8c5 1713 AnalogIn analogIn9(____);
whismanoid 0:3edb3708c8c5 1714 #endif
whismanoid 0:3edb3708c8c5 1715 #if HAS_analogIn10
whismanoid 0:3edb3708c8c5 1716 AnalogIn analogIn10(____);
whismanoid 0:3edb3708c8c5 1717 #endif
whismanoid 0:3edb3708c8c5 1718 #if HAS_analogIn11
whismanoid 0:3edb3708c8c5 1719 AnalogIn analogIn11(____);
whismanoid 0:3edb3708c8c5 1720 #endif
whismanoid 0:3edb3708c8c5 1721 #if HAS_analogIn12
whismanoid 0:3edb3708c8c5 1722 AnalogIn analogIn12(____);
whismanoid 0:3edb3708c8c5 1723 #endif
whismanoid 0:3edb3708c8c5 1724 #if HAS_analogIn13
whismanoid 0:3edb3708c8c5 1725 AnalogIn analogIn13(____);
whismanoid 0:3edb3708c8c5 1726 #endif
whismanoid 0:3edb3708c8c5 1727 #if HAS_analogIn14
whismanoid 0:3edb3708c8c5 1728 AnalogIn analogIn14(____);
whismanoid 0:3edb3708c8c5 1729 #endif
whismanoid 0:3edb3708c8c5 1730 #if HAS_analogIn15
whismanoid 0:3edb3708c8c5 1731 AnalogIn analogIn15(____);
whismanoid 0:3edb3708c8c5 1732 #endif
whismanoid 0:3edb3708c8c5 1733 #else
whismanoid 0:3edb3708c8c5 1734 // unknown target
whismanoid 0:3edb3708c8c5 1735 #endif
whismanoid 0:3edb3708c8c5 1736 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:3edb3708c8c5 1737 #if HAS_analogIn0 || HAS_analogIn1 \
whismanoid 0:3edb3708c8c5 1738 || HAS_analogIn2 || HAS_analogIn3 \
whismanoid 0:3edb3708c8c5 1739 || HAS_analogIn4 || HAS_analogIn5 \
whismanoid 0:3edb3708c8c5 1740 || HAS_analogIn6 || HAS_analogIn7 \
whismanoid 0:3edb3708c8c5 1741 || HAS_analogIn8 || HAS_analogIn9 \
whismanoid 0:3edb3708c8c5 1742 || HAS_analogIn10 || HAS_analogIn11 \
whismanoid 0:3edb3708c8c5 1743 || HAS_analogIn12 || HAS_analogIn13 \
whismanoid 0:3edb3708c8c5 1744 || HAS_analogIn14 || HAS_analogIn15
whismanoid 0:3edb3708c8c5 1745 #define HAS_analogIns 1
whismanoid 0:3edb3708c8c5 1746 #endif
whismanoid 0:3edb3708c8c5 1747
whismanoid 0:3edb3708c8c5 1748 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1749 // Option to use LEDs to show status
whismanoid 0:3edb3708c8c5 1750 #ifndef USE_LEDS
whismanoid 0:3edb3708c8c5 1751 #define USE_LEDS 1
whismanoid 0:3edb3708c8c5 1752 #endif
whismanoid 0:3edb3708c8c5 1753 #if USE_LEDS
whismanoid 0:3edb3708c8c5 1754 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 1755 # define LED_ON 0
whismanoid 0:3edb3708c8c5 1756 # define LED_OFF 1
whismanoid 0:3edb3708c8c5 1757 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1758 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 1759 # define LED_ON 0
whismanoid 0:3edb3708c8c5 1760 # define LED_OFF 1
whismanoid 0:3edb3708c8c5 1761 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1762 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:3edb3708c8c5 1763 #elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 1764 # define LED_ON 1
whismanoid 0:3edb3708c8c5 1765 # define LED_OFF 0
whismanoid 0:3edb3708c8c5 1766 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 34:04fd36f5eed0 1767 // USE_LEDS with some platform other than MAX32630, MAX32625MBED, LPC1768
whismanoid 34:04fd36f5eed0 1768 // bugfix for MAX32600MBED LED blink pattern: check if LED_ON/LED_OFF already defined
whismanoid 34:04fd36f5eed0 1769 # ifndef LED_ON
whismanoid 34:04fd36f5eed0 1770 # define LED_ON 0
whismanoid 34:04fd36f5eed0 1771 # endif
whismanoid 34:04fd36f5eed0 1772 # ifndef LED_OFF
whismanoid 34:04fd36f5eed0 1773 # define LED_OFF 1
whismanoid 34:04fd36f5eed0 1774 # endif
whismanoid 34:04fd36f5eed0 1775 //# define LED_ON 1
whismanoid 34:04fd36f5eed0 1776 //# define LED_OFF 0
whismanoid 0:3edb3708c8c5 1777 #endif // target definition
whismanoid 0:3edb3708c8c5 1778 DigitalOut led1(LED1, LED_OFF); // MAX32630FTHR: LED1 = LED_RED
whismanoid 0:3edb3708c8c5 1779 DigitalOut led2(LED2, LED_OFF); // MAX32630FTHR: LED2 = LED_GREEN
whismanoid 0:3edb3708c8c5 1780 DigitalOut led3(LED3, LED_OFF); // MAX32630FTHR: LED3 = LED_BLUE
whismanoid 0:3edb3708c8c5 1781 DigitalOut led4(LED4, LED_OFF);
whismanoid 12:5d3f9663ea0c 1782 #else // USE_LEDS=0
whismanoid 12:5d3f9663ea0c 1783 // issue #41 support Nucleo_F446RE
whismanoid 12:5d3f9663ea0c 1784 // there are no LED indicators on the board, LED1 interferes with SPI;
whismanoid 12:5d3f9663ea0c 1785 // but we still need placeholders led1 led2 led3 led4.
whismanoid 12:5d3f9663ea0c 1786 // Declare DigitalOut led1 led2 led3 led4 targeting safe pins.
whismanoid 12:5d3f9663ea0c 1787 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 12:5d3f9663ea0c 1788 # define LED_ON 0
whismanoid 12:5d3f9663ea0c 1789 # define LED_OFF 1
whismanoid 12:5d3f9663ea0c 1790 DigitalOut led1(NC, LED_OFF);
whismanoid 12:5d3f9663ea0c 1791 DigitalOut led2(NC, LED_OFF);
whismanoid 12:5d3f9663ea0c 1792 DigitalOut led3(NC, LED_OFF);
whismanoid 12:5d3f9663ea0c 1793 DigitalOut led4(NC, LED_OFF);
whismanoid 0:3edb3708c8c5 1794 #endif // USE_LEDS
whismanoid 0:3edb3708c8c5 1795
whismanoid 0:3edb3708c8c5 1796 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1797 #if USE_LEDS
whismanoid 0:3edb3708c8c5 1798 class RGB_LED {
whismanoid 0:3edb3708c8c5 1799 public:
whismanoid 0:3edb3708c8c5 1800 RGB_LED(DigitalOut &led_red, DigitalOut &led_green, DigitalOut &led_blue)
whismanoid 0:3edb3708c8c5 1801 : m_red(led_red), m_green(led_green), m_blue(led_blue)
whismanoid 0:3edb3708c8c5 1802 {
whismanoid 0:3edb3708c8c5 1803 };
whismanoid 0:3edb3708c8c5 1804 DigitalOut &m_red;
whismanoid 0:3edb3708c8c5 1805 DigitalOut &m_green;
whismanoid 0:3edb3708c8c5 1806 DigitalOut &m_blue;
whismanoid 0:3edb3708c8c5 1807 ~RGB_LED()
whismanoid 0:3edb3708c8c5 1808 {
whismanoid 0:3edb3708c8c5 1809 };
whismanoid 0:3edb3708c8c5 1810 /* diagnostic rbg led RED
whismanoid 0:3edb3708c8c5 1811 */
whismanoid 0:3edb3708c8c5 1812 void red() {
whismanoid 0:3edb3708c8c5 1813 m_red = LED_ON; m_green = LED_OFF; m_blue = LED_OFF; // diagnostic rbg led RED
whismanoid 0:3edb3708c8c5 1814 };
whismanoid 0:3edb3708c8c5 1815 /* diagnostic rbg led GREEN
whismanoid 0:3edb3708c8c5 1816 */
whismanoid 0:3edb3708c8c5 1817 void green() {
whismanoid 0:3edb3708c8c5 1818 m_red = LED_OFF; m_green = LED_ON; m_blue = LED_OFF; // diagnostic rbg led GREEN
whismanoid 0:3edb3708c8c5 1819 };
whismanoid 0:3edb3708c8c5 1820 /* diagnostic rbg led BLUE
whismanoid 0:3edb3708c8c5 1821 */
whismanoid 0:3edb3708c8c5 1822 void blue() {
whismanoid 0:3edb3708c8c5 1823 m_red = LED_OFF; m_green = LED_OFF; m_blue = LED_ON; // diagnostic rbg led BLUE
whismanoid 0:3edb3708c8c5 1824 };
whismanoid 0:3edb3708c8c5 1825 /* diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:3edb3708c8c5 1826 */
whismanoid 0:3edb3708c8c5 1827 void white() {
whismanoid 0:3edb3708c8c5 1828 m_red = LED_ON; m_green = LED_ON; m_blue = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:3edb3708c8c5 1829 };
whismanoid 0:3edb3708c8c5 1830 /* diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:3edb3708c8c5 1831 */
whismanoid 0:3edb3708c8c5 1832 void cyan() {
whismanoid 0:3edb3708c8c5 1833 m_red = LED_OFF; m_green = LED_ON; m_blue = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:3edb3708c8c5 1834 };
whismanoid 0:3edb3708c8c5 1835 /* diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:3edb3708c8c5 1836 */
whismanoid 0:3edb3708c8c5 1837 void magenta() {
whismanoid 0:3edb3708c8c5 1838 m_red = LED_ON; m_green = LED_OFF; m_blue = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:3edb3708c8c5 1839 };
whismanoid 0:3edb3708c8c5 1840 /* diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:3edb3708c8c5 1841 */
whismanoid 0:3edb3708c8c5 1842 void yellow() {
whismanoid 0:3edb3708c8c5 1843 m_red = LED_ON; m_green = LED_ON; m_blue = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:3edb3708c8c5 1844 };
whismanoid 0:3edb3708c8c5 1845 /* diagnostic rbg led BLACK
whismanoid 0:3edb3708c8c5 1846 */
whismanoid 0:3edb3708c8c5 1847 void black() {
whismanoid 0:3edb3708c8c5 1848 m_red = LED_OFF; m_green = LED_OFF; m_blue = LED_OFF; // diagnostic rbg led BLACK
whismanoid 0:3edb3708c8c5 1849 };
whismanoid 0:3edb3708c8c5 1850 };
whismanoid 0:3edb3708c8c5 1851 RGB_LED rgb_led(led1, led2, led3); // red, green, blue LEDs
whismanoid 0:3edb3708c8c5 1852 #endif // USE_LEDS
whismanoid 0:3edb3708c8c5 1853
whismanoid 0:3edb3708c8c5 1854 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1855 // use BUTTON1 trigger some action
whismanoid 0:3edb3708c8c5 1856 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 1857 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 13:e36d51f46794 1858 #define HAS_BUTTON2_DEMO 0
whismanoid 13:e36d51f46794 1859 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 16:3c75011e705a 1860 #elif defined(TARGET_MAX32625PICO)
whismanoid 16:3c75011e705a 1861 #warning "TARGET_MAX32625PICO not previously tested; need to define buttons..."
whismanoid 16:3c75011e705a 1862 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 16:3c75011e705a 1863 #define HAS_BUTTON2_DEMO 0
whismanoid 16:3c75011e705a 1864 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 0:3edb3708c8c5 1865 #elif defined(TARGET_MAX32625)
whismanoid 0:3edb3708c8c5 1866 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 0:3edb3708c8c5 1867 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 16:3c75011e705a 1868 #elif defined(TARGET_MAX32620FTHR)
whismanoid 16:3c75011e705a 1869 #warning "TARGET_MAX32620FTHR not previously tested; need to define buttons..."
whismanoid 16:3c75011e705a 1870 #define BUTTON1 SW1
whismanoid 16:3c75011e705a 1871 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 16:3c75011e705a 1872 #define HAS_BUTTON2_DEMO 0
whismanoid 16:3c75011e705a 1873 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 0:3edb3708c8c5 1874 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:3edb3708c8c5 1875 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 0:3edb3708c8c5 1876 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 0:3edb3708c8c5 1877 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 1878 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 0:3edb3708c8c5 1879 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 16:3c75011e705a 1880 #else
whismanoid 16:3c75011e705a 1881 #warning "target not previously tested; need to define buttons..."
whismanoid 0:3edb3708c8c5 1882 #endif
whismanoid 0:3edb3708c8c5 1883 //
whismanoid 0:3edb3708c8c5 1884 #ifndef HAS_BUTTON1_DEMO
whismanoid 0:3edb3708c8c5 1885 #define HAS_BUTTON1_DEMO 0
whismanoid 0:3edb3708c8c5 1886 #endif
whismanoid 0:3edb3708c8c5 1887 #ifndef HAS_BUTTON2_DEMO
whismanoid 0:3edb3708c8c5 1888 #define HAS_BUTTON2_DEMO 0
whismanoid 0:3edb3708c8c5 1889 #endif
whismanoid 0:3edb3708c8c5 1890 //
whismanoid 0:3edb3708c8c5 1891 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 0:3edb3708c8c5 1892 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 0:3edb3708c8c5 1893 #ifndef HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 0:3edb3708c8c5 1894 #define HAS_BUTTON1_DEMO_INTERRUPT_POLLING 1
whismanoid 0:3edb3708c8c5 1895 #endif
whismanoid 0:3edb3708c8c5 1896 //
whismanoid 0:3edb3708c8c5 1897 #ifndef HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 1898 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 0:3edb3708c8c5 1899 #endif
whismanoid 0:3edb3708c8c5 1900 #ifndef HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 1901 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 0:3edb3708c8c5 1902 #endif
whismanoid 0:3edb3708c8c5 1903 //
whismanoid 0:3edb3708c8c5 1904 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 1905 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 0:3edb3708c8c5 1906 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 0:3edb3708c8c5 1907 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 0:3edb3708c8c5 1908 DigitalIn button1(BUTTON1);
whismanoid 0:3edb3708c8c5 1909 # else
whismanoid 0:3edb3708c8c5 1910 InterruptIn button1(BUTTON1);
whismanoid 0:3edb3708c8c5 1911 # endif
whismanoid 0:3edb3708c8c5 1912 #elif HAS_BUTTON1_DEMO
whismanoid 0:3edb3708c8c5 1913 DigitalIn button1(BUTTON1);
whismanoid 0:3edb3708c8c5 1914 #endif
whismanoid 0:3edb3708c8c5 1915 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 1916 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 0:3edb3708c8c5 1917 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 0:3edb3708c8c5 1918 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 0:3edb3708c8c5 1919 DigitalIn button2(BUTTON2);
whismanoid 0:3edb3708c8c5 1920 # else
whismanoid 0:3edb3708c8c5 1921 InterruptIn button2(BUTTON2);
whismanoid 0:3edb3708c8c5 1922 # endif
whismanoid 0:3edb3708c8c5 1923 #elif HAS_BUTTON2_DEMO
whismanoid 0:3edb3708c8c5 1924 DigitalIn button2(BUTTON2);
whismanoid 0:3edb3708c8c5 1925 #endif
whismanoid 0:3edb3708c8c5 1926
whismanoid 0:3edb3708c8c5 1927 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 1928 // Ticker is the periodic interrupt timer itself
whismanoid 16:3c75011e705a 1929 #ifndef USE_PERIODIC_TIMER
whismanoid 0:3edb3708c8c5 1930 #define USE_PERIODIC_TIMER 0
whismanoid 16:3c75011e705a 1931 #endif
whismanoid 0:3edb3708c8c5 1932 #if USE_PERIODIC_TIMER
whismanoid 0:3edb3708c8c5 1933 Ticker periodicInterruptTimer;
whismanoid 0:3edb3708c8c5 1934 us_timestamp_t periodicInterruptTimer_interval_usec = 50;
whismanoid 0:3edb3708c8c5 1935 us_timestamp_t periodicInterruptTimer_interval_usec_MAX = 1000;
whismanoid 0:3edb3708c8c5 1936 us_timestamp_t periodicInterruptTimer_interval_usec_MIN = 20;
whismanoid 0:3edb3708c8c5 1937 #endif
whismanoid 0:3edb3708c8c5 1938
whismanoid 0:3edb3708c8c5 1939
whismanoid 0:3edb3708c8c5 1940 #if APPLICATION_MAX11131 // hardware interface functions
whismanoid 0:3edb3708c8c5 1941 //----------------------------------------
whismanoid 0:3edb3708c8c5 1942 void print_value(CmdLine& cmdLine, int16_t value_u12, int channelId)
whismanoid 0:3edb3708c8c5 1943 {
whismanoid 0:3edb3708c8c5 1944 int channelPairIndex = channelId / 2;
whismanoid 0:3edb3708c8c5 1945 // format: 1 0 0 0 1 UCH0/1 UCH2/3 UCH4/5 UCH6/7 UCH8/9 UCH10/11 UCH12/13 UCH14/15 PDIFF_COM x x
whismanoid 0:3edb3708c8c5 1946 // unused variable: int UCHn = (g_MAX11131_device.UNIPOLAR >> (10 - channelPairIndex)) & 0x01;
whismanoid 0:3edb3708c8c5 1947 int BCHn = (g_MAX11131_device.BIPOLAR >> (10 - channelPairIndex)) & 0x01;
whismanoid 0:3edb3708c8c5 1948 // unused variable: int RANGEn = (g_MAX11131_device.RANGE >> (10 - channelPairIndex)) & 0x01;
whismanoid 0:3edb3708c8c5 1949 //
whismanoid 0:3edb3708c8c5 1950 cmdLine.serial().printf(" ch=");
whismanoid 0:3edb3708c8c5 1951 // TODO1: if CHANID=0 don't print ch=channelId
whismanoid 0:3edb3708c8c5 1952 if ((g_MAX11131_device.isExternalClock == 0) || (g_MAX11131_device.chan_id_0_1 == 1))
whismanoid 0:3edb3708c8c5 1953 {
whismanoid 0:3edb3708c8c5 1954 // Internal clock modes always use channel ID.
whismanoid 0:3edb3708c8c5 1955 // External clock modes use channel ID if ADC_MODE_CONTROL.CHAN_ID is 1.
whismanoid 0:3edb3708c8c5 1956 cmdLine.serial().printf("%d", channelId);
whismanoid 0:3edb3708c8c5 1957 } else {
whismanoid 0:3edb3708c8c5 1958 cmdLine.serial().printf("?");
whismanoid 0:3edb3708c8c5 1959 }
whismanoid 0:3edb3708c8c5 1960 if (BCHn)
whismanoid 0:3edb3708c8c5 1961 {
whismanoid 3:8913cb4a8b9f 1962 cmdLine.serial().printf(" xb=%ld", g_MAX11131_device.TwosComplementValue(value_u12));
whismanoid 0:3edb3708c8c5 1963 }
whismanoid 0:3edb3708c8c5 1964 else
whismanoid 0:3edb3708c8c5 1965 {
whismanoid 0:3edb3708c8c5 1966 cmdLine.serial().printf(" xu=%d", value_u12);
whismanoid 0:3edb3708c8c5 1967 }
whismanoid 0:3edb3708c8c5 1968 cmdLine.serial().printf(" = 0x%4.4x = %6.4fV",
whismanoid 0:3edb3708c8c5 1969 (value_u12 & 0xFFFF),
whismanoid 0:3edb3708c8c5 1970 g_MAX11131_device.VoltageOfCode(value_u12, channelId)
whismanoid 0:3edb3708c8c5 1971 );
whismanoid 0:3edb3708c8c5 1972 // dtostrf width and precision: 2.5v / 4096 LSB = 0.0006103515625 volts per LSB
whismanoid 0:3edb3708c8c5 1973 }
whismanoid 0:3edb3708c8c5 1974
whismanoid 0:3edb3708c8c5 1975 //----------------------------------------
whismanoid 0:3edb3708c8c5 1976 // read data words
whismanoid 0:3edb3708c8c5 1977 // @pre RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 1978 // @pre AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 1979 // For internal clock modes, the data format always includes the channel address.
whismanoid 0:3edb3708c8c5 1980 // misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:3edb3708c8c5 1981 void AINcode_print_value_chanID(CmdLine& cmdLine, int nWords)
whismanoid 0:3edb3708c8c5 1982 {
whismanoid 0:3edb3708c8c5 1983 cmdLine.serial().printf("ScanRead_nWords_chanID nWords=%d\r\n", nWords);
whismanoid 0:3edb3708c8c5 1984 for (int index = 0; index < nWords; index++) {
whismanoid 0:3edb3708c8c5 1985 //~ int16_t misoData16 = MAX11131_ScanRead();
whismanoid 0:3edb3708c8c5 1986 // For internal clock modes, the data format always includes the channel address.
whismanoid 0:3edb3708c8c5 1987 // misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:3edb3708c8c5 1988 int16_t value_u12 = (g_MAX11131_device.RAW_misoData16[index] & 0x0FFF);
whismanoid 0:3edb3708c8c5 1989 int channelId = ((g_MAX11131_device.RAW_misoData16[index] >> 12) & 0x000F);
whismanoid 0:3edb3708c8c5 1990 // diagnostic: print raw MISO data
whismanoid 0:3edb3708c8c5 1991 cmdLine.serial().printf(" MAX11131.MISO[%u]=0x%4.4x:", index,
whismanoid 0:3edb3708c8c5 1992 (g_MAX11131_device.RAW_misoData16[index] & 0xFFFF));
whismanoid 0:3edb3708c8c5 1993 print_value(cmdLine, value_u12, channelId);
whismanoid 0:3edb3708c8c5 1994 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 1995 }
whismanoid 0:3edb3708c8c5 1996 }
whismanoid 0:3edb3708c8c5 1997
whismanoid 0:3edb3708c8c5 1998 //----------------------------------------
whismanoid 0:3edb3708c8c5 1999 // read data words
whismanoid 0:3edb3708c8c5 2000 // @pre RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 2001 // @pre AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 2002 // For external clock modes, the data format returned depends on the CHAN_ID bit.
whismanoid 0:3edb3708c8c5 2003 // when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x
whismanoid 0:3edb3708c8c5 2004 // when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:3edb3708c8c5 2005 void AINcode_print_value_externalClock(CmdLine& cmdLine, int nWords)
whismanoid 0:3edb3708c8c5 2006 {
whismanoid 0:3edb3708c8c5 2007 // For external clock modes, the data format returned depends on the CHAN_ID bit.
whismanoid 0:3edb3708c8c5 2008 // when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x
whismanoid 0:3edb3708c8c5 2009 // when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:3edb3708c8c5 2010 // For internal clock modes, the data format always includes the channel address.
whismanoid 0:3edb3708c8c5 2011 // misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:3edb3708c8c5 2012 if (g_MAX11131_device.chan_id_0_1 != 0) {
whismanoid 0:3edb3708c8c5 2013 AINcode_print_value_chanID(cmdLine, nWords);
whismanoid 0:3edb3708c8c5 2014 return;
whismanoid 0:3edb3708c8c5 2015 }
whismanoid 0:3edb3708c8c5 2016 cmdLine.serial().printf("ScanRead_nWords_externalClock nWords=%d\r\n", nWords);
whismanoid 0:3edb3708c8c5 2017 for (int index = 0; index < nWords; index++) {
whismanoid 0:3edb3708c8c5 2018 // int16_t misoData16 = MAX11131_ScanRead();
whismanoid 0:3edb3708c8c5 2019 int16_t value_u12 = ((g_MAX11131_device.RAW_misoData16[index] >> 3) & 0x0FFF);
whismanoid 0:3edb3708c8c5 2020 int channelId = g_MAX11131_device.channelNumber_0_15;
whismanoid 0:3edb3708c8c5 2021 // diagnostic: print raw MISO data
whismanoid 0:3edb3708c8c5 2022 cmdLine.serial().printf(" MAX11131.MISO[%u]=0x%4.4x:", index,
whismanoid 0:3edb3708c8c5 2023 (g_MAX11131_device.RAW_misoData16[index] & 0xFFFF));
whismanoid 0:3edb3708c8c5 2024 print_value(cmdLine, value_u12, channelId);
whismanoid 0:3edb3708c8c5 2025 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 2026 }
whismanoid 0:3edb3708c8c5 2027 }
whismanoid 0:3edb3708c8c5 2028
whismanoid 0:3edb3708c8c5 2029 //----------------------------------------
whismanoid 0:3edb3708c8c5 2030 // read data words and calculate mean, stddev
whismanoid 0:3edb3708c8c5 2031 // @pre RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 2032 // @pre AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 2033 void AINcode_print_value_chanID_mean(CmdLine& cmdLine, int nWords)
whismanoid 0:3edb3708c8c5 2034 {
whismanoid 0:3edb3708c8c5 2035 cmdLine.serial().printf("ScanRead_nWords_chanID_mean nWords=%d\r\n", nWords);
whismanoid 0:3edb3708c8c5 2036 double Sx = 0;
whismanoid 0:3edb3708c8c5 2037 double Sxx = 0;
whismanoid 0:3edb3708c8c5 2038 for (int index = 0; index < nWords; index++) {
whismanoid 0:3edb3708c8c5 2039 //~ int16_t misoData16 = MAX11131_ScanRead();
whismanoid 0:3edb3708c8c5 2040 // For internal clock modes, the data format always includes the channel address.
whismanoid 0:3edb3708c8c5 2041 // misoData16 = CH[3:0] DATA[11:0]
whismanoid 0:3edb3708c8c5 2042 int16_t value_u12 = (g_MAX11131_device.RAW_misoData16[index] & 0x0FFF);
whismanoid 0:3edb3708c8c5 2043 int channelId = ((g_MAX11131_device.RAW_misoData16[index] >> 12) & 0x000F);
whismanoid 0:3edb3708c8c5 2044 // TODO: sign-extend value_s12 from value_u12
whismanoid 0:3edb3708c8c5 2045 //
whismanoid 0:3edb3708c8c5 2046 cmdLine.serial().printf("n=%d", index);
whismanoid 0:3edb3708c8c5 2047 print_value(cmdLine, value_u12, channelId);
whismanoid 0:3edb3708c8c5 2048 //
whismanoid 0:3edb3708c8c5 2049 Sx = Sx + value_u12;
whismanoid 0:3edb3708c8c5 2050 Sxx = Sxx + ((double)value_u12 * value_u12);
whismanoid 0:3edb3708c8c5 2051 cmdLine.serial().printf(" Sx=%f Sxx=%f\r\n", Sx, Sxx);
whismanoid 0:3edb3708c8c5 2052 }
whismanoid 0:3edb3708c8c5 2053 double mean = Sx / nWords;
whismanoid 0:3edb3708c8c5 2054 cmdLine.serial().printf(" mean=%f=0x%4.4x", mean, (int)mean);
whismanoid 0:3edb3708c8c5 2055 // calculate standard deviation from N, Sx, Sxx
whismanoid 0:3edb3708c8c5 2056 if (nWords >= 2)
whismanoid 0:3edb3708c8c5 2057 {
whismanoid 0:3edb3708c8c5 2058 double variance = (Sxx - ( Sx * Sx / nWords)) / (nWords - 1);
whismanoid 0:3edb3708c8c5 2059 // stddev = square root of variance
whismanoid 0:3edb3708c8c5 2060 double stddev = sqrt(variance);
whismanoid 0:3edb3708c8c5 2061 cmdLine.serial().printf(" variance=%f stddev=%f", variance, stddev);
whismanoid 0:3edb3708c8c5 2062 }
whismanoid 0:3edb3708c8c5 2063 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 2064 }
whismanoid 0:3edb3708c8c5 2065
whismanoid 0:3edb3708c8c5 2066 /* MAX11131_print_register_verbose
whismanoid 0:3edb3708c8c5 2067 *
whismanoid 0:3edb3708c8c5 2068 * TODO: document this function
whismanoid 0:3edb3708c8c5 2069 * This header was inserted by uncrustify; see uncrustify_func_header.txt.
whismanoid 0:3edb3708c8c5 2070 *
whismanoid 0:3edb3708c8c5 2071 */
whismanoid 0:3edb3708c8c5 2072 void MAX11131_print_register_verbose(CmdLine& cmdLine, int16_t registerData)
whismanoid 0:3edb3708c8c5 2073 {
whismanoid 0:3edb3708c8c5 2074 if (registerData & 0x8000)
whismanoid 0:3edb3708c8c5 2075 {
whismanoid 0:3edb3708c8c5 2076 switch (registerData & 0xF800)
whismanoid 0:3edb3708c8c5 2077 {
whismanoid 0:3edb3708c8c5 2078 case 0x8000: // ADC_CONFIGURATION 0x8000..0x87FF format: 1 0 0 0 0 REFSEL AVGON NAVG[1:0] NSCAN[1:0] SPM[1:0] ECHO 0 0
whismanoid 0:3edb3708c8c5 2079 cmdLine.serial().printf(" ADC_CONFIGURATION");
whismanoid 0:3edb3708c8c5 2080 {
whismanoid 0:3edb3708c8c5 2081 // define write-only register ADC_CONFIGURATION
whismanoid 0:3edb3708c8c5 2082 //int16_t ADC_CONFIGURATION = 0x8000; //!< registerData 0x8000..0x87FF format: 1 0 0 0 0 REFSEL AVGON NAVG[1:0] NSCAN[1:0] SPM[1:0] ECHO 0 0
whismanoid 0:3edb3708c8c5 2083 const int REFSEL_LSB = 10; const int REFSEL_BITS = 0x01; // ADC_CONFIGURATION.REFSEL
whismanoid 0:3edb3708c8c5 2084 const int AVGON_LSB = 9; const int AVGON_BITS = 0x01; // ADC_CONFIGURATION.AVGON
whismanoid 0:3edb3708c8c5 2085 const int NAVG_LSB = 7; const int NAVG_BITS = 0x03; // ADC_CONFIGURATION.NAVG[1:0]
whismanoid 0:3edb3708c8c5 2086 const int NSCAN_LSB = 5; const int NSCAN_BITS = 0x03; // ADC_CONFIGURATION.NSCAN[1:0]
whismanoid 0:3edb3708c8c5 2087 const int SPM_LSB = 3; const int SPM_BITS = 0x03; // ADC_CONFIGURATION.SPM[1:0]
whismanoid 0:3edb3708c8c5 2088 const int ECHO_LSB = 2; const int ECHO_BITS = 0x01; // ADC_CONFIGURATION.ECHO
whismanoid 0:3edb3708c8c5 2089
whismanoid 0:3edb3708c8c5 2090 const int REFSEL = ((registerData >> REFSEL_LSB) & REFSEL_BITS);
whismanoid 0:3edb3708c8c5 2091 const int AVGON = ((registerData >> AVGON_LSB) & AVGON_BITS);
whismanoid 0:3edb3708c8c5 2092 const int NAVG = ((registerData >> NAVG_LSB) & NAVG_BITS);
whismanoid 0:3edb3708c8c5 2093 const int NSCAN = ((registerData >> NSCAN_LSB) & NSCAN_BITS);
whismanoid 0:3edb3708c8c5 2094 const int SPM = ((registerData >> SPM_LSB) & SPM_BITS);
whismanoid 0:3edb3708c8c5 2095 const int ECHO = ((registerData >> ECHO_LSB) & ECHO_BITS);
whismanoid 0:3edb3708c8c5 2096
whismanoid 0:3edb3708c8c5 2097 if (REFSEL) {
whismanoid 0:3edb3708c8c5 2098 cmdLine.serial().printf(" REFSEL=%d", REFSEL);
whismanoid 0:3edb3708c8c5 2099 }
whismanoid 0:3edb3708c8c5 2100 if (AVGON) {
whismanoid 0:3edb3708c8c5 2101 cmdLine.serial().printf(" AVGON=%d", AVGON);
whismanoid 0:3edb3708c8c5 2102 }
whismanoid 0:3edb3708c8c5 2103 if (NAVG) {
whismanoid 0:3edb3708c8c5 2104 cmdLine.serial().printf(" NAVG=%d", NAVG);
whismanoid 0:3edb3708c8c5 2105 }
whismanoid 0:3edb3708c8c5 2106 if (NSCAN) {
whismanoid 0:3edb3708c8c5 2107 cmdLine.serial().printf(" NSCAN=%d", NSCAN);
whismanoid 0:3edb3708c8c5 2108 }
whismanoid 0:3edb3708c8c5 2109 if (SPM) {
whismanoid 0:3edb3708c8c5 2110 cmdLine.serial().printf(" SPM=%d", SPM);
whismanoid 0:3edb3708c8c5 2111 }
whismanoid 0:3edb3708c8c5 2112 if (ECHO) {
whismanoid 0:3edb3708c8c5 2113 cmdLine.serial().printf(" ECHO=%d", ECHO);
whismanoid 0:3edb3708c8c5 2114 }
whismanoid 0:3edb3708c8c5 2115 }
whismanoid 0:3edb3708c8c5 2116 break;
whismanoid 0:3edb3708c8c5 2117 case 0x8800: // UNIPOLAR 0x8800..0x8FFF format: 1 0 0 0 1 UCH0/1 UCH2/3 UCH4/5 UCH6/7 UCH8/9 UCH10/11 UCH12/13 UCH14/15 PDIFF_COM x x
whismanoid 0:3edb3708c8c5 2118 cmdLine.serial().printf(" UNIPOLAR 0x%4.4x", ((registerData >> 3) & 0xFF));
whismanoid 0:3edb3708c8c5 2119 if ((registerData >> 2) & 0x01) {
whismanoid 0:3edb3708c8c5 2120 cmdLine.serial().printf(" PDIFF_COM");
whismanoid 0:3edb3708c8c5 2121 }
whismanoid 0:3edb3708c8c5 2122 break;
whismanoid 0:3edb3708c8c5 2123 case 0x9000: // BIPOLAR 0x9000..0x97FF format: 1 0 0 1 0 BCH0/1 BCH2/3 BCH4/5 BCH6/7 BCH8/9 BCH10/11 BCH12/13 BCH14/15 x x x
whismanoid 0:3edb3708c8c5 2124 cmdLine.serial().printf(" BIPOLAR 0x%4.4x", ((registerData >> 3) & 0xFF));
whismanoid 0:3edb3708c8c5 2125 break;
whismanoid 0:3edb3708c8c5 2126 case 0x9800: // RANGE 0x9800..0x9FFF format: 1 0 0 1 1 RANGE0/1 RANGE2/3 RANGE4/5 RANGE6/7 RANGE8/9 RANGE10/11 RANGE12/13 RANGE14/15 x x x
whismanoid 0:3edb3708c8c5 2127 cmdLine.serial().printf(" RANGE 0x%4.4x", ((registerData >> 3) & 0xFF));
whismanoid 0:3edb3708c8c5 2128 break;
whismanoid 0:3edb3708c8c5 2129 case 0xA000: // CSCAN0 0xA000..0xA7FF format: 1 0 1 0 0 CHSCAN15 CHSCAN14 CHSCAN13 CHSCAN12 CHSCAN11 CHSCAN10 CHSCAN9 CHSCAN8 x x x
whismanoid 0:3edb3708c8c5 2130 cmdLine.serial().printf(" CSCAN0 0x%4.4x", ((registerData >> 3) & 0xFF));
whismanoid 0:3edb3708c8c5 2131 break;
whismanoid 0:3edb3708c8c5 2132 case 0xA800: // CSCAN1 0xA800..0xAFFF format: 1 0 1 0 1 CHSCAN7 CHSCAN6 CHSCAN5 CHSCAN4 CHSCAN3 CHSCAN2 CHSCAN1 CHSCAN0 x x x
whismanoid 0:3edb3708c8c5 2133 cmdLine.serial().printf(" CSCAN1 0x%4.4x", ((registerData >> 3) & 0xFF));
whismanoid 0:3edb3708c8c5 2134 break;
whismanoid 0:3edb3708c8c5 2135 case 0xB000: // SAMPLESET 0xB000..0xB7FF format: 1 0 1 1 0 SEQ_LENGTH[7:0] x x x
whismanoid 0:3edb3708c8c5 2136 cmdLine.serial().printf(" SAMPLESET SEQ_LENGTH[7:0]=0x%4.4x", ((registerData >> 3) & 0xFF));
whismanoid 0:3edb3708c8c5 2137 cmdLine.serial().printf(" so length=%d channels", (((registerData >> 3) & 0xFF) + 1));
whismanoid 0:3edb3708c8c5 2138 break;
whismanoid 0:3edb3708c8c5 2139 default:
whismanoid 0:3edb3708c8c5 2140 cmdLine.serial().printf(" ???");
whismanoid 0:3edb3708c8c5 2141 break;
whismanoid 0:3edb3708c8c5 2142 }
whismanoid 0:3edb3708c8c5 2143 }
whismanoid 0:3edb3708c8c5 2144 else
whismanoid 0:3edb3708c8c5 2145 {
whismanoid 0:3edb3708c8c5 2146 // ADC_MODE_CONTROL 0x0000..0x7FFF format: 0 SCAN[3:0] CHSEL[3:0] RESET[1:0] PM[1:0] CHAN_ID SWCNV 0
whismanoid 0:3edb3708c8c5 2147 cmdLine.serial().printf(" ADC_MODE_CONTROL");
whismanoid 0:3edb3708c8c5 2148
whismanoid 0:3edb3708c8c5 2149 // define write-only register ADC_MODE_CONTROL
whismanoid 0:3edb3708c8c5 2150 //int16_t ADC_MODE_CONTROL = 0; //!< registerData 0x0000..0x7FFF format: 0 SCAN[3:0] CHSEL[3:0] RESET[1:0] PM[1:0] CHAN_ID SWCNV 0
whismanoid 0:3edb3708c8c5 2151 const int SCAN_LSB = 11; const int SCAN_BITS = 0x0F; //!< ADC_MODE_CONTROL.SCAN[3:0] ADC Scan Control (command)
whismanoid 0:3edb3708c8c5 2152 const int CHSEL_LSB = 7; const int CHSEL_BITS = 0x0F; //!< ADC_MODE_CONTROL.CHSEL[3:0] Analog Input Channel Select AIN0..AIN15
whismanoid 0:3edb3708c8c5 2153 const int RESET_LSB = 5; const int RESET_BITS = 0x03; //!< ADC_MODE_CONTROL.RESET[1:0] Reset 0=Normal 1=ResetFIFO 2=ResetAllRegisters 3=reserved
whismanoid 0:3edb3708c8c5 2154 const int PM_LSB = 3; const int PM_BITS = 0x03; //!< ADC_MODE_CONTROL.PM[1:0] Power Management 0=Normal, 1=AutoShutdown, 2=AutoStandby 3=reserved
whismanoid 0:3edb3708c8c5 2155 const int CHAN_ID_LSB = 2; const int CHAN_ID_BITS = 0x01; //!< ADC_MODE_CONTROL.CHAN_ID
whismanoid 0:3edb3708c8c5 2156 const int SWCNV_LSB = 1; const int SWCNV_BITS = 0x01; //!< ADC_MODE_CONTROL.SWCNV
whismanoid 0:3edb3708c8c5 2157
whismanoid 0:3edb3708c8c5 2158 const int SCAN = ((registerData >> SCAN_LSB) & SCAN_BITS);
whismanoid 0:3edb3708c8c5 2159 const int CHSEL = ((registerData >> CHSEL_LSB) & CHSEL_BITS);
whismanoid 0:3edb3708c8c5 2160 const int RESET = ((registerData >> RESET_LSB) & RESET_BITS);
whismanoid 0:3edb3708c8c5 2161 const int PM = ((registerData >> PM_LSB) & PM_BITS);
whismanoid 0:3edb3708c8c5 2162 const int CHANID = ((registerData >> CHAN_ID_LSB) & CHAN_ID_BITS);
whismanoid 0:3edb3708c8c5 2163 const int SWCNV = ((registerData >> SWCNV_LSB) & SWCNV_BITS);
whismanoid 0:3edb3708c8c5 2164
whismanoid 0:3edb3708c8c5 2165 switch (SCAN)
whismanoid 0:3edb3708c8c5 2166 {
whismanoid 0:3edb3708c8c5 2167 case MAX11131::SCAN_0000_NOP:
whismanoid 0:3edb3708c8c5 2168 cmdLine.serial().printf(" SCAN_0000_NOP");
whismanoid 0:3edb3708c8c5 2169 break;
whismanoid 0:3edb3708c8c5 2170 case MAX11131::SCAN_0001_Manual:
whismanoid 0:3edb3708c8c5 2171 cmdLine.serial().printf(" SCAN_0001_Manual CHSEL=%d", CHSEL);
whismanoid 0:3edb3708c8c5 2172 break;
whismanoid 0:3edb3708c8c5 2173 case MAX11131::SCAN_0010_Repeat:
whismanoid 0:3edb3708c8c5 2174 cmdLine.serial().printf(" SCAN_0010_Repeat CHSEL=%d", CHSEL);
whismanoid 0:3edb3708c8c5 2175 break;
whismanoid 0:3edb3708c8c5 2176 case MAX11131::SCAN_0011_StandardInternalClock:
whismanoid 0:3edb3708c8c5 2177 cmdLine.serial().printf(" SCAN_0011_StandardInt CHSEL=%d", CHSEL);
whismanoid 0:3edb3708c8c5 2178 break;
whismanoid 0:3edb3708c8c5 2179 case MAX11131::SCAN_0100_StandardExternalClock:
whismanoid 0:3edb3708c8c5 2180 cmdLine.serial().printf(" SCAN_0100_StandardExt CHSEL=%d", CHSEL);
whismanoid 0:3edb3708c8c5 2181 break;
whismanoid 0:3edb3708c8c5 2182 case MAX11131::SCAN_0101_UpperInternalClock:
whismanoid 0:3edb3708c8c5 2183 cmdLine.serial().printf(" SCAN_0101_UpperInt CHSEL=%d", CHSEL);
whismanoid 0:3edb3708c8c5 2184 break;
whismanoid 0:3edb3708c8c5 2185 case MAX11131::SCAN_0110_UpperExternalClock:
whismanoid 0:3edb3708c8c5 2186 cmdLine.serial().printf(" SCAN_0110_UpperExt CHSEL=%d", CHSEL);
whismanoid 0:3edb3708c8c5 2187 break;
whismanoid 0:3edb3708c8c5 2188 case MAX11131::SCAN_0111_CustomInternalClock:
whismanoid 0:3edb3708c8c5 2189 cmdLine.serial().printf(" SCAN_0111_CustomInt");
whismanoid 0:3edb3708c8c5 2190 break;
whismanoid 0:3edb3708c8c5 2191 case MAX11131::SCAN_1000_CustomExternalClock:
whismanoid 0:3edb3708c8c5 2192 cmdLine.serial().printf(" SCAN_1000_CustomExt");
whismanoid 0:3edb3708c8c5 2193 break;
whismanoid 0:3edb3708c8c5 2194 case MAX11131::SCAN_1001_SampleSetExternalClock:
whismanoid 0:3edb3708c8c5 2195 cmdLine.serial().printf(" SCAN_1001_SampleSetExt");
whismanoid 0:3edb3708c8c5 2196 break;
whismanoid 0:3edb3708c8c5 2197 default:
whismanoid 0:3edb3708c8c5 2198 cmdLine.serial().printf(" SCAN=%d", SCAN);
whismanoid 0:3edb3708c8c5 2199 cmdLine.serial().printf(" CHSEL=%d", CHSEL);
whismanoid 0:3edb3708c8c5 2200 }
whismanoid 0:3edb3708c8c5 2201 if (RESET) {
whismanoid 0:3edb3708c8c5 2202 cmdLine.serial().printf(" RESET=%d", RESET);
whismanoid 0:3edb3708c8c5 2203 }
whismanoid 0:3edb3708c8c5 2204 if (PM) {
whismanoid 0:3edb3708c8c5 2205 cmdLine.serial().printf(" PM=%d", PM);
whismanoid 0:3edb3708c8c5 2206 }
whismanoid 0:3edb3708c8c5 2207 if (SCAN != MAX11131::SCAN_0000_NOP)
whismanoid 0:3edb3708c8c5 2208 {
whismanoid 0:3edb3708c8c5 2209 if (g_MAX11131_device.isExternalClock)
whismanoid 0:3edb3708c8c5 2210 {
whismanoid 0:3edb3708c8c5 2211 // if external clock mode, print CHANID
whismanoid 0:3edb3708c8c5 2212 cmdLine.serial().printf(" CHANID=%d", CHANID);
whismanoid 0:3edb3708c8c5 2213 }
whismanoid 0:3edb3708c8c5 2214 else
whismanoid 0:3edb3708c8c5 2215 {
whismanoid 0:3edb3708c8c5 2216 // if internal clock mode, print SWCNV
whismanoid 0:3edb3708c8c5 2217 cmdLine.serial().printf(" SWCNV=%d", SWCNV);
whismanoid 0:3edb3708c8c5 2218 }
whismanoid 0:3edb3708c8c5 2219 }
whismanoid 0:3edb3708c8c5 2220 }
whismanoid 0:3edb3708c8c5 2221 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 2222 }
whismanoid 0:3edb3708c8c5 2223 #endif
whismanoid 0:3edb3708c8c5 2224
whismanoid 0:3edb3708c8c5 2225
whismanoid 0:3edb3708c8c5 2226 #if APPLICATION_MAX5171 // hardware interface functions
whismanoid 0:3edb3708c8c5 2227 #endif
whismanoid 0:3edb3708c8c5 2228
whismanoid 0:3edb3708c8c5 2229
whismanoid 0:3edb3708c8c5 2230 #if APPLICATION_MAX11410 // hardware interface functions
whismanoid 0:3edb3708c8c5 2231 #endif
whismanoid 0:3edb3708c8c5 2232
whismanoid 0:3edb3708c8c5 2233
whismanoid 0:3edb3708c8c5 2234 #if APPLICATION_MAX12345 // hardware interface functions
whismanoid 0:3edb3708c8c5 2235 #endif
whismanoid 0:3edb3708c8c5 2236
whismanoid 0:3edb3708c8c5 2237
whismanoid 0:3edb3708c8c5 2238 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 2239 // print banner message to serial port
whismanoid 0:3edb3708c8c5 2240 void print_banner()
whismanoid 0:3edb3708c8c5 2241 {
whismanoid 0:3edb3708c8c5 2242 #if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 2243 DAPLINKserial.printf("\r\n");
whismanoid 0:3edb3708c8c5 2244 # if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 2245 DAPLINKserial.printf("MAX32630");
whismanoid 0:3edb3708c8c5 2246 # elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 2247 DAPLINKserial.printf("MAX32625MBED");
whismanoid 0:3edb3708c8c5 2248 # elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:3edb3708c8c5 2249 DAPLINKserial.printf("NUCLEO_F446RE");
whismanoid 0:3edb3708c8c5 2250 # elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 2251 DAPLINKserial.printf("NUCLEO_F401RE");
whismanoid 0:3edb3708c8c5 2252 # elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 2253 DAPLINKserial.printf("LPC1768");
whismanoid 0:3edb3708c8c5 2254 # else
whismanoid 0:3edb3708c8c5 2255 // unknown target
whismanoid 0:3edb3708c8c5 2256 DAPLINKserial.printf("unknownTarget");
whismanoid 0:3edb3708c8c5 2257 # endif
whismanoid 0:3edb3708c8c5 2258 DAPLINKserial.printf(" DAPLINKserial\r\n");
whismanoid 0:3edb3708c8c5 2259 #endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 2260
whismanoid 7:bf501f8cb637 2261 serial.printf("\r\n");
whismanoid 0:3edb3708c8c5 2262 # if defined(TARGET_MAX32630)
whismanoid 7:bf501f8cb637 2263 serial.printf("MAX32630");
whismanoid 0:3edb3708c8c5 2264 # elif defined(TARGET_MAX32625MBED)
whismanoid 7:bf501f8cb637 2265 serial.printf("MAX32625MBED");
whismanoid 0:3edb3708c8c5 2266 # elif defined(TARGET_NUCLEO_F446RE)
whismanoid 7:bf501f8cb637 2267 serial.printf("NUCLEO_F446RE");
whismanoid 0:3edb3708c8c5 2268 # elif defined(TARGET_NUCLEO_F401RE)
whismanoid 7:bf501f8cb637 2269 serial.printf("NUCLEO_F401RE");
whismanoid 0:3edb3708c8c5 2270 # elif defined(TARGET_LPC1768)
whismanoid 7:bf501f8cb637 2271 serial.printf("LPC1768");
whismanoid 0:3edb3708c8c5 2272 # else
whismanoid 0:3edb3708c8c5 2273 // unknown target
whismanoid 7:bf501f8cb637 2274 serial.printf("unknownTarget");
whismanoid 0:3edb3708c8c5 2275 # endif
whismanoid 7:bf501f8cb637 2276 serial.printf(" Tester\r\n");
whismanoid 0:3edb3708c8c5 2277 }
whismanoid 0:3edb3708c8c5 2278
whismanoid 7:bf501f8cb637 2279 // DigitalInOut pin resource: print the pin index names to serial
whismanoid 0:3edb3708c8c5 2280 #if HAS_digitalInOuts
whismanoid 0:3edb3708c8c5 2281 void list_digitalInOutPins(Stream& serialStream)
whismanoid 0:3edb3708c8c5 2282 {
whismanoid 0:3edb3708c8c5 2283 #if HAS_digitalInOut0
whismanoid 0:3edb3708c8c5 2284 serialStream.printf(" 0");
whismanoid 0:3edb3708c8c5 2285 #endif
whismanoid 0:3edb3708c8c5 2286 #if HAS_digitalInOut1
whismanoid 0:3edb3708c8c5 2287 serialStream.printf(" 1");
whismanoid 0:3edb3708c8c5 2288 #endif
whismanoid 0:3edb3708c8c5 2289 #if HAS_digitalInOut2
whismanoid 0:3edb3708c8c5 2290 serialStream.printf(" 2");
whismanoid 0:3edb3708c8c5 2291 #endif
whismanoid 0:3edb3708c8c5 2292 #if HAS_digitalInOut3
whismanoid 0:3edb3708c8c5 2293 serialStream.printf(" 3");
whismanoid 0:3edb3708c8c5 2294 #endif
whismanoid 0:3edb3708c8c5 2295 #if HAS_digitalInOut4
whismanoid 0:3edb3708c8c5 2296 serialStream.printf(" 4");
whismanoid 0:3edb3708c8c5 2297 #endif
whismanoid 0:3edb3708c8c5 2298 #if HAS_digitalInOut5
whismanoid 0:3edb3708c8c5 2299 serialStream.printf(" 5");
whismanoid 0:3edb3708c8c5 2300 #endif
whismanoid 0:3edb3708c8c5 2301 #if HAS_digitalInOut6
whismanoid 0:3edb3708c8c5 2302 serialStream.printf(" 6");
whismanoid 0:3edb3708c8c5 2303 #endif
whismanoid 0:3edb3708c8c5 2304 #if HAS_digitalInOut7
whismanoid 0:3edb3708c8c5 2305 serialStream.printf(" 7");
whismanoid 0:3edb3708c8c5 2306 #endif
whismanoid 0:3edb3708c8c5 2307 #if HAS_digitalInOut8
whismanoid 0:3edb3708c8c5 2308 serialStream.printf(" 8");
whismanoid 0:3edb3708c8c5 2309 #endif
whismanoid 0:3edb3708c8c5 2310 #if HAS_digitalInOut9
whismanoid 0:3edb3708c8c5 2311 serialStream.printf(" 9");
whismanoid 0:3edb3708c8c5 2312 #endif
whismanoid 0:3edb3708c8c5 2313 #if HAS_digitalInOut10
whismanoid 0:3edb3708c8c5 2314 serialStream.printf(" 10");
whismanoid 0:3edb3708c8c5 2315 #endif
whismanoid 0:3edb3708c8c5 2316 #if HAS_digitalInOut11
whismanoid 0:3edb3708c8c5 2317 serialStream.printf(" 11");
whismanoid 0:3edb3708c8c5 2318 #endif
whismanoid 0:3edb3708c8c5 2319 #if HAS_digitalInOut12
whismanoid 0:3edb3708c8c5 2320 serialStream.printf(" 12");
whismanoid 0:3edb3708c8c5 2321 #endif
whismanoid 0:3edb3708c8c5 2322 #if HAS_digitalInOut13
whismanoid 0:3edb3708c8c5 2323 serialStream.printf(" 13");
whismanoid 0:3edb3708c8c5 2324 #endif
whismanoid 0:3edb3708c8c5 2325 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 2326 serialStream.printf(" 14");
whismanoid 0:3edb3708c8c5 2327 #endif
whismanoid 0:3edb3708c8c5 2328 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 2329 serialStream.printf(" 15");
whismanoid 0:3edb3708c8c5 2330 #endif
whismanoid 0:3edb3708c8c5 2331 #if HAS_digitalInOut16
whismanoid 0:3edb3708c8c5 2332 serialStream.printf(" 16");
whismanoid 0:3edb3708c8c5 2333 #endif
whismanoid 0:3edb3708c8c5 2334 #if HAS_digitalInOut17
whismanoid 0:3edb3708c8c5 2335 serialStream.printf(" 17");
whismanoid 0:3edb3708c8c5 2336 #endif
whismanoid 0:3edb3708c8c5 2337 }
whismanoid 0:3edb3708c8c5 2338 #endif
whismanoid 0:3edb3708c8c5 2339
whismanoid 0:3edb3708c8c5 2340 // DigitalInOut pin resource: present?
whismanoid 0:3edb3708c8c5 2341 #if HAS_digitalInOuts
whismanoid 0:3edb3708c8c5 2342 bool has_digitalInOutPin(int cPinIndex)
whismanoid 0:3edb3708c8c5 2343 {
whismanoid 0:3edb3708c8c5 2344 switch (cPinIndex)
whismanoid 0:3edb3708c8c5 2345 {
whismanoid 0:3edb3708c8c5 2346 #if HAS_digitalInOut0
whismanoid 0:3edb3708c8c5 2347 case '0': case 0x00: return true;
whismanoid 0:3edb3708c8c5 2348 #endif
whismanoid 0:3edb3708c8c5 2349 #if HAS_digitalInOut1
whismanoid 0:3edb3708c8c5 2350 case '1': case 0x01: return true;
whismanoid 0:3edb3708c8c5 2351 #endif
whismanoid 0:3edb3708c8c5 2352 #if HAS_digitalInOut2
whismanoid 0:3edb3708c8c5 2353 case '2': case 0x02: return true;
whismanoid 0:3edb3708c8c5 2354 #endif
whismanoid 0:3edb3708c8c5 2355 #if HAS_digitalInOut3
whismanoid 0:3edb3708c8c5 2356 case '3': case 0x03: return true;
whismanoid 0:3edb3708c8c5 2357 #endif
whismanoid 0:3edb3708c8c5 2358 #if HAS_digitalInOut4
whismanoid 0:3edb3708c8c5 2359 case '4': case 0x04: return true;
whismanoid 0:3edb3708c8c5 2360 #endif
whismanoid 0:3edb3708c8c5 2361 #if HAS_digitalInOut5
whismanoid 0:3edb3708c8c5 2362 case '5': case 0x05: return true;
whismanoid 0:3edb3708c8c5 2363 #endif
whismanoid 0:3edb3708c8c5 2364 #if HAS_digitalInOut6
whismanoid 0:3edb3708c8c5 2365 case '6': case 0x06: return true;
whismanoid 0:3edb3708c8c5 2366 #endif
whismanoid 0:3edb3708c8c5 2367 #if HAS_digitalInOut7
whismanoid 0:3edb3708c8c5 2368 case '7': case 0x07: return true;
whismanoid 0:3edb3708c8c5 2369 #endif
whismanoid 0:3edb3708c8c5 2370 #if HAS_digitalInOut8
whismanoid 0:3edb3708c8c5 2371 case '8': case 0x08: return true;
whismanoid 0:3edb3708c8c5 2372 #endif
whismanoid 0:3edb3708c8c5 2373 #if HAS_digitalInOut9
whismanoid 0:3edb3708c8c5 2374 case '9': case 0x09: return true;
whismanoid 0:3edb3708c8c5 2375 #endif
whismanoid 0:3edb3708c8c5 2376 #if HAS_digitalInOut10
whismanoid 0:3edb3708c8c5 2377 case 'a': case 0x0a: return true;
whismanoid 0:3edb3708c8c5 2378 #endif
whismanoid 0:3edb3708c8c5 2379 #if HAS_digitalInOut11
whismanoid 0:3edb3708c8c5 2380 case 'b': case 0x0b: return true;
whismanoid 0:3edb3708c8c5 2381 #endif
whismanoid 0:3edb3708c8c5 2382 #if HAS_digitalInOut12
whismanoid 0:3edb3708c8c5 2383 case 'c': case 0x0c: return true;
whismanoid 0:3edb3708c8c5 2384 #endif
whismanoid 0:3edb3708c8c5 2385 #if HAS_digitalInOut13
whismanoid 0:3edb3708c8c5 2386 case 'd': case 0x0d: return true;
whismanoid 0:3edb3708c8c5 2387 #endif
whismanoid 0:3edb3708c8c5 2388 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 2389 case 'e': case 0x0e: return true;
whismanoid 0:3edb3708c8c5 2390 #endif
whismanoid 0:3edb3708c8c5 2391 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 2392 case 'f': case 0x0f: return true;
whismanoid 0:3edb3708c8c5 2393 #endif
whismanoid 0:3edb3708c8c5 2394 default:
whismanoid 0:3edb3708c8c5 2395 return false;
whismanoid 0:3edb3708c8c5 2396 }
whismanoid 0:3edb3708c8c5 2397 }
whismanoid 0:3edb3708c8c5 2398 #endif
whismanoid 0:3edb3708c8c5 2399
whismanoid 0:3edb3708c8c5 2400 // DigitalInOut pin resource: search index
whismanoid 0:3edb3708c8c5 2401 #if HAS_digitalInOuts
whismanoid 0:3edb3708c8c5 2402 DigitalInOut& find_digitalInOutPin(int cPinIndex)
whismanoid 0:3edb3708c8c5 2403 {
whismanoid 0:3edb3708c8c5 2404 switch (cPinIndex)
whismanoid 0:3edb3708c8c5 2405 {
whismanoid 0:3edb3708c8c5 2406 default: // default to the first defined digitalInOut pin
whismanoid 0:3edb3708c8c5 2407 #if HAS_digitalInOut0
whismanoid 0:3edb3708c8c5 2408 case '0': case 0x00: return digitalInOut0;
whismanoid 0:3edb3708c8c5 2409 #endif
whismanoid 0:3edb3708c8c5 2410 #if HAS_digitalInOut1
whismanoid 0:3edb3708c8c5 2411 case '1': case 0x01: return digitalInOut1;
whismanoid 0:3edb3708c8c5 2412 #endif
whismanoid 0:3edb3708c8c5 2413 #if HAS_digitalInOut2
whismanoid 0:3edb3708c8c5 2414 case '2': case 0x02: return digitalInOut2;
whismanoid 0:3edb3708c8c5 2415 #endif
whismanoid 0:3edb3708c8c5 2416 #if HAS_digitalInOut3
whismanoid 0:3edb3708c8c5 2417 case '3': case 0x03: return digitalInOut3;
whismanoid 0:3edb3708c8c5 2418 #endif
whismanoid 0:3edb3708c8c5 2419 #if HAS_digitalInOut4
whismanoid 0:3edb3708c8c5 2420 case '4': case 0x04: return digitalInOut4;
whismanoid 0:3edb3708c8c5 2421 #endif
whismanoid 0:3edb3708c8c5 2422 #if HAS_digitalInOut5
whismanoid 0:3edb3708c8c5 2423 case '5': case 0x05: return digitalInOut5;
whismanoid 0:3edb3708c8c5 2424 #endif
whismanoid 0:3edb3708c8c5 2425 #if HAS_digitalInOut6
whismanoid 0:3edb3708c8c5 2426 case '6': case 0x06: return digitalInOut6;
whismanoid 0:3edb3708c8c5 2427 #endif
whismanoid 0:3edb3708c8c5 2428 #if HAS_digitalInOut7
whismanoid 0:3edb3708c8c5 2429 case '7': case 0x07: return digitalInOut7;
whismanoid 0:3edb3708c8c5 2430 #endif
whismanoid 0:3edb3708c8c5 2431 #if HAS_digitalInOut8
whismanoid 0:3edb3708c8c5 2432 case '8': case 0x08: return digitalInOut8;
whismanoid 0:3edb3708c8c5 2433 #endif
whismanoid 0:3edb3708c8c5 2434 #if HAS_digitalInOut9
whismanoid 0:3edb3708c8c5 2435 case '9': case 0x09: return digitalInOut9;
whismanoid 0:3edb3708c8c5 2436 #endif
whismanoid 0:3edb3708c8c5 2437 #if HAS_digitalInOut10
whismanoid 0:3edb3708c8c5 2438 case 'a': case 0x0a: return digitalInOut10;
whismanoid 0:3edb3708c8c5 2439 #endif
whismanoid 0:3edb3708c8c5 2440 #if HAS_digitalInOut11
whismanoid 0:3edb3708c8c5 2441 case 'b': case 0x0b: return digitalInOut11;
whismanoid 0:3edb3708c8c5 2442 #endif
whismanoid 0:3edb3708c8c5 2443 #if HAS_digitalInOut12
whismanoid 0:3edb3708c8c5 2444 case 'c': case 0x0c: return digitalInOut12;
whismanoid 0:3edb3708c8c5 2445 #endif
whismanoid 0:3edb3708c8c5 2446 #if HAS_digitalInOut13
whismanoid 0:3edb3708c8c5 2447 case 'd': case 0x0d: return digitalInOut13;
whismanoid 0:3edb3708c8c5 2448 #endif
whismanoid 0:3edb3708c8c5 2449 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 2450 case 'e': case 0x0e: return digitalInOut14;
whismanoid 0:3edb3708c8c5 2451 #endif
whismanoid 0:3edb3708c8c5 2452 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 2453 case 'f': case 0x0f: return digitalInOut15;
whismanoid 0:3edb3708c8c5 2454 #endif
whismanoid 0:3edb3708c8c5 2455 #if HAS_digitalInOut16
whismanoid 0:3edb3708c8c5 2456 case 'g': case 0x10: return digitalInOut16;
whismanoid 0:3edb3708c8c5 2457 #endif
whismanoid 0:3edb3708c8c5 2458 #if HAS_digitalInOut17
whismanoid 0:3edb3708c8c5 2459 case 'h': case 0x11: return digitalInOut17;
whismanoid 0:3edb3708c8c5 2460 #endif
whismanoid 0:3edb3708c8c5 2461 }
whismanoid 0:3edb3708c8c5 2462 }
whismanoid 0:3edb3708c8c5 2463 #endif
whismanoid 0:3edb3708c8c5 2464
whismanoid 7:bf501f8cb637 2465 // AnalogIn pin resource: print the pin index names to serial
whismanoid 0:3edb3708c8c5 2466 #if HAS_analogIns
whismanoid 0:3edb3708c8c5 2467 void list_analogInPins(Stream& serialStream)
whismanoid 0:3edb3708c8c5 2468 {
whismanoid 0:3edb3708c8c5 2469 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 2470 serialStream.printf(" 0");
whismanoid 0:3edb3708c8c5 2471 #endif
whismanoid 0:3edb3708c8c5 2472 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 2473 serialStream.printf(" 1");
whismanoid 0:3edb3708c8c5 2474 #endif
whismanoid 0:3edb3708c8c5 2475 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 2476 serialStream.printf(" 2");
whismanoid 0:3edb3708c8c5 2477 #endif
whismanoid 0:3edb3708c8c5 2478 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 2479 serialStream.printf(" 3");
whismanoid 0:3edb3708c8c5 2480 #endif
whismanoid 0:3edb3708c8c5 2481 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 2482 serialStream.printf(" 4");
whismanoid 0:3edb3708c8c5 2483 #endif
whismanoid 0:3edb3708c8c5 2484 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 2485 serialStream.printf(" 5");
whismanoid 0:3edb3708c8c5 2486 #endif
whismanoid 0:3edb3708c8c5 2487 #if HAS_analogIn6
whismanoid 0:3edb3708c8c5 2488 serialStream.printf(" 6");
whismanoid 0:3edb3708c8c5 2489 #endif
whismanoid 0:3edb3708c8c5 2490 #if HAS_analogIn7
whismanoid 0:3edb3708c8c5 2491 serialStream.printf(" 7");
whismanoid 0:3edb3708c8c5 2492 #endif
whismanoid 0:3edb3708c8c5 2493 #if HAS_analogIn8
whismanoid 0:3edb3708c8c5 2494 serialStream.printf(" 8");
whismanoid 0:3edb3708c8c5 2495 #endif
whismanoid 0:3edb3708c8c5 2496 #if HAS_analogIn9
whismanoid 0:3edb3708c8c5 2497 serialStream.printf(" 9");
whismanoid 0:3edb3708c8c5 2498 #endif
whismanoid 0:3edb3708c8c5 2499 #if HAS_analogIn10
whismanoid 0:3edb3708c8c5 2500 serialStream.printf(" a");
whismanoid 0:3edb3708c8c5 2501 #endif
whismanoid 0:3edb3708c8c5 2502 #if HAS_analogIn11
whismanoid 0:3edb3708c8c5 2503 serialStream.printf(" b");
whismanoid 0:3edb3708c8c5 2504 #endif
whismanoid 0:3edb3708c8c5 2505 #if HAS_analogIn12
whismanoid 0:3edb3708c8c5 2506 serialStream.printf(" c");
whismanoid 0:3edb3708c8c5 2507 #endif
whismanoid 0:3edb3708c8c5 2508 #if HAS_analogIn13
whismanoid 0:3edb3708c8c5 2509 serialStream.printf(" d");
whismanoid 0:3edb3708c8c5 2510 #endif
whismanoid 0:3edb3708c8c5 2511 #if HAS_analogIn14
whismanoid 0:3edb3708c8c5 2512 serialStream.printf(" e");
whismanoid 0:3edb3708c8c5 2513 #endif
whismanoid 0:3edb3708c8c5 2514 #if HAS_analogIn15
whismanoid 0:3edb3708c8c5 2515 serialStream.printf(" f");
whismanoid 0:3edb3708c8c5 2516 #endif
whismanoid 0:3edb3708c8c5 2517 }
whismanoid 0:3edb3708c8c5 2518 #endif
whismanoid 0:3edb3708c8c5 2519
whismanoid 0:3edb3708c8c5 2520 // AnalogIn pin resource: present?
whismanoid 0:3edb3708c8c5 2521 #if HAS_analogIns
whismanoid 0:3edb3708c8c5 2522 bool has_analogInPin(int cPinIndex)
whismanoid 0:3edb3708c8c5 2523 {
whismanoid 0:3edb3708c8c5 2524 switch (cPinIndex)
whismanoid 0:3edb3708c8c5 2525 {
whismanoid 0:3edb3708c8c5 2526 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 2527 case '0': case 0x00: return true;
whismanoid 0:3edb3708c8c5 2528 #endif
whismanoid 0:3edb3708c8c5 2529 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 2530 case '1': case 0x01: return true;
whismanoid 0:3edb3708c8c5 2531 #endif
whismanoid 0:3edb3708c8c5 2532 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 2533 case '2': case 0x02: return true;
whismanoid 0:3edb3708c8c5 2534 #endif
whismanoid 0:3edb3708c8c5 2535 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 2536 case '3': case 0x03: return true;
whismanoid 0:3edb3708c8c5 2537 #endif
whismanoid 0:3edb3708c8c5 2538 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 2539 case '4': case 0x04: return true;
whismanoid 0:3edb3708c8c5 2540 #endif
whismanoid 0:3edb3708c8c5 2541 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 2542 case '5': case 0x05: return true;
whismanoid 0:3edb3708c8c5 2543 #endif
whismanoid 0:3edb3708c8c5 2544 #if HAS_analogIn6
whismanoid 0:3edb3708c8c5 2545 case '6': case 0x06: return true;
whismanoid 0:3edb3708c8c5 2546 #endif
whismanoid 0:3edb3708c8c5 2547 #if HAS_analogIn7
whismanoid 0:3edb3708c8c5 2548 case '7': case 0x07: return true;
whismanoid 0:3edb3708c8c5 2549 #endif
whismanoid 0:3edb3708c8c5 2550 #if HAS_analogIn8
whismanoid 0:3edb3708c8c5 2551 case '8': case 0x08: return true;
whismanoid 0:3edb3708c8c5 2552 #endif
whismanoid 0:3edb3708c8c5 2553 #if HAS_analogIn9
whismanoid 0:3edb3708c8c5 2554 case '9': case 0x09: return true;
whismanoid 0:3edb3708c8c5 2555 #endif
whismanoid 0:3edb3708c8c5 2556 #if HAS_analogIn10
whismanoid 0:3edb3708c8c5 2557 case 'a': case 0x0a: return true;
whismanoid 0:3edb3708c8c5 2558 #endif
whismanoid 0:3edb3708c8c5 2559 #if HAS_analogIn11
whismanoid 0:3edb3708c8c5 2560 case 'b': case 0x0b: return true;
whismanoid 0:3edb3708c8c5 2561 #endif
whismanoid 0:3edb3708c8c5 2562 #if HAS_analogIn12
whismanoid 0:3edb3708c8c5 2563 case 'c': case 0x0c: return true;
whismanoid 0:3edb3708c8c5 2564 #endif
whismanoid 0:3edb3708c8c5 2565 #if HAS_analogIn13
whismanoid 0:3edb3708c8c5 2566 case 'd': case 0x0d: return true;
whismanoid 0:3edb3708c8c5 2567 #endif
whismanoid 0:3edb3708c8c5 2568 #if HAS_analogIn14
whismanoid 0:3edb3708c8c5 2569 case 'e': case 0x0e: return true;
whismanoid 0:3edb3708c8c5 2570 #endif
whismanoid 0:3edb3708c8c5 2571 #if HAS_analogIn15
whismanoid 0:3edb3708c8c5 2572 case 'f': case 0x0f: return true;
whismanoid 0:3edb3708c8c5 2573 #endif
whismanoid 0:3edb3708c8c5 2574 default:
whismanoid 0:3edb3708c8c5 2575 return false;
whismanoid 0:3edb3708c8c5 2576 }
whismanoid 0:3edb3708c8c5 2577 }
whismanoid 0:3edb3708c8c5 2578 #endif
whismanoid 0:3edb3708c8c5 2579
whismanoid 0:3edb3708c8c5 2580 // AnalogIn pin resource: search index
whismanoid 0:3edb3708c8c5 2581 #if HAS_analogIns
whismanoid 0:3edb3708c8c5 2582 AnalogIn& find_analogInPin(int cPinIndex)
whismanoid 0:3edb3708c8c5 2583 {
whismanoid 0:3edb3708c8c5 2584 switch (cPinIndex)
whismanoid 0:3edb3708c8c5 2585 {
whismanoid 0:3edb3708c8c5 2586 default: // default to the first defined analogIn pin
whismanoid 0:3edb3708c8c5 2587 #if HAS_analogIn0
whismanoid 0:3edb3708c8c5 2588 case '0': case 0x00: return analogIn0;
whismanoid 0:3edb3708c8c5 2589 #endif
whismanoid 0:3edb3708c8c5 2590 #if HAS_analogIn1
whismanoid 0:3edb3708c8c5 2591 case '1': case 0x01: return analogIn1;
whismanoid 0:3edb3708c8c5 2592 #endif
whismanoid 0:3edb3708c8c5 2593 #if HAS_analogIn2
whismanoid 0:3edb3708c8c5 2594 case '2': case 0x02: return analogIn2;
whismanoid 0:3edb3708c8c5 2595 #endif
whismanoid 0:3edb3708c8c5 2596 #if HAS_analogIn3
whismanoid 0:3edb3708c8c5 2597 case '3': case 0x03: return analogIn3;
whismanoid 0:3edb3708c8c5 2598 #endif
whismanoid 0:3edb3708c8c5 2599 #if HAS_analogIn4
whismanoid 0:3edb3708c8c5 2600 case '4': case 0x04: return analogIn4;
whismanoid 0:3edb3708c8c5 2601 #endif
whismanoid 0:3edb3708c8c5 2602 #if HAS_analogIn5
whismanoid 0:3edb3708c8c5 2603 case '5': case 0x05: return analogIn5;
whismanoid 0:3edb3708c8c5 2604 #endif
whismanoid 0:3edb3708c8c5 2605 #if HAS_analogIn6
whismanoid 0:3edb3708c8c5 2606 case '6': case 0x06: return analogIn6;
whismanoid 0:3edb3708c8c5 2607 #endif
whismanoid 0:3edb3708c8c5 2608 #if HAS_analogIn7
whismanoid 0:3edb3708c8c5 2609 case '7': case 0x07: return analogIn7;
whismanoid 0:3edb3708c8c5 2610 #endif
whismanoid 0:3edb3708c8c5 2611 #if HAS_analogIn8
whismanoid 0:3edb3708c8c5 2612 case '8': case 0x08: return analogIn8;
whismanoid 0:3edb3708c8c5 2613 #endif
whismanoid 0:3edb3708c8c5 2614 #if HAS_analogIn9
whismanoid 0:3edb3708c8c5 2615 case '9': case 0x09: return analogIn9;
whismanoid 0:3edb3708c8c5 2616 #endif
whismanoid 0:3edb3708c8c5 2617 #if HAS_analogIn10
whismanoid 0:3edb3708c8c5 2618 case 'a': case 0x0a: return analogIn10;
whismanoid 0:3edb3708c8c5 2619 #endif
whismanoid 0:3edb3708c8c5 2620 #if HAS_analogIn11
whismanoid 0:3edb3708c8c5 2621 case 'b': case 0x0b: return analogIn11;
whismanoid 0:3edb3708c8c5 2622 #endif
whismanoid 0:3edb3708c8c5 2623 #if HAS_analogIn12
whismanoid 0:3edb3708c8c5 2624 case 'c': case 0x0c: return analogIn12;
whismanoid 0:3edb3708c8c5 2625 #endif
whismanoid 0:3edb3708c8c5 2626 #if HAS_analogIn13
whismanoid 0:3edb3708c8c5 2627 case 'd': case 0x0d: return analogIn13;
whismanoid 0:3edb3708c8c5 2628 #endif
whismanoid 0:3edb3708c8c5 2629 #if HAS_analogIn14
whismanoid 0:3edb3708c8c5 2630 case 'e': case 0x0e: return analogIn14;
whismanoid 0:3edb3708c8c5 2631 #endif
whismanoid 0:3edb3708c8c5 2632 #if HAS_analogIn15
whismanoid 0:3edb3708c8c5 2633 case 'f': case 0x0f: return analogIn15;
whismanoid 0:3edb3708c8c5 2634 #endif
whismanoid 0:3edb3708c8c5 2635 }
whismanoid 0:3edb3708c8c5 2636 }
whismanoid 0:3edb3708c8c5 2637 #endif
whismanoid 0:3edb3708c8c5 2638
whismanoid 0:3edb3708c8c5 2639 #if HAS_analogIns
whismanoid 0:3edb3708c8c5 2640 const float analogInPin_fullScaleVoltage[] = {
whismanoid 0:3edb3708c8c5 2641 # if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 2642 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:3edb3708c8c5 2643 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:3edb3708c8c5 2644 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:3edb3708c8c5 2645 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:3edb3708c8c5 2646 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 2647 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 2648 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 2649 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2650 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2651 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:3edb3708c8c5 2652 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:3edb3708c8c5 2653 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 2654 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 2655 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:3edb3708c8c5 2656 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:3edb3708c8c5 2657 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 16:3c75011e705a 2658 # elif defined(TARGET_MAX32620FTHR)
whismanoid 16:3c75011e705a 2659 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 16:3c75011e705a 2660 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 16:3c75011e705a 2661 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 16:3c75011e705a 2662 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 16:3c75011e705a 2663 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 16:3c75011e705a 2664 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 16:3c75011e705a 2665 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 16:3c75011e705a 2666 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 16:3c75011e705a 2667 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 16:3c75011e705a 2668 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 16:3c75011e705a 2669 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 16:3c75011e705a 2670 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 16:3c75011e705a 2671 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 16:3c75011e705a 2672 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 16:3c75011e705a 2673 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 16:3c75011e705a 2674 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 16:3c75011e705a 2675 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:3edb3708c8c5 2676 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 2677 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn0 // fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2678 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn1 // fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2679 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn2 // fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2680 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn3 // fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2681 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 2682 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 2683 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 2684 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2685 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:3edb3708c8c5 2686 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:3edb3708c8c5 2687 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:3edb3708c8c5 2688 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 2689 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:3edb3708c8c5 2690 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:3edb3708c8c5 2691 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:3edb3708c8c5 2692 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:3edb3708c8c5 2693 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:3edb3708c8c5 2694 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:3edb3708c8c5 2695 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:3edb3708c8c5 2696 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:3edb3708c8c5 2697 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:3edb3708c8c5 2698 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:3edb3708c8c5 2699 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:3edb3708c8c5 2700 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:3edb3708c8c5 2701 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:3edb3708c8c5 2702 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:3edb3708c8c5 2703 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:3edb3708c8c5 2704 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:3edb3708c8c5 2705 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:3edb3708c8c5 2706 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:3edb3708c8c5 2707 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:3edb3708c8c5 2708 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:3edb3708c8c5 2709 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:3edb3708c8c5 2710 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:3edb3708c8c5 2711 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:3edb3708c8c5 2712 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:3edb3708c8c5 2713 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:3edb3708c8c5 2714 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:3edb3708c8c5 2715 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:3edb3708c8c5 2716 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:3edb3708c8c5 2717 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:3edb3708c8c5 2718 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:3edb3708c8c5 2719 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:3edb3708c8c5 2720 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:3edb3708c8c5 2721 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:3edb3708c8c5 2722 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:3edb3708c8c5 2723 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:3edb3708c8c5 2724 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:3edb3708c8c5 2725 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:3edb3708c8c5 2726 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:3edb3708c8c5 2727 //#elif defined(TARGET_LPC1768)
whismanoid 0:3edb3708c8c5 2728 #else
whismanoid 0:3edb3708c8c5 2729 // unknown target
whismanoid 0:3edb3708c8c5 2730 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:3edb3708c8c5 2731 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:3edb3708c8c5 2732 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:3edb3708c8c5 2733 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:3edb3708c8c5 2734 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:3edb3708c8c5 2735 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:3edb3708c8c5 2736 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:3edb3708c8c5 2737 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:3edb3708c8c5 2738 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:3edb3708c8c5 2739 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:3edb3708c8c5 2740 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:3edb3708c8c5 2741 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:3edb3708c8c5 2742 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:3edb3708c8c5 2743 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:3edb3708c8c5 2744 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:3edb3708c8c5 2745 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:3edb3708c8c5 2746 # endif
whismanoid 0:3edb3708c8c5 2747 };
whismanoid 0:3edb3708c8c5 2748 #endif
whismanoid 0:3edb3708c8c5 2749
whismanoid 0:3edb3708c8c5 2750 #if HAS_I2C // SUPPORT_I2C
whismanoid 0:3edb3708c8c5 2751 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 2752 // Search I2C device address list
whismanoid 0:3edb3708c8c5 2753 //
whismanoid 0:3edb3708c8c5 2754 // @param[in] deviceAddress7First = I2C device address (slave address on I2C bus), 7-bits, RIGHT-justified.
whismanoid 0:3edb3708c8c5 2755 // @param[in] deviceAddress7Last = I2C device address (slave address on I2C bus), 7-bits, RIGHT-justified.
whismanoid 0:3edb3708c8c5 2756 // @param[in] numDevicesFoundLimit = maximum number of devices to detect before halting search; in case SCL stuck low or pullups missing.
whismanoid 0:3edb3708c8c5 2757 // @returns deviceAddress on success; 0 on failure
whismanoid 0:3edb3708c8c5 2758 // @post g_I2C_deviceAddress7 is updated with any device that did ACK
whismanoid 0:3edb3708c8c5 2759 //
whismanoid 0:3edb3708c8c5 2760 void HuntAttachedI2CDevices(CmdLine& cmdLine, uint8_t deviceAddress7First, uint8_t deviceAddress7Last,
whismanoid 0:3edb3708c8c5 2761 const uint8_t numDevicesFoundLimit = 20)
whismanoid 0:3edb3708c8c5 2762 {
whismanoid 0:3edb3708c8c5 2763 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 0:3edb3708c8c5 2764 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 0:3edb3708c8c5 2765 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 0:3edb3708c8c5 2766
whismanoid 0:3edb3708c8c5 2767 // %IP -- I2C probe
whismanoid 0:3edb3708c8c5 2768 // TODO: i2c transfer
whismanoid 0:3edb3708c8c5 2769 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 0:3edb3708c8c5 2770 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 0:3edb3708c8c5 2771 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 0:3edb3708c8c5 2772 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 0:3edb3708c8c5 2773 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 0:3edb3708c8c5 2774 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 0:3edb3708c8c5 2775 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 0:3edb3708c8c5 2776 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 0:3edb3708c8c5 2777 // /* 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 0:3edb3708c8c5 2778 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 0:3edb3708c8c5 2779
whismanoid 0:3edb3708c8c5 2780 //const char probeWriteData[] = { 0x00 };
whismanoid 0:3edb3708c8c5 2781 //int probeWriteDataLength = 1;
whismanoid 0:3edb3708c8c5 2782 //bool isRepeatedStart = false;
whismanoid 0:3edb3708c8c5 2783 cmdLine.serial().printf("I2C Probe {0x%2.2X (0x%2.2X >> 1) to 0x%2.2X (0x%2.2X >> 1)}, limit %d\r\n",
whismanoid 0:3edb3708c8c5 2784 deviceAddress7First,
whismanoid 0:3edb3708c8c5 2785 deviceAddress7First << 1,
whismanoid 0:3edb3708c8c5 2786 deviceAddress7Last,
whismanoid 0:3edb3708c8c5 2787 deviceAddress7Last << 1,
whismanoid 0:3edb3708c8c5 2788 numDevicesFoundLimit); // HuntAttachedI2CDevices
whismanoid 0:3edb3708c8c5 2789 //~ const int i2cFileDescriptor = i2c_open_adapter(1);
whismanoid 0:3edb3708c8c5 2790 uint8_t numDevicesFound = 0;
whismanoid 0:3edb3708c8c5 2791 uint8_t last_valid_deviceAddress7 = 0;
whismanoid 0:3edb3708c8c5 2792 for (uint8_t deviceAddress7 = deviceAddress7First; deviceAddress7 <= deviceAddress7Last; deviceAddress7++)
whismanoid 0:3edb3708c8c5 2793 {
whismanoid 0:3edb3708c8c5 2794 //cmdLine.serial().printf(" (0x%2.2X >> 1) ", (deviceAddress7 << 1));
whismanoid 0:3edb3708c8c5 2795 //if (i2c_ioctl_I2C_SLAVE_i2cDeviceAddress7bits(i2cFileDescriptor, deviceAddress7) == 0)
whismanoid 0:3edb3708c8c5 2796 int addr8bit = deviceAddress7 * 2;
whismanoid 0:3edb3708c8c5 2797 //
whismanoid 0:3edb3708c8c5 2798 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 0:3edb3708c8c5 2799 // Returns 0 on success (ack), nonzero on failure (nack)
whismanoid 0:3edb3708c8c5 2800 //bool gotACK = (i2cMaster.write (addr8bit, probeWriteData, probeWriteDataLength, isRepeatedStart) == 0);
whismanoid 0:3edb3708c8c5 2801 //
whismanoid 0:3edb3708c8c5 2802 // SMBusQuick test
whismanoid 0:3edb3708c8c5 2803 i2cMaster.start();
whismanoid 0:3edb3708c8c5 2804 // /** Write single byte out on the I2C bus
whismanoid 0:3edb3708c8c5 2805 // *
whismanoid 0:3edb3708c8c5 2806 // * @param data data to write out on bus
whismanoid 0:3edb3708c8c5 2807 // *
whismanoid 0:3edb3708c8c5 2808 // * @returns
whismanoid 0:3edb3708c8c5 2809 // * '0' - NAK was received
whismanoid 0:3edb3708c8c5 2810 // * '1' - ACK was received,
whismanoid 0:3edb3708c8c5 2811 // * '2' - timeout
whismanoid 0:3edb3708c8c5 2812 // */
whismanoid 0:3edb3708c8c5 2813 // int write(int data);
whismanoid 0:3edb3708c8c5 2814 int writeStatus = i2cMaster.write(addr8bit);
whismanoid 0:3edb3708c8c5 2815 i2cMaster.stop();
whismanoid 0:3edb3708c8c5 2816 bool gotACK = (writeStatus == 1); // ACK was received
whismanoid 0:3edb3708c8c5 2817 if (writeStatus == 2) // timeout
whismanoid 0:3edb3708c8c5 2818 {
whismanoid 0:3edb3708c8c5 2819 cmdLine.serial().printf("- timeout\r\n");
whismanoid 0:3edb3708c8c5 2820 }
whismanoid 0:3edb3708c8c5 2821 //
whismanoid 0:3edb3708c8c5 2822 if (gotACK)
whismanoid 0:3edb3708c8c5 2823 {
whismanoid 0:3edb3708c8c5 2824 // @return status; error if (fileDescriptor < 0)
whismanoid 0:3edb3708c8c5 2825 cmdLine.serial().printf("+ ADDR=0x%2.2X (0x%2.2X >> 1) ACK\r\n", deviceAddress7, (deviceAddress7 << 1));
whismanoid 0:3edb3708c8c5 2826 numDevicesFound++;
whismanoid 0:3edb3708c8c5 2827 last_valid_deviceAddress7 = deviceAddress7;
whismanoid 0:3edb3708c8c5 2828 if (numDevicesFound > numDevicesFoundLimit)
whismanoid 0:3edb3708c8c5 2829 {
whismanoid 0:3edb3708c8c5 2830 break;
whismanoid 0:3edb3708c8c5 2831 }
whismanoid 0:3edb3708c8c5 2832 continue;
whismanoid 0:3edb3708c8c5 2833 }
whismanoid 0:3edb3708c8c5 2834 }
whismanoid 0:3edb3708c8c5 2835 if (numDevicesFound == 0)
whismanoid 0:3edb3708c8c5 2836 {
whismanoid 0:3edb3708c8c5 2837 cmdLine.serial().printf("- No I2C devices found. Maybe SCL/SDA are swapped?\r\n");
whismanoid 0:3edb3708c8c5 2838 }
whismanoid 0:3edb3708c8c5 2839 else if (numDevicesFound > numDevicesFoundLimit)
whismanoid 0:3edb3708c8c5 2840 {
whismanoid 0:3edb3708c8c5 2841 cmdLine.serial().printf("- Many I2C devices found. SCL/SDA missing pullup resistors? SCL stuck low?\r\n");
whismanoid 0:3edb3708c8c5 2842 }
whismanoid 0:3edb3708c8c5 2843 else
whismanoid 0:3edb3708c8c5 2844 {
whismanoid 0:3edb3708c8c5 2845 //~ i2c_ioctl_I2C_SLAVE_i2cDeviceAddress7bits(i2cFileDescriptor, last_valid_deviceAddress7);
whismanoid 0:3edb3708c8c5 2846 g_I2C_deviceAddress7 = last_valid_deviceAddress7;
whismanoid 0:3edb3708c8c5 2847 }
whismanoid 0:3edb3708c8c5 2848 //~ i2c_close(i2cFileDescriptor);
whismanoid 0:3edb3708c8c5 2849 }
whismanoid 0:3edb3708c8c5 2850 #endif // SUPPORT_I2C
whismanoid 0:3edb3708c8c5 2851
whismanoid 0:3edb3708c8c5 2852 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 2853 // periodic interrupt timer onTimerTick handler triggered by Ticker
whismanoid 0:3edb3708c8c5 2854 // analogIn0 (MAX32630:AIN_4 = AIN0 / 5.0) controls angular speed
whismanoid 0:3edb3708c8c5 2855 // analogIn1 (MAX32630:AIN_5 = AIN1 / 5.0) controls PWM duty cycle
whismanoid 0:3edb3708c8c5 2856 // note: measured 500ns overhead for MAX32630FTHR digitalInOut1.write(0); digitalInOut1.write(1);
whismanoid 0:3edb3708c8c5 2857 #if USE_PERIODIC_TIMER
whismanoid 0:3edb3708c8c5 2858 void onTimerTick() {
whismanoid 0:3edb3708c8c5 2859 } // onTimerTick
whismanoid 0:3edb3708c8c5 2860 #endif
whismanoid 0:3edb3708c8c5 2861
whismanoid 0:3edb3708c8c5 2862 #if USE_PERIODIC_TIMER
whismanoid 0:3edb3708c8c5 2863 // periodic interrupt timer command handlers -- enable timer
whismanoid 0:3edb3708c8c5 2864 void cmd_TE()
whismanoid 0:3edb3708c8c5 2865 {
whismanoid 0:3edb3708c8c5 2866 //us_timestamp_t interval_usec = 100000; // 100ms
whismanoid 0:3edb3708c8c5 2867 periodicInterruptTimer_interval_usec = 100000; // 100ms
whismanoid 0:3edb3708c8c5 2868 # if HAS_DAPLINK_SERIAL
whismanoid 16:3c75011e705a 2869 DAPLINKserial.printf(" TE rate=%lluus -- Timer Enable\r\n", periodicInterruptTimer_interval_usec);
whismanoid 0:3edb3708c8c5 2870 # endif
whismanoid 16:3c75011e705a 2871 serial.printf(" TE rate=%lluus -- Timer Enable", periodicInterruptTimer_interval_usec);
whismanoid 16:3c75011e705a 2872 #if 1
whismanoid 16:3c75011e705a 2873 // mbed shared event queue run onTimerTick() in Thread context not Interrupt context
whismanoid 16:3c75011e705a 2874 periodicInterruptTimer.attach_us(mbed_event_queue()->event(onTimerTick),
whismanoid 16:3c75011e705a 2875 periodicInterruptTimer_interval_usec);
whismanoid 16:3c75011e705a 2876 // Works if rate=620Hz or less, Fails if rate=750Hz
whismanoid 16:3c75011e705a 2877 // MbedOS Error Info Error Status 0x80FF0144 code 324 module 255
whismanoid 16:3c75011e705a 2878 // Assertion failed; id location 0xBE6F mbed-os.lib/events/Event.h+158
whismanoid 16:3c75011e705a 2879 // Current thread main id 0x200036f8 entry 0xc22f stacksize 0x1000 stackmem 0x200026f8 sp 0x2007ff60
whismanoid 16:3c75011e705a 2880 // Seems not robust about overrun / sample rate too fast
whismanoid 16:3c75011e705a 2881 #else
whismanoid 0:3edb3708c8c5 2882 periodicInterruptTimer.attach_us(&onTimerTick, periodicInterruptTimer_interval_usec);
whismanoid 16:3c75011e705a 2883 #endif
whismanoid 0:3edb3708c8c5 2884 // -- periodicInterruptTimer.attach(&onTimerTick, interval_sec); // the address of the function to be attached (onTimerTick) and the interval (2 seconds)
whismanoid 0:3edb3708c8c5 2885 // -- periodicInterruptTimer.attach_us(&onTimerTick, interval_usec); // the address of the function to be attached (onTimerTick) and the interval (2 seconds)
whismanoid 0:3edb3708c8c5 2886 // -- periodicInterruptTimer.attach(Callback<void()> func, float t);
whismanoid 0:3edb3708c8c5 2887 // -- periodicInterruptTimer.attach_us(Callback<void()> func, us_timestamp_t t);
whismanoid 0:3edb3708c8c5 2888 // TODO1: cmd_T add cSubCommand to change interval of Ticker periodic interrupt timer
whismanoid 0:3edb3708c8c5 2889 }
whismanoid 0:3edb3708c8c5 2890 #endif
whismanoid 0:3edb3708c8c5 2891
whismanoid 0:3edb3708c8c5 2892 #if USE_PERIODIC_TIMER
whismanoid 0:3edb3708c8c5 2893 // periodic interrupt timer command handlers -- disable timer
whismanoid 0:3edb3708c8c5 2894 void cmd_TD()
whismanoid 0:3edb3708c8c5 2895 {
whismanoid 0:3edb3708c8c5 2896 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 2897 DAPLINKserial.printf(" Timer Disable\r\n");
whismanoid 0:3edb3708c8c5 2898 # endif
whismanoid 7:bf501f8cb637 2899 serial.printf(" Timer Disable ");
whismanoid 0:3edb3708c8c5 2900 periodicInterruptTimer.detach(); // Detach the function
whismanoid 0:3edb3708c8c5 2901 }
whismanoid 0:3edb3708c8c5 2902 #endif
whismanoid 0:3edb3708c8c5 2903
whismanoid 0:3edb3708c8c5 2904 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 2905 // When user presses button BUTTON1, perform a demo configuration
whismanoid 0:3edb3708c8c5 2906 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 2907 void onButton1FallingEdge(void)
whismanoid 0:3edb3708c8c5 2908 {
whismanoid 0:3edb3708c8c5 2909 void SelfTest(CmdLine & cmdLine);
whismanoid 0:3edb3708c8c5 2910
whismanoid 7:bf501f8cb637 2911 SelfTest(cmdLine_serial);
whismanoid 0:3edb3708c8c5 2912
whismanoid 0:3edb3708c8c5 2913 #if 0 // APPLICATION_MAX5715 // onButton1FallingEdge BUTTON1 demo configuration MAX5715BOB
whismanoid 0:3edb3708c8c5 2914 //~ cmdLine.serial().printf("MAX5715_REF(REF_AlwaysOn_2V500)");
whismanoid 0:3edb3708c8c5 2915 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_2V500);
whismanoid 0:3edb3708c8c5 2916
whismanoid 0:3edb3708c8c5 2917 uint16_t code = 4095;
whismanoid 0:3edb3708c8c5 2918 //~ cmdLine.serial().printf("CODEallLOADall code=%d", code);
whismanoid 0:3edb3708c8c5 2919 g_MAX5715_device.CODEallLOADall(code);
whismanoid 0:3edb3708c8c5 2920 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 2921
whismanoid 0:3edb3708c8c5 2922 }
whismanoid 0:3edb3708c8c5 2923 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 2924
whismanoid 0:3edb3708c8c5 2925 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 2926 // When user presses button BUTTON2, perform a demo configuration
whismanoid 0:3edb3708c8c5 2927 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 2928 void onButton2FallingEdge(void)
whismanoid 0:3edb3708c8c5 2929 {
whismanoid 0:3edb3708c8c5 2930 // TODO1: BUTTON2 demo configuration LED blink
whismanoid 0:3edb3708c8c5 2931
whismanoid 0:3edb3708c8c5 2932 #if APPLICATION_MAX5715 // onButton2FallingEdge BUTTON2 demo configuration MAX5715BOB
whismanoid 0:3edb3708c8c5 2933 //~ cmdLine.serial().printf("MAX5715_REF(REF_AlwaysOn_2V048)");
whismanoid 0:3edb3708c8c5 2934 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_2V048);
whismanoid 0:3edb3708c8c5 2935 //
whismanoid 0:3edb3708c8c5 2936 uint16_t ch = 0;
whismanoid 0:3edb3708c8c5 2937 uint16_t code = 0xccc;
whismanoid 0:3edb3708c8c5 2938 //~ cmdLine.serial().printf("CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 2939 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 2940 //
whismanoid 0:3edb3708c8c5 2941 ch = 1;
whismanoid 0:3edb3708c8c5 2942 code = 0x800;
whismanoid 0:3edb3708c8c5 2943 //~ cmdLine.serial().printf("CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 2944 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 2945 //
whismanoid 0:3edb3708c8c5 2946 ch = 2;
whismanoid 0:3edb3708c8c5 2947 code = 0x666;
whismanoid 0:3edb3708c8c5 2948 //~ cmdLine.serial().printf("CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 2949 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 2950 //
whismanoid 0:3edb3708c8c5 2951 ch = 3;
whismanoid 0:3edb3708c8c5 2952 code = 0xFFF;
whismanoid 0:3edb3708c8c5 2953 //~ cmdLine.serial().printf("CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 2954 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 2955 #elif APPLICATION_MAX11131 // onButton2FallingEdge BUTTON2 demo configuration MAX11131BOB
whismanoid 0:3edb3708c8c5 2956 // TODO1: demo
whismanoid 0:3edb3708c8c5 2957 // MAX11131 > 4
whismanoid 0:3edb3708c8c5 2958 // ScanStandardExternalClock ch=9 pm=0 id=1
whismanoid 0:3edb3708c8c5 2959 // ScanRead_nWords_chanID nWords=10
whismanoid 0:3edb3708c8c5 2960 // ch=0 xu=2964 = 0x0b94 = 1.8091V
whismanoid 0:3edb3708c8c5 2961 // ch=1 xu=2227 = 0x08b3 = 1.3593V
whismanoid 0:3edb3708c8c5 2962 // ch=2 xu=1570 = 0x0622 = 0.9583V
whismanoid 0:3edb3708c8c5 2963 // ch=3 xu=865 = 0x0361 = 0.5280V
whismanoid 0:3edb3708c8c5 2964 // ch=4 xu=630 = 0x0276 = 0.3845V
whismanoid 0:3edb3708c8c5 2965 // ch=5 xu=594 = 0x0252 = 0.3625V
whismanoid 0:3edb3708c8c5 2966 // ch=6 xu=461 = 0x01cd = 0.2814V
whismanoid 0:3edb3708c8c5 2967 // ch=7 xu=364 = 0x016c = 0.2222V
whismanoid 0:3edb3708c8c5 2968 // ch=8 xu=480 = 0x01e0 = 0.2930V
whismanoid 0:3edb3708c8c5 2969 // ch=9 xu=616 = 0x0268 = 0.3760V
whismanoid 0:3edb3708c8c5 2970 g_MAX11131_device.channelNumber_0_15 = 9;
whismanoid 0:3edb3708c8c5 2971 g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 0:3edb3708c8c5 2972 g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 0:3edb3708c8c5 2973 g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardExternalClock();
whismanoid 0:3edb3708c8c5 2974 //
whismanoid 0:3edb3708c8c5 2975 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 2976 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 2977 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 2978 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 2979 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 2980 //
whismanoid 0:3edb3708c8c5 2981 // TODO: compare with mbed/Arduino AIN0-AIN3
whismanoid 0:3edb3708c8c5 2982 //
whismanoid 0:3edb3708c8c5 2983 #elif APPLICATION_MAX5171 // onButton2FallingEdge BUTTON2 demo configuration MAX5171BOB
whismanoid 0:3edb3708c8c5 2984 // TODO: demo
whismanoid 0:3edb3708c8c5 2985 uint16_t code = 0xccc;
whismanoid 0:3edb3708c8c5 2986 g_MAX5171_device.CODE(code);
whismanoid 0:3edb3708c8c5 2987 #elif APPLICATION_MAX11410 // onButton2FallingEdge BUTTON2 demo configuration MAX11410BOB
whismanoid 0:3edb3708c8c5 2988 // TODO: demo
whismanoid 25:a2afb91c605a 2989 #warning "MAX11410 onButton2FallingEdge demo not defined"
whismanoid 25:a2afb91c605a 2990 //g_MAX11410_device.CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 2991 #elif APPLICATION_MAX12345 // onButton2FallingEdge BUTTON2 demo configuration MAX12345BOB
whismanoid 0:3edb3708c8c5 2992 // TODO: demo
whismanoid 0:3edb3708c8c5 2993 g_MAX12345_device.CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 2994 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 2995 rgb_led.blue(); // diagnostic rbg led BLUE
whismanoid 0:3edb3708c8c5 2996
whismanoid 0:3edb3708c8c5 2997 }
whismanoid 0:3edb3708c8c5 2998 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 2999
whismanoid 0:3edb3708c8c5 3000 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3001 // TODO1: use MaximTinyTester encapsulate SelfTest support functions
whismanoid 0:3edb3708c8c5 3002 //--------------------------------------------------
whismanoid 2:b3a8a0ca0a94 3003 #if APPLICATION_MAX5715 // SelfTest
whismanoid 2:b3a8a0ca0a94 3004 //
whismanoid 2:b3a8a0ca0a94 3005 // Note: ide.mbed.com does not support C++11 Lambda Expressions
whismanoid 2:b3a8a0ca0a94 3006 // -- see https://os.mbed.com/questions/82580/Is-there-solution-for-defining-of-interr/
whismanoid 2:b3a8a0ca0a94 3007 //
whismanoid 2:b3a8a0ca0a94 3008 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3009 // uint8_t MAX5715::Init(void)
whismanoid 2:b3a8a0ca0a94 3010 // uint8_t (*fn_MAX5715_Init)() = [](){ return g_MAX5715_device.Init(); };
whismanoid 2:b3a8a0ca0a94 3011 uint8_t fn_MAX5715_Init() { return g_MAX5715_device.Init(); };
whismanoid 2:b3a8a0ca0a94 3012 //
whismanoid 2:b3a8a0ca0a94 3013 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3014 // uint16_t MAX5715::DACCodeOfVoltage(double voltageV)
whismanoid 2:b3a8a0ca0a94 3015 // uint16_t (*fn_MAX5715_DACCodeOfVoltage)(double) = [](double voltageV){ return g_MAX5715_device.DACCodeOfVoltage(voltageV); };
whismanoid 2:b3a8a0ca0a94 3016 uint16_t fn_MAX5715_DACCodeOfVoltage(double voltageV) { return g_MAX5715_device.DACCodeOfVoltage(voltageV); };
whismanoid 2:b3a8a0ca0a94 3017 //
whismanoid 2:b3a8a0ca0a94 3018 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3019 // double MAX5715::VoltageOfCode(uint16_t value_u14)
whismanoid 2:b3a8a0ca0a94 3020 //double (*fn_MAX5715_VoltageOfCode)(uint16_t) = [](uint16_t value_u14){ return g_MAX5715_device.VoltageOfCode(value_u14); };
whismanoid 2:b3a8a0ca0a94 3021 double fn_MAX5715_VoltageOfCode(uint16_t value_u14) { return g_MAX5715_device.VoltageOfCode(value_u14); };
whismanoid 2:b3a8a0ca0a94 3022 //
whismanoid 2:b3a8a0ca0a94 3023 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3024 // void MAX5715::CODEnLOADn(uint8_t channel_0_3, uint16_t dacCodeLsbs)
whismanoid 2:b3a8a0ca0a94 3025 // void (*fn_MAX5715_CODEnLOADn)(uint8_t channel_0_3, uint16_t dacCodeLsbs) = [](uint8_t channel_0_3, uint16_t dacCodeLsbs){ return g_MAX5715_device.CODEnLOADn(channel_0_3, dacCodeLsbs); };
whismanoid 2:b3a8a0ca0a94 3026 void fn_MAX5715_CODEnLOADn (uint8_t channel_0_3, uint16_t dacCodeLsbs) { return g_MAX5715_device.CODEnLOADn(channel_0_3, dacCodeLsbs); };
whismanoid 2:b3a8a0ca0a94 3027 //
whismanoid 2:b3a8a0ca0a94 3028 #endif // APPLICATION_MAX5715 // SelfTest
whismanoid 2:b3a8a0ca0a94 3029 //--------------------------------------------------
whismanoid 2:b3a8a0ca0a94 3030 #if APPLICATION_MAX11131 // SelfTest
whismanoid 2:b3a8a0ca0a94 3031 //
whismanoid 2:b3a8a0ca0a94 3032 // Note: ide.mbed.com does not support C++11 Lambda Expressions
whismanoid 2:b3a8a0ca0a94 3033 // -- see https://os.mbed.com/questions/82580/Is-there-solution-for-defining-of-interr/
whismanoid 2:b3a8a0ca0a94 3034 //
whismanoid 2:b3a8a0ca0a94 3035 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3036 //
whismanoid 2:b3a8a0ca0a94 3037 #endif // APPLICATION_MAX11131 // SelfTest
whismanoid 2:b3a8a0ca0a94 3038 //--------------------------------------------------
whismanoid 2:b3a8a0ca0a94 3039 #if APPLICATION_MAX5171 // SelfTest
whismanoid 2:b3a8a0ca0a94 3040 //
whismanoid 2:b3a8a0ca0a94 3041 // Note: ide.mbed.com does not support C++11 Lambda Expressions
whismanoid 2:b3a8a0ca0a94 3042 // -- see https://os.mbed.com/questions/82580/Is-there-solution-for-defining-of-interr/
whismanoid 2:b3a8a0ca0a94 3043 //
whismanoid 2:b3a8a0ca0a94 3044 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3045 // uint8_t MAX5171::Init(void)
whismanoid 2:b3a8a0ca0a94 3046 // uint8_t (*fn_MAX5171_Init)() = [](){ return g_MAX5171_device.Init(); };
whismanoid 2:b3a8a0ca0a94 3047 uint8_t fn_MAX5171_Init() { return g_MAX5171_device.Init(); };
whismanoid 2:b3a8a0ca0a94 3048 //
whismanoid 2:b3a8a0ca0a94 3049 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3050 // uint16_t MAX5171::DACCodeOfVoltage(double voltageV)
whismanoid 2:b3a8a0ca0a94 3051 // uint16_t (*fn_MAX5171_DACCodeOfVoltage)(double) = [](double voltageV){ return g_MAX5171_device.DACCodeOfVoltage(voltageV); };
whismanoid 2:b3a8a0ca0a94 3052 uint16_t fn_MAX5171_DACCodeOfVoltage(double voltageV) { return g_MAX5171_device.DACCodeOfVoltage(voltageV); };
whismanoid 2:b3a8a0ca0a94 3053 //
whismanoid 2:b3a8a0ca0a94 3054 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3055 // double MAX5171::VoltageOfCode(uint16_t value_u14)
whismanoid 2:b3a8a0ca0a94 3056 // double (*fn_MAX5171_VoltageOfCode)(uint16_t) = [](uint16_t value_u14){ return g_MAX5171_device.VoltageOfCode(value_u14); };
whismanoid 2:b3a8a0ca0a94 3057 double fn_MAX5171_VoltageOfCode(uint16_t value_u14) { return g_MAX5171_device.VoltageOfCode(value_u14); };
whismanoid 2:b3a8a0ca0a94 3058 //
whismanoid 2:b3a8a0ca0a94 3059 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3060 // uint8_t MAX5171::CODE_LOAD(uint16_t dacCodeLsbs)
whismanoid 2:b3a8a0ca0a94 3061 // uint8_t (*fn_MAX5171_CODE_LOAD)(uint16_t dacCodeLsbs) = [](uint16_t dacCodeLsbs){ return g_MAX5171_device.CODE_LOAD(dacCodeLsbs); };
whismanoid 2:b3a8a0ca0a94 3062 uint8_t fn_MAX5171_CODE_LOAD(uint16_t dacCodeLsbs) { return g_MAX5171_device.CODE_LOAD(dacCodeLsbs); };
whismanoid 2:b3a8a0ca0a94 3063 //
whismanoid 2:b3a8a0ca0a94 3064 //
whismanoid 2:b3a8a0ca0a94 3065 #endif // APPLICATION_MAX5171 // SelfTest
whismanoid 2:b3a8a0ca0a94 3066 //--------------------------------------------------
whismanoid 2:b3a8a0ca0a94 3067 #if APPLICATION_MAX11410 // SelfTest
whismanoid 2:b3a8a0ca0a94 3068 //
whismanoid 2:b3a8a0ca0a94 3069 // Note: ide.mbed.com does not support C++11 Lambda Expressions
whismanoid 2:b3a8a0ca0a94 3070 // -- see https://os.mbed.com/questions/82580/Is-there-solution-for-defining-of-interr/
whismanoid 2:b3a8a0ca0a94 3071 //
whismanoid 2:b3a8a0ca0a94 3072 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3073 //
whismanoid 2:b3a8a0ca0a94 3074 #endif // APPLICATION_MAX11410 // SelfTest
whismanoid 2:b3a8a0ca0a94 3075 //--------------------------------------------------
whismanoid 2:b3a8a0ca0a94 3076 #if APPLICATION_MAX12345 // SelfTest
whismanoid 2:b3a8a0ca0a94 3077 //
whismanoid 2:b3a8a0ca0a94 3078 // Note: ide.mbed.com does not support C++11 Lambda Expressions
whismanoid 2:b3a8a0ca0a94 3079 // -- see https://os.mbed.com/questions/82580/Is-there-solution-for-defining-of-interr/
whismanoid 2:b3a8a0ca0a94 3080 //
whismanoid 2:b3a8a0ca0a94 3081 // define function under test using C++11 lambda expression [](){}
whismanoid 2:b3a8a0ca0a94 3082 //
whismanoid 2:b3a8a0ca0a94 3083 #endif // APPLICATION_MAX12345 // SelfTest
whismanoid 2:b3a8a0ca0a94 3084 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3085 void SelfTest_print_DACCodeOfVoltage(CmdLine& cmdLine, double voltageV)
whismanoid 0:3edb3708c8c5 3086 {
whismanoid 0:3edb3708c8c5 3087 cmdLine.serial().printf("DACCodeOfVoltage(%6.4fV)", voltageV);
whismanoid 0:3edb3708c8c5 3088 // For 12-bit DAC, dtostrf width, precision = 6, 4 i.e. 0.0001
whismanoid 0:3edb3708c8c5 3089 // For 14-bit DAC, dtostrf width, precision = 7, 5 i.e. 0.00001
whismanoid 0:3edb3708c8c5 3090 //~ dtostrf(voltageV, 6, 4, strOutLineBuffer); // value, width, precision, char* buffer
whismanoid 0:3edb3708c8c5 3091 //~ cmdLine.serial().printf(strOutLineBuffer);
whismanoid 0:3edb3708c8c5 3092 //~ cmdLine.serial().printf("V)");
whismanoid 0:3edb3708c8c5 3093 }
whismanoid 0:3edb3708c8c5 3094 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3095 #if APPLICATION_MAX5171 // SelfTest
whismanoid 0:3edb3708c8c5 3096 void SelfTest_print_VoltageOfCode(CmdLine& cmdLine, uint16_t value_u14)
whismanoid 0:3edb3708c8c5 3097 {
whismanoid 0:3edb3708c8c5 3098 cmdLine.serial().printf("VoltageOfCode(%d)", value_u14);
whismanoid 0:3edb3708c8c5 3099 }
whismanoid 0:3edb3708c8c5 3100 #endif // APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 3101 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3102 #if APPLICATION_MAX5715 // SelfTest
whismanoid 0:3edb3708c8c5 3103 void SelfTest_print_Vref(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 3104 {
whismanoid 0:3edb3708c8c5 3105 cmdLine.serial().printf("VRef = %6.4fV LSB=%6.4fV", g_MAX5715_device.VRef, (g_MAX5715_device.VRef / 4095));
whismanoid 0:3edb3708c8c5 3106 //~ dtostrf(g_MAX5715_device.VRef, 6, 4, strOutLineBuffer); // value, width, precision, char* buffer
whismanoid 0:3edb3708c8c5 3107 //~ cmdLine.serial().printf(strOutLineBuffer);
whismanoid 0:3edb3708c8c5 3108 //~ cmdLine.serial().printf("V LSB=");
whismanoid 0:3edb3708c8c5 3109 // For 12-bit DAC, dtostrf width, precision = 6, 4 i.e. 0.0001
whismanoid 0:3edb3708c8c5 3110 // For 14-bit DAC, dtostrf width, precision = 7, 5 i.e. 0.00001
whismanoid 0:3edb3708c8c5 3111 //~ dtostrf( (g_MAX5715_device.VRef / 4095), 6, 4, strOutLineBuffer); // value, width, precision, char* buffer
whismanoid 0:3edb3708c8c5 3112 //~ cmdLine.serial().printf(strOutLineBuffer);
whismanoid 0:3edb3708c8c5 3113 //~ cmdLine.serial().printf("V");
whismanoid 0:3edb3708c8c5 3114 }
whismanoid 0:3edb3708c8c5 3115 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 3116 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3117 #if APPLICATION_MAX5171 // SelfTest
whismanoid 0:3edb3708c8c5 3118 void SelfTest_print_Vref(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 3119 {
whismanoid 0:3edb3708c8c5 3120 cmdLine.serial().printf("VRef = %7.5fV LSB=%7.5fV", g_MAX5171_device.VRef, (g_MAX5171_device.VRef / 16383));
whismanoid 0:3edb3708c8c5 3121 // For 12-bit DAC, dtostrf width, precision = 6, 4 i.e. 0.0001
whismanoid 0:3edb3708c8c5 3122 // For 14-bit DAC, dtostrf width, precision = 7, 5 i.e. 0.00001
whismanoid 0:3edb3708c8c5 3123 }
whismanoid 0:3edb3708c8c5 3124 #endif // APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 3125 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3126 #if HAS_SPI2_MAX541
whismanoid 0:3edb3708c8c5 3127 MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 0:3edb3708c8c5 3128 #endif
whismanoid 0:3edb3708c8c5 3129 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3130 bool SelfTest_MAX541_Voltage(CmdLine & cmdLine, MAX541 &max541, double voltageV)
whismanoid 0:3edb3708c8c5 3131 {
whismanoid 0:3edb3708c8c5 3132 max541.Set_Voltage(voltageV);
whismanoid 0:3edb3708c8c5 3133 // cmdLine.serial().printf("\r\n Test Fixture: MAX541 set output to %1.3fV = code 0x%4.4x", max541.Get_Voltage(), max541.Get_Code());
whismanoid 0:3edb3708c8c5 3134 cmdLine.serial().printf("\r\n Test Fixture: MAX541 set output to 0x%4.4x = %1.3fV",
whismanoid 0:3edb3708c8c5 3135 max541.Get_Code(), max541.Get_Voltage());
whismanoid 0:3edb3708c8c5 3136 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 0:3edb3708c8c5 3137 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 8:6bdfb1376fed 3138 MaximTinyTester tinyTester(cmdLine, analogIn4, analogIn5, analogIn2, analogIn3, analogIn0, analogIn4, led1, led2, led3);
whismanoid 0:3edb3708c8c5 3139 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 0:3edb3708c8c5 3140 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 0:3edb3708c8c5 3141 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 0:3edb3708c8c5 3142 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 0:3edb3708c8c5 3143 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 0:3edb3708c8c5 3144 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 0:3edb3708c8c5 3145 // low range channels AIN0, AIN1, AIN2, AIN3
whismanoid 0:3edb3708c8c5 3146 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 0:3edb3708c8c5 3147 // Platform board uses simple analog inputs
whismanoid 8:6bdfb1376fed 3148 MaximTinyTester tinyTester(cmdLine, analogIn0, analogIn1, analogIn2, analogIn3, analogIn4, analogIn5, led1, led2, led3);
whismanoid 0:3edb3708c8c5 3149 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 0:3edb3708c8c5 3150 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 0:3edb3708c8c5 3151 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 0:3edb3708c8c5 3152 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 0:3edb3708c8c5 3153 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 0:3edb3708c8c5 3154 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 0:3edb3708c8c5 3155 #endif
whismanoid 5:82037e281451 3156 tinyTester.Wait_Output_Settling(); // wait for MAX541 to settle
whismanoid 0:3edb3708c8c5 3157 // TODO: tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3158 tinyTester.err_threshold = 0.100;
whismanoid 0:3edb3708c8c5 3159 return tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 0:3edb3708c8c5 3160 }
whismanoid 0:3edb3708c8c5 3161 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3162 void SelfTest(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 3163 {
whismanoid 0:3edb3708c8c5 3164 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3165 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 0:3edb3708c8c5 3166 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 8:6bdfb1376fed 3167 MaximTinyTester tinyTester(cmdLine, analogIn4, analogIn5, analogIn2, analogIn3, analogIn0, analogIn4, led1, led2, led3);
whismanoid 0:3edb3708c8c5 3168 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 0:3edb3708c8c5 3169 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 0:3edb3708c8c5 3170 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 0:3edb3708c8c5 3171 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 0:3edb3708c8c5 3172 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 0:3edb3708c8c5 3173 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 0:3edb3708c8c5 3174 // low range channels AIN0, AIN1, AIN2, AIN3
whismanoid 0:3edb3708c8c5 3175 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 0:3edb3708c8c5 3176 // Platform board uses simple analog inputs
whismanoid 8:6bdfb1376fed 3177 MaximTinyTester tinyTester(cmdLine, analogIn0, analogIn1, analogIn2, analogIn3, analogIn4, analogIn5, led1, led2, led3);
whismanoid 0:3edb3708c8c5 3178 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 0:3edb3708c8c5 3179 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 0:3edb3708c8c5 3180 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 0:3edb3708c8c5 3181 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 0:3edb3708c8c5 3182 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 0:3edb3708c8c5 3183 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 0:3edb3708c8c5 3184 #endif
whismanoid 8:6bdfb1376fed 3185 tinyTester.clear();
whismanoid 0:3edb3708c8c5 3186 #if APPLICATION_MAX5715 // SelfTest
whismanoid 0:3edb3708c8c5 3187 //
whismanoid 5:82037e281451 3188 // tinyTester.FunctionCall_Expect replaces SelfTest_DACCodeOfVoltage_Expect
whismanoid 0:3edb3708c8c5 3189 //
whismanoid 1:40369075c365 3190 // Note: ide.mbed.com does not support C++11 Lambda Expressions
whismanoid 1:40369075c365 3191 // -- see https://os.mbed.com/questions/82580/Is-there-solution-for-defining-of-interr/
whismanoid 0:3edb3708c8c5 3192 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3193 // uint8_t MAX5715::Init(void)
whismanoid 2:b3a8a0ca0a94 3194 //uint8_t (*fn_MAX5715_Init)() = [](){ return g_MAX5715_device.Init(); };
whismanoid 0:3edb3708c8c5 3195 //
whismanoid 0:3edb3708c8c5 3196 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3197 // uint16_t MAX5715::DACCodeOfVoltage(double voltageV)
whismanoid 2:b3a8a0ca0a94 3198 //uint16_t (*fn_MAX5715_DACCodeOfVoltage)(double) = [](double voltageV){ return g_MAX5715_device.DACCodeOfVoltage(voltageV); };
whismanoid 0:3edb3708c8c5 3199 //
whismanoid 0:3edb3708c8c5 3200 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3201 // double MAX5715::VoltageOfCode(uint16_t value_u14)
whismanoid 2:b3a8a0ca0a94 3202 //double (*fn_MAX5715_VoltageOfCode)(uint16_t) = [](uint16_t value_u14){ return g_MAX5715_device.VoltageOfCode(value_u14); };
whismanoid 0:3edb3708c8c5 3203 //
whismanoid 0:3edb3708c8c5 3204 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3205 // void MAX5715::CODEnLOADn(uint8_t channel_0_3, uint16_t dacCodeLsbs)
whismanoid 2:b3a8a0ca0a94 3206 //void (*fn_MAX5715_CODEnLOADn)(uint8_t channel_0_3, uint16_t dacCodeLsbs) = [](uint8_t channel_0_3, uint16_t dacCodeLsbs){ return g_MAX5715_device.CODEnLOADn(channel_0_3, dacCodeLsbs); };
whismanoid 0:3edb3708c8c5 3207 //
whismanoid 0:3edb3708c8c5 3208 //
whismanoid 0:3edb3708c8c5 3209 //
whismanoid 0:3edb3708c8c5 3210 //
whismanoid 0:3edb3708c8c5 3211 //
whismanoid 0:3edb3708c8c5 3212 //------------------------------------------------------------
whismanoid 0:3edb3708c8c5 3213 g_MAX5715_device.VRef = 4.096; // MAX5715 12-bit LSB = 0.0010V
whismanoid 0:3edb3708c8c5 3214 SelfTest_print_Vref(cmdLine);
whismanoid 0:3edb3708c8c5 3215 //~ cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3216 //
whismanoid 9:9b4232e20020 3217 tinyTester.blink_time_msec = 20; // quickly speed through the software verification
whismanoid 0:3edb3708c8c5 3218 // tinyTester.FunctionCall_Expect replaces SelfTest_DACCodeOfVoltage_Expect
whismanoid 0:3edb3708c8c5 3219 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 10.0, 0x0FFF); // overrange FS
whismanoid 0:3edb3708c8c5 3220 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0950, 0x0FFF);
whismanoid 0:3edb3708c8c5 3221 //
whismanoid 0:3edb3708c8c5 3222 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0945, 0x0FFF);
whismanoid 0:3edb3708c8c5 3223 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0944, 0x0FFE);
whismanoid 0:3edb3708c8c5 3224 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0943, 0x0FFE);
whismanoid 0:3edb3708c8c5 3225 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0942, 0x0FFE);
whismanoid 0:3edb3708c8c5 3226 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0941, 0x0FFE);
whismanoid 0:3edb3708c8c5 3227 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0940, 0x0FFE); // search for code transition
whismanoid 0:3edb3708c8c5 3228 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0939, 0x0FFE);
whismanoid 0:3edb3708c8c5 3229 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0938, 0x0FFE);
whismanoid 0:3edb3708c8c5 3230 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0937, 0x0FFE);
whismanoid 0:3edb3708c8c5 3231 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0936, 0x0FFE);
whismanoid 0:3edb3708c8c5 3232 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0935, 0x0FFD);
whismanoid 0:3edb3708c8c5 3233 //
whismanoid 0:3edb3708c8c5 3234 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 4.0930, 0x0FFD);
whismanoid 0:3edb3708c8c5 3235 //
whismanoid 0:3edb3708c8c5 3236 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0480, 0x0800);
whismanoid 0:3edb3708c8c5 3237 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0470, 0x07FF);
whismanoid 0:3edb3708c8c5 3238 //
whismanoid 0:3edb3708c8c5 3239 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 1.0000, 0x03E8); // 1.0 volt
whismanoid 0:3edb3708c8c5 3240 //
whismanoid 0:3edb3708c8c5 3241 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0030, 0x0003);
whismanoid 0:3edb3708c8c5 3242 //
whismanoid 0:3edb3708c8c5 3243 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0020, 0x0002);
whismanoid 0:3edb3708c8c5 3244 //
whismanoid 0:3edb3708c8c5 3245 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0010, 0x0001);
whismanoid 0:3edb3708c8c5 3246 //
whismanoid 0:3edb3708c8c5 3247 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0000, 0x0000);
whismanoid 0:3edb3708c8c5 3248 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -0.0001, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3249 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -0.0002, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3250 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -1.0, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3251 //
whismanoid 0:3edb3708c8c5 3252 // tinyTester.FunctionCall_Expect replaces SelfTest_VoltageOfCode_Expect
whismanoid 0:3edb3708c8c5 3253 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFF, 4.0950);
whismanoid 0:3edb3708c8c5 3254 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFE, 4.0940);
whismanoid 0:3edb3708c8c5 3255 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0800, 2.0480);
whismanoid 0:3edb3708c8c5 3256 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x07FF, 2.0470);
whismanoid 0:3edb3708c8c5 3257 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x03E8, 1.0000); // 1.0 volt
whismanoid 0:3edb3708c8c5 3258 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0001, 0.0010);
whismanoid 0:3edb3708c8c5 3259 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0000, 0.0000);
whismanoid 0:3edb3708c8c5 3260 //
whismanoid 0:3edb3708c8c5 3261 //------------------------------------------------------------
whismanoid 0:3edb3708c8c5 3262 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3263 g_MAX5715_device.VRef = 2.048; // 12-bit LSB = 0.0005V
whismanoid 0:3edb3708c8c5 3264 SelfTest_print_Vref(cmdLine);
whismanoid 0:3edb3708c8c5 3265 //~ cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3266 // tinyTester.FunctionCall_Expect replaces SelfTest_DACCodeOfVoltage_Expect
whismanoid 0:3edb3708c8c5 3267 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 10.0, 0x0FFF); // overrange FS
whismanoid 0:3edb3708c8c5 3268 //
whismanoid 0:3edb3708c8c5 3269 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0480, 0x0FFF);
whismanoid 0:3edb3708c8c5 3270 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0479, 0x0FFF);
whismanoid 0:3edb3708c8c5 3271 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0478, 0x0FFF);
whismanoid 0:3edb3708c8c5 3272 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0477, 0x0FFF);
whismanoid 0:3edb3708c8c5 3273 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0476, 0x0FFF);
whismanoid 0:3edb3708c8c5 3274 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0475, 0x0FFF);
whismanoid 0:3edb3708c8c5 3275 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0474, 0x0FFF);
whismanoid 0:3edb3708c8c5 3276 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0473, 0x0FFF);
whismanoid 0:3edb3708c8c5 3277 //
whismanoid 0:3edb3708c8c5 3278 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0472, 0x0FFE);
whismanoid 0:3edb3708c8c5 3279 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0471, 0x0FFE);
whismanoid 0:3edb3708c8c5 3280 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0470, 0x0FFE);
whismanoid 0:3edb3708c8c5 3281 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0469, 0x0FFE);
whismanoid 0:3edb3708c8c5 3282 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0468, 0x0FFE);
whismanoid 0:3edb3708c8c5 3283 //
whismanoid 0:3edb3708c8c5 3284 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0467, 0x0FFD);
whismanoid 0:3edb3708c8c5 3285 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0466, 0x0FFD);
whismanoid 0:3edb3708c8c5 3286 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0465, 0x0FFD);
whismanoid 0:3edb3708c8c5 3287 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0464, 0x0FFD);
whismanoid 0:3edb3708c8c5 3288 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.0463, 0x0FFD);
whismanoid 0:3edb3708c8c5 3289 //
whismanoid 0:3edb3708c8c5 3290 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 1.0240, 0x0800);
whismanoid 0:3edb3708c8c5 3291 //
whismanoid 0:3edb3708c8c5 3292 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 1.0235, 0x07FF);
whismanoid 0:3edb3708c8c5 3293 //
whismanoid 0:3edb3708c8c5 3294 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 1.0000, 0x07D0); // 1.0 volt
whismanoid 0:3edb3708c8c5 3295 //
whismanoid 0:3edb3708c8c5 3296 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0017, 0x0003);
whismanoid 0:3edb3708c8c5 3297 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0016, 0x0003);
whismanoid 0:3edb3708c8c5 3298 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0015, 0x0003);
whismanoid 0:3edb3708c8c5 3299 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0014, 0x0003);
whismanoid 0:3edb3708c8c5 3300 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0013, 0x0003);
whismanoid 0:3edb3708c8c5 3301 //
whismanoid 0:3edb3708c8c5 3302 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0012, 0x0002);
whismanoid 0:3edb3708c8c5 3303 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0011, 0x0002);
whismanoid 0:3edb3708c8c5 3304 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0010, 0x0002);
whismanoid 0:3edb3708c8c5 3305 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0009, 0x0002);
whismanoid 0:3edb3708c8c5 3306 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0008, 0x0002);
whismanoid 0:3edb3708c8c5 3307 //
whismanoid 0:3edb3708c8c5 3308 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0007, 0x0001);
whismanoid 0:3edb3708c8c5 3309 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0006, 0x0001);
whismanoid 0:3edb3708c8c5 3310 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0005, 0x0001);
whismanoid 0:3edb3708c8c5 3311 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0004, 0x0001);
whismanoid 0:3edb3708c8c5 3312 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0003, 0x0001);
whismanoid 0:3edb3708c8c5 3313 //
whismanoid 0:3edb3708c8c5 3314 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0002, 0x0000);
whismanoid 0:3edb3708c8c5 3315 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0001, 0x0000);
whismanoid 0:3edb3708c8c5 3316 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0000, 0x0000);
whismanoid 0:3edb3708c8c5 3317 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -0.0001, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3318 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -0.0002, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3319 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -1.0, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3320 // tinyTester.FunctionCall_Expect replaces SelfTest_VoltageOfCode_Expect
whismanoid 0:3edb3708c8c5 3321 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFF, 2.0475);
whismanoid 0:3edb3708c8c5 3322 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFE, 2.0470);
whismanoid 0:3edb3708c8c5 3323 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFD, 2.0465);
whismanoid 0:3edb3708c8c5 3324 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0800, 1.0240);
whismanoid 0:3edb3708c8c5 3325 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x07FF, 1.0235);
whismanoid 0:3edb3708c8c5 3326 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x07D0, 1.0000); // 1.0 volt
whismanoid 0:3edb3708c8c5 3327 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0002, 0.0010);
whismanoid 0:3edb3708c8c5 3328 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0001, 0.0005);
whismanoid 0:3edb3708c8c5 3329 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0000, 0.0000);
whismanoid 0:3edb3708c8c5 3330 //
whismanoid 0:3edb3708c8c5 3331 //
whismanoid 0:3edb3708c8c5 3332 //------------------------------------------------------------
whismanoid 0:3edb3708c8c5 3333 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3334 g_MAX5715_device.VRef = 2.500; // 12-bit LSB = 0.0006105006105006105V
whismanoid 0:3edb3708c8c5 3335 SelfTest_print_Vref(cmdLine);
whismanoid 0:3edb3708c8c5 3336 //~ cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3337 // tinyTester.FunctionCall_Expect replaces SelfTest_DACCodeOfVoltage_Expect
whismanoid 0:3edb3708c8c5 3338 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 10.0, 0x0FFF); // overrange FS
whismanoid 0:3edb3708c8c5 3339 //
whismanoid 0:3edb3708c8c5 3340 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.5000, 0x0FFF);
whismanoid 0:3edb3708c8c5 3341 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4999, 0x0FFF);
whismanoid 0:3edb3708c8c5 3342 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4998, 0x0FFF);
whismanoid 0:3edb3708c8c5 3343 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4997, 0x0FFF);
whismanoid 0:3edb3708c8c5 3344 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4996, 0x0FFF);
whismanoid 0:3edb3708c8c5 3345 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4995, 0x0FFF);
whismanoid 0:3edb3708c8c5 3346 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4994, 0x0FFF);
whismanoid 0:3edb3708c8c5 3347 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4993, 0x0FFF);
whismanoid 0:3edb3708c8c5 3348 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4992, 0x0FFF);
whismanoid 0:3edb3708c8c5 3349 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4991, 0x0FFF);
whismanoid 0:3edb3708c8c5 3350 //
whismanoid 0:3edb3708c8c5 3351 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4990, 0x0FFE); // search for code transitions
whismanoid 0:3edb3708c8c5 3352 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4989, 0x0FFE);
whismanoid 0:3edb3708c8c5 3353 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4988, 0x0FFE);
whismanoid 0:3edb3708c8c5 3354 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4987, 0x0FFE);
whismanoid 0:3edb3708c8c5 3355 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4986, 0x0FFE);
whismanoid 0:3edb3708c8c5 3356 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4985, 0x0FFE);
whismanoid 0:3edb3708c8c5 3357 //
whismanoid 0:3edb3708c8c5 3358 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4984, 0x0FFD);
whismanoid 0:3edb3708c8c5 3359 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4983, 0x0FFD);
whismanoid 0:3edb3708c8c5 3360 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4982, 0x0FFD);
whismanoid 0:3edb3708c8c5 3361 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4981, 0x0FFD);
whismanoid 0:3edb3708c8c5 3362 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4980, 0x0FFD);
whismanoid 0:3edb3708c8c5 3363 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4979, 0x0FFD);
whismanoid 0:3edb3708c8c5 3364 //
whismanoid 0:3edb3708c8c5 3365 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4978, 0x0FFC);
whismanoid 0:3edb3708c8c5 3366 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4977, 0x0FFC);
whismanoid 0:3edb3708c8c5 3367 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4976, 0x0FFC);
whismanoid 0:3edb3708c8c5 3368 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4975, 0x0FFC);
whismanoid 0:3edb3708c8c5 3369 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4974, 0x0FFC);
whismanoid 0:3edb3708c8c5 3370 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4973, 0x0FFC);
whismanoid 0:3edb3708c8c5 3371 //
whismanoid 0:3edb3708c8c5 3372 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4972, 0x0FFB);
whismanoid 0:3edb3708c8c5 3373 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4971, 0x0FFB);
whismanoid 0:3edb3708c8c5 3374 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 2.4970, 0x0FFB);
whismanoid 0:3edb3708c8c5 3375 //
whismanoid 0:3edb3708c8c5 3376 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 1.2500, 0x0800);
whismanoid 0:3edb3708c8c5 3377 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 1.2494, 0x07FF);
whismanoid 0:3edb3708c8c5 3378 //
whismanoid 0:3edb3708c8c5 3379 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 1.0000, 0x0666); // 1.0 volt
whismanoid 0:3edb3708c8c5 3380 //
whismanoid 0:3edb3708c8c5 3381 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0019, 0x0003); // search for code transitions
whismanoid 0:3edb3708c8c5 3382 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0018, 0x0003);
whismanoid 0:3edb3708c8c5 3383 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0017, 0x0003);
whismanoid 0:3edb3708c8c5 3384 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0016, 0x0003);
whismanoid 0:3edb3708c8c5 3385 //
whismanoid 0:3edb3708c8c5 3386 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0015, 0x0002);
whismanoid 0:3edb3708c8c5 3387 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0014, 0x0002);
whismanoid 0:3edb3708c8c5 3388 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0013, 0x0002);
whismanoid 0:3edb3708c8c5 3389 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0012, 0x0002);
whismanoid 0:3edb3708c8c5 3390 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0011, 0x0002);
whismanoid 0:3edb3708c8c5 3391 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0010, 0x0002);
whismanoid 0:3edb3708c8c5 3392 //
whismanoid 0:3edb3708c8c5 3393 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0009, 0x0001);
whismanoid 0:3edb3708c8c5 3394 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0008, 0x0001);
whismanoid 0:3edb3708c8c5 3395 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0007, 0x0001);
whismanoid 0:3edb3708c8c5 3396 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0006, 0x0001);
whismanoid 0:3edb3708c8c5 3397 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0005, 0x0001);
whismanoid 0:3edb3708c8c5 3398 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0004, 0x0001);
whismanoid 0:3edb3708c8c5 3399 //
whismanoid 0:3edb3708c8c5 3400 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0003, 0x0000);
whismanoid 0:3edb3708c8c5 3401 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0002, 0x0000);
whismanoid 0:3edb3708c8c5 3402 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0001, 0x0000);
whismanoid 0:3edb3708c8c5 3403 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, 0.0000, 0x0000);
whismanoid 0:3edb3708c8c5 3404 //
whismanoid 0:3edb3708c8c5 3405 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -0.0001, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3406 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -0.0002, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3407 tinyTester.FunctionCall_Expect("MAX5715.DACCodeOfVoltage", fn_MAX5715_DACCodeOfVoltage, -1.0, 0x0000); // overrange ZS
whismanoid 0:3edb3708c8c5 3408 // tinyTester.FunctionCall_Expect replaces SelfTest_VoltageOfCode_Expect
whismanoid 0:3edb3708c8c5 3409 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFF, 2.5000);
whismanoid 0:3edb3708c8c5 3410 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFE, 2.4988);
whismanoid 0:3edb3708c8c5 3411 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0FFD, 2.4976);
whismanoid 0:3edb3708c8c5 3412 //
whismanoid 0:3edb3708c8c5 3413 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0800, 1.2500);
whismanoid 0:3edb3708c8c5 3414 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x07FF, 1.2494);
whismanoid 0:3edb3708c8c5 3415 //
whismanoid 0:3edb3708c8c5 3416 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0667, 1.0000); // 1.0 volt
whismanoid 0:3edb3708c8c5 3417 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0666, 1.0000); // 1.0 volt
whismanoid 0:3edb3708c8c5 3418 //
whismanoid 0:3edb3708c8c5 3419 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0002, 0.0012);
whismanoid 0:3edb3708c8c5 3420 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0001, 0.0006);
whismanoid 0:3edb3708c8c5 3421 tinyTester.FunctionCall_Expect("MAX5715.VoltageOfCode", fn_MAX5715_VoltageOfCode, 0x0000, 0.0000);
whismanoid 0:3edb3708c8c5 3422 //
whismanoid 0:3edb3708c8c5 3423 //
whismanoid 0:3edb3708c8c5 3424 // Device Testing: DAC commands, verify using on-board ADC inputs
whismanoid 0:3edb3708c8c5 3425 //
whismanoid 9:9b4232e20020 3426 tinyTester.blink_time_msec = 75;
whismanoid 0:3edb3708c8c5 3427 cmdLine.serial().printf("\r\n MAX5715.Init()");
whismanoid 0:3edb3708c8c5 3428 g_MAX5715_device.Init();
whismanoid 0:3edb3708c8c5 3429 //
whismanoid 0:3edb3708c8c5 3430 uint16_t ch = 0;
whismanoid 0:3edb3708c8c5 3431 uint16_t code = 0xfff;
whismanoid 0:3edb3708c8c5 3432 double voltageV = 0.5;
whismanoid 0:3edb3708c8c5 3433 //
whismanoid 0:3edb3708c8c5 3434 // full-scale output on ch0, test MAX5715 internal REF options
whismanoid 0:3edb3708c8c5 3435 ch = 0;
whismanoid 0:3edb3708c8c5 3436 cmdLine.serial().printf("\r\n MAX5715.CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 3437 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 3438 //
whismanoid 0:3edb3708c8c5 3439 cmdLine.serial().printf("\r\n MAX5715.REF(MAX5715::REF_AlwaysOn_2V048)");
whismanoid 0:3edb3708c8c5 3440 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_2V048);
whismanoid 5:82037e281451 3441 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3442 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3443 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3444 tinyTester.err_threshold = 0.030; // 30mV
whismanoid 0:3edb3708c8c5 3445 tinyTester.AnalogIn0_Read_Expect_voltageV(2.048);
whismanoid 0:3edb3708c8c5 3446 //
whismanoid 0:3edb3708c8c5 3447 cmdLine.serial().printf("\r\n MAX5715.REF(MAX5715::REF_AlwaysOn_4V096)");
whismanoid 0:3edb3708c8c5 3448 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_4V096);
whismanoid 0:3edb3708c8c5 3449 // MAX32625MBED 4.096V may be as low as 3.3V supply
whismanoid 5:82037e281451 3450 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3451 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3452 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3453 tinyTester.err_threshold = 0.50; // 30mV
whismanoid 0:3edb3708c8c5 3454 tinyTester.AnalogIn0_Read_Expect_voltageV(3.750); // accept 3.25V to 4.25V
whismanoid 0:3edb3708c8c5 3455 //
whismanoid 0:3edb3708c8c5 3456 cmdLine.serial().printf("\r\n MAX5715.REF(MAX5715::REF_AlwaysOn_2V500)");
whismanoid 0:3edb3708c8c5 3457 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_2V500);
whismanoid 5:82037e281451 3458 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3459 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3460 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3461 tinyTester.err_threshold = 0.030; // 30mV
whismanoid 0:3edb3708c8c5 3462 tinyTester.AnalogIn0_Read_Expect_voltageV(2.500);
whismanoid 0:3edb3708c8c5 3463 //
whismanoid 0:3edb3708c8c5 3464 // test the individual channel outputs
whismanoid 0:3edb3708c8c5 3465 ch = 0;
whismanoid 0:3edb3708c8c5 3466 voltageV = 0.5;
whismanoid 0:3edb3708c8c5 3467 code = g_MAX5715_device.DACCodeOfVoltage(voltageV);
whismanoid 0:3edb3708c8c5 3468 cmdLine.serial().printf("\r\n MAX5715.CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 3469 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 5:82037e281451 3470 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3471 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3472 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3473 tinyTester.err_threshold = 0.030; // 30mV
whismanoid 0:3edb3708c8c5 3474 tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 0:3edb3708c8c5 3475 //
whismanoid 0:3edb3708c8c5 3476 ch = 1;
whismanoid 0:3edb3708c8c5 3477 voltageV = 0.2;
whismanoid 0:3edb3708c8c5 3478 code = g_MAX5715_device.DACCodeOfVoltage(voltageV);
whismanoid 0:3edb3708c8c5 3479 cmdLine.serial().printf("\r\n MAX5715.CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 3480 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 5:82037e281451 3481 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3482 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3483 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3484 tinyTester.err_threshold = 0.030; // 30mV
whismanoid 0:3edb3708c8c5 3485 tinyTester.AnalogIn1_Read_Expect_voltageV(voltageV);
whismanoid 0:3edb3708c8c5 3486 //
whismanoid 0:3edb3708c8c5 3487 ch = 2;
whismanoid 0:3edb3708c8c5 3488 voltageV = 0.4;
whismanoid 0:3edb3708c8c5 3489 code = g_MAX5715_device.DACCodeOfVoltage(voltageV);
whismanoid 0:3edb3708c8c5 3490 cmdLine.serial().printf("\r\n MAX5715.CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 3491 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 5:82037e281451 3492 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3493 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3494 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3495 tinyTester.err_threshold = 0.030; // 30mV
whismanoid 0:3edb3708c8c5 3496 tinyTester.AnalogIn2_Read_Expect_voltageV(voltageV);
whismanoid 0:3edb3708c8c5 3497 //
whismanoid 0:3edb3708c8c5 3498 ch = 3;
whismanoid 0:3edb3708c8c5 3499 voltageV = 0.25;
whismanoid 0:3edb3708c8c5 3500 code = g_MAX5715_device.DACCodeOfVoltage(voltageV);
whismanoid 0:3edb3708c8c5 3501 cmdLine.serial().printf("\r\n MAX5715.CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 3502 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 5:82037e281451 3503 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3504 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3505 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3506 tinyTester.err_threshold = 0.030; // 30mV
whismanoid 0:3edb3708c8c5 3507 tinyTester.AnalogIn3_Read_Expect_voltageV(voltageV);
whismanoid 0:3edb3708c8c5 3508 //
whismanoid 0:3edb3708c8c5 3509 // test that the channels are independent
whismanoid 0:3edb3708c8c5 3510 tinyTester.AnalogIn0_Read_Expect_voltageV(g_MAX5715_device.VoltageOfCode(g_MAX5715_device.CODE[0]));
whismanoid 0:3edb3708c8c5 3511 tinyTester.AnalogIn1_Read_Expect_voltageV(g_MAX5715_device.VoltageOfCode(g_MAX5715_device.CODE[1]));
whismanoid 0:3edb3708c8c5 3512 tinyTester.AnalogIn2_Read_Expect_voltageV(g_MAX5715_device.VoltageOfCode(g_MAX5715_device.CODE[2]));
whismanoid 0:3edb3708c8c5 3513 tinyTester.AnalogIn3_Read_Expect_voltageV(g_MAX5715_device.VoltageOfCode(g_MAX5715_device.CODE[3]));
whismanoid 0:3edb3708c8c5 3514 //
whismanoid 0:3edb3708c8c5 3515 #elif APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 3516 //
whismanoid 0:3edb3708c8c5 3517 // MAX11131BOB self-test functions
whismanoid 0:3edb3708c8c5 3518 //~ SelfTest_FAIL(cmdLine);
whismanoid 0:3edb3708c8c5 3519 //~ cmdLine.serial().printf("test program not implemented yet");
whismanoid 0:3edb3708c8c5 3520 int16_t value_u12;
whismanoid 0:3edb3708c8c5 3521 int channelId;
whismanoid 0:3edb3708c8c5 3522 double voltageV = 0.5;
whismanoid 0:3edb3708c8c5 3523 //
whismanoid 0:3edb3708c8c5 3524 //cmdLine.serial().printf("\r\n 0.0: MAX11131.Init()");
whismanoid 0:3edb3708c8c5 3525 //g_MAX11131_device.Init();
whismanoid 0:3edb3708c8c5 3526 //
whismanoid 0:3edb3708c8c5 3527 // Device Testing: ADC commands, verify with on-board ADC and SPI framing
whismanoid 0:3edb3708c8c5 3528 //
whismanoid 9:9b4232e20020 3529 tinyTester.blink_time_msec = 75;
whismanoid 0:3edb3708c8c5 3530 // MAX11131 SelfTest: MAX11131 SPI connections (Power Supply and GND, SCLK, MOSI, MISO, CS)
whismanoid 0:3edb3708c8c5 3531 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3532 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 3533 "\r\n 1.0: Test SCAN_0100_StandardExt -- verify SPI (VDD, GND, SCLK, MOSI, MISO, CS)");
whismanoid 0:3edb3708c8c5 3534 cmdLine.serial().printf("\r\n MAX11131.Init()");
whismanoid 0:3edb3708c8c5 3535 g_MAX11131_device.Init();
whismanoid 0:3edb3708c8c5 3536 // Send MOSI data Expect MISO data Description
whismanoid 0:3edb3708c8c5 3537 // 1000_0000_0000_0000 xxxx_xxxx_xxxx_xxxx ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0
whismanoid 0:3edb3708c8c5 3538 // 0010_0111_1010_0100 xxxx_xxxx_xxxx_xxxx ADC_MODE_CONTROL SCAN_0100_StandardExt CHSEL=15 RESET=1 CHANID=1
whismanoid 0:3edb3708c8c5 3539 // 0000_0000_0000_0000 0000_xxxx_xxxx_xxxx Channel ID tag = AIN0 expect high nybble 0
whismanoid 0:3edb3708c8c5 3540 // 0000_0000_0000_0000 0001_xxxx_xxxx_xxxx Channel ID tag = AIN1 expect high nybble 1
whismanoid 0:3edb3708c8c5 3541 // 0000_0000_0000_0000 0010_xxxx_xxxx_xxxx Channel ID tag = AIN2 expect high nybble 2
whismanoid 0:3edb3708c8c5 3542 // 0000_0000_0000_0000 0011_xxxx_xxxx_xxxx Channel ID tag = AIN3 expect high nybble 3
whismanoid 0:3edb3708c8c5 3543 //
whismanoid 0:3edb3708c8c5 3544 cmdLine.serial().printf("\r\n MOSI <-- 1000_0000_0000_0000 ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0");
whismanoid 0:3edb3708c8c5 3545 g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 0:3edb3708c8c5 3546 g_MAX11131_device.SPIwrite16bits(0x8000);
whismanoid 0:3edb3708c8c5 3547 g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 0:3edb3708c8c5 3548 //
whismanoid 0:3edb3708c8c5 3549 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 3550 "\r\n MOSI <-- 0010_0111_1010_0100 ADC_MODE_CONTROL SCAN_0100_StandardExt CHSEL=15 RESET=1 CHANID=1");
whismanoid 0:3edb3708c8c5 3551 g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 0:3edb3708c8c5 3552 g_MAX11131_device.SPIwrite16bits(0x27a4);
whismanoid 0:3edb3708c8c5 3553 g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 0:3edb3708c8c5 3554 //
whismanoid 0:3edb3708c8c5 3555 for (int channelIndex = 0; channelIndex < 16; channelIndex++) {
whismanoid 0:3edb3708c8c5 3556 //~ cmdLine.serial().printf("\r\n MISO --> expect 0000_xxxx_xxxx_xxxx");
whismanoid 0:3edb3708c8c5 3557 g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 0:3edb3708c8c5 3558 g_MAX11131_device.RAW_misoData16[channelIndex] = g_MAX11131_device.SPIread16bits();
whismanoid 0:3edb3708c8c5 3559 g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 0:3edb3708c8c5 3560 int expect_channelId = channelIndex;
whismanoid 0:3edb3708c8c5 3561 int actual_channelId = (g_MAX11131_device.RAW_misoData16[channelIndex] >> 12) & 0x000F;
whismanoid 0:3edb3708c8c5 3562 if (actual_channelId != expect_channelId)
whismanoid 0:3edb3708c8c5 3563 {
whismanoid 3:8913cb4a8b9f 3564 tinyTester.FAIL();
whismanoid 0:3edb3708c8c5 3565 cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 0:3edb3708c8c5 3566 cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 0:3edb3708c8c5 3567 cmdLine.serial().printf(" but got 0x%1.1xxxx", actual_channelId);
whismanoid 0:3edb3708c8c5 3568 }
whismanoid 0:3edb3708c8c5 3569 else
whismanoid 0:3edb3708c8c5 3570 {
whismanoid 3:8913cb4a8b9f 3571 tinyTester.PASS();
whismanoid 0:3edb3708c8c5 3572 cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 0:3edb3708c8c5 3573 cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 0:3edb3708c8c5 3574 }
whismanoid 0:3edb3708c8c5 3575 }
whismanoid 0:3edb3708c8c5 3576 //
whismanoid 5:82037e281451 3577 // MAX11131 SelfTest: MAX11131 Supports Internal Clock Modes (CNVST, EOC)
whismanoid 0:3edb3708c8c5 3578 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3579 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 3580 "\r\n 1.1: Test SCAN_0011_StandardInt -- verify Internal Clock signals (CNVST, EOC)");
whismanoid 0:3edb3708c8c5 3581 cmdLine.serial().printf("\r\n MAX11131.Init()");
whismanoid 0:3edb3708c8c5 3582 g_MAX11131_device.Init();
whismanoid 0:3edb3708c8c5 3583 g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 0:3edb3708c8c5 3584 g_MAX11131_device.RAW_misoData16[0] = g_MAX11131_device.SPIread16bits();
whismanoid 0:3edb3708c8c5 3585 g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 3:8913cb4a8b9f 3586 //
whismanoid 5:82037e281451 3587 // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_MAX11131_EOC_expect
whismanoid 3:8913cb4a8b9f 3588 tinyTester.DigitalIn_Read_Expect_WarnOnly(EOCb_pin, "EOC", 1, "initial value before sending commands");
whismanoid 3:8913cb4a8b9f 3589 //
whismanoid 0:3edb3708c8c5 3590 // Send MOSI data Expect MISO data Description
whismanoid 0:3edb3708c8c5 3591 // 1000_0000_0000_0000 xxxx_xxxx_xxxx_xxxx ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0 No Averaging
whismanoid 0:3edb3708c8c5 3592 // 0001_1001_1010_0000 xxxx_xxxx_xxxx_xxxx ADC_MODE_CONTROL SCAN_0011_StandardInt CHSEL=3 RESET=1 SWCNV=0
whismanoid 0:3edb3708c8c5 3593 // 0000_0000_0000_0000 0000_xxxx_xxxx_xxxx Channel ID tag = AIN0 expect high nybble 0
whismanoid 0:3edb3708c8c5 3594 // 0000_0000_0000_0000 0001_xxxx_xxxx_xxxx Channel ID tag = AIN1 expect high nybble 1
whismanoid 0:3edb3708c8c5 3595 // 0000_0000_0000_0000 0010_xxxx_xxxx_xxxx Channel ID tag = AIN2 expect high nybble 2
whismanoid 0:3edb3708c8c5 3596 // 0000_0000_0000_0000 0011_xxxx_xxxx_xxxx Channel ID tag = AIN3 expect high nybble 3
whismanoid 0:3edb3708c8c5 3597 //
whismanoid 0:3edb3708c8c5 3598 cmdLine.serial().printf("\r\n MOSI <-- 1000_0000_0000_0000 ADC_CONFIGURATION REFSEL=0 SPM[1:0]=0 ECHO=0");
whismanoid 0:3edb3708c8c5 3599 g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 0:3edb3708c8c5 3600 g_MAX11131_device.SPIwrite16bits(0x8000);
whismanoid 0:3edb3708c8c5 3601 g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 0:3edb3708c8c5 3602 //
whismanoid 0:3edb3708c8c5 3603 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 3604 "\r\n MOSI <-- 0001_1001_1010_0000 ADC_MODE_CONTROL SCAN_0011_StandardInt CHSEL=3 RESET=1 SWCNV=0");
whismanoid 0:3edb3708c8c5 3605 g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 0:3edb3708c8c5 3606 g_MAX11131_device.SPIwrite16bits(0x19a0);
whismanoid 0:3edb3708c8c5 3607 g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 0:3edb3708c8c5 3608 //
whismanoid 0:3edb3708c8c5 3609 for (int channelIndex = 0; channelIndex < 4; channelIndex++) {
whismanoid 0:3edb3708c8c5 3610 //~ cmdLine.serial().printf("\r\n MISO --> expect 0000_xxxx_xxxx_xxxx");
whismanoid 0:3edb3708c8c5 3611 //~ wait_ms(200); // delay
whismanoid 0:3edb3708c8c5 3612 g_MAX11131_device.CNVSToutputPulseLow();
whismanoid 0:3edb3708c8c5 3613 //~ g_MAX11131_device.CNVSToutputValue(0);
whismanoid 0:3edb3708c8c5 3614 //~ wait_ms(100); // delay
whismanoid 0:3edb3708c8c5 3615 //~ g_MAX11131_device.CNVSToutputValue(1);
whismanoid 0:3edb3708c8c5 3616 // g_MAX11131_device.EOCinputWaitUntilLow(); // infinite wait hazard, need to fail if timeout exceeded
whismanoid 5:82037e281451 3617 // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_MAX11131_EOC_expect
whismanoid 3:8913cb4a8b9f 3618 tinyTester.DigitalIn_Read_Expect_WarnOnly(EOCb_pin, "EOC", 0, "after CNVST pulse");
whismanoid 0:3edb3708c8c5 3619 g_MAX11131_device.SPIoutputCS(0); // drive CS low
whismanoid 0:3edb3708c8c5 3620 g_MAX11131_device.RAW_misoData16[channelIndex] = g_MAX11131_device.SPIread16bits();
whismanoid 0:3edb3708c8c5 3621 g_MAX11131_device.SPIoutputCS(1); // drive CS high
whismanoid 5:82037e281451 3622 // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_MAX11131_EOC_expect
whismanoid 3:8913cb4a8b9f 3623 tinyTester.DigitalIn_Read_Expect_WarnOnly(EOCb_pin, "EOC", 1, "after SPI read");
whismanoid 0:3edb3708c8c5 3624 int expect_channelId = channelIndex;
whismanoid 0:3edb3708c8c5 3625 int actual_channelId = (g_MAX11131_device.RAW_misoData16[channelIndex] >> 12) & 0x000F;
whismanoid 0:3edb3708c8c5 3626 if (actual_channelId != expect_channelId)
whismanoid 0:3edb3708c8c5 3627 {
whismanoid 3:8913cb4a8b9f 3628 tinyTester.FAIL();
whismanoid 0:3edb3708c8c5 3629 cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 0:3edb3708c8c5 3630 cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 0:3edb3708c8c5 3631 cmdLine.serial().printf(" but got 0x%1.1xxxx", actual_channelId);
whismanoid 0:3edb3708c8c5 3632 }
whismanoid 0:3edb3708c8c5 3633 else
whismanoid 0:3edb3708c8c5 3634 {
whismanoid 3:8913cb4a8b9f 3635 tinyTester.PASS();
whismanoid 0:3edb3708c8c5 3636 cmdLine.serial().printf("MISO --> 0x%4.4x", (g_MAX11131_device.RAW_misoData16[channelIndex] & 0xFFFF));
whismanoid 0:3edb3708c8c5 3637 cmdLine.serial().printf(" expect 0x%1.1xxxx (channel ID %d)", expect_channelId, expect_channelId);
whismanoid 0:3edb3708c8c5 3638 }
whismanoid 0:3edb3708c8c5 3639 }
whismanoid 0:3edb3708c8c5 3640 //
whismanoid 5:82037e281451 3641 // MAX11131 SelfTest: Test Fixture: MAX541ACPA+ to MAX32625MBED.AIN0/AIN4
whismanoid 0:3edb3708c8c5 3642 // Test Fixture: MAX541 connected to spi2
whismanoid 0:3edb3708c8c5 3643 // SPI spi2_max541(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi2 TARGET_MAX32635MBED: P2_5 P2_6 P2_4 Arduino 2x3-pin header; microSD
whismanoid 0:3edb3708c8c5 3644 // DigitalOut spi2_max541_cs(SPI2_SS); // TARGET_MAX32635MBED: P2_7 Arduino 2x3-pin header
whismanoid 0:3edb3708c8c5 3645 // Test Fixture: MAX541 spi2 init
whismanoid 0:3edb3708c8c5 3646 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3647 cmdLine.serial().printf("\r\n 2.0: Test Fixture: MAX541 connected to spi2 (P2.4 P2.5 P2.7)?");
whismanoid 0:3edb3708c8c5 3648 bool SelfTest_has_max541 = false;
whismanoid 0:3edb3708c8c5 3649 // Check actual MAX541 reference voltage
whismanoid 0:3edb3708c8c5 3650 cmdLine.serial().printf("\r\n Test Fixture: MAX541 midscale voltage measure with MAX32625MBED AIN0/4");
whismanoid 0:3edb3708c8c5 3651 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 5:82037e281451 3652 tinyTester.Wait_Output_Settling(); // wait for MAX541 to settle
whismanoid 5:82037e281451 3653 //
whismanoid 0:3edb3708c8c5 3654 double max541_midscale_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 3655 const int average_count = 100;
whismanoid 0:3edb3708c8c5 3656 const double average_K = 0.25;
whismanoid 0:3edb3708c8c5 3657 for (int count = 0; count < average_count; count++) {
whismanoid 0:3edb3708c8c5 3658 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:3edb3708c8c5 3659 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 0:3edb3708c8c5 3660 }
whismanoid 0:3edb3708c8c5 3661 if (max541_midscale_V > 1.0f) {
whismanoid 0:3edb3708c8c5 3662 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 0:3edb3708c8c5 3663 cmdLine.serial().printf("\r\n Test Fixture: MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 0:3edb3708c8c5 3664 max541_midscale_V, max541.VRef);
whismanoid 0:3edb3708c8c5 3665 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 0:3edb3708c8c5 3666 voltageV = 1.0f;
whismanoid 0:3edb3708c8c5 3667 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3668 }
whismanoid 0:3edb3708c8c5 3669 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3670 voltageV = 0.0f;
whismanoid 0:3edb3708c8c5 3671 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3672 }
whismanoid 0:3edb3708c8c5 3673 if (SelfTest_has_max541) {
whismanoid 5:82037e281451 3674 voltageV = 2.7f;
whismanoid 0:3edb3708c8c5 3675 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3676 }
whismanoid 0:3edb3708c8c5 3677 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3678 voltageV = 1.65f;
whismanoid 0:3edb3708c8c5 3679 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3680 }
whismanoid 0:3edb3708c8c5 3681 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3682 voltageV = 2.0f;
whismanoid 0:3edb3708c8c5 3683 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3684 }
whismanoid 0:3edb3708c8c5 3685 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3686 voltageV = 0.25f;
whismanoid 0:3edb3708c8c5 3687 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3688 }
whismanoid 0:3edb3708c8c5 3689 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3690 voltageV = 0.5f;
whismanoid 0:3edb3708c8c5 3691 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3692 }
whismanoid 0:3edb3708c8c5 3693 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3694 voltageV = 1.0f;
whismanoid 0:3edb3708c8c5 3695 SelfTest_has_max541 = SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3696 }
whismanoid 0:3edb3708c8c5 3697 if (SelfTest_has_max541 == false) {
whismanoid 0:3edb3708c8c5 3698 // don't fail just because we're missing the test fixture...
whismanoid 0:3edb3708c8c5 3699 cmdLine.serial().printf("\r\n Test Fixture: MAX541 not present");
whismanoid 0:3edb3708c8c5 3700 //~ g_SelfTest_nFail--;
whismanoid 0:3edb3708c8c5 3701 }
whismanoid 0:3edb3708c8c5 3702 //
whismanoid 0:3edb3708c8c5 3703 // TODO1: MAX11131 SelfTest: if Test Fixture: drive MAX541, compare MAX32625MBED.AIN0/AIN4 and MAX11131 AIN0
whismanoid 0:3edb3708c8c5 3704 // indirectly verify the reference voltage by reading a known input voltage
whismanoid 0:3edb3708c8c5 3705 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3706 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3707 cmdLine.serial().printf("\r\n 2.1: TODO1: Check MAX11131 reference voltage using SCAN_0001_Manual");
whismanoid 0:3edb3708c8c5 3708 voltageV = 1.0f;
whismanoid 0:3edb3708c8c5 3709 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3710 cmdLine.serial().printf("\r\n MAX11131.Init()");
whismanoid 0:3edb3708c8c5 3711 g_MAX11131_device.Init();
whismanoid 0:3edb3708c8c5 3712 // 1 ScanManual ch=0 pm=0 id=1
whismanoid 0:3edb3708c8c5 3713 g_MAX11131_device.channelNumber_0_15 = 0;
whismanoid 0:3edb3708c8c5 3714 g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 0:3edb3708c8c5 3715 g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 0:3edb3708c8c5 3716 cmdLine.serial().printf("\r\n MAX11131.channelNumber_0_15=%d", g_MAX11131_device.channelNumber_0_15);
whismanoid 0:3edb3708c8c5 3717 cmdLine.serial().printf("\r\n MAX11131.PowerManagement_0_2=%d", g_MAX11131_device.PowerManagement_0_2);
whismanoid 0:3edb3708c8c5 3718 cmdLine.serial().printf("\r\n MAX11131.chan_id_0_1=%d", g_MAX11131_device.chan_id_0_1);
whismanoid 0:3edb3708c8c5 3719 g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual();
whismanoid 0:3edb3708c8c5 3720 cmdLine.serial().printf("\r\n MAX11131.ScanManual -- NumWords = %d",
whismanoid 0:3edb3708c8c5 3721 g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 3722 g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual();
whismanoid 0:3edb3708c8c5 3723 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 3724 cmdLine.serial().printf("\r\n MAX11131.ReadAINcode");
whismanoid 0:3edb3708c8c5 3725 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 3726 //
whismanoid 0:3edb3708c8c5 3727 // 2.1: TODO1: Check MAX11131 reference voltage -- why we read 0xffff 2.4999V here?
whismanoid 0:3edb3708c8c5 3728 //
whismanoid 0:3edb3708c8c5 3729 cmdLine.serial().printf("\r\n MAX11131.ScanManual -- NumWords = %d",
whismanoid 0:3edb3708c8c5 3730 g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 3731 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 3732 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 3733 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 3734 cmdLine.serial().printf("\r\n MAX11131.ReadAINcode");
whismanoid 0:3edb3708c8c5 3735 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 3736 //
whismanoid 0:3edb3708c8c5 3737 // 2.1: TODO1: Check MAX11131 reference voltage -- why we read 0xffff 2.4999V here?
whismanoid 0:3edb3708c8c5 3738 //
whismanoid 0:3edb3708c8c5 3739 // compare with mbed/Arduino AIN0-AIN3
whismanoid 0:3edb3708c8c5 3740 // MAX32625MBED.AIN4 = MAX11131.AIN0
whismanoid 0:3edb3708c8c5 3741 channelId = 0;
whismanoid 0:3edb3708c8c5 3742 value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 0:3edb3708c8c5 3743 voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 3:8913cb4a8b9f 3744 //
whismanoid 5:82037e281451 3745 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 3:8913cb4a8b9f 3746 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3747 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 3:8913cb4a8b9f 3748 tinyTester.err_threshold = 0.100;
whismanoid 3:8913cb4a8b9f 3749 tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 3:8913cb4a8b9f 3750 //
whismanoid 0:3edb3708c8c5 3751 }
whismanoid 0:3edb3708c8c5 3752 //
whismanoid 0:3edb3708c8c5 3753 if (SelfTest_has_max541) {
whismanoid 0:3edb3708c8c5 3754 voltageV = 1.0f;
whismanoid 0:3edb3708c8c5 3755 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 0:3edb3708c8c5 3756 }
whismanoid 0:3edb3708c8c5 3757 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3758 cmdLine.serial().printf("\r\n 3.1: Test SCAN_0001_Manual");
whismanoid 0:3edb3708c8c5 3759 cmdLine.serial().printf("\r\n MAX11131.Init()");
whismanoid 0:3edb3708c8c5 3760 g_MAX11131_device.Init();
whismanoid 0:3edb3708c8c5 3761 // 1 ScanManual ch=0 pm=0 id=1
whismanoid 0:3edb3708c8c5 3762 g_MAX11131_device.channelNumber_0_15 = 0;
whismanoid 0:3edb3708c8c5 3763 g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 0:3edb3708c8c5 3764 g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 0:3edb3708c8c5 3765 cmdLine.serial().printf("\r\n MAX11131.channelNumber_0_15=%d", g_MAX11131_device.channelNumber_0_15);
whismanoid 0:3edb3708c8c5 3766 cmdLine.serial().printf("\r\n MAX11131.PowerManagement_0_2=%d", g_MAX11131_device.PowerManagement_0_2);
whismanoid 0:3edb3708c8c5 3767 cmdLine.serial().printf("\r\n MAX11131.chan_id_0_1=%d", g_MAX11131_device.chan_id_0_1);
whismanoid 0:3edb3708c8c5 3768 g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual();
whismanoid 0:3edb3708c8c5 3769 cmdLine.serial().printf("\r\n MAX11131.ScanManual -- NumWords = %d",
whismanoid 0:3edb3708c8c5 3770 g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 3771 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 3772 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 3773 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 3774 cmdLine.serial().printf("\r\n MAX11131.ReadAINcode");
whismanoid 0:3edb3708c8c5 3775 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 3776 // compare with mbed/Arduino AIN0-AIN3
whismanoid 0:3edb3708c8c5 3777 // MAX32625MBED.AIN4 = MAX11131.AIN0
whismanoid 0:3edb3708c8c5 3778 channelId = 0;
whismanoid 0:3edb3708c8c5 3779 value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 0:3edb3708c8c5 3780 voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 3:8913cb4a8b9f 3781 //
whismanoid 5:82037e281451 3782 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 3:8913cb4a8b9f 3783 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3784 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 3:8913cb4a8b9f 3785 tinyTester.err_threshold = 0.100;
whismanoid 3:8913cb4a8b9f 3786 tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 3:8913cb4a8b9f 3787 //
whismanoid 0:3edb3708c8c5 3788 //
whismanoid 0:3edb3708c8c5 3789 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 3790 cmdLine.serial().printf("\r\n 3.4: Test SCAN_0100_StandardExternalClock");
whismanoid 0:3edb3708c8c5 3791 cmdLine.serial().printf("\r\n MAX11131.Init()");
whismanoid 0:3edb3708c8c5 3792 g_MAX11131_device.Init();
whismanoid 0:3edb3708c8c5 3793 // MAX11131 > 4
whismanoid 0:3edb3708c8c5 3794 // ScanStandardExternalClock ch=9 pm=0 id=1
whismanoid 0:3edb3708c8c5 3795 // ScanRead_nWords_chanID nWords=10
whismanoid 0:3edb3708c8c5 3796 // ch=0 xu=2964 = 0x0b94 = 1.8091V
whismanoid 0:3edb3708c8c5 3797 // ch=1 xu=2227 = 0x08b3 = 1.3593V
whismanoid 0:3edb3708c8c5 3798 // ch=2 xu=1570 = 0x0622 = 0.9583V
whismanoid 0:3edb3708c8c5 3799 // ch=3 xu=865 = 0x0361 = 0.5280V
whismanoid 0:3edb3708c8c5 3800 // ch=4 xu=630 = 0x0276 = 0.3845V
whismanoid 0:3edb3708c8c5 3801 // ch=5 xu=594 = 0x0252 = 0.3625V
whismanoid 0:3edb3708c8c5 3802 // ch=6 xu=461 = 0x01cd = 0.2814V
whismanoid 0:3edb3708c8c5 3803 // ch=7 xu=364 = 0x016c = 0.2222V
whismanoid 0:3edb3708c8c5 3804 // ch=8 xu=480 = 0x01e0 = 0.2930V
whismanoid 0:3edb3708c8c5 3805 // ch=9 xu=616 = 0x0268 = 0.3760V
whismanoid 0:3edb3708c8c5 3806 g_MAX11131_device.channelNumber_0_15 = 9;
whismanoid 0:3edb3708c8c5 3807 g_MAX11131_device.PowerManagement_0_2 = 0;
whismanoid 0:3edb3708c8c5 3808 g_MAX11131_device.chan_id_0_1 = 1;
whismanoid 0:3edb3708c8c5 3809 cmdLine.serial().printf("\r\n MAX11131.channelNumber_0_15=%d", g_MAX11131_device.channelNumber_0_15);
whismanoid 0:3edb3708c8c5 3810 cmdLine.serial().printf("\r\n MAX11131.PowerManagement_0_2=%d", g_MAX11131_device.PowerManagement_0_2);
whismanoid 0:3edb3708c8c5 3811 cmdLine.serial().printf("\r\n MAX11131.chan_id_0_1=%d", g_MAX11131_device.chan_id_0_1);
whismanoid 0:3edb3708c8c5 3812 g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardExternalClock();
whismanoid 0:3edb3708c8c5 3813 cmdLine.serial().printf("\r\n MAX11131.ScanStandardExternalClock -- NumWords = %d",
whismanoid 0:3edb3708c8c5 3814 g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 3815 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 3816 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 3817 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 3818 cmdLine.serial().printf("\r\n MAX11131.ReadAINcode");
whismanoid 0:3edb3708c8c5 3819 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 3820 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 5:82037e281451 3821 // expect g_MAX11131_device.NumWords == g_MAX11131_device.channelNumber_0_15 + 1;
whismanoid 5:82037e281451 3822 // expect RAW_misoData16[index] msnybble 0,1,2,3,...
whismanoid 0:3edb3708c8c5 3823 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 5:82037e281451 3824 // compare with mbed/Arduino AIN0-AIN3
whismanoid 0:3edb3708c8c5 3825 // MAX32625MBED.AIN4 = MAX11131.AIN0
whismanoid 0:3edb3708c8c5 3826 channelId = 0;
whismanoid 0:3edb3708c8c5 3827 value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 0:3edb3708c8c5 3828 voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 5:82037e281451 3829 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 3:8913cb4a8b9f 3830 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3831 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 3:8913cb4a8b9f 3832 tinyTester.err_threshold = 0.100;
whismanoid 3:8913cb4a8b9f 3833 tinyTester.AnalogIn0_Read_Expect_voltageV(voltageV);
whismanoid 5:82037e281451 3834 // compare MAX32625MBED.AIN5 = MAX11131.AIN1
whismanoid 0:3edb3708c8c5 3835 //channelId = 1;
whismanoid 0:3edb3708c8c5 3836 //value_u12 = g_MAX11131_device.AINcode[channelId];
whismanoid 0:3edb3708c8c5 3837 //voltageV = g_MAX11131_device.VoltageOfCode(value_u12, channelId);
whismanoid 0:3edb3708c8c5 3838 //SelfTest_AnalogInput_Expect_ch_V(cmdLine, 5, voltageV, 0.100);
whismanoid 0:3edb3708c8c5 3839 //
whismanoid 0:3edb3708c8c5 3840 #elif APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 3841
whismanoid 5:82037e281451 3842 // tinyTester.FunctionCall_Expect replaces SelfTest_DACCodeOfVoltage_Expect
whismanoid 0:3edb3708c8c5 3843 //
whismanoid 1:40369075c365 3844 // Note: ide.mbed.com does not support C++11 Lambda Expressions
whismanoid 1:40369075c365 3845 // -- see https://os.mbed.com/questions/82580/Is-there-solution-for-defining-of-interr/
whismanoid 0:3edb3708c8c5 3846 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3847 // uint8_t MAX5171::Init(void)
whismanoid 2:b3a8a0ca0a94 3848 //uint8_t (*fn_MAX5171_Init)() = [](){ return g_MAX5171_device.Init(); };
whismanoid 0:3edb3708c8c5 3849 //
whismanoid 0:3edb3708c8c5 3850 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3851 // uint16_t MAX5171::DACCodeOfVoltage(double voltageV)
whismanoid 2:b3a8a0ca0a94 3852 //uint16_t (*fn_MAX5171_DACCodeOfVoltage)(double) = [](double voltageV){ return g_MAX5171_device.DACCodeOfVoltage(voltageV); };
whismanoid 0:3edb3708c8c5 3853 //
whismanoid 0:3edb3708c8c5 3854 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3855 // double MAX5171::VoltageOfCode(uint16_t value_u14)
whismanoid 2:b3a8a0ca0a94 3856 //double (*fn_MAX5171_VoltageOfCode)(uint16_t) = [](uint16_t value_u14){ return g_MAX5171_device.VoltageOfCode(value_u14); };
whismanoid 0:3edb3708c8c5 3857 //
whismanoid 0:3edb3708c8c5 3858 // define function under test using C++11 lambda expression [](){}
whismanoid 0:3edb3708c8c5 3859 // uint8_t MAX5171::CODE_LOAD(uint16_t dacCodeLsbs)
whismanoid 2:b3a8a0ca0a94 3860 //uint8_t (*fn_MAX5171_CODE_LOAD)(uint16_t dacCodeLsbs) = [](uint16_t dacCodeLsbs){ return g_MAX5171_device.CODE_LOAD(dacCodeLsbs); };
whismanoid 0:3edb3708c8c5 3861 //
whismanoid 0:3edb3708c8c5 3862 //double one_LSB = (g_MAX5171_device.VRef / 16383); // 14-bit DAC FS
whismanoid 5:82037e281451 3863 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3864 tinyTester.settle_time_msec = 250;
whismanoid 0:3edb3708c8c5 3865
whismanoid 0:3edb3708c8c5 3866 g_MAX5171_device.VRef = 2.500; // MAX5171 14-bit LSB = 0.00015V
whismanoid 0:3edb3708c8c5 3867 SelfTest_print_Vref(cmdLine);
whismanoid 8:6bdfb1376fed 3868 tinyTester.err_threshold = (g_MAX5171_device.VRef / 16383); // 14-bit DAC FS
whismanoid 0:3edb3708c8c5 3869 //
whismanoid 5:82037e281451 3870 // tinyTester.FunctionCall_Expect replaces SelfTest_DACCodeOfVoltage_Expect
whismanoid 9:9b4232e20020 3871 tinyTester.blink_time_msec = 20; // quickly speed through the software verification
whismanoid 0:3edb3708c8c5 3872 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 2.499847412109375, 0x3FFF);
whismanoid 0:3edb3708c8c5 3873 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 2.49969482421875, 0x3FFE);
whismanoid 0:3edb3708c8c5 3874 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 2.499542236328125, 0x3FFD);
whismanoid 0:3edb3708c8c5 3875 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 2.4993896484375, 0x3FFC);
whismanoid 0:3edb3708c8c5 3876 //
whismanoid 0:3edb3708c8c5 3877 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 1.250152587890625, 0x2001);
whismanoid 0:3edb3708c8c5 3878 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 1.25, 0x2000);
whismanoid 0:3edb3708c8c5 3879 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 1.249847412109375, 0x1FFF);
whismanoid 0:3edb3708c8c5 3880 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 1.24969482421875, 0x1FFE);
whismanoid 0:3edb3708c8c5 3881 //
whismanoid 0:3edb3708c8c5 3882 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 0.000457763671875, 0x0003);
whismanoid 0:3edb3708c8c5 3883 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 0.00030517578125, 0x0002);
whismanoid 0:3edb3708c8c5 3884 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 0.000152587890625, 0x0001);
whismanoid 0:3edb3708c8c5 3885 tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, 0.00000, 0x0000);
whismanoid 0:3edb3708c8c5 3886 //
whismanoid 5:82037e281451 3887 // tinyTester.FunctionCall_Expect replaces SelfTest_VoltageOfCode_Expect
whismanoid 0:3edb3708c8c5 3888 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x3FFF, 2.499847412109375);
whismanoid 0:3edb3708c8c5 3889 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x3FFE, 2.49969482421875);
whismanoid 0:3edb3708c8c5 3890 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x3FFD, 2.499542236328125);
whismanoid 0:3edb3708c8c5 3891 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x3FFC, 2.4993896484375);
whismanoid 0:3edb3708c8c5 3892 //
whismanoid 0:3edb3708c8c5 3893 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x2001, 1.250152587890625);
whismanoid 0:3edb3708c8c5 3894 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x2000, 1.25);
whismanoid 0:3edb3708c8c5 3895 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x1FFF, 1.249847412109375);
whismanoid 0:3edb3708c8c5 3896 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x1FFE, 1.24969482421875);
whismanoid 0:3edb3708c8c5 3897 //
whismanoid 0:3edb3708c8c5 3898 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x0003, 0.000457763671875);
whismanoid 0:3edb3708c8c5 3899 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x0002, 0.00030517578125);
whismanoid 0:3edb3708c8c5 3900 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x0001, 0.000152587890625);
whismanoid 0:3edb3708c8c5 3901 tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, 0x0000, 0.00000);
whismanoid 0:3edb3708c8c5 3902 //
whismanoid 0:3edb3708c8c5 3903 // Device Testing: DAC commands, verify using on-board ADC inputs
whismanoid 0:3edb3708c8c5 3904 //
whismanoid 9:9b4232e20020 3905 tinyTester.blink_time_msec = 75;
whismanoid 0:3edb3708c8c5 3906 cmdLine.serial().printf("\r\n MAX5171.Init()");
whismanoid 0:3edb3708c8c5 3907 g_MAX5171_device.Init();
whismanoid 0:3edb3708c8c5 3908 //
whismanoid 0:3edb3708c8c5 3909 tinyTester.err_threshold = 0.030; // 30mV
whismanoid 0:3edb3708c8c5 3910 uint16_t code = 0x3FFF;
whismanoid 0:3edb3708c8c5 3911 //~ double voltageV = 0.5;
whismanoid 0:3edb3708c8c5 3912 //
whismanoid 0:3edb3708c8c5 3913 cmdLine.serial().printf("\r\n MAX5171.CODE_LOAD code=%d", code);
whismanoid 0:3edb3708c8c5 3914 g_MAX5171_device.CODE_LOAD(code);
whismanoid 5:82037e281451 3915 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3916 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3917 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3918 tinyTester.AnalogIn0_Read_Expect_voltageV(2.500);
whismanoid 0:3edb3708c8c5 3919 //
whismanoid 0:3edb3708c8c5 3920 code = 0x0000;
whismanoid 0:3edb3708c8c5 3921 cmdLine.serial().printf("\r\n MAX5171.CODE_LOAD code=%d", code);
whismanoid 0:3edb3708c8c5 3922 g_MAX5171_device.CODE_LOAD(code);
whismanoid 5:82037e281451 3923 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3924 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3925 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3926 tinyTester.AnalogIn0_Read_Expect_voltageV(0.0000);
whismanoid 0:3edb3708c8c5 3927 //
whismanoid 0:3edb3708c8c5 3928 code = 0x1FFF;
whismanoid 0:3edb3708c8c5 3929 cmdLine.serial().printf("\r\n MAX5171.CODE_LOAD code=%d", code);
whismanoid 0:3edb3708c8c5 3930 g_MAX5171_device.CODE_LOAD(code);
whismanoid 5:82037e281451 3931 // tinyTester.Wait_Output_Settling replaces wait_ms
whismanoid 0:3edb3708c8c5 3932 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3933 // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:3edb3708c8c5 3934 tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500);
whismanoid 0:3edb3708c8c5 3935 //
whismanoid 0:3edb3708c8c5 3936 // test UPO User Programmable Output, verify using digital input D2
whismanoid 0:3edb3708c8c5 3937 //
whismanoid 0:3edb3708c8c5 3938 cmdLine.serial().printf("\r\n MAX5171.UPO_HIGH");
whismanoid 0:3edb3708c8c5 3939 g_MAX5171_device.UPO_HIGH();
whismanoid 0:3edb3708c8c5 3940 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3941 // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_Expect_Input_UPO_pin
whismanoid 0:3edb3708c8c5 3942 tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command");
whismanoid 0:3edb3708c8c5 3943 //
whismanoid 0:3edb3708c8c5 3944 cmdLine.serial().printf("\r\n MAX5171.UPO_LOW");
whismanoid 0:3edb3708c8c5 3945 g_MAX5171_device.UPO_LOW();
whismanoid 0:3edb3708c8c5 3946 tinyTester.Wait_Output_Settling();
whismanoid 5:82037e281451 3947 // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_Expect_Input_UPO_pin
whismanoid 0:3edb3708c8c5 3948 tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command");
whismanoid 0:3edb3708c8c5 3949 //
whismanoid 0:3edb3708c8c5 3950 cmdLine.serial().printf("\r\n MAX5171.UPO_HIGH");
whismanoid 0:3edb3708c8c5 3951 g_MAX5171_device.UPO_HIGH();
whismanoid 0:3edb3708c8c5 3952 tinyTester.Wait_Output_Settling(); // wait_ms(100); // delay
whismanoid 5:82037e281451 3953 // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_Expect_Input_UPO_pin
whismanoid 0:3edb3708c8c5 3954 tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command");
whismanoid 0:3edb3708c8c5 3955 //
whismanoid 0:3edb3708c8c5 3956 #elif APPLICATION_MAX11410
whismanoid 0:3edb3708c8c5 3957 //
whismanoid 0:3edb3708c8c5 3958 // TODO: placeholder for self-test functions
whismanoid 15:2c21eaa9188b 3959 tinyTester.FAIL();
whismanoid 0:3edb3708c8c5 3960 cmdLine.serial().printf("test program not implemented yet");
whismanoid 0:3edb3708c8c5 3961 //
whismanoid 0:3edb3708c8c5 3962 #elif APPLICATION_MAX12345
whismanoid 0:3edb3708c8c5 3963 //
whismanoid 0:3edb3708c8c5 3964 // TODO: placeholder for self-test functions
whismanoid 15:2c21eaa9188b 3965 tinyTester.FAIL();
whismanoid 0:3edb3708c8c5 3966 cmdLine.serial().printf("test program not implemented yet");
whismanoid 0:3edb3708c8c5 3967 //
whismanoid 0:3edb3708c8c5 3968 #else // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 3969 // TODO: placeholder for self-test functions
whismanoid 0:3edb3708c8c5 3970 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 3971 //
whismanoid 8:6bdfb1376fed 3972 #if INJECT_SELFTEST_FAIL
whismanoid 0:3edb3708c8c5 3973 // Test of the pass/fail report mechanism
whismanoid 15:2c21eaa9188b 3974 tinyTester.FAIL();
whismanoid 0:3edb3708c8c5 3975 cmdLine.serial().printf("injecting one false failure for test reporting");
whismanoid 0:3edb3708c8c5 3976 #endif
whismanoid 0:3edb3708c8c5 3977 //
whismanoid 0:3edb3708c8c5 3978 // Report number of pass and number of fail test results
whismanoid 0:3edb3708c8c5 3979 tinyTester.Report_Summary();
whismanoid 0:3edb3708c8c5 3980 }
whismanoid 0:3edb3708c8c5 3981
whismanoid 0:3edb3708c8c5 3982
whismanoid 0:3edb3708c8c5 3983 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 3984 void main_menu_status(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 3985 {
whismanoid 0:3edb3708c8c5 3986 cmdLine.serial().printf("\r\nMain menu");
whismanoid 0:3edb3708c8c5 3987 #if APPLICATION_MAX5715 // main_menu_status banner
whismanoid 0:3edb3708c8c5 3988 cmdLine.serial().printf(" MAX5715 12-bit 4-ch SPI VOUT DAC");
whismanoid 0:3edb3708c8c5 3989 #elif APPLICATION_MAX11131 // main_menu_status banner
whismanoid 0:3edb3708c8c5 3990 cmdLine.serial().printf(" MAX11131 12-bit 3MSps 16-ch ADC");
whismanoid 0:3edb3708c8c5 3991 #elif APPLICATION_MAX5171 // main_menu_status banner
whismanoid 0:3edb3708c8c5 3992 cmdLine.serial().printf(" MAX5171 14-bit Force/Sense VOUT DAC");
whismanoid 0:3edb3708c8c5 3993 #elif APPLICATION_MAX11410 // main_menu_status banner
whismanoid 0:3edb3708c8c5 3994 cmdLine.serial().printf(" MAX11410 24-bit 1.9ksps Delta-Sigma ADC");
whismanoid 0:3edb3708c8c5 3995 #elif APPLICATION_MAX12345 // main_menu_status banner
whismanoid 0:3edb3708c8c5 3996 cmdLine.serial().printf(" MAX12345");
whismanoid 0:3edb3708c8c5 3997 #else
whismanoid 0:3edb3708c8c5 3998 //cmdLine.serial().printf(" ");
whismanoid 0:3edb3708c8c5 3999 #endif
whismanoid 0:3edb3708c8c5 4000 cmdLine.serial().printf(" %s", TARGET_NAME);
whismanoid 0:3edb3708c8c5 4001 if (cmdLine.nameStr())
whismanoid 0:3edb3708c8c5 4002 {
whismanoid 0:3edb3708c8c5 4003 cmdLine.serial().printf(" [%s]", cmdLine.nameStr());
whismanoid 0:3edb3708c8c5 4004 }
whismanoid 0:3edb3708c8c5 4005 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 4006 cmdLine.serial().printf(" [Button1=DemoConfig1]");
whismanoid 0:3edb3708c8c5 4007 #endif
whismanoid 0:3edb3708c8c5 4008 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 4009 cmdLine.serial().printf(" [Button2=DemoConfig2]");
whismanoid 0:3edb3708c8c5 4010 #endif
whismanoid 0:3edb3708c8c5 4011 #if HAS_BUTTON1_DEMO
whismanoid 0:3edb3708c8c5 4012 // print BUTTON1 status
whismanoid 0:3edb3708c8c5 4013 cmdLine.serial().printf("\r\n BUTTON1 = %d", button1.read());
whismanoid 0:3edb3708c8c5 4014 #endif
whismanoid 0:3edb3708c8c5 4015 #if HAS_BUTTON2_DEMO
whismanoid 0:3edb3708c8c5 4016 // print BUTTON1 status
whismanoid 0:3edb3708c8c5 4017 cmdLine.serial().printf("\r\n BUTTON2 = %d", button2.read());
whismanoid 0:3edb3708c8c5 4018 #endif
whismanoid 0:3edb3708c8c5 4019 cmdLine.serial().printf("\r\n ? -- help");
whismanoid 0:3edb3708c8c5 4020 }
whismanoid 0:3edb3708c8c5 4021
whismanoid 0:3edb3708c8c5 4022 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 4023 void main_menu_help(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 4024 {
whismanoid 0:3edb3708c8c5 4025 // ? -- help
whismanoid 0:3edb3708c8c5 4026 //~ cmdLine.serial().printf("\r\nMenu:");
whismanoid 0:3edb3708c8c5 4027 cmdLine.serial().printf("\r\n # -- lines beginning with # are comments");
whismanoid 0:3edb3708c8c5 4028 cmdLine.serial().printf("\r\n . -- SelfTest");
whismanoid 0:3edb3708c8c5 4029 //cmdLine.serial().printf("\r\n ! -- Initial Configuration");
whismanoid 0:3edb3708c8c5 4030 //
whismanoid 0:3edb3708c8c5 4031 // % standardize diagnostic commands
whismanoid 0:3edb3708c8c5 4032 // %Hpin -- digital output high
whismanoid 0:3edb3708c8c5 4033 // %Lpin -- digital output low
whismanoid 0:3edb3708c8c5 4034 // %?pin -- digital input
whismanoid 0:3edb3708c8c5 4035 // %A %Apin -- analog input
whismanoid 0:3edb3708c8c5 4036 // %Ppin df=xx -- pwm output
whismanoid 0:3edb3708c8c5 4037 // %Wpin -- measure high pulsewidth input in usec
whismanoid 0:3edb3708c8c5 4038 // %wpin -- measure low pulsewidth input in usec
whismanoid 0:3edb3708c8c5 4039 // %I... -- I2C diagnostics
whismanoid 0:3edb3708c8c5 4040 // %IP -- I2C probe
whismanoid 0:3edb3708c8c5 4041 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 0:3edb3708c8c5 4042 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 0:3edb3708c8c5 4043 // %IR ADDR=? RD=? -- read
whismanoid 0:3edb3708c8c5 4044 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 0:3edb3708c8c5 4045 // %S... -- SPI diagnostics
whismanoid 0:3edb3708c8c5 4046 // %SC sclk=1Mhz -- SPI configure
whismanoid 0:3edb3708c8c5 4047 // %SW -- write (write and read)
whismanoid 0:3edb3708c8c5 4048 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 0:3edb3708c8c5 4049 // A-Z,a-z,0-9 reserved for application use
whismanoid 0:3edb3708c8c5 4050 //
whismanoid 0:3edb3708c8c5 4051 #if HAS_digitalInOuts
whismanoid 0:3edb3708c8c5 4052 // %Hpin -- digital output high
whismanoid 0:3edb3708c8c5 4053 // %Lpin -- digital output low
whismanoid 0:3edb3708c8c5 4054 // %?pin -- digital input
whismanoid 0:3edb3708c8c5 4055 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 0:3edb3708c8c5 4056 list_digitalInOutPins(cmdLine.serial());
whismanoid 0:3edb3708c8c5 4057 cmdLine.serial().printf("} -- High Output");
whismanoid 0:3edb3708c8c5 4058 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 0:3edb3708c8c5 4059 list_digitalInOutPins(cmdLine.serial());
whismanoid 0:3edb3708c8c5 4060 cmdLine.serial().printf("} -- Low Output");
whismanoid 0:3edb3708c8c5 4061 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 0:3edb3708c8c5 4062 list_digitalInOutPins(cmdLine.serial());
whismanoid 0:3edb3708c8c5 4063 cmdLine.serial().printf("} -- Input");
whismanoid 0:3edb3708c8c5 4064 #endif
whismanoid 0:3edb3708c8c5 4065
whismanoid 0:3edb3708c8c5 4066 #if HAS_analogIns
whismanoid 0:3edb3708c8c5 4067 // Menu A) analogRead A0..7
whismanoid 0:3edb3708c8c5 4068 // %A %Apin -- analog input
whismanoid 0:3edb3708c8c5 4069 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 0:3edb3708c8c5 4070 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 0:3edb3708c8c5 4071 #endif
whismanoid 0:3edb3708c8c5 4072
whismanoid 0:3edb3708c8c5 4073 #if HAS_SPI2_MAX541
whismanoid 0:3edb3708c8c5 4074 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 0:3edb3708c8c5 4075 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 0:3edb3708c8c5 4076 #endif
whismanoid 0:3edb3708c8c5 4077
whismanoid 0:3edb3708c8c5 4078 #if HAS_I2C // SUPPORT_I2C
whismanoid 0:3edb3708c8c5 4079 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 0:3edb3708c8c5 4080 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 0:3edb3708c8c5 4081 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 0:3edb3708c8c5 4082 // %I... -- I2C diagnostics
whismanoid 0:3edb3708c8c5 4083 // %IP -- I2C probe
whismanoid 0:3edb3708c8c5 4084 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 0:3edb3708c8c5 4085 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 0:3edb3708c8c5 4086 // %IR ADDR=? RD=? -- read
whismanoid 0:3edb3708c8c5 4087 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 0:3edb3708c8c5 4088 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 0:3edb3708c8c5 4089 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 0:3edb3708c8c5 4090 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 0:3edb3708c8c5 4091 (g_I2C_SCL_Hz / 1000.));
whismanoid 0:3edb3708c8c5 4092 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 0:3edb3708c8c5 4093 g_I2C_deviceAddress7);
whismanoid 0:3edb3708c8c5 4094 //
whismanoid 0:3edb3708c8c5 4095 #if SUPPORT_I2C
whismanoid 0:3edb3708c8c5 4096 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 0:3edb3708c8c5 4097 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 0:3edb3708c8c5 4098 // test low-level I2C i2c_smbus_read_word_data
whismanoid 0:3edb3708c8c5 4099 #endif // SUPPORT_I2C
whismanoid 0:3edb3708c8c5 4100 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 0:3edb3708c8c5 4101 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 0:3edb3708c8c5 4102 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 0:3edb3708c8c5 4103 #endif // SUPPORT_I2C
whismanoid 0:3edb3708c8c5 4104
whismanoid 0:3edb3708c8c5 4105 #if HAS_SPI // SUPPORT_SPI
whismanoid 0:3edb3708c8c5 4106 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 0:3edb3708c8c5 4107 // SPI test command S (mosiData)+
whismanoid 0:3edb3708c8c5 4108 // %S... -- SPI diagnostics
whismanoid 0:3edb3708c8c5 4109 // %SC sclk=1Mhz -- SPI configure
whismanoid 0:3edb3708c8c5 4110 // %SW -- write (write and read)
whismanoid 0:3edb3708c8c5 4111 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 0:3edb3708c8c5 4112 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 0:3edb3708c8c5 4113 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 0:3edb3708c8c5 4114 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 0:3edb3708c8c5 4115 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 0:3edb3708c8c5 4116 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 0:3edb3708c8c5 4117 // mode | POL PHA
whismanoid 0:3edb3708c8c5 4118 // -----+--------
whismanoid 0:3edb3708c8c5 4119 // 0 | 0 0
whismanoid 0:3edb3708c8c5 4120 // 1 | 0 1
whismanoid 0:3edb3708c8c5 4121 // 2 | 1 0
whismanoid 0:3edb3708c8c5 4122 // 3 | 1 1
whismanoid 0:3edb3708c8c5 4123 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 0:3edb3708c8c5 4124 // 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 0:3edb3708c8c5 4125 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 0:3edb3708c8c5 4126 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 0:3edb3708c8c5 4127 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 0:3edb3708c8c5 4128 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 0:3edb3708c8c5 4129 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 0:3edb3708c8c5 4130 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 0:3edb3708c8c5 4131 #endif // SUPPORT_SPI
whismanoid 0:3edb3708c8c5 4132 //
whismanoid 0:3edb3708c8c5 4133 // Application-specific commands (help text) here
whismanoid 0:3edb3708c8c5 4134 //
whismanoid 0:3edb3708c8c5 4135 #if APPLICATION_ArduinoPinsMonitor
whismanoid 0:3edb3708c8c5 4136 # if APPLICATION_MAX5715 // main_menu_help
whismanoid 0:3edb3708c8c5 4137 # elif APPLICATION_MAX11131 // main_menu_help
whismanoid 0:3edb3708c8c5 4138 # elif APPLICATION_MAX5171 // main_menu_help
whismanoid 0:3edb3708c8c5 4139 # elif APPLICATION_MAX11410 // main_menu_help
whismanoid 0:3edb3708c8c5 4140 # elif APPLICATION_MAX12345 // main_menu_help
whismanoid 0:3edb3708c8c5 4141 # else
whismanoid 0:3edb3708c8c5 4142 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 0:3edb3708c8c5 4143 # endif
whismanoid 0:3edb3708c8c5 4144 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 0:3edb3708c8c5 4145 //
whismanoid 0:3edb3708c8c5 4146 #if APPLICATION_MAX5715 // main_menu_help
whismanoid 0:3edb3708c8c5 4147 cmdLine.serial().printf("\r\n 0 ch=? code=? -- CODEn");
whismanoid 0:3edb3708c8c5 4148 cmdLine.serial().printf("\r\n 1 ch=? -- LOADn");
whismanoid 0:3edb3708c8c5 4149 cmdLine.serial().printf("\r\n 2 ch=? code=? -- CODEnLOADall");
whismanoid 0:3edb3708c8c5 4150 cmdLine.serial().printf("\r\n 3 ch=? code=? -- CODEnLOADn");
whismanoid 0:3edb3708c8c5 4151 cmdLine.serial().printf("\r\n 40 ch=? -- POWERn_Normal");
whismanoid 0:3edb3708c8c5 4152 cmdLine.serial().printf("\r\n 41 ch=? -- POWERn_PD1k");
whismanoid 0:3edb3708c8c5 4153 cmdLine.serial().printf("\r\n 42 ch=? -- POWERn_PD100k");
whismanoid 0:3edb3708c8c5 4154 cmdLine.serial().printf("\r\n 43 ch=? -- POWERn_PDHiZ");
whismanoid 0:3edb3708c8c5 4155 cmdLine.serial().printf("\r\n 50 -- SW_CLEAR");
whismanoid 0:3edb3708c8c5 4156 cmdLine.serial().printf("\r\n 51 -- SW_RESET");
whismanoid 0:3edb3708c8c5 4157 cmdLine.serial().printf("\r\n 60 ch=? -- CONFIGn_LATCHED");
whismanoid 0:3edb3708c8c5 4158 cmdLine.serial().printf("\r\n 61 ch=? -- CONFIGn_TRANSPARENT");
whismanoid 0:3edb3708c8c5 4159 cmdLine.serial().printf("\r\n 68 -- CONFIGall_LATCHED");
whismanoid 0:3edb3708c8c5 4160 cmdLine.serial().printf("\r\n 69 -- CONFIGall_TRANSPARENT");
whismanoid 0:3edb3708c8c5 4161 cmdLine.serial().printf("\r\n 70 -- REF_EXT");
whismanoid 0:3edb3708c8c5 4162 cmdLine.serial().printf("\r\n 71 -- REF_2V500");
whismanoid 0:3edb3708c8c5 4163 cmdLine.serial().printf("\r\n 72 -- REF_2V048");
whismanoid 0:3edb3708c8c5 4164 cmdLine.serial().printf("\r\n 73 -- REF_4V096");
whismanoid 0:3edb3708c8c5 4165 cmdLine.serial().printf("\r\n 74 -- REF_AlwaysOn_EXT");
whismanoid 0:3edb3708c8c5 4166 cmdLine.serial().printf("\r\n 75 -- REF_AlwaysOn_2V500");
whismanoid 0:3edb3708c8c5 4167 cmdLine.serial().printf("\r\n 76 -- REF_AlwaysOn_2V048");
whismanoid 0:3edb3708c8c5 4168 cmdLine.serial().printf("\r\n 77 -- REF_AlwaysOn_4V096");
whismanoid 0:3edb3708c8c5 4169 cmdLine.serial().printf("\r\n 80 code=? -- CODEall");
whismanoid 0:3edb3708c8c5 4170 cmdLine.serial().printf("\r\n 81 -- LOADall");
whismanoid 0:3edb3708c8c5 4171 cmdLine.serial().printf("\r\n 82 code=? -- CODEallLOADall");
whismanoid 0:3edb3708c8c5 4172 //cmdLine.serial().printf("\r\n 83 code=? -- CODEallLOADall");
whismanoid 0:3edb3708c8c5 4173 //
whismanoid 0:3edb3708c8c5 4174 // Menu @ -- print device configuration
whismanoid 0:3edb3708c8c5 4175 cmdLine.serial().printf("\r\n @ -- print MAX5715 configuration");
whismanoid 0:3edb3708c8c5 4176 //
whismanoid 0:3edb3708c8c5 4177 // MAX5717 menu function to drive MAX5717_LDACb_Pin LDAC#
whismanoid 0:3edb3708c8c5 4178 // Note: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 4179 cmdLine.serial().printf("\r\n L -- LDAC# pulse LH high LL low");
whismanoid 0:3edb3708c8c5 4180 // MAX5717 menu function to drive MAX5717_CLRb_Pin CLR#
whismanoid 0:3edb3708c8c5 4181 cmdLine.serial().printf("\r\n C -- CLR# pulse CH high CL low");
whismanoid 0:3edb3708c8c5 4182 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 4183 //
whismanoid 0:3edb3708c8c5 4184 #if APPLICATION_MAX11131 // main_menu_help
whismanoid 0:3edb3708c8c5 4185 // VERIFY: console menu command 0 int16_t MAX11131_ScanRead(void);
whismanoid 0:3edb3708c8c5 4186 cmdLine.serial().printf("\r\n 0 n=? -- MAX11131_ScanRead");
whismanoid 0:3edb3708c8c5 4187 // VERIFY: console menu command 1 MAX11131_ScanManual(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 4188 cmdLine.serial().printf("\r\n 1 ch=? pm=? id=? -- MAX11131_ScanManual");
whismanoid 0:3edb3708c8c5 4189 // VERIFY: console menu command 2 int MAX11131_ScanRepeat(uint8_t channelNumber_0_15, uint8_t average_0_4_8_16_32, uint8_t nscan_4_8_12_16, uint8_t PowerManagement_0_2, uint8_t swcnv_0_1);
whismanoid 0:3edb3708c8c5 4190 cmdLine.serial().printf("\r\n 2 ch=? av=? n=? pm=? swcnv=? -- MAX11131_ScanRepeat");
whismanoid 0:3edb3708c8c5 4191 // VERIFY: console menu command 3 MAX11131_ScanStandardInternalClock(int channelNumber_0_15, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1);
whismanoid 0:3edb3708c8c5 4192 cmdLine.serial().printf("\r\n 3 ch=? av=? pm=? swcnv=? -- MAX11131_ScanStandardIntClock");
whismanoid 0:3edb3708c8c5 4193 // VERIFY: console menu command 4 MAX11131_ScanStandardExternalClock(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 4194 cmdLine.serial().printf("\r\n 4 ch=? pm=? id=? -- MAX11131_ScanStandardExtClock");
whismanoid 0:3edb3708c8c5 4195 // VERIFY: console menu command 5 MAX11131_ScanUpperInternalClock(int channelNumber_0_15, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1);
whismanoid 0:3edb3708c8c5 4196 cmdLine.serial().printf("\r\n 5 ch=? av=? pm=? swcnv=? -- MAX11131_ScanUpperIntClock");
whismanoid 0:3edb3708c8c5 4197 // VERIFY: console menu command 6 MAX11131_ScanUpperExternalClock(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 4198 cmdLine.serial().printf("\r\n 6 ch=? pm=? id=? -- MAX11131_ScanUpperExtClock");
whismanoid 0:3edb3708c8c5 4199 // VERIFY: console menu command 7 MAX11131_ScanCustomInternalClock(int16_t enabledChannelsMask, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1);
whismanoid 0:3edb3708c8c5 4200 cmdLine.serial().printf("\r\n 7 enableMask=0xffff av=? pm=? swcnv=? -- MAX11131_ScanCustomIntClock");
whismanoid 0:3edb3708c8c5 4201 // VERIFY: console menu command 8 MAX11131_ScanCustomExternalClock(int16_t enabledChannelsMask, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 4202 cmdLine.serial().printf("\r\n 8 enableMask=0xffff pm=0 id=1 -- MAX11131_ScanCustomExtClock");
whismanoid 0:3edb3708c8c5 4203 // VERIFY: console menu command 9 MAX11131_ScanSampleSetExternalClock(uint8_t enabledChannelsPatternLength_1_256, int16_t enabledChannelsPattern[], int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 4204 cmdLine.serial().printf("\r\n 9 channelsPattern... pm=? id=? | len=? -- MAX11131_ScanSampleSetExtClock");
whismanoid 0:3edb3708c8c5 4205 cmdLine.serial().printf("\r\n @ -- print MAX11131 configuration");
whismanoid 0:3edb3708c8c5 4206 cmdLine.serial().printf("\r\n ISc) IUc) IBc) IRc) reconfigure channel single-ended/unipolar/bipolar/range");
whismanoid 0:3edb3708c8c5 4207 // cmdLine.serial().printf("\r\n & -- MAX11131_Example_ScanManual");
whismanoid 0:3edb3708c8c5 4208 // Note: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 4209 #endif // APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 4210 //
whismanoid 0:3edb3708c8c5 4211 #if APPLICATION_MAX5171 // main_menu_help
whismanoid 0:3edb3708c8c5 4212 // TODO1: MAX5171 main_menu_help
whismanoid 0:3edb3708c8c5 4213 cmdLine.serial().printf("\r\n 0 code=? -- CODE");
whismanoid 0:3edb3708c8c5 4214 cmdLine.serial().printf("\r\n 4 code=? -- CODE_LOAD");
whismanoid 0:3edb3708c8c5 4215 cmdLine.serial().printf("\r\n 8 -- LOAD");
whismanoid 0:3edb3708c8c5 4216 cmdLine.serial().printf("\r\n c -- NOP");
whismanoid 0:3edb3708c8c5 4217 cmdLine.serial().printf("\r\n d -- SHUTDOWN");
whismanoid 0:3edb3708c8c5 4218 cmdLine.serial().printf("\r\n e0 -- UPO_LOW");
whismanoid 0:3edb3708c8c5 4219 cmdLine.serial().printf("\r\n e8 -- UPO_HIGH");
whismanoid 0:3edb3708c8c5 4220 cmdLine.serial().printf("\r\n f0 -- MODE1_DOUT_SCLK_RISING_EDGE");
whismanoid 0:3edb3708c8c5 4221 cmdLine.serial().printf("\r\n f8 -- MODE0_DOUT_SCLK_FALLING_EDGE");
whismanoid 0:3edb3708c8c5 4222 // Note: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 4223 #endif // APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 4224 //
whismanoid 40:2f8ce101d5bc 4225 #if 0 // APPLICATION_MAX11410 // main_menu_help
whismanoid 0:3edb3708c8c5 4226 // TODO1: MAX11410 main_menu_help
whismanoid 31:8068c5394e0d 4227 cmdLine.serial().printf("\r\n W reg=? data=? -- write register");
whismanoid 31:8068c5394e0d 4228 cmdLine.serial().printf("\r\n R reg=? -- read register");
whismanoid 31:8068c5394e0d 4229 cmdLine.serial().printf("\r\n S -- read status register");
whismanoid 27:d60fb04bec93 4230 cmdLine.serial().printf("\r\n CV ch=? ainp=? ainn=? pga=? -- (future) Voltage configuration");
whismanoid 27:d60fb04bec93 4231 cmdLine.serial().printf("\r\n MV -- (future) Voltage measurement");
whismanoid 27:d60fb04bec93 4232 cmdLine.serial().printf("\r\n CT -- (future) Thermocouple configuration");
whismanoid 27:d60fb04bec93 4233 cmdLine.serial().printf("\r\n MT -- (future) Thermocouple measurement");
whismanoid 27:d60fb04bec93 4234 cmdLine.serial().printf("\r\n CR -- (future) Resistive Temperature Device (RTD) configuration");
whismanoid 27:d60fb04bec93 4235 cmdLine.serial().printf("\r\n MR -- (future) RTD measurement");
whismanoid 29:7d0bc70036be 4236 // Menu @ -- print device configuration
whismanoid 31:8068c5394e0d 4237 cmdLine.serial().printf("\r\n @ -- print MAX11410 configuration");
whismanoid 0:3edb3708c8c5 4238 // Note: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 4239 #endif // APPLICATION_MAX11410
whismanoid 0:3edb3708c8c5 4240 //
whismanoid 0:3edb3708c8c5 4241 #if APPLICATION_MAX12345 // main_menu_help
whismanoid 0:3edb3708c8c5 4242 cmdLine.serial().printf("\r\n 0 -- something");
whismanoid 0:3edb3708c8c5 4243 cmdLine.serial().printf("\r\n 1 -- something");
whismanoid 0:3edb3708c8c5 4244 cmdLine.serial().printf("\r\n 2 -- something");
whismanoid 0:3edb3708c8c5 4245 cmdLine.serial().printf("\r\n A -- something");
whismanoid 0:3edb3708c8c5 4246 cmdLine.serial().printf("\r\n B -- something");
whismanoid 0:3edb3708c8c5 4247 cmdLine.serial().printf("\r\n C -- something");
whismanoid 0:3edb3708c8c5 4248 // Note: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 4249 #endif // APPLICATION_MAX12345
whismanoid 0:3edb3708c8c5 4250 //
whismanoid 40:2f8ce101d5bc 4251 //
whismanoid 40:2f8ce101d5bc 4252 extern bool MAX11410_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp\n
whismanoid 40:2f8ce101d5bc 4253 MAX11410_menu_help(cmdLine);
whismanoid 0:3edb3708c8c5 4254 }
whismanoid 0:3edb3708c8c5 4255
whismanoid 0:3edb3708c8c5 4256 //--------------------------------------------------
whismanoid 10:228a52f8107d 4257 // diagnostic commands submenu
whismanoid 10:228a52f8107d 4258 // invoked by main_menu_onEOLcommandParser case '%'
whismanoid 10:228a52f8107d 4259 void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 4260 {
whismanoid 10:228a52f8107d 4261 // % diagnostic commands submenu
whismanoid 10:228a52f8107d 4262 // %Hpin -- digital output high
whismanoid 10:228a52f8107d 4263 // %Lpin -- digital output low
whismanoid 10:228a52f8107d 4264 // %?pin -- digital input
whismanoid 10:228a52f8107d 4265 // %A %Apin -- analog input
whismanoid 10:228a52f8107d 4266 // %Ppin df=xx -- pwm output
whismanoid 10:228a52f8107d 4267 // %Wpin -- measure high pulsewidth input in usec
whismanoid 10:228a52f8107d 4268 // %wpin -- measure low pulsewidth input in usec
whismanoid 10:228a52f8107d 4269 // %I... -- I2C diagnostics
whismanoid 10:228a52f8107d 4270 // %IP -- I2C probe
whismanoid 10:228a52f8107d 4271 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 10:228a52f8107d 4272 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 10:228a52f8107d 4273 // %IR ADDR=? RD=? -- read
whismanoid 10:228a52f8107d 4274 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 10:228a52f8107d 4275 // %S... -- SPI diagnostics
whismanoid 10:228a52f8107d 4276 // %SC sclk=1Mhz -- SPI configure
whismanoid 10:228a52f8107d 4277 // %SW -- write (write and read)
whismanoid 10:228a52f8107d 4278 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 10:228a52f8107d 4279 // A-Z,a-z,0-9 reserved for application use
whismanoid 10:228a52f8107d 4280 //
whismanoid 10:228a52f8107d 4281 // get pinIndex from cmdLine[2]
whismanoid 10:228a52f8107d 4282 //int pinIndex = cmdLine[2];
whismanoid 10:228a52f8107d 4283 // *** warning: pointer of type 'void *' used in arithmetic [-Wpointer-arith]
whismanoid 10:228a52f8107d 4284 //int pinIndex = strtoul((char *)((void *)(cmdLine.str()) + 2), NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 10:228a52f8107d 4285 // ^
whismanoid 10:228a52f8107d 4286 char strPinIndex[3];
whismanoid 10:228a52f8107d 4287 strPinIndex[0] = cmdLine[2];
whismanoid 10:228a52f8107d 4288 strPinIndex[1] = cmdLine[3];
whismanoid 10:228a52f8107d 4289 strPinIndex[2] = '\0';
whismanoid 10:228a52f8107d 4290 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 10:228a52f8107d 4291 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 0:3edb3708c8c5 4292 //
whismanoid 10:228a52f8107d 4293 // get next character
whismanoid 10:228a52f8107d 4294 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 4295 {
whismanoid 10:228a52f8107d 4296 #if HAS_digitalInOuts
whismanoid 10:228a52f8107d 4297 case 'H': case 'h':
whismanoid 10:228a52f8107d 4298 {
whismanoid 10:228a52f8107d 4299 // %Hpin -- digital output high
whismanoid 10:228a52f8107d 4300 #if ARDUINO_STYLE
whismanoid 10:228a52f8107d 4301 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 10:228a52f8107d 4302 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 10:228a52f8107d 4303 #else
whismanoid 10:228a52f8107d 4304 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 10:228a52f8107d 4305 digitalInOutPin.output();
whismanoid 10:228a52f8107d 4306 digitalInOutPin.write(1);
whismanoid 10:228a52f8107d 4307 #endif
whismanoid 10:228a52f8107d 4308 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 10:228a52f8107d 4309 }
whismanoid 10:228a52f8107d 4310 break;
whismanoid 10:228a52f8107d 4311 case 'L': case 'l':
whismanoid 10:228a52f8107d 4312 {
whismanoid 10:228a52f8107d 4313 // %Lpin -- digital output low
whismanoid 10:228a52f8107d 4314 #if ARDUINO_STYLE
whismanoid 10:228a52f8107d 4315 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 10:228a52f8107d 4316 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 10:228a52f8107d 4317 #else
whismanoid 10:228a52f8107d 4318 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 10:228a52f8107d 4319 digitalInOutPin.output();
whismanoid 10:228a52f8107d 4320 digitalInOutPin.write(0);
whismanoid 10:228a52f8107d 4321 #endif
whismanoid 10:228a52f8107d 4322 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 10:228a52f8107d 4323 }
whismanoid 10:228a52f8107d 4324 break;
whismanoid 0:3edb3708c8c5 4325 case '?':
whismanoid 0:3edb3708c8c5 4326 {
whismanoid 10:228a52f8107d 4327 // %?pin -- digital input
whismanoid 10:228a52f8107d 4328 #if ARDUINO_STYLE
whismanoid 10:228a52f8107d 4329 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 10:228a52f8107d 4330 #else
whismanoid 10:228a52f8107d 4331 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 10:228a52f8107d 4332 digitalInOutPin.input();
whismanoid 10:228a52f8107d 4333 #endif
whismanoid 10:228a52f8107d 4334 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 10:228a52f8107d 4335 #if ARDUINO_STYLE
whismanoid 10:228a52f8107d 4336 int value = digitalRead(pinIndex);
whismanoid 10:228a52f8107d 4337 #else
whismanoid 10:228a52f8107d 4338 int value = digitalInOutPin.read();
whismanoid 10:228a52f8107d 4339 #endif
whismanoid 10:228a52f8107d 4340 cmdLine.serial().printf("%d ", value);
whismanoid 0:3edb3708c8c5 4341 }
whismanoid 0:3edb3708c8c5 4342 break;
whismanoid 10:228a52f8107d 4343 #endif
whismanoid 10:228a52f8107d 4344 //
whismanoid 10:228a52f8107d 4345 #if HAS_analogIns
whismanoid 10:228a52f8107d 4346 case 'A': case 'a':
whismanoid 0:3edb3708c8c5 4347 {
whismanoid 0:3edb3708c8c5 4348 // %A %Apin -- analog input
whismanoid 10:228a52f8107d 4349 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 10:228a52f8107d 4350 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 10:228a52f8107d 4351 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 10:228a52f8107d 4352 {
whismanoid 10:228a52f8107d 4353 int cPinIndex = '0' + pinIndex;
whismanoid 10:228a52f8107d 4354 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 10:228a52f8107d 4355 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 10:228a52f8107d 4356 float normValue_0_1 = analogInPin.read();
whismanoid 10:228a52f8107d 4357 //
whismanoid 10:228a52f8107d 4358 int pinIndexH = pinIndex + 4;
whismanoid 10:228a52f8107d 4359 int cPinIndexH = '0' + pinIndexH;
whismanoid 10:228a52f8107d 4360 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 10:228a52f8107d 4361 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 10:228a52f8107d 4362 float normValueH_0_1 = analogInPinH.read();
whismanoid 10:228a52f8107d 4363 //
whismanoid 10:228a52f8107d 4364 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV AIN%c = %7.3f%% = %1.3fV \r\n",
whismanoid 10:228a52f8107d 4365 cPinIndex,
whismanoid 10:228a52f8107d 4366 normValue_0_1 * 100.0,
whismanoid 10:228a52f8107d 4367 normValue_0_1 * adc_full_scale_voltage,
whismanoid 10:228a52f8107d 4368 cPinIndexH,
whismanoid 10:228a52f8107d 4369 normValueH_0_1 * 100.0,
whismanoid 10:228a52f8107d 4370 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 10:228a52f8107d 4371 );
whismanoid 10:228a52f8107d 4372 }
whismanoid 10:228a52f8107d 4373 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 10:228a52f8107d 4374 {
whismanoid 10:228a52f8107d 4375 int cPinIndex = '0' + pinIndex;
whismanoid 10:228a52f8107d 4376 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 10:228a52f8107d 4377 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 10:228a52f8107d 4378 float normValue_0_1 = analogInPin.read();
whismanoid 10:228a52f8107d 4379 //
whismanoid 10:228a52f8107d 4380 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 10:228a52f8107d 4381 cPinIndex,
whismanoid 10:228a52f8107d 4382 normValue_0_1 * 100.0,
whismanoid 10:228a52f8107d 4383 normValue_0_1 * adc_full_scale_voltage
whismanoid 10:228a52f8107d 4384 );
whismanoid 10:228a52f8107d 4385 }
whismanoid 10:228a52f8107d 4386 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 10:228a52f8107d 4387 // Platform board uses simple analog inputs
whismanoid 10:228a52f8107d 4388 // assume standard Arduino analog inputs A0-A5
whismanoid 10:228a52f8107d 4389 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 10:228a52f8107d 4390 {
whismanoid 10:228a52f8107d 4391 int cPinIndex = '0' + pinIndex;
whismanoid 10:228a52f8107d 4392 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 10:228a52f8107d 4393 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 10:228a52f8107d 4394 float normValue_0_1 = analogInPin.read();
whismanoid 10:228a52f8107d 4395 //
whismanoid 10:228a52f8107d 4396 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 10:228a52f8107d 4397 cPinIndex,
whismanoid 10:228a52f8107d 4398 normValue_0_1 * 100.0,
whismanoid 10:228a52f8107d 4399 normValue_0_1 * adc_full_scale_voltage
whismanoid 10:228a52f8107d 4400 );
whismanoid 10:228a52f8107d 4401 }
whismanoid 10:228a52f8107d 4402 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 10:228a52f8107d 4403 }
whismanoid 10:228a52f8107d 4404 break;
whismanoid 10:228a52f8107d 4405 #endif
whismanoid 10:228a52f8107d 4406 //
whismanoid 10:228a52f8107d 4407 #if HAS_SPI2_MAX541
whismanoid 10:228a52f8107d 4408 case 'D': case 'd':
whismanoid 10:228a52f8107d 4409 {
whismanoid 10:228a52f8107d 4410 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 10:228a52f8107d 4411 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 10:228a52f8107d 4412 float voltageV = max541.Get_Voltage();
whismanoid 10:228a52f8107d 4413 // if (cmdLine[2] == '+') {
whismanoid 10:228a52f8107d 4414 // // %D+
whismanoid 10:228a52f8107d 4415 // voltageV = voltageV * 1.25f;
whismanoid 10:228a52f8107d 4416 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 10:228a52f8107d 4417 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 10:228a52f8107d 4418 // }
whismanoid 10:228a52f8107d 4419 // else if (cmdLine[2] == '-') {
whismanoid 10:228a52f8107d 4420 // // %D-
whismanoid 10:228a52f8107d 4421 // voltageV = voltageV * 0.75f;
whismanoid 10:228a52f8107d 4422 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 10:228a52f8107d 4423 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 10:228a52f8107d 4424 // }
whismanoid 10:228a52f8107d 4425 if (cmdLine.parse_float("V", voltageV))
whismanoid 10:228a52f8107d 4426 {
whismanoid 10:228a52f8107d 4427 // %D V=1.234 -- set voltage
whismanoid 10:228a52f8107d 4428 max541.Set_Voltage(voltageV);
whismanoid 10:228a52f8107d 4429 }
whismanoid 10:228a52f8107d 4430 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 10:228a52f8107d 4431 {
whismanoid 10:228a52f8107d 4432 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 10:228a52f8107d 4433 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 10:228a52f8107d 4434 }
whismanoid 10:228a52f8107d 4435 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 10:228a52f8107d 4436 {
whismanoid 10:228a52f8107d 4437 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 10:228a52f8107d 4438
whismanoid 10:228a52f8107d 4439 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 10:228a52f8107d 4440 double max541_midscale_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 10:228a52f8107d 4441 const int average_count = 100;
whismanoid 10:228a52f8107d 4442 const double average_K = 0.25;
whismanoid 10:228a52f8107d 4443 for (int count = 0; count < average_count; count++) {
whismanoid 10:228a52f8107d 4444 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 10:228a52f8107d 4445 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 10:228a52f8107d 4446 }
whismanoid 10:228a52f8107d 4447 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 10:228a52f8107d 4448 cmdLine.serial().printf(
whismanoid 10:228a52f8107d 4449 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 10:228a52f8107d 4450 max541_midscale_V, max541.VRef);
whismanoid 10:228a52f8107d 4451 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 10:228a52f8107d 4452 voltageV = 1.0f;
whismanoid 10:228a52f8107d 4453 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 10:228a52f8107d 4454 }
whismanoid 10:228a52f8107d 4455 else {
whismanoid 10:228a52f8107d 4456 // %D -- print MAX541 DAC status
whismanoid 10:228a52f8107d 4457 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 10:228a52f8107d 4458 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 10:228a52f8107d 4459 }
whismanoid 10:228a52f8107d 4460 }
whismanoid 10:228a52f8107d 4461 break;
whismanoid 10:228a52f8107d 4462 #endif
whismanoid 10:228a52f8107d 4463
whismanoid 10:228a52f8107d 4464 //
whismanoid 10:228a52f8107d 4465 #if HAS_I2C // SUPPORT_I2C
whismanoid 10:228a52f8107d 4466 case 'I': case 'i':
whismanoid 0:3edb3708c8c5 4467 // %I... -- I2C diagnostics
whismanoid 0:3edb3708c8c5 4468 // %IP -- I2C probe
whismanoid 0:3edb3708c8c5 4469 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 0:3edb3708c8c5 4470 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 0:3edb3708c8c5 4471 // %IR ADDR=? RD=? -- read
whismanoid 0:3edb3708c8c5 4472 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 10:228a52f8107d 4473 // get next character
whismanoid 10:228a52f8107d 4474 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 10:228a52f8107d 4475 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 10:228a52f8107d 4476 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 10:228a52f8107d 4477 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 10:228a52f8107d 4478 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 10:228a52f8107d 4479 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 10:228a52f8107d 4480 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 10:228a52f8107d 4481 switch (cmdLine[2])
whismanoid 10:228a52f8107d 4482 {
whismanoid 10:228a52f8107d 4483 case 'P': case 'p':
whismanoid 10:228a52f8107d 4484 {
whismanoid 10:228a52f8107d 4485 // %IP -- I2C probe
whismanoid 10:228a52f8107d 4486 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 10:228a52f8107d 4487 }
whismanoid 10:228a52f8107d 4488 break;
whismanoid 10:228a52f8107d 4489 case 'C': case 'c':
whismanoid 10:228a52f8107d 4490 {
whismanoid 10:228a52f8107d 4491 bool isUpdatedI2CConfig = false;
whismanoid 10:228a52f8107d 4492 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 10:228a52f8107d 4493 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 10:228a52f8107d 4494 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 10:228a52f8107d 4495 {
whismanoid 10:228a52f8107d 4496 isUpdatedI2CConfig = true;
whismanoid 10:228a52f8107d 4497 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 10:228a52f8107d 4498 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 10:228a52f8107d 4499 {
whismanoid 10:228a52f8107d 4500 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 10:228a52f8107d 4501 }
whismanoid 10:228a52f8107d 4502 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 10:228a52f8107d 4503 {
whismanoid 10:228a52f8107d 4504 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 10:228a52f8107d 4505 }
whismanoid 10:228a52f8107d 4506 }
whismanoid 10:228a52f8107d 4507 if (isUpdatedI2CConfig)
whismanoid 10:228a52f8107d 4508 {
whismanoid 10:228a52f8107d 4509 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 10:228a52f8107d 4510 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 10:228a52f8107d 4511 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 10:228a52f8107d 4512 i2cMaster.start();
whismanoid 10:228a52f8107d 4513 i2cMaster.stop();
whismanoid 10:228a52f8107d 4514 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 10:228a52f8107d 4515 cmdLine.serial().printf(
whismanoid 10:228a52f8107d 4516 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 10:228a52f8107d 4517 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 10:228a52f8107d 4518 (g_I2C_SCL_Hz / 1000.));
whismanoid 10:228a52f8107d 4519 i2cMaster.start();
whismanoid 10:228a52f8107d 4520 i2cMaster.stop();
whismanoid 10:228a52f8107d 4521 }
whismanoid 10:228a52f8107d 4522 }
whismanoid 10:228a52f8107d 4523 break;
whismanoid 10:228a52f8107d 4524 case 'W': case 'w':
whismanoid 10:228a52f8107d 4525 {
whismanoid 10:228a52f8107d 4526 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 10:228a52f8107d 4527 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 10:228a52f8107d 4528 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 10:228a52f8107d 4529 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 10:228a52f8107d 4530 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 10:228a52f8107d 4531 #define MAX_I2C_BYTE_COUNT 32
whismanoid 10:228a52f8107d 4532 size_t byteCount = byteCount;
whismanoid 10:228a52f8107d 4533 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 10:228a52f8107d 4534 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 10:228a52f8107d 4535 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 10:228a52f8107d 4536 MAX_I2C_BYTE_COUNT))
whismanoid 10:228a52f8107d 4537 {
whismanoid 10:228a52f8107d 4538 // hex dump mosiData[0..byteCount-1]
whismanoid 10:228a52f8107d 4539 cmdLine.serial().printf(
whismanoid 10:228a52f8107d 4540 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 10:228a52f8107d 4541 g_I2C_deviceAddress7,
whismanoid 10:228a52f8107d 4542 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 10:228a52f8107d 4543 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 10:228a52f8107d 4544 {
whismanoid 10:228a52f8107d 4545 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 10:228a52f8107d 4546 }
whismanoid 10:228a52f8107d 4547 //
whismanoid 10:228a52f8107d 4548 // TODO: i2c transfer
whismanoid 10:228a52f8107d 4549 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 10:228a52f8107d 4550 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 10:228a52f8107d 4551 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 10:228a52f8107d 4552 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 10:228a52f8107d 4553 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 10:228a52f8107d 4554 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 10:228a52f8107d 4555 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 10:228a52f8107d 4556 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 10:228a52f8107d 4557 // /* 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 10:228a52f8107d 4558 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 10:228a52f8107d 4559 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 10:228a52f8107d 4560 unsigned int misoLength = 0;
whismanoid 10:228a52f8107d 4561 bool repeated = (g_I2C_read_count > 0);
whismanoid 10:228a52f8107d 4562 //
whismanoid 10:228a52f8107d 4563 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 10:228a52f8107d 4564 switch (writeStatus)
whismanoid 10:228a52f8107d 4565 {
whismanoid 10:228a52f8107d 4566 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 10:228a52f8107d 4567 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 10:228a52f8107d 4568 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 10:228a52f8107d 4569 writeStatus);
whismanoid 10:228a52f8107d 4570 }
whismanoid 10:228a52f8107d 4571 if (repeated)
whismanoid 10:228a52f8107d 4572 {
whismanoid 10:228a52f8107d 4573 int readStatus =
whismanoid 10:228a52f8107d 4574 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 10:228a52f8107d 4575 switch (readStatus)
whismanoid 10:228a52f8107d 4576 {
whismanoid 10:228a52f8107d 4577 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 10:228a52f8107d 4578 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 10:228a52f8107d 4579 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 10:228a52f8107d 4580 readStatus);
whismanoid 10:228a52f8107d 4581 }
whismanoid 10:228a52f8107d 4582 }
whismanoid 10:228a52f8107d 4583 //
whismanoid 10:228a52f8107d 4584 if (misoLength > 0)
whismanoid 10:228a52f8107d 4585 {
whismanoid 10:228a52f8107d 4586 // hex dump misoData[0..byteCount-1]
whismanoid 10:228a52f8107d 4587 cmdLine.serial().printf(" MISO<-");
whismanoid 10:228a52f8107d 4588 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 10:228a52f8107d 4589 byteIndex++)
whismanoid 10:228a52f8107d 4590 {
whismanoid 10:228a52f8107d 4591 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 10:228a52f8107d 4592 }
whismanoid 10:228a52f8107d 4593 }
whismanoid 10:228a52f8107d 4594 cmdLine.serial().printf(" ");
whismanoid 10:228a52f8107d 4595 }
whismanoid 10:228a52f8107d 4596 }
whismanoid 10:228a52f8107d 4597 break;
whismanoid 10:228a52f8107d 4598 case 'R': case 'r':
whismanoid 10:228a52f8107d 4599 {
whismanoid 10:228a52f8107d 4600 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 10:228a52f8107d 4601 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 10:228a52f8107d 4602 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 10:228a52f8107d 4603 // %IR ADDR=? RD=? -- read
whismanoid 10:228a52f8107d 4604 // TODO: i2c transfer
whismanoid 10:228a52f8107d 4605 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 10:228a52f8107d 4606 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 10:228a52f8107d 4607 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 10:228a52f8107d 4608 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 10:228a52f8107d 4609 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 10:228a52f8107d 4610 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 10:228a52f8107d 4611 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 10:228a52f8107d 4612 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 10:228a52f8107d 4613 // /* 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 10:228a52f8107d 4614 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 10:228a52f8107d 4615 }
whismanoid 10:228a52f8107d 4616 break;
whismanoid 10:228a52f8107d 4617 case '^':
whismanoid 10:228a52f8107d 4618 {
whismanoid 10:228a52f8107d 4619 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 10:228a52f8107d 4620 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 10:228a52f8107d 4621 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 10:228a52f8107d 4622 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 10:228a52f8107d 4623 // TODO: i2c transfer
whismanoid 10:228a52f8107d 4624 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 10:228a52f8107d 4625 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 10:228a52f8107d 4626 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 10:228a52f8107d 4627 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 10:228a52f8107d 4628 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 10:228a52f8107d 4629 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 10:228a52f8107d 4630 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 10:228a52f8107d 4631 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 10:228a52f8107d 4632 // /* 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 10:228a52f8107d 4633 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 10:228a52f8107d 4634 }
whismanoid 10:228a52f8107d 4635 break;
whismanoid 10:228a52f8107d 4636 } // switch(cmdLine[2])
whismanoid 10:228a52f8107d 4637 break;
whismanoid 10:228a52f8107d 4638 #endif
whismanoid 10:228a52f8107d 4639 //
whismanoid 10:228a52f8107d 4640 #if HAS_SPI // SUPPORT_SPI
whismanoid 10:228a52f8107d 4641 case 'S': case 's':
whismanoid 10:228a52f8107d 4642 {
whismanoid 0:3edb3708c8c5 4643 // %S... -- SPI diagnostics
whismanoid 0:3edb3708c8c5 4644 // %SC sclk=1Mhz -- SPI configure
whismanoid 0:3edb3708c8c5 4645 // %SW -- write (write and read)
whismanoid 0:3edb3708c8c5 4646 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 0:3edb3708c8c5 4647 //
whismanoid 10:228a52f8107d 4648 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 10:228a52f8107d 4649 bool isUpdatedSPIConfig = false;
whismanoid 10:228a52f8107d 4650 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 10:228a52f8107d 4651 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 10:228a52f8107d 4652 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 10:228a52f8107d 4653 {
whismanoid 10:228a52f8107d 4654 isUpdatedSPIConfig = true;
whismanoid 10:228a52f8107d 4655 }
whismanoid 10:228a52f8107d 4656 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 0:3edb3708c8c5 4657 {
whismanoid 10:228a52f8107d 4658 isUpdatedSPIConfig = true;
whismanoid 10:228a52f8107d 4659 }
whismanoid 10:228a52f8107d 4660 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 10:228a52f8107d 4661 {
whismanoid 10:228a52f8107d 4662 isUpdatedSPIConfig = true;
whismanoid 10:228a52f8107d 4663 }
whismanoid 10:228a52f8107d 4664 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 10:228a52f8107d 4665 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 10:228a52f8107d 4666 {
whismanoid 10:228a52f8107d 4667 isUpdatedSPIConfig = true;
whismanoid 10:228a52f8107d 4668 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 10:228a52f8107d 4669 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 0:3edb3708c8c5 4670 {
whismanoid 10:228a52f8107d 4671 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 0:3edb3708c8c5 4672 }
whismanoid 10:228a52f8107d 4673 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 0:3edb3708c8c5 4674 {
whismanoid 10:228a52f8107d 4675 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 10:228a52f8107d 4676 }
whismanoid 10:228a52f8107d 4677 }
whismanoid 10:228a52f8107d 4678 // Update SPI configuration
whismanoid 10:228a52f8107d 4679 if (isUpdatedSPIConfig)
whismanoid 10:228a52f8107d 4680 {
whismanoid 10:228a52f8107d 4681 // %SC sclk=1Mhz -- SPI configure
whismanoid 10:228a52f8107d 4682 spi_cs = g_SPI_cs_state;
whismanoid 10:228a52f8107d 4683 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 10:228a52f8107d 4684 #if APPLICATION_MAX5715
whismanoid 10:228a52f8107d 4685 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 10:228a52f8107d 4686 #elif APPLICATION_MAX11131
whismanoid 10:228a52f8107d 4687 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 10:228a52f8107d 4688 #elif APPLICATION_MAX5171
whismanoid 10:228a52f8107d 4689 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 10:228a52f8107d 4690 #elif APPLICATION_MAX11410
whismanoid 10:228a52f8107d 4691 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 10:228a52f8107d 4692 #elif APPLICATION_MAX12345
whismanoid 10:228a52f8107d 4693 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 0:3edb3708c8c5 4694 #else
whismanoid 10:228a52f8107d 4695 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 0:3edb3708c8c5 4696 #endif
whismanoid 0:3edb3708c8c5 4697 //
whismanoid 10:228a52f8107d 4698 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 10:228a52f8107d 4699 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 10:228a52f8107d 4700 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 10:228a52f8107d 4701 //
whismanoid 10:228a52f8107d 4702 // 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 10:228a52f8107d 4703 cmdLine.serial().printf(
whismanoid 10:228a52f8107d 4704 "\r\n %%SC CPOL=%d CPHA=%d CS=%d SCLK=%ld=%1.3fMHz (%1.1fMHz/%1.2f = actual %1.3fMHz) -- SPI config",
whismanoid 10:228a52f8107d 4705 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 10:228a52f8107d 4706 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 10:228a52f8107d 4707 g_SPI_cs_state,
whismanoid 10:228a52f8107d 4708 g_SPI_SCLK_Hz,
whismanoid 10:228a52f8107d 4709 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 10:228a52f8107d 4710 ((double)(SystemCoreClock / 1000000.)),
whismanoid 10:228a52f8107d 4711 ideal_divisor,
whismanoid 10:228a52f8107d 4712 (actual_SCLK_Hz / 1000000.)
whismanoid 10:228a52f8107d 4713 );
whismanoid 10:228a52f8107d 4714 }
whismanoid 10:228a52f8107d 4715 // get next character
whismanoid 10:228a52f8107d 4716 switch (cmdLine[2])
whismanoid 10:228a52f8107d 4717 {
whismanoid 10:228a52f8107d 4718 case 'C': case 's':
whismanoid 10:228a52f8107d 4719 // %SC sclk=1Mhz -- SPI configure
whismanoid 10:228a52f8107d 4720 break;
whismanoid 10:228a52f8107d 4721 case 'W': case 'R': case 'w': case 'r':
whismanoid 0:3edb3708c8c5 4722 {
whismanoid 10:228a52f8107d 4723 // %SW -- write (write and read)
whismanoid 10:228a52f8107d 4724 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 10:228a52f8107d 4725 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 10:228a52f8107d 4726 #define MAX_SPI_BYTE_COUNT 32
whismanoid 10:228a52f8107d 4727 size_t byteCount = byteCount;
whismanoid 10:228a52f8107d 4728 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 10:228a52f8107d 4729 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 10:228a52f8107d 4730 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 10:228a52f8107d 4731 MAX_SPI_BYTE_COUNT))
whismanoid 0:3edb3708c8c5 4732 {
whismanoid 10:228a52f8107d 4733 // hex dump mosiData[0..byteCount-1]
whismanoid 10:228a52f8107d 4734 cmdLine.serial().printf("\r\nSPI");
whismanoid 10:228a52f8107d 4735 if (byteCount > 7) {
whismanoid 10:228a52f8107d 4736 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 10:228a52f8107d 4737 }
whismanoid 10:228a52f8107d 4738 cmdLine.serial().printf(" MOSI->");
whismanoid 10:228a52f8107d 4739 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 10:228a52f8107d 4740 {
whismanoid 10:228a52f8107d 4741 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 0:3edb3708c8c5 4742 }
whismanoid 10:228a52f8107d 4743 spi_cs = 0;
whismanoid 10:228a52f8107d 4744 unsigned int numBytesTransferred =
whismanoid 10:228a52f8107d 4745 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 10:228a52f8107d 4746 spi_cs = 1;
whismanoid 10:228a52f8107d 4747 // hex dump misoData[0..byteCount-1]
whismanoid 10:228a52f8107d 4748 cmdLine.serial().printf(" MISO<-");
whismanoid 10:228a52f8107d 4749 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 10:228a52f8107d 4750 byteIndex++)
whismanoid 10:228a52f8107d 4751 {
whismanoid 10:228a52f8107d 4752 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 10:228a52f8107d 4753 }
whismanoid 10:228a52f8107d 4754 cmdLine.serial().printf(" ");
whismanoid 0:3edb3708c8c5 4755 }
whismanoid 0:3edb3708c8c5 4756 }
whismanoid 0:3edb3708c8c5 4757 break;
whismanoid 10:228a52f8107d 4758 } // switch(cmdLine[2])
whismanoid 10:228a52f8107d 4759 } // case 'S': // %S... -- SPI diagnostics
whismanoid 10:228a52f8107d 4760 break;
whismanoid 10:228a52f8107d 4761 #endif
whismanoid 10:228a52f8107d 4762 //
whismanoid 10:228a52f8107d 4763 // A-Z,a-z,0-9 reserved for application use
whismanoid 10:228a52f8107d 4764 } // switch(cmdLine[1])
whismanoid 10:228a52f8107d 4765 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 4766
whismanoid 0:3edb3708c8c5 4767
whismanoid 10:228a52f8107d 4768 //--------------------------------------------------
whismanoid 10:228a52f8107d 4769 #if 0 // APPLICATION_MAX5715 // MAX5715_menu_onEOLcommandParser moved to Test_Menu_MAX5715.cpp
whismanoid 10:228a52f8107d 4770 bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 4771 {
whismanoid 10:228a52f8107d 4772 switch (cmdLine[0])
whismanoid 10:228a52f8107d 4773 {
whismanoid 0:3edb3708c8c5 4774 case '0':
whismanoid 0:3edb3708c8c5 4775 {
whismanoid 0:3edb3708c8c5 4776 // recommended for hex command codes 00..0F
whismanoid 0:3edb3708c8c5 4777 // TODO: cmdLine.serial().printf("\r\n 0 ch=? code=? -- CODEn");
whismanoid 0:3edb3708c8c5 4778 // Menu 0 ch=? code=?) CODEn
whismanoid 0:3edb3708c8c5 4779 // MAX5715_CODEn(uint8_t channel, uint16_t dacCodeLsbs);
whismanoid 0:3edb3708c8c5 4780 // VERIFY: parse strCommandArgs for additional arguments including key=value pairs
whismanoid 0:3edb3708c8c5 4781 // TODO: parse command arguments ~ parse_strCommandArgs(strCommandArgs);
whismanoid 0:3edb3708c8c5 4782 uint16_t ch = g_MAX5715_device.channelNumber_0_3;
whismanoid 0:3edb3708c8c5 4783 if (cmdLine.parse_uint16_dec("ch", ch))
whismanoid 0:3edb3708c8c5 4784 {
whismanoid 0:3edb3708c8c5 4785 }
whismanoid 0:3edb3708c8c5 4786 uint16_t code = g_MAX5715_device.CODE[ch];
whismanoid 0:3edb3708c8c5 4787 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 4788 {
whismanoid 0:3edb3708c8c5 4789 }
whismanoid 0:3edb3708c8c5 4790 cmdLine.serial().printf("CODEn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 4791 g_MAX5715_device.CODEn(ch, code);
whismanoid 10:228a52f8107d 4792 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4793 }
whismanoid 0:3edb3708c8c5 4794 break;
whismanoid 0:3edb3708c8c5 4795 case '1':
whismanoid 0:3edb3708c8c5 4796 {
whismanoid 0:3edb3708c8c5 4797 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 4798 // TODO: cmdLine.serial().printf("\r\n 1 ch=? -- LOADn");
whismanoid 0:3edb3708c8c5 4799 // TODO: parse command arguments ~ parse_strCommandArgs(strCommandArgs);
whismanoid 0:3edb3708c8c5 4800 uint16_t ch = g_MAX5715_device.channelNumber_0_3;
whismanoid 0:3edb3708c8c5 4801 if (cmdLine.parse_uint16_dec("ch", ch))
whismanoid 0:3edb3708c8c5 4802 {
whismanoid 0:3edb3708c8c5 4803 }
whismanoid 0:3edb3708c8c5 4804 cmdLine.serial().printf("LOADn ch=%d", ch);
whismanoid 0:3edb3708c8c5 4805 g_MAX5715_device.LOADn(ch);
whismanoid 10:228a52f8107d 4806 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4807 }
whismanoid 0:3edb3708c8c5 4808 break;
whismanoid 0:3edb3708c8c5 4809 case '2':
whismanoid 0:3edb3708c8c5 4810 {
whismanoid 0:3edb3708c8c5 4811 // recommended for hex command codes 20..2F
whismanoid 0:3edb3708c8c5 4812 // TODO: cmdLine.serial().printf("\r\n 2 ch=? code=? -- CODEnLOADall");
whismanoid 0:3edb3708c8c5 4813 // TODO: parse command arguments ~ parse_strCommandArgs(strCommandArgs);
whismanoid 0:3edb3708c8c5 4814 uint16_t ch = g_MAX5715_device.channelNumber_0_3;
whismanoid 0:3edb3708c8c5 4815 if (cmdLine.parse_uint16_dec("ch", ch))
whismanoid 0:3edb3708c8c5 4816 {
whismanoid 0:3edb3708c8c5 4817 }
whismanoid 0:3edb3708c8c5 4818 uint16_t code = g_MAX5715_device.CODE[ch];
whismanoid 0:3edb3708c8c5 4819 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 4820 {
whismanoid 0:3edb3708c8c5 4821 }
whismanoid 0:3edb3708c8c5 4822 cmdLine.serial().printf("CODEnLOADall ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 4823 g_MAX5715_device.CODEnLOADall(ch, code);
whismanoid 10:228a52f8107d 4824 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4825 }
whismanoid 0:3edb3708c8c5 4826 break;
whismanoid 0:3edb3708c8c5 4827 case '3':
whismanoid 0:3edb3708c8c5 4828 {
whismanoid 0:3edb3708c8c5 4829 // recommended for hex command codes 30..3F
whismanoid 0:3edb3708c8c5 4830 // TODO: cmdLine.serial().printf("\r\n 3 ch=? code=? -- CODEnLOADn");
whismanoid 0:3edb3708c8c5 4831 // TODO: parse command arguments ~ parse_strCommandArgs(strCommandArgs);
whismanoid 0:3edb3708c8c5 4832 uint16_t ch = g_MAX5715_device.channelNumber_0_3;
whismanoid 0:3edb3708c8c5 4833 uint16_t code;
whismanoid 0:3edb3708c8c5 4834 if (cmdLine.parse_uint16_dec("ch", ch))
whismanoid 0:3edb3708c8c5 4835 {
whismanoid 0:3edb3708c8c5 4836 }
whismanoid 0:3edb3708c8c5 4837 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 4838 {
whismanoid 0:3edb3708c8c5 4839 }
whismanoid 0:3edb3708c8c5 4840 cmdLine.serial().printf("CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 4841 g_MAX5715_device.CODEnLOADn(ch, code);
whismanoid 10:228a52f8107d 4842 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4843 }
whismanoid 0:3edb3708c8c5 4844 break;
whismanoid 0:3edb3708c8c5 4845 case '4':
whismanoid 0:3edb3708c8c5 4846 {
whismanoid 0:3edb3708c8c5 4847 // recommended for hex command codes 40..4F
whismanoid 0:3edb3708c8c5 4848 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 4849 {
whismanoid 0:3edb3708c8c5 4850 case '0':
whismanoid 0:3edb3708c8c5 4851 {
whismanoid 0:3edb3708c8c5 4852 // cmdLine.serial().printf("\r\n 40 ch=? -- POWERn_Normal");
whismanoid 0:3edb3708c8c5 4853 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4854 "channel_dcba=%d, POWERn_Normal)",
whismanoid 0:3edb3708c8c5 4855 g_MAX5715_device.channels_bitmask_DCBA);
whismanoid 0:3edb3708c8c5 4856 g_MAX5715_device.POWER(g_MAX5715_device.
whismanoid 0:3edb3708c8c5 4857 channels_bitmask_DCBA,
whismanoid 0:3edb3708c8c5 4858 MAX5715::POWERn_Normal);
whismanoid 10:228a52f8107d 4859 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4860 }
whismanoid 0:3edb3708c8c5 4861 break;
whismanoid 0:3edb3708c8c5 4862 case '1':
whismanoid 0:3edb3708c8c5 4863 {
whismanoid 0:3edb3708c8c5 4864 // cmdLine.serial().printf("\r\n 41 ch=? -- POWERn_PD1k");
whismanoid 0:3edb3708c8c5 4865 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4866 "channel_dcba=%d, POWERn_PD1k)",
whismanoid 0:3edb3708c8c5 4867 g_MAX5715_device.channels_bitmask_DCBA);
whismanoid 0:3edb3708c8c5 4868 g_MAX5715_device.POWER(g_MAX5715_device.
whismanoid 0:3edb3708c8c5 4869 channels_bitmask_DCBA,
whismanoid 0:3edb3708c8c5 4870 MAX5715::POWERn_PD1k);
whismanoid 10:228a52f8107d 4871 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4872 }
whismanoid 0:3edb3708c8c5 4873 break;
whismanoid 0:3edb3708c8c5 4874 case '2':
whismanoid 0:3edb3708c8c5 4875 {
whismanoid 0:3edb3708c8c5 4876 // cmdLine.serial().printf("\r\n 42 ch=? -- POWERn_PD100k");
whismanoid 0:3edb3708c8c5 4877 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4878 "channel_dcba=%d, POWERn_PD100k)",
whismanoid 0:3edb3708c8c5 4879 g_MAX5715_device.channels_bitmask_DCBA);
whismanoid 0:3edb3708c8c5 4880 g_MAX5715_device.POWER(g_MAX5715_device.
whismanoid 0:3edb3708c8c5 4881 channels_bitmask_DCBA,
whismanoid 0:3edb3708c8c5 4882 MAX5715::POWERn_PD100k);
whismanoid 10:228a52f8107d 4883 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4884 }
whismanoid 0:3edb3708c8c5 4885 break;
whismanoid 0:3edb3708c8c5 4886 case '3':
whismanoid 0:3edb3708c8c5 4887 {
whismanoid 0:3edb3708c8c5 4888 // cmdLine.serial().printf("\r\n 43 ch=? -- POWERn_PDHiZ");
whismanoid 0:3edb3708c8c5 4889 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4890 "channel_dcba=%d, POWERn_PDHiZ)",
whismanoid 0:3edb3708c8c5 4891 g_MAX5715_device.channels_bitmask_DCBA);
whismanoid 0:3edb3708c8c5 4892 g_MAX5715_device.POWER(g_MAX5715_device.
whismanoid 0:3edb3708c8c5 4893 channels_bitmask_DCBA,
whismanoid 0:3edb3708c8c5 4894 MAX5715::POWERn_PDHiZ);
whismanoid 10:228a52f8107d 4895 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4896 }
whismanoid 0:3edb3708c8c5 4897 break;
whismanoid 0:3edb3708c8c5 4898 }
whismanoid 0:3edb3708c8c5 4899 break;
whismanoid 0:3edb3708c8c5 4900 }
whismanoid 0:3edb3708c8c5 4901 break;
whismanoid 0:3edb3708c8c5 4902 case '5':
whismanoid 0:3edb3708c8c5 4903 {
whismanoid 0:3edb3708c8c5 4904 // recommended for hex command codes 50..5F
whismanoid 0:3edb3708c8c5 4905 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 4906 {
whismanoid 0:3edb3708c8c5 4907 case '0':
whismanoid 0:3edb3708c8c5 4908 {
whismanoid 0:3edb3708c8c5 4909 // cmdLine.serial().printf("\r\n 50 -- SW_CLEAR");
whismanoid 0:3edb3708c8c5 4910 cmdLine.serial().printf("SW_CLEAR");
whismanoid 0:3edb3708c8c5 4911 g_MAX5715_device.SW_CLEAR();
whismanoid 10:228a52f8107d 4912 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4913 }
whismanoid 0:3edb3708c8c5 4914 break;
whismanoid 0:3edb3708c8c5 4915 case '1':
whismanoid 0:3edb3708c8c5 4916 {
whismanoid 0:3edb3708c8c5 4917 // cmdLine.serial().printf("\r\n 51 -- SW_RESET");
whismanoid 0:3edb3708c8c5 4918 cmdLine.serial().printf("SW_RESET");
whismanoid 0:3edb3708c8c5 4919 g_MAX5715_device.SW_RESET();
whismanoid 10:228a52f8107d 4920 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4921 }
whismanoid 0:3edb3708c8c5 4922 break;
whismanoid 0:3edb3708c8c5 4923 }
whismanoid 0:3edb3708c8c5 4924 }
whismanoid 0:3edb3708c8c5 4925 break;
whismanoid 0:3edb3708c8c5 4926 case '6':
whismanoid 0:3edb3708c8c5 4927 {
whismanoid 0:3edb3708c8c5 4928 // recommended for hex command codes 60..6F
whismanoid 0:3edb3708c8c5 4929 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 4930 {
whismanoid 0:3edb3708c8c5 4931 case '0':
whismanoid 0:3edb3708c8c5 4932 {
whismanoid 0:3edb3708c8c5 4933 // cmdLine.serial().printf("\r\n 60 ch=? -- CONFIGn_LATCHED");
whismanoid 0:3edb3708c8c5 4934 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4935 "MAX5715_CONFIGn_LATCHED(channel_dcba=%d)",
whismanoid 0:3edb3708c8c5 4936 g_MAX5715_device.
whismanoid 0:3edb3708c8c5 4937 channels_bitmask_DCBA);
whismanoid 0:3edb3708c8c5 4938 g_MAX5715_device.CONFIGn_LATCHED(g_MAX5715_device.
whismanoid 0:3edb3708c8c5 4939 channels_bitmask_DCBA);
whismanoid 10:228a52f8107d 4940 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4941 }
whismanoid 0:3edb3708c8c5 4942 break;
whismanoid 0:3edb3708c8c5 4943 case '1':
whismanoid 0:3edb3708c8c5 4944 {
whismanoid 0:3edb3708c8c5 4945 // cmdLine.serial().printf("\r\n 61 ch=? -- CONFIGn_TRANSPARENT");
whismanoid 0:3edb3708c8c5 4946 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4947 "MAX5715_CONFIGn_TRANSPARENT(channel_dcba=%d)",
whismanoid 0:3edb3708c8c5 4948 g_MAX5715_device.
whismanoid 0:3edb3708c8c5 4949 channels_bitmask_DCBA);
whismanoid 0:3edb3708c8c5 4950 g_MAX5715_device.CONFIGn_TRANSPARENT(
whismanoid 0:3edb3708c8c5 4951 g_MAX5715_device.channels_bitmask_DCBA);
whismanoid 10:228a52f8107d 4952 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4953 }
whismanoid 0:3edb3708c8c5 4954 break;
whismanoid 0:3edb3708c8c5 4955 case '8':
whismanoid 0:3edb3708c8c5 4956 {
whismanoid 0:3edb3708c8c5 4957 // cmdLine.serial().printf("\r\n 68 -- CONFIGall_LATCHED");
whismanoid 0:3edb3708c8c5 4958 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4959 "MAX5715_CONFIGall_LATCHED()");
whismanoid 0:3edb3708c8c5 4960 g_MAX5715_device.CONFIGall_LATCHED();
whismanoid 10:228a52f8107d 4961 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4962 }
whismanoid 0:3edb3708c8c5 4963 break;
whismanoid 0:3edb3708c8c5 4964 case '9':
whismanoid 0:3edb3708c8c5 4965 {
whismanoid 0:3edb3708c8c5 4966 // cmdLine.serial().printf("\r\n 69 -- CONFIGall_TRANSPARENT");
whismanoid 0:3edb3708c8c5 4967 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4968 "MAX5715_CONFIGall_TRANSPARENT()");
whismanoid 0:3edb3708c8c5 4969 g_MAX5715_device.CONFIGall_TRANSPARENT();
whismanoid 10:228a52f8107d 4970 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4971 }
whismanoid 0:3edb3708c8c5 4972 break;
whismanoid 0:3edb3708c8c5 4973 }
whismanoid 0:3edb3708c8c5 4974 }
whismanoid 0:3edb3708c8c5 4975 break;
whismanoid 0:3edb3708c8c5 4976 case '7':
whismanoid 0:3edb3708c8c5 4977 {
whismanoid 0:3edb3708c8c5 4978 // recommended for hex command codes 70..7F
whismanoid 0:3edb3708c8c5 4979 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 4980 {
whismanoid 0:3edb3708c8c5 4981 case '0':
whismanoid 0:3edb3708c8c5 4982 {
whismanoid 0:3edb3708c8c5 4983 // cmdLine.serial().printf("\r\n 70 -- REF_EXT");
whismanoid 0:3edb3708c8c5 4984 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4985 "MAX5715_REF(REF_EXT)");
whismanoid 0:3edb3708c8c5 4986 g_MAX5715_device.REF(MAX5715::REF_EXT);
whismanoid 10:228a52f8107d 4987 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4988 }
whismanoid 0:3edb3708c8c5 4989 break;
whismanoid 0:3edb3708c8c5 4990 case '1':
whismanoid 0:3edb3708c8c5 4991 {
whismanoid 0:3edb3708c8c5 4992 // cmdLine.serial().printf("\r\n 71 -- REF_2V500");
whismanoid 0:3edb3708c8c5 4993 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 4994 "MAX5715_REF(REF_2V500)");
whismanoid 0:3edb3708c8c5 4995 g_MAX5715_device.REF(MAX5715::REF_2V500);
whismanoid 10:228a52f8107d 4996 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 4997 }
whismanoid 0:3edb3708c8c5 4998 break;
whismanoid 0:3edb3708c8c5 4999 case '2':
whismanoid 0:3edb3708c8c5 5000 {
whismanoid 0:3edb3708c8c5 5001 // cmdLine.serial().printf("\r\n 72 -- REF_2V048");
whismanoid 0:3edb3708c8c5 5002 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5003 "MAX5715_REF(REF_2V048)");
whismanoid 0:3edb3708c8c5 5004 g_MAX5715_device.REF(MAX5715::REF_2V048);
whismanoid 10:228a52f8107d 5005 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5006 }
whismanoid 0:3edb3708c8c5 5007 break;
whismanoid 0:3edb3708c8c5 5008 case '3':
whismanoid 0:3edb3708c8c5 5009 {
whismanoid 0:3edb3708c8c5 5010 // cmdLine.serial().printf("\r\n 73 -- REF_4V096");
whismanoid 0:3edb3708c8c5 5011 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5012 "MAX5715_REF(REF_4V096)");
whismanoid 0:3edb3708c8c5 5013 g_MAX5715_device.REF(MAX5715::REF_4V096);
whismanoid 10:228a52f8107d 5014 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5015 }
whismanoid 0:3edb3708c8c5 5016 break;
whismanoid 0:3edb3708c8c5 5017 case '4':
whismanoid 0:3edb3708c8c5 5018 {
whismanoid 0:3edb3708c8c5 5019 // cmdLine.serial().printf("\r\n 74 -- REF_AlwaysOn_EXT");
whismanoid 0:3edb3708c8c5 5020 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5021 "MAX5715_REF(REF_AlwaysOn_EXT)");
whismanoid 0:3edb3708c8c5 5022 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_EXT);
whismanoid 10:228a52f8107d 5023 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5024 }
whismanoid 0:3edb3708c8c5 5025 break;
whismanoid 0:3edb3708c8c5 5026 case '5':
whismanoid 0:3edb3708c8c5 5027 {
whismanoid 0:3edb3708c8c5 5028 // cmdLine.serial().printf("\r\n 75 -- REF_AlwaysOn_2V500");
whismanoid 0:3edb3708c8c5 5029 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5030 "MAX5715_REF(REF_AlwaysOn_2V500)");
whismanoid 0:3edb3708c8c5 5031 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_2V500);
whismanoid 10:228a52f8107d 5032 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5033 }
whismanoid 0:3edb3708c8c5 5034 break;
whismanoid 0:3edb3708c8c5 5035 case '6':
whismanoid 0:3edb3708c8c5 5036 {
whismanoid 0:3edb3708c8c5 5037 // cmdLine.serial().printf("\r\n 76 -- REF_AlwaysOn_2V048");
whismanoid 0:3edb3708c8c5 5038 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5039 "MAX5715_REF(REF_AlwaysOn_2V048)");
whismanoid 0:3edb3708c8c5 5040 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_2V048);
whismanoid 10:228a52f8107d 5041 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5042 }
whismanoid 0:3edb3708c8c5 5043 break;
whismanoid 0:3edb3708c8c5 5044 case '7':
whismanoid 0:3edb3708c8c5 5045 {
whismanoid 0:3edb3708c8c5 5046 // cmdLine.serial().printf("\r\n 77 -- REF_AlwaysOn_4V096");
whismanoid 0:3edb3708c8c5 5047 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5048 "MAX5715_REF(REF_AlwaysOn_4V096)");
whismanoid 0:3edb3708c8c5 5049 g_MAX5715_device.REF(MAX5715::REF_AlwaysOn_4V096);
whismanoid 10:228a52f8107d 5050 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5051 }
whismanoid 0:3edb3708c8c5 5052 break;
whismanoid 0:3edb3708c8c5 5053 }
whismanoid 0:3edb3708c8c5 5054 }
whismanoid 0:3edb3708c8c5 5055 break;
whismanoid 0:3edb3708c8c5 5056 case '8':
whismanoid 0:3edb3708c8c5 5057 {
whismanoid 0:3edb3708c8c5 5058 // recommended for hex command codes 80..8F
whismanoid 0:3edb3708c8c5 5059 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5060 {
whismanoid 0:3edb3708c8c5 5061 case '0':
whismanoid 0:3edb3708c8c5 5062 {
whismanoid 0:3edb3708c8c5 5063 // TODO: cmdLine.serial().printf("\r\n 80 code=? -- CODEall");
whismanoid 0:3edb3708c8c5 5064 // TODO: parse command arguments ~ parse_strCommandArgs(strCommandArgs);
whismanoid 0:3edb3708c8c5 5065 g_MAX5715_device.channels_bitmask_DCBA = 0xFF; // store g_MAX5715_device.CODE[allChannels]
whismanoid 0:3edb3708c8c5 5066 uint16_t code = g_MAX5715_device.CODE[0];
whismanoid 0:3edb3708c8c5 5067 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 5068 {
whismanoid 0:3edb3708c8c5 5069 }
whismanoid 0:3edb3708c8c5 5070 cmdLine.serial().printf("CODEall code=%d", code);
whismanoid 0:3edb3708c8c5 5071 g_MAX5715_device.CODEall(code);
whismanoid 10:228a52f8107d 5072 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5073 }
whismanoid 0:3edb3708c8c5 5074 break;
whismanoid 0:3edb3708c8c5 5075 case '1':
whismanoid 0:3edb3708c8c5 5076 {
whismanoid 0:3edb3708c8c5 5077 // TODO: cmdLine.serial().printf("\r\n 81 -- LOADall");
whismanoid 0:3edb3708c8c5 5078 cmdLine.serial().printf("LOADall");
whismanoid 0:3edb3708c8c5 5079 g_MAX5715_device.LOADall();
whismanoid 10:228a52f8107d 5080 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5081 }
whismanoid 0:3edb3708c8c5 5082 break;
whismanoid 0:3edb3708c8c5 5083 case '2':
whismanoid 0:3edb3708c8c5 5084 {
whismanoid 0:3edb3708c8c5 5085 // TODO: cmdLine.serial().printf("\r\n 82 code=? -- CODEallLOADall");
whismanoid 0:3edb3708c8c5 5086 uint16_t code = g_MAX5715_device.CODE[0];
whismanoid 0:3edb3708c8c5 5087 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 5088 {
whismanoid 0:3edb3708c8c5 5089 }
whismanoid 0:3edb3708c8c5 5090 cmdLine.serial().printf("CODEallLOADall code=%d", code);
whismanoid 0:3edb3708c8c5 5091 g_MAX5715_device.CODEallLOADall(code);
whismanoid 10:228a52f8107d 5092 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5093 }
whismanoid 0:3edb3708c8c5 5094 break;
whismanoid 0:3edb3708c8c5 5095 }
whismanoid 0:3edb3708c8c5 5096 }
whismanoid 0:3edb3708c8c5 5097 break;
whismanoid 0:3edb3708c8c5 5098 case '9':
whismanoid 0:3edb3708c8c5 5099 {
whismanoid 0:3edb3708c8c5 5100 // recommended for hex command codes 90..9F
whismanoid 0:3edb3708c8c5 5101 }
whismanoid 0:3edb3708c8c5 5102 break;
whismanoid 0:3edb3708c8c5 5103 case 'a': case 'A':
whismanoid 0:3edb3708c8c5 5104 {
whismanoid 0:3edb3708c8c5 5105 // recommended for hex command codes A0..AF
whismanoid 0:3edb3708c8c5 5106 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5107 {
whismanoid 0:3edb3708c8c5 5108 case 't': case 'T':
whismanoid 0:3edb3708c8c5 5109 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5110 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5111 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 5112 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5113 // AT command: skip the prompt to avoid confusing modem detector
whismanoid 10:228a52f8107d 5114 return false; // command not handled
whismanoid 0:3edb3708c8c5 5115 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5116 }
whismanoid 0:3edb3708c8c5 5117 }
whismanoid 0:3edb3708c8c5 5118 break;
whismanoid 0:3edb3708c8c5 5119 case 'b': case 'B':
whismanoid 0:3edb3708c8c5 5120 {
whismanoid 0:3edb3708c8c5 5121 // recommended for hex command codes B0..BF
whismanoid 0:3edb3708c8c5 5122 }
whismanoid 0:3edb3708c8c5 5123 break;
whismanoid 0:3edb3708c8c5 5124 case 'c': case 'C':
whismanoid 0:3edb3708c8c5 5125 {
whismanoid 0:3edb3708c8c5 5126 // recommended for hex command codes C0..CF
whismanoid 0:3edb3708c8c5 5127 // // MAX5717 menu function to drive MAX5717_CLRb_Pin CLR#
whismanoid 0:3edb3708c8c5 5128 // cmdLine.serial().printf("\r\n C -- CLR# pulse CH high CL low");
whismanoid 0:3edb3708c8c5 5129 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5130 {
whismanoid 0:3edb3708c8c5 5131 default:
whismanoid 0:3edb3708c8c5 5132 // g_MAX5715_device.CLRboutputPulseLow();
whismanoid 0:3edb3708c8c5 5133 g_MAX5715_device.CLRboutputValue(1);
whismanoid 0:3edb3708c8c5 5134 g_MAX5715_device.CLRboutputValue(0);
whismanoid 0:3edb3708c8c5 5135 g_MAX5715_device.CLRboutputValue(1);
whismanoid 0:3edb3708c8c5 5136 break;
whismanoid 0:3edb3708c8c5 5137 case 'H': case 'h': case '1':
whismanoid 0:3edb3708c8c5 5138 g_MAX5715_device.CLRboutputValue(1); // GPIOoutputCLRb(int isLogicHigh);
whismanoid 0:3edb3708c8c5 5139 break;
whismanoid 0:3edb3708c8c5 5140 case 'L': case 'l': case '0':
whismanoid 0:3edb3708c8c5 5141 g_MAX5715_device.CLRboutputValue(0); // GPIOoutputCLRb(int isLogicHigh);
whismanoid 0:3edb3708c8c5 5142 break;
whismanoid 0:3edb3708c8c5 5143 }
whismanoid 10:228a52f8107d 5144 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5145 }
whismanoid 0:3edb3708c8c5 5146 break;
whismanoid 0:3edb3708c8c5 5147 case 'd': case 'D':
whismanoid 0:3edb3708c8c5 5148 {
whismanoid 0:3edb3708c8c5 5149 // recommended for hex command codes D0..DF
whismanoid 0:3edb3708c8c5 5150 }
whismanoid 0:3edb3708c8c5 5151 break;
whismanoid 0:3edb3708c8c5 5152 case 'e': case 'E':
whismanoid 0:3edb3708c8c5 5153 {
whismanoid 0:3edb3708c8c5 5154 // recommended for hex command codes E0..EF
whismanoid 0:3edb3708c8c5 5155 }
whismanoid 0:3edb3708c8c5 5156 break;
whismanoid 0:3edb3708c8c5 5157 case 'f': case 'F':
whismanoid 0:3edb3708c8c5 5158 {
whismanoid 0:3edb3708c8c5 5159 // recommended for hex command codes F0..FF
whismanoid 0:3edb3708c8c5 5160 }
whismanoid 0:3edb3708c8c5 5161 break;
whismanoid 0:3edb3708c8c5 5162 case 'l': case 'L':
whismanoid 0:3edb3708c8c5 5163 {
whismanoid 0:3edb3708c8c5 5164 // // MAX5717 menu function to drive MAX5717_LDACb_Pin LDAC#
whismanoid 0:3edb3708c8c5 5165 // cmdLine.serial().printf("\r\n L -- LDAC# pulse LH high LL low");
whismanoid 0:3edb3708c8c5 5166 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5167 {
whismanoid 0:3edb3708c8c5 5168 default:
whismanoid 0:3edb3708c8c5 5169 // g_MAX5715_device.LDACboutputPulseLow();
whismanoid 0:3edb3708c8c5 5170 g_MAX5715_device.LDACboutputValue(1);
whismanoid 0:3edb3708c8c5 5171 g_MAX5715_device.LDACboutputValue(0);
whismanoid 0:3edb3708c8c5 5172 g_MAX5715_device.LDACboutputValue(1);
whismanoid 0:3edb3708c8c5 5173 break;
whismanoid 0:3edb3708c8c5 5174 case 'H': case 'h': case '1':
whismanoid 0:3edb3708c8c5 5175 g_MAX5715_device.LDACboutputValue(1); // GPIOoutputLDACb(int isLogicHigh);
whismanoid 0:3edb3708c8c5 5176 break;
whismanoid 0:3edb3708c8c5 5177 case 'L': case 'l': case '0':
whismanoid 0:3edb3708c8c5 5178 g_MAX5715_device.LDACboutputValue(0); // GPIOoutputLDACb(int isLogicHigh);
whismanoid 0:3edb3708c8c5 5179 break;
whismanoid 0:3edb3708c8c5 5180 }
whismanoid 10:228a52f8107d 5181 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5182 }
whismanoid 0:3edb3708c8c5 5183 break;
whismanoid 0:3edb3708c8c5 5184 case 'x': case 'X':
whismanoid 0:3edb3708c8c5 5185 {
whismanoid 0:3edb3708c8c5 5186 }
whismanoid 0:3edb3708c8c5 5187 break;
whismanoid 0:3edb3708c8c5 5188 case 'y': case 'Y':
whismanoid 0:3edb3708c8c5 5189 {
whismanoid 0:3edb3708c8c5 5190 }
whismanoid 0:3edb3708c8c5 5191 break;
whismanoid 0:3edb3708c8c5 5192 case 'z': case 'Z':
whismanoid 0:3edb3708c8c5 5193 {
whismanoid 0:3edb3708c8c5 5194 }
whismanoid 0:3edb3708c8c5 5195 break;
whismanoid 0:3edb3708c8c5 5196 case '~': // TODO: IGNORE_AT_COMMANDS -- ignore ~~~ modem command
whismanoid 0:3edb3708c8c5 5197 {
whismanoid 0:3edb3708c8c5 5198 // TODO: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 5199 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5200 {
whismanoid 0:3edb3708c8c5 5201 default:
whismanoid 0:3edb3708c8c5 5202 {
whismanoid 0:3edb3708c8c5 5203 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5204 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5205 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n",
whismanoid 0:3edb3708c8c5 5206 cmdLine.str());
whismanoid 0:3edb3708c8c5 5207 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5208 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5209 }
whismanoid 0:3edb3708c8c5 5210 }
whismanoid 0:3edb3708c8c5 5211 }
whismanoid 0:3edb3708c8c5 5212 break;
whismanoid 0:3edb3708c8c5 5213 case '+': // TODO: IGNORE_AT_COMMANDS -- ignore +++ modem command
whismanoid 0:3edb3708c8c5 5214 {
whismanoid 0:3edb3708c8c5 5215 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5216 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5217 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 5218 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5219 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5220 }
whismanoid 0:3edb3708c8c5 5221 break;
whismanoid 0:3edb3708c8c5 5222 case '@':
whismanoid 0:3edb3708c8c5 5223 {
whismanoid 0:3edb3708c8c5 5224 // //
whismanoid 0:3edb3708c8c5 5225 // // Menu @ -- print device configuration
whismanoid 0:3edb3708c8c5 5226 // TODO: cmdLine.serial().printf("\r\n @ -- print MAX5715 configuration");
whismanoid 0:3edb3708c8c5 5227 // //
whismanoid 0:3edb3708c8c5 5228 // print shadow register configuration
whismanoid 0:3edb3708c8c5 5229 //
whismanoid 0:3edb3708c8c5 5230 // shadow of write-only register CODE dddd_dddd_dddd_0000
whismanoid 0:3edb3708c8c5 5231 //~ int16_t CMD_1000_CODE;
whismanoid 0:3edb3708c8c5 5232 int index = 0;
whismanoid 0:3edb3708c8c5 5233 for (index = 0; index < 4; index++)
whismanoid 0:3edb3708c8c5 5234 {
whismanoid 0:3edb3708c8c5 5235 cmdLine.serial().printf("CODE %c=0x%4.4x MAX5715_VoltageOfCode(%d)=%5.3fV\r\n",
whismanoid 0:3edb3708c8c5 5236 (char)('A' + index),
whismanoid 0:3edb3708c8c5 5237 (g_MAX5715_device.Shadow_0010_nnnn_CODE[index] & 0xFFFF),
whismanoid 0:3edb3708c8c5 5238 g_MAX5715_device.CODE[index],
whismanoid 0:3edb3708c8c5 5239 g_MAX5715_device.VoltageOfCode(g_MAX5715_device.CODE[index])
whismanoid 0:3edb3708c8c5 5240 );
whismanoid 0:3edb3708c8c5 5241 }
whismanoid 0:3edb3708c8c5 5242 //
whismanoid 0:3edb3708c8c5 5243 cmdLine.serial().printf("\r\n");
whismanoid 0:3edb3708c8c5 5244 //
whismanoid 0:3edb3708c8c5 5245 //
whismanoid 0:3edb3708c8c5 5246 // Menu @) print MAX5715 configuration AND g_MAX5715_device globals
whismanoid 0:3edb3708c8c5 5247 //
whismanoid 0:3edb3708c8c5 5248 #if 1 // SUPPORT_CHANNELS
whismanoid 0:3edb3708c8c5 5249 cmdLine.serial().printf("channelNumber_0_3=%d channels_bitmask_DCBA=%d\r\n",
whismanoid 0:3edb3708c8c5 5250 (g_MAX5715_device.channelNumber_0_3 & 0xFFFF),
whismanoid 0:3edb3708c8c5 5251 (g_MAX5715_device.channels_bitmask_DCBA & 0xFFFF));
whismanoid 0:3edb3708c8c5 5252 #endif // SUPPORT_CHANNELS
whismanoid 0:3edb3708c8c5 5253 //
whismanoid 0:3edb3708c8c5 5254 cmdLine.serial().printf("VRef=%5.3fV\r\n", g_MAX5715_device.VRef);
whismanoid 0:3edb3708c8c5 5255 // dtostrf width and precision: 3.3V / 1024 LSB = 0.00322265625 volts per LSB
whismanoid 10:228a52f8107d 5256 return true; // command was handled by MAX5715
whismanoid 0:3edb3708c8c5 5257 }
whismanoid 0:3edb3708c8c5 5258 break;
whismanoid 10:228a52f8107d 5259 } // end switch (cmdLine[0])
whismanoid 10:228a52f8107d 5260 return false; // command not handled by MAX5715
whismanoid 10:228a52f8107d 5261 } // end bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 5262 #endif
whismanoid 0:3edb3708c8c5 5263
whismanoid 10:228a52f8107d 5264 //--------------------------------------------------
whismanoid 10:228a52f8107d 5265 #if 0 // APPLICATION_MAX11131 // MAX11131_menu_onEOLcommandParser moved to Test_Menu_MAX11131.cpp
whismanoid 10:228a52f8107d 5266 bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 5267 {
whismanoid 10:228a52f8107d 5268 switch (cmdLine[0])
whismanoid 10:228a52f8107d 5269 {
whismanoid 0:3edb3708c8c5 5270 case '0':
whismanoid 0:3edb3708c8c5 5271 {
whismanoid 0:3edb3708c8c5 5272 // recommended for hex command codes 00..0F
whismanoid 0:3edb3708c8c5 5273 // VERIFY: console menu command 0 int16_t MAX11131_ScanRead(void);
whismanoid 0:3edb3708c8c5 5274 // TODO: cmdLine.serial().printf("\r\n 0 n=? -- MAX11131_ScanRead");
whismanoid 0:3edb3708c8c5 5275 if (cmdLine.parse_uint16_dec("n", g_MAX11131_device.NumWords))
whismanoid 0:3edb3708c8c5 5276 {
whismanoid 0:3edb3708c8c5 5277 }
whismanoid 0:3edb3708c8c5 5278 cmdLine.serial().printf("ScanRead NumWords=%d", g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 5279 if (g_MAX11131_device.isExternalClock)
whismanoid 0:3edb3708c8c5 5280 {
whismanoid 0:3edb3708c8c5 5281 cmdLine.serial().printf(" External Clock");
whismanoid 0:3edb3708c8c5 5282 //
whismanoid 0:3edb3708c8c5 5283 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5284 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5285 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5286 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5287 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5288 //
whismanoid 0:3edb3708c8c5 5289 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 5290 }
whismanoid 0:3edb3708c8c5 5291 else
whismanoid 0:3edb3708c8c5 5292 {
whismanoid 0:3edb3708c8c5 5293 cmdLine.serial().printf(" Internal Clock");
whismanoid 0:3edb3708c8c5 5294 //
whismanoid 0:3edb3708c8c5 5295 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5296 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5297 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5298 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5299 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5300 //
whismanoid 0:3edb3708c8c5 5301 AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords);
whismanoid 0:3edb3708c8c5 5302 }
whismanoid 10:228a52f8107d 5303 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5304 }
whismanoid 0:3edb3708c8c5 5305 break;
whismanoid 0:3edb3708c8c5 5306 case '1':
whismanoid 0:3edb3708c8c5 5307 {
whismanoid 0:3edb3708c8c5 5308 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5309 // VERIFY: console menu command 1 MAX11131_ScanManual(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 5310 // TODO: cmdLine.serial().printf("\r\n 1 ch=? pm=? id=? -- MAX11131_ScanManual");
whismanoid 0:3edb3708c8c5 5311 if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15))
whismanoid 0:3edb3708c8c5 5312 {
whismanoid 0:3edb3708c8c5 5313 }
whismanoid 0:3edb3708c8c5 5314 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5315 {
whismanoid 0:3edb3708c8c5 5316 }
whismanoid 0:3edb3708c8c5 5317 if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1))
whismanoid 0:3edb3708c8c5 5318 {
whismanoid 0:3edb3708c8c5 5319 }
whismanoid 0:3edb3708c8c5 5320 cmdLine.serial().printf("ScanManual ch=%d pm=%d id=%d\r\n",
whismanoid 0:3edb3708c8c5 5321 g_MAX11131_device.channelNumber_0_15,
whismanoid 0:3edb3708c8c5 5322 g_MAX11131_device.PowerManagement_0_2,
whismanoid 0:3edb3708c8c5 5323 g_MAX11131_device.chan_id_0_1);
whismanoid 0:3edb3708c8c5 5324 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5325 // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1
whismanoid 0:3edb3708c8c5 5326 // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15
whismanoid 0:3edb3708c8c5 5327 g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual();
whismanoid 0:3edb3708c8c5 5328 //
whismanoid 0:3edb3708c8c5 5329 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5330 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5331 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5332 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5333 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5334 //
whismanoid 0:3edb3708c8c5 5335 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5336 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5337 }
whismanoid 0:3edb3708c8c5 5338 break;
whismanoid 0:3edb3708c8c5 5339 case '2':
whismanoid 0:3edb3708c8c5 5340 {
whismanoid 0:3edb3708c8c5 5341 // recommended for hex command codes 20..2F
whismanoid 0:3edb3708c8c5 5342 // VERIFY: console menu command 2 int MAX11131_ScanRepeat(uint8_t channelNumber_0_15, uint8_t average_0_4_8_16_32, uint8_t nscan_4_8_12_16, uint8_t PowerManagement_0_2, uint8_t swcnv_0_1);
whismanoid 0:3edb3708c8c5 5343 // TODO: cmdLine.serial().printf("\r\n 2 ch=? av=? n=? pm=? swcnv=? -- MAX11131_ScanRepeat");
whismanoid 0:3edb3708c8c5 5344 // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs
whismanoid 0:3edb3708c8c5 5345 // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5346 // VERIFY: update value of g_MAX11131_device.nscan_4_8_12_16 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5347 // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5348 // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5349 // VERIFY: parse strCommandArgs for additional arguments including key=value pairs
whismanoid 0:3edb3708c8c5 5350 if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15))
whismanoid 0:3edb3708c8c5 5351 {
whismanoid 0:3edb3708c8c5 5352 }
whismanoid 0:3edb3708c8c5 5353 if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32))
whismanoid 0:3edb3708c8c5 5354 {
whismanoid 0:3edb3708c8c5 5355 }
whismanoid 0:3edb3708c8c5 5356 if (cmdLine.parse_byte_dec("n", g_MAX11131_device.nscan_4_8_12_16))
whismanoid 0:3edb3708c8c5 5357 {
whismanoid 0:3edb3708c8c5 5358 }
whismanoid 0:3edb3708c8c5 5359 if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1))
whismanoid 0:3edb3708c8c5 5360 {
whismanoid 0:3edb3708c8c5 5361 }
whismanoid 0:3edb3708c8c5 5362 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5363 {
whismanoid 0:3edb3708c8c5 5364 }
whismanoid 0:3edb3708c8c5 5365 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5366 "ScanRepeat ch=%d average_0_4_8_16_32:%d nscan_4_8_12_16:%d swcnv=%d pm=%d\r\n",
whismanoid 0:3edb3708c8c5 5367 g_MAX11131_device.channelNumber_0_15,
whismanoid 0:3edb3708c8c5 5368 g_MAX11131_device.average_0_4_8_16_32,
whismanoid 0:3edb3708c8c5 5369 g_MAX11131_device.nscan_4_8_12_16,
whismanoid 0:3edb3708c8c5 5370 g_MAX11131_device.swcnv_0_1,
whismanoid 0:3edb3708c8c5 5371 g_MAX11131_device.PowerManagement_0_2);
whismanoid 0:3edb3708c8c5 5372 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5373 // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1
whismanoid 0:3edb3708c8c5 5374 // VERIFY: replace argument with driver global; g_MAX11131_device.nscan_4_8_12_16 replaces nscan_4_8_12_16
whismanoid 0:3edb3708c8c5 5375 // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32
whismanoid 0:3edb3708c8c5 5376 // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15
whismanoid 0:3edb3708c8c5 5377 g_MAX11131_device.NumWords = g_MAX11131_device.ScanRepeat();
whismanoid 0:3edb3708c8c5 5378 //
whismanoid 0:3edb3708c8c5 5379 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5380 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5381 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5382 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5383 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5384 //
whismanoid 0:3edb3708c8c5 5385 AINcode_print_value_chanID_mean(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5386 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5387 }
whismanoid 0:3edb3708c8c5 5388 break;
whismanoid 0:3edb3708c8c5 5389 case '3':
whismanoid 0:3edb3708c8c5 5390 {
whismanoid 0:3edb3708c8c5 5391 // recommended for hex command codes 30..3F
whismanoid 0:3edb3708c8c5 5392 // VERIFY: console menu command 3 MAX11131_ScanStandardInternalClock(int channelNumber_0_15, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1);
whismanoid 0:3edb3708c8c5 5393 // TODO: cmdLine.serial().printf("\r\n 3 ch=? av=? pm=? swcnv=? -- MAX11131_ScanStandardIntClock");
whismanoid 0:3edb3708c8c5 5394 // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs
whismanoid 0:3edb3708c8c5 5395 // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5396 // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5397 // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5398 if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15))
whismanoid 0:3edb3708c8c5 5399 {
whismanoid 0:3edb3708c8c5 5400 }
whismanoid 0:3edb3708c8c5 5401 if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32))
whismanoid 0:3edb3708c8c5 5402 {
whismanoid 0:3edb3708c8c5 5403 }
whismanoid 0:3edb3708c8c5 5404 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5405 {
whismanoid 0:3edb3708c8c5 5406 }
whismanoid 0:3edb3708c8c5 5407 if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1))
whismanoid 0:3edb3708c8c5 5408 {
whismanoid 0:3edb3708c8c5 5409 }
whismanoid 0:3edb3708c8c5 5410 cmdLine.serial().printf("ScanStandardInternalClock ch=%d average_0_4_8_16_32:%d swcnv=%d pm=%d\r\n",
whismanoid 0:3edb3708c8c5 5411 g_MAX11131_device.channelNumber_0_15,
whismanoid 0:3edb3708c8c5 5412 g_MAX11131_device.average_0_4_8_16_32,
whismanoid 0:3edb3708c8c5 5413 g_MAX11131_device.swcnv_0_1,
whismanoid 0:3edb3708c8c5 5414 g_MAX11131_device.PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5415 );
whismanoid 0:3edb3708c8c5 5416 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5417 // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1
whismanoid 0:3edb3708c8c5 5418 // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32
whismanoid 0:3edb3708c8c5 5419 // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15
whismanoid 0:3edb3708c8c5 5420 g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardInternalClock();
whismanoid 0:3edb3708c8c5 5421 //
whismanoid 0:3edb3708c8c5 5422 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5423 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5424 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5425 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5426 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5427 //
whismanoid 0:3edb3708c8c5 5428 AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5429 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5430 }
whismanoid 0:3edb3708c8c5 5431 break;
whismanoid 0:3edb3708c8c5 5432 case '4':
whismanoid 0:3edb3708c8c5 5433 {
whismanoid 0:3edb3708c8c5 5434 // recommended for hex command codes 40..4F
whismanoid 0:3edb3708c8c5 5435 // VERIFY: console menu command 4 MAX11131_ScanStandardExternalClock(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 5436 // TODO: cmdLine.serial().printf("\r\n 4 ch=? pm=? id=? -- MAX11131_ScanStandardExtClock");
whismanoid 0:3edb3708c8c5 5437 // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs
whismanoid 0:3edb3708c8c5 5438 // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5439 // VERIFY: update value of g_MAX11131_device.chan_id_0_1 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5440 if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15))
whismanoid 0:3edb3708c8c5 5441 {
whismanoid 0:3edb3708c8c5 5442 }
whismanoid 0:3edb3708c8c5 5443 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5444 {
whismanoid 0:3edb3708c8c5 5445 }
whismanoid 0:3edb3708c8c5 5446 if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1))
whismanoid 0:3edb3708c8c5 5447 {
whismanoid 0:3edb3708c8c5 5448 }
whismanoid 0:3edb3708c8c5 5449 cmdLine.serial().printf("ScanStandardExternalClock ch=%d pm=%d id=%d\r\n",
whismanoid 0:3edb3708c8c5 5450 g_MAX11131_device.channelNumber_0_15,
whismanoid 0:3edb3708c8c5 5451 g_MAX11131_device.PowerManagement_0_2,
whismanoid 0:3edb3708c8c5 5452 g_MAX11131_device.chan_id_0_1
whismanoid 0:3edb3708c8c5 5453 );
whismanoid 0:3edb3708c8c5 5454 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5455 // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1
whismanoid 0:3edb3708c8c5 5456 // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15
whismanoid 0:3edb3708c8c5 5457 g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardExternalClock();
whismanoid 0:3edb3708c8c5 5458 //
whismanoid 0:3edb3708c8c5 5459 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5460 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5461 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5462 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5463 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5464 //
whismanoid 0:3edb3708c8c5 5465 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5466 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5467 }
whismanoid 0:3edb3708c8c5 5468 break;
whismanoid 0:3edb3708c8c5 5469 case '5':
whismanoid 0:3edb3708c8c5 5470 {
whismanoid 0:3edb3708c8c5 5471 // recommended for hex command codes 50..5F
whismanoid 0:3edb3708c8c5 5472 // VERIFY: console menu command 5 MAX11131_ScanUpperInternalClock(int channelNumber_0_15, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1);
whismanoid 0:3edb3708c8c5 5473 // TODO: cmdLine.serial().printf("\r\n 5 ch=? av=? pm=? swcnv=? -- MAX11131_ScanUpperIntClock");
whismanoid 0:3edb3708c8c5 5474 // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs
whismanoid 0:3edb3708c8c5 5475 // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5476 // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5477 // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5478 if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15))
whismanoid 0:3edb3708c8c5 5479 {
whismanoid 0:3edb3708c8c5 5480 }
whismanoid 0:3edb3708c8c5 5481 if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32))
whismanoid 0:3edb3708c8c5 5482 {
whismanoid 0:3edb3708c8c5 5483 }
whismanoid 0:3edb3708c8c5 5484 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5485 {
whismanoid 0:3edb3708c8c5 5486 }
whismanoid 0:3edb3708c8c5 5487 if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1))
whismanoid 0:3edb3708c8c5 5488 {
whismanoid 0:3edb3708c8c5 5489 }
whismanoid 0:3edb3708c8c5 5490 cmdLine.serial().printf("ScanUpperInternalClock ch=%d average_0_4_8_16_32:%d swcnv=%d pm=%d\r\n",
whismanoid 0:3edb3708c8c5 5491 g_MAX11131_device.channelNumber_0_15,
whismanoid 0:3edb3708c8c5 5492 g_MAX11131_device.average_0_4_8_16_32,
whismanoid 0:3edb3708c8c5 5493 g_MAX11131_device.swcnv_0_1,
whismanoid 0:3edb3708c8c5 5494 g_MAX11131_device.PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5495 );
whismanoid 0:3edb3708c8c5 5496 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5497 // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1
whismanoid 0:3edb3708c8c5 5498 // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32
whismanoid 0:3edb3708c8c5 5499 // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15
whismanoid 0:3edb3708c8c5 5500 g_MAX11131_device.NumWords = g_MAX11131_device.ScanUpperInternalClock();
whismanoid 0:3edb3708c8c5 5501 //
whismanoid 0:3edb3708c8c5 5502 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5503 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5504 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5505 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5506 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5507 //
whismanoid 0:3edb3708c8c5 5508 AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5509 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5510 }
whismanoid 0:3edb3708c8c5 5511 break;
whismanoid 0:3edb3708c8c5 5512 case '6':
whismanoid 0:3edb3708c8c5 5513 {
whismanoid 0:3edb3708c8c5 5514 // recommended for hex command codes 60..6F
whismanoid 0:3edb3708c8c5 5515 // VERIFY: console menu command 6 MAX11131_ScanUpperExternalClock(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 5516 // TODO: cmdLine.serial().printf("\r\n 6 ch=? pm=? id=? -- MAX11131_ScanUpperExtClock");
whismanoid 0:3edb3708c8c5 5517 // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs
whismanoid 0:3edb3708c8c5 5518 // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5519 // VERIFY: update value of g_MAX11131_device.chan_id_0_1 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5520 if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15))
whismanoid 0:3edb3708c8c5 5521 {
whismanoid 0:3edb3708c8c5 5522 }
whismanoid 0:3edb3708c8c5 5523 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5524 {
whismanoid 0:3edb3708c8c5 5525 }
whismanoid 0:3edb3708c8c5 5526 if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1))
whismanoid 0:3edb3708c8c5 5527 {
whismanoid 0:3edb3708c8c5 5528 }
whismanoid 0:3edb3708c8c5 5529 cmdLine.serial().printf("ScanUpperExternalClock ch=%d pm=%d id=%d\r\n",
whismanoid 0:3edb3708c8c5 5530 g_MAX11131_device.channelNumber_0_15,
whismanoid 0:3edb3708c8c5 5531 g_MAX11131_device.PowerManagement_0_2,
whismanoid 0:3edb3708c8c5 5532 g_MAX11131_device.chan_id_0_1
whismanoid 0:3edb3708c8c5 5533 );
whismanoid 0:3edb3708c8c5 5534 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5535 // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1
whismanoid 0:3edb3708c8c5 5536 // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15
whismanoid 0:3edb3708c8c5 5537 g_MAX11131_device.NumWords = g_MAX11131_device.ScanUpperExternalClock();
whismanoid 0:3edb3708c8c5 5538 //
whismanoid 0:3edb3708c8c5 5539 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5540 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5541 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5542 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5543 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5544 //
whismanoid 0:3edb3708c8c5 5545 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5546 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5547 }
whismanoid 0:3edb3708c8c5 5548 break;
whismanoid 0:3edb3708c8c5 5549 case '7':
whismanoid 0:3edb3708c8c5 5550 {
whismanoid 0:3edb3708c8c5 5551 // recommended for hex command codes 70..7F
whismanoid 0:3edb3708c8c5 5552 // VERIFY: console menu command 7 MAX11131_ScanCustomInternalClock(int16_t enabledChannelsMask, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1);
whismanoid 0:3edb3708c8c5 5553 // TODO: cmdLine.serial().printf("\r\n 7 enableMask=0xffff av=? pm=? swcnv=? -- MAX11131_ScanCustomIntClock");
whismanoid 0:3edb3708c8c5 5554 // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5555 // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5556 // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs
whismanoid 0:3edb3708c8c5 5557 if (cmdLine.parse_int16_hex("enableMask", g_MAX11131_device.enabledChannelsMask))
whismanoid 0:3edb3708c8c5 5558 {
whismanoid 0:3edb3708c8c5 5559 // TODO1: get g_MAX11131_device.enabledChannelsMask from strCommandArgs
whismanoid 0:3edb3708c8c5 5560 }
whismanoid 0:3edb3708c8c5 5561 if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32))
whismanoid 0:3edb3708c8c5 5562 {
whismanoid 0:3edb3708c8c5 5563 }
whismanoid 0:3edb3708c8c5 5564 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5565 {
whismanoid 0:3edb3708c8c5 5566 }
whismanoid 0:3edb3708c8c5 5567 if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1))
whismanoid 0:3edb3708c8c5 5568 {
whismanoid 0:3edb3708c8c5 5569 }
whismanoid 0:3edb3708c8c5 5570 cmdLine.serial().printf(
whismanoid 0:3edb3708c8c5 5571 "ScanCustomInternalClock enabledChannelsMask:0x%4.4x average_0_4_8_16_32:%d pm=%d swcnv=%d\r\n",
whismanoid 0:3edb3708c8c5 5572 (g_MAX11131_device.enabledChannelsMask & 0xFFFF),
whismanoid 0:3edb3708c8c5 5573 g_MAX11131_device.average_0_4_8_16_32,
whismanoid 0:3edb3708c8c5 5574 g_MAX11131_device.PowerManagement_0_2,
whismanoid 0:3edb3708c8c5 5575 g_MAX11131_device.swcnv_0_1
whismanoid 0:3edb3708c8c5 5576 );
whismanoid 0:3edb3708c8c5 5577 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5578 // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1
whismanoid 0:3edb3708c8c5 5579 // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32
whismanoid 0:3edb3708c8c5 5580 // VERIFY: replace argument with driver global; g_MAX11131_device.enabledChannelsMask replaces enabledChannelsMask
whismanoid 0:3edb3708c8c5 5581 g_MAX11131_device.NumWords = g_MAX11131_device.ScanCustomInternalClock();
whismanoid 0:3edb3708c8c5 5582 //
whismanoid 0:3edb3708c8c5 5583 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5584 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5585 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5586 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5587 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5588 //
whismanoid 0:3edb3708c8c5 5589 AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5590 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5591 }
whismanoid 0:3edb3708c8c5 5592 break;
whismanoid 0:3edb3708c8c5 5593 case '8':
whismanoid 0:3edb3708c8c5 5594 {
whismanoid 0:3edb3708c8c5 5595 // recommended for hex command codes 80..8F
whismanoid 0:3edb3708c8c5 5596 // VERIFY: console menu command 8 MAX11131_ScanCustomExternalClock(int16_t enabledChannelsMask, int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 5597 // TODO: cmdLine.serial().printf("\r\n 8 enableMask=0xffff pm=0 id=1 -- MAX11131_ScanCustomExtClock");
whismanoid 0:3edb3708c8c5 5598 if (cmdLine.parse_int16_hex("enableMask", g_MAX11131_device.enabledChannelsMask))
whismanoid 0:3edb3708c8c5 5599 {
whismanoid 0:3edb3708c8c5 5600 // TODO1: get g_MAX11131_device.enabledChannelsMask from strCommandArgs
whismanoid 0:3edb3708c8c5 5601 }
whismanoid 0:3edb3708c8c5 5602 if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2))
whismanoid 0:3edb3708c8c5 5603 {
whismanoid 0:3edb3708c8c5 5604 }
whismanoid 0:3edb3708c8c5 5605 if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1))
whismanoid 0:3edb3708c8c5 5606 {
whismanoid 0:3edb3708c8c5 5607 }
whismanoid 0:3edb3708c8c5 5608 cmdLine.serial().printf("ScanCustomExternalClock enabledChannelsMask:0x%4.4x pm=%d id=%d\r\n",
whismanoid 0:3edb3708c8c5 5609 (g_MAX11131_device.enabledChannelsMask & 0xFFFF),
whismanoid 0:3edb3708c8c5 5610 g_MAX11131_device.PowerManagement_0_2,
whismanoid 0:3edb3708c8c5 5611 g_MAX11131_device.chan_id_0_1
whismanoid 0:3edb3708c8c5 5612 );
whismanoid 0:3edb3708c8c5 5613 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5614 // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1
whismanoid 0:3edb3708c8c5 5615 // VERIFY: replace argument with driver global; g_MAX11131_device.enabledChannelsMask replaces enabledChannelsMask
whismanoid 0:3edb3708c8c5 5616 g_MAX11131_device.NumWords = g_MAX11131_device.ScanCustomExternalClock();
whismanoid 0:3edb3708c8c5 5617 //
whismanoid 0:3edb3708c8c5 5618 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5619 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5620 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5621 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5622 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5623 //
whismanoid 0:3edb3708c8c5 5624 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5625 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5626 }
whismanoid 0:3edb3708c8c5 5627 break;
whismanoid 0:3edb3708c8c5 5628 case '9':
whismanoid 0:3edb3708c8c5 5629 {
whismanoid 0:3edb3708c8c5 5630 // recommended for hex command codes 90..9F
whismanoid 0:3edb3708c8c5 5631 // VERIFY: console menu command 9 MAX11131_ScanSampleSetExternalClock(uint8_t enabledChannelsPatternLength_1_256, int16_t enabledChannelsPattern[], int PowerManagement_0_2, int chan_id_0_1);
whismanoid 0:3edb3708c8c5 5632 // TODO: cmdLine.serial().printf("\r\n 9 channelsPattern... pm=? id=? | len=? -- MAX11131_ScanSampleSetExtClock");
whismanoid 0:3edb3708c8c5 5633 //
whismanoid 0:3edb3708c8c5 5634 // get MAX11131 Sampleset channel selection pattern parse_strCommandArgs(strCommandArgs);
whismanoid 0:3edb3708c8c5 5635 // cmdLine.parse_byteCount_byteList_dec(byteCount, mosiData, MAX_SPI_BYTE_COUNT)
whismanoid 0:3edb3708c8c5 5636 // into g_MAX11131_device.enabledChannelsPatternLength_1_256
whismanoid 0:3edb3708c8c5 5637 // into g_MAX11131_device.enabledChannelsPattern[0..255]
whismanoid 0:3edb3708c8c5 5638 size_t numValues;
whismanoid 0:3edb3708c8c5 5639 char valueList[256];
whismanoid 0:3edb3708c8c5 5640 if (cmdLine.parse_byteCount_byteList_dec( numValues, valueList, 256))
whismanoid 0:3edb3708c8c5 5641 {
whismanoid 0:3edb3708c8c5 5642 // first value is the "9" command itself
whismanoid 0:3edb3708c8c5 5643 g_MAX11131_device.enabledChannelsPatternLength_1_256 = numValues - 1;
whismanoid 0:3edb3708c8c5 5644 // copy valueList[1, ...] into g_MAX11131_device.enabledChannelsPattern[0, ...]
whismanoid 0:3edb3708c8c5 5645 for (size_t index = 0; index < (numValues - 1); index++)
whismanoid 0:3edb3708c8c5 5646 {
whismanoid 0:3edb3708c8c5 5647 g_MAX11131_device.enabledChannelsPattern[index] = valueList[1 + index];
whismanoid 0:3edb3708c8c5 5648 }
whismanoid 0:3edb3708c8c5 5649 }
whismanoid 0:3edb3708c8c5 5650 //
whismanoid 0:3edb3708c8c5 5651 cmdLine.serial().printf("ScanSampleSetExternalClock enabledChannelsPattern:{ ");
whismanoid 0:3edb3708c8c5 5652 int index;
whismanoid 0:3edb3708c8c5 5653 for (index = 0; index < g_MAX11131_device.enabledChannelsPatternLength_1_256; index++)
whismanoid 0:3edb3708c8c5 5654 {
whismanoid 0:3edb3708c8c5 5655 //~ Serial.print( ((g_enabledChannelsPattern[index] >> 4) & 0x000F), DEC);
whismanoid 0:3edb3708c8c5 5656 //~ Serial.print(" ");
whismanoid 0:3edb3708c8c5 5657 cmdLine.serial().printf("AIN%d ", ((g_MAX11131_device.enabledChannelsPattern[index]) & 0x000F));
whismanoid 0:3edb3708c8c5 5658 }
whismanoid 0:3edb3708c8c5 5659 cmdLine.serial().printf("}");
whismanoid 0:3edb3708c8c5 5660 cmdLine.serial().printf(" pm=%d id=%d\r\n", g_MAX11131_device.PowerManagement_0_2,
whismanoid 0:3edb3708c8c5 5661 g_MAX11131_device.chan_id_0_1);
whismanoid 0:3edb3708c8c5 5662 // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2
whismanoid 0:3edb3708c8c5 5663 // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1
whismanoid 0:3edb3708c8c5 5664 g_MAX11131_device.NumWords = g_MAX11131_device.ScanSampleSetExternalClock();
whismanoid 0:3edb3708c8c5 5665 //
whismanoid 0:3edb3708c8c5 5666 // Read raw ADC codes from device into AINcode[] and RAW_misoData16[]
whismanoid 0:3edb3708c8c5 5667 // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords
whismanoid 0:3edb3708c8c5 5668 g_MAX11131_device.ReadAINcode();
whismanoid 0:3edb3708c8c5 5669 // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data
whismanoid 0:3edb3708c8c5 5670 // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs
whismanoid 0:3edb3708c8c5 5671 //
whismanoid 0:3edb3708c8c5 5672 AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords);
whismanoid 10:228a52f8107d 5673 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5674 }
whismanoid 0:3edb3708c8c5 5675 break;
whismanoid 0:3edb3708c8c5 5676 case 'a': case 'A':
whismanoid 0:3edb3708c8c5 5677 {
whismanoid 0:3edb3708c8c5 5678 // recommended for hex command codes A0..AF
whismanoid 0:3edb3708c8c5 5679 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5680 {
whismanoid 0:3edb3708c8c5 5681 case 't': case 'T':
whismanoid 0:3edb3708c8c5 5682 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5683 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5684 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 5685 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5686 // AT command: skip the prompt to avoid confusing modem detector
whismanoid 10:228a52f8107d 5687 return false; // command not handled
whismanoid 0:3edb3708c8c5 5688 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5689 }
whismanoid 0:3edb3708c8c5 5690 }
whismanoid 0:3edb3708c8c5 5691 break;
whismanoid 0:3edb3708c8c5 5692 case 'b': case 'B':
whismanoid 0:3edb3708c8c5 5693 {
whismanoid 0:3edb3708c8c5 5694 // recommended for hex command codes B0..BF
whismanoid 0:3edb3708c8c5 5695 }
whismanoid 0:3edb3708c8c5 5696 break;
whismanoid 0:3edb3708c8c5 5697 case 'c': case 'C':
whismanoid 0:3edb3708c8c5 5698 {
whismanoid 0:3edb3708c8c5 5699 // recommended for hex command codes C0..CF
whismanoid 0:3edb3708c8c5 5700 }
whismanoid 0:3edb3708c8c5 5701 break;
whismanoid 0:3edb3708c8c5 5702 case 'd': case 'D':
whismanoid 0:3edb3708c8c5 5703 {
whismanoid 0:3edb3708c8c5 5704 // recommended for hex command codes D0..DF
whismanoid 0:3edb3708c8c5 5705 }
whismanoid 0:3edb3708c8c5 5706 break;
whismanoid 0:3edb3708c8c5 5707 case 'e': case 'E':
whismanoid 0:3edb3708c8c5 5708 {
whismanoid 0:3edb3708c8c5 5709 // recommended for hex command codes E0..EF
whismanoid 0:3edb3708c8c5 5710 }
whismanoid 0:3edb3708c8c5 5711 break;
whismanoid 0:3edb3708c8c5 5712 case 'f': case 'F':
whismanoid 0:3edb3708c8c5 5713 {
whismanoid 0:3edb3708c8c5 5714 // recommended for hex command codes F0..FF
whismanoid 0:3edb3708c8c5 5715 }
whismanoid 0:3edb3708c8c5 5716 break;
whismanoid 0:3edb3708c8c5 5717 case 'x': case 'X':
whismanoid 0:3edb3708c8c5 5718 {
whismanoid 0:3edb3708c8c5 5719 }
whismanoid 0:3edb3708c8c5 5720 break;
whismanoid 0:3edb3708c8c5 5721 case 'y': case 'Y':
whismanoid 0:3edb3708c8c5 5722 {
whismanoid 0:3edb3708c8c5 5723 }
whismanoid 0:3edb3708c8c5 5724 break;
whismanoid 0:3edb3708c8c5 5725 case 'i': case 'I':
whismanoid 0:3edb3708c8c5 5726 {
whismanoid 0:3edb3708c8c5 5727 // TODO: cmdLine.serial().printf("\r\n ISc) IUc) IBc) IRc) reconfigure channel single-ended/unipolar/bipolar/range");
whismanoid 0:3edb3708c8c5 5728 char strChannelId[3];
whismanoid 0:3edb3708c8c5 5729 strChannelId[0] = cmdLine[2];
whismanoid 0:3edb3708c8c5 5730 strChannelId[1] = cmdLine[3];
whismanoid 0:3edb3708c8c5 5731 strChannelId[2] = '\0';
whismanoid 0:3edb3708c8c5 5732 int channelId_0_15 = strtoul(strChannelId, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 0:3edb3708c8c5 5733 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5734 {
whismanoid 0:3edb3708c8c5 5735 case 's': case 'S':
whismanoid 0:3edb3708c8c5 5736 g_MAX11131_device.Reconfigure_SingleEnded(channelId_0_15);
whismanoid 0:3edb3708c8c5 5737 break;
whismanoid 0:3edb3708c8c5 5738 case 'u': case 'U':
whismanoid 0:3edb3708c8c5 5739 g_MAX11131_device.Reconfigure_DifferentialUnipolar(channelId_0_15);
whismanoid 0:3edb3708c8c5 5740 break;
whismanoid 0:3edb3708c8c5 5741 case 'b': case 'B':
whismanoid 0:3edb3708c8c5 5742 g_MAX11131_device.Reconfigure_DifferentialBipolarFSVref(channelId_0_15);
whismanoid 0:3edb3708c8c5 5743 break;
whismanoid 0:3edb3708c8c5 5744 case 'r': case 'R':
whismanoid 0:3edb3708c8c5 5745 g_MAX11131_device.Reconfigure_DifferentialBipolarFS2Vref(channelId_0_15);
whismanoid 0:3edb3708c8c5 5746 break;
whismanoid 0:3edb3708c8c5 5747 }
whismanoid 0:3edb3708c8c5 5748 // char cmd1 = strCommandArgs[0];
whismanoid 0:3edb3708c8c5 5749 // strCommandArgs.remove(0, 1); // unsigned int index, unsigned int count
whismanoid 0:3edb3708c8c5 5750 // // get argument int channelId_0_15
whismanoid 0:3edb3708c8c5 5751 // // parse_strCommandArgs(strCommandArgs);
whismanoid 0:3edb3708c8c5 5752 // int channelId_0_15 = strtoul(strCommandArgs.c_str(), NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 0:3edb3708c8c5 5753 // if (cmd1 == 'S') {
whismanoid 0:3edb3708c8c5 5754 // MAX11131_Reconfigure_SingleEnded(channelId_0_15);
whismanoid 0:3edb3708c8c5 5755 // }
whismanoid 0:3edb3708c8c5 5756 // else if (cmd1 == 'U') {
whismanoid 0:3edb3708c8c5 5757 // MAX11131_Reconfigure_DifferentialUnipolar(channelId_0_15);
whismanoid 0:3edb3708c8c5 5758 // }
whismanoid 0:3edb3708c8c5 5759 // else if (cmd1 == 'B') {
whismanoid 0:3edb3708c8c5 5760 // MAX11131_Reconfigure_DifferentialBipolarFSVref(channelId_0_15);
whismanoid 0:3edb3708c8c5 5761 // }
whismanoid 0:3edb3708c8c5 5762 // else if (cmd1 == 'R') {
whismanoid 0:3edb3708c8c5 5763 // MAX11131_Reconfigure_DifferentialBipolarFS2Vref(channelId_0_15);
whismanoid 0:3edb3708c8c5 5764 // }
whismanoid 10:228a52f8107d 5765 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5766 }
whismanoid 0:3edb3708c8c5 5767 break;
whismanoid 0:3edb3708c8c5 5768 case '@':
whismanoid 0:3edb3708c8c5 5769 {
whismanoid 0:3edb3708c8c5 5770 // TODO: cmdLine.serial().printf("\r\n @ -- print MAX11131 configuration");
whismanoid 0:3edb3708c8c5 5771 // print shadow register configuration
whismanoid 0:3edb3708c8c5 5772 //
whismanoid 0:3edb3708c8c5 5773 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.ADC_MODE_CONTROL & 0xFFFF));
whismanoid 0:3edb3708c8c5 5774 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.ADC_MODE_CONTROL);
whismanoid 0:3edb3708c8c5 5775 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.ADC_CONFIGURATION & 0xFFFF));
whismanoid 0:3edb3708c8c5 5776 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.ADC_CONFIGURATION);
whismanoid 0:3edb3708c8c5 5777 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.UNIPOLAR & 0xFFFF));
whismanoid 0:3edb3708c8c5 5778 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.UNIPOLAR);
whismanoid 0:3edb3708c8c5 5779 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.BIPOLAR & 0xFFFF));
whismanoid 0:3edb3708c8c5 5780 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.BIPOLAR);
whismanoid 0:3edb3708c8c5 5781 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.RANGE & 0xFFFF));
whismanoid 0:3edb3708c8c5 5782 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.RANGE);
whismanoid 0:3edb3708c8c5 5783 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.CSCAN0 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5784 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.CSCAN0);
whismanoid 0:3edb3708c8c5 5785 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.CSCAN1 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5786 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.CSCAN1);
whismanoid 0:3edb3708c8c5 5787 cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.SAMPLESET & 0xFFFF));
whismanoid 0:3edb3708c8c5 5788 MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.SAMPLESET);
whismanoid 0:3edb3708c8c5 5789 //
whismanoid 0:3edb3708c8c5 5790 // VERIFY: print shadow SAMPLESET pattern entry
whismanoid 0:3edb3708c8c5 5791 int entryIndex;
whismanoid 0:3edb3708c8c5 5792 for (entryIndex = 0; entryIndex < g_MAX11131_device.enabledChannelsPatternLength_1_256;
whismanoid 0:3edb3708c8c5 5793 entryIndex += 4)
whismanoid 0:3edb3708c8c5 5794 {
whismanoid 0:3edb3708c8c5 5795 uint16_t pack4channels = 0;
whismanoid 0:3edb3708c8c5 5796 pack4channels |= (((g_MAX11131_device.enabledChannelsPattern[entryIndex + 0]) & 0x0F) << 12);
whismanoid 0:3edb3708c8c5 5797 if ((entryIndex + 1) < g_MAX11131_device.enabledChannelsPatternLength_1_256) {
whismanoid 0:3edb3708c8c5 5798 pack4channels |= (((g_MAX11131_device.enabledChannelsPattern[entryIndex + 1]) & 0x0F) << 8);
whismanoid 0:3edb3708c8c5 5799 }
whismanoid 0:3edb3708c8c5 5800 if ((entryIndex + 2) < g_MAX11131_device.enabledChannelsPatternLength_1_256) {
whismanoid 0:3edb3708c8c5 5801 pack4channels |= (((g_MAX11131_device.enabledChannelsPattern[entryIndex + 2]) & 0x0F) << 4);
whismanoid 0:3edb3708c8c5 5802 }
whismanoid 0:3edb3708c8c5 5803 if ((entryIndex + 3) < g_MAX11131_device.enabledChannelsPatternLength_1_256) {
whismanoid 0:3edb3708c8c5 5804 pack4channels |= ((g_MAX11131_device.enabledChannelsPattern[entryIndex + 3]) & 0x0F);
whismanoid 0:3edb3708c8c5 5805 }
whismanoid 0:3edb3708c8c5 5806 //~ SPIwrite16bits(pack4channels);
whismanoid 0:3edb3708c8c5 5807 cmdLine.serial().printf(" 0x%4.4x", (pack4channels & 0xFFFF));
whismanoid 0:3edb3708c8c5 5808 // decode SAMPLESET channel select pattern
whismanoid 0:3edb3708c8c5 5809 cmdLine.serial().printf(" SampleSet Entry: AIN%d AIN%d AIN%d AIN%d\r\n",
whismanoid 0:3edb3708c8c5 5810 ((pack4channels >> 12) & 0x000F),
whismanoid 0:3edb3708c8c5 5811 ((pack4channels >> 8) & 0x000F),
whismanoid 0:3edb3708c8c5 5812 ((pack4channels >> 4) & 0x000F),
whismanoid 0:3edb3708c8c5 5813 ((pack4channels ) & 0x000F)
whismanoid 0:3edb3708c8c5 5814 );
whismanoid 0:3edb3708c8c5 5815 }
whismanoid 0:3edb3708c8c5 5816 //cmdLine.serial().printf(" SAMPLESET enabledChannelsPattern:{ ");
whismanoid 0:3edb3708c8c5 5817 //int index;
whismanoid 0:3edb3708c8c5 5818 //for (index = 0; index < g_MAX11131_device.enabledChannelsPatternLength_1_256; index++)
whismanoid 0:3edb3708c8c5 5819 //{
whismanoid 0:3edb3708c8c5 5820 // //~ cmdLine.serial().printf( ((g_enabledChannelsPattern[index] >> 4) & 0x000F), DEC);
whismanoid 0:3edb3708c8c5 5821 // //~ cmdLine.serial().printf(" ");
whismanoid 0:3edb3708c8c5 5822 // cmdLine.serial().printf("AIN");
whismanoid 0:3edb3708c8c5 5823 // cmdLine.serial().printf( ((g_MAX11131_device.enabledChannelsPattern[index]) & 0x000F), DEC);
whismanoid 0:3edb3708c8c5 5824 // cmdLine.serial().printf(" ");
whismanoid 0:3edb3708c8c5 5825 //}
whismanoid 0:3edb3708c8c5 5826 //cmdLine.serial().printf("}");
whismanoid 0:3edb3708c8c5 5827 //
whismanoid 0:3edb3708c8c5 5828 // Menu @) print MAX11131 configuration AND g_MAX11131_device globals
whismanoid 0:3edb3708c8c5 5829 //
whismanoid 0:3edb3708c8c5 5830 cmdLine.serial().printf("SPI_MOSI_Semantic=%d\r\n", (g_MAX11131_device.SPI_MOSI_Semantic & 0xFFFF));
whismanoid 0:3edb3708c8c5 5831 cmdLine.serial().printf("NumWords=%d\r\n", (g_MAX11131_device.NumWords & 0xFFFF));
whismanoid 0:3edb3708c8c5 5832 cmdLine.serial().printf("isExternalClock=%d\r\n", (g_MAX11131_device.isExternalClock & 0xFFFF));
whismanoid 0:3edb3708c8c5 5833 cmdLine.serial().printf("ScanMode=%d\r\n", (g_MAX11131_device.ScanMode & 0xFFFF));
whismanoid 0:3edb3708c8c5 5834 cmdLine.serial().printf("channelNumber_0_15=%d\r\n",
whismanoid 0:3edb3708c8c5 5835 (g_MAX11131_device.channelNumber_0_15 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5836 cmdLine.serial().printf("PowerManagement_0_2=%d\r\n",
whismanoid 0:3edb3708c8c5 5837 (g_MAX11131_device.PowerManagement_0_2 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5838 cmdLine.serial().printf("chan_id_0_1=%d\r\n", (g_MAX11131_device.chan_id_0_1 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5839 cmdLine.serial().printf("average_0_4_8_16_32=%d\r\n",
whismanoid 0:3edb3708c8c5 5840 (g_MAX11131_device.average_0_4_8_16_32 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5841 cmdLine.serial().printf("nscan_4_8_12_16=%d\r\n", (g_MAX11131_device.nscan_4_8_12_16 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5842 cmdLine.serial().printf("swcnv_0_1=%d\r\n", (g_MAX11131_device.swcnv_0_1 & 0xFFFF));
whismanoid 0:3edb3708c8c5 5843 cmdLine.serial().printf("enabledChannelsMask=0x%4.4x\r\n",
whismanoid 0:3edb3708c8c5 5844 (g_MAX11131_device.enabledChannelsMask & 0xFFFF));
whismanoid 0:3edb3708c8c5 5845 //
whismanoid 0:3edb3708c8c5 5846 cmdLine.serial().printf("VRef=%5.3fV\r\n", g_MAX11131_device.VRef);
whismanoid 0:3edb3708c8c5 5847 // dtostrf width and precision: 3.3V / 1024 LSB = 0.00322265625 volts per LSB
whismanoid 0:3edb3708c8c5 5848 //
whismanoid 10:228a52f8107d 5849 return true; // command was handled by MAX11131
whismanoid 0:3edb3708c8c5 5850 }
whismanoid 0:3edb3708c8c5 5851 //case '&':
whismanoid 0:3edb3708c8c5 5852 //{
whismanoid 0:3edb3708c8c5 5853 // // TODO: cmdLine.serial().printf("\r\n & -- MAX11131_Example_ScanManual");
whismanoid 0:3edb3708c8c5 5854 //}
whismanoid 0:3edb3708c8c5 5855 break;
whismanoid 0:3edb3708c8c5 5856 case '~': // TODO: IGNORE_AT_COMMANDS -- ignore ~~~ modem command
whismanoid 0:3edb3708c8c5 5857 {
whismanoid 0:3edb3708c8c5 5858 // TODO: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 5859 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5860 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5861 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 5862 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5863 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5864 }
whismanoid 0:3edb3708c8c5 5865 break;
whismanoid 0:3edb3708c8c5 5866 case '+': // TODO: IGNORE_AT_COMMANDS -- ignore +++ modem command
whismanoid 0:3edb3708c8c5 5867 {
whismanoid 0:3edb3708c8c5 5868 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5869 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5870 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 5871 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5872 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5873 }
whismanoid 0:3edb3708c8c5 5874 break;
whismanoid 10:228a52f8107d 5875 } // end switch (cmdLine[0])
whismanoid 10:228a52f8107d 5876 return false; // command not handled
whismanoid 10:228a52f8107d 5877 } // end bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 5878 #endif
whismanoid 0:3edb3708c8c5 5879
whismanoid 10:228a52f8107d 5880 //--------------------------------------------------
whismanoid 10:228a52f8107d 5881 #if 0 // APPLICATION_MAX5171 // MAX5171_menu_onEOLcommandParser moved to Test_Menu_MAX5171.cpp
whismanoid 10:228a52f8107d 5882 bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 5883 {
whismanoid 10:228a52f8107d 5884 switch (cmdLine[0])
whismanoid 10:228a52f8107d 5885 {
whismanoid 0:3edb3708c8c5 5886 case '0':
whismanoid 0:3edb3708c8c5 5887 {
whismanoid 0:3edb3708c8c5 5888 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5889 //~ cmdLine.serial().printf("\r\n 0 code=? -- CODE");
whismanoid 0:3edb3708c8c5 5890 uint16_t code;
whismanoid 0:3edb3708c8c5 5891 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 5892 {
whismanoid 0:3edb3708c8c5 5893 }
whismanoid 0:3edb3708c8c5 5894 cmdLine.serial().printf("CODE code=%d", code);
whismanoid 0:3edb3708c8c5 5895 g_MAX5171_device.CODE(code);
whismanoid 10:228a52f8107d 5896 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5897 }
whismanoid 0:3edb3708c8c5 5898 break;
whismanoid 0:3edb3708c8c5 5899 case '4':
whismanoid 0:3edb3708c8c5 5900 {
whismanoid 0:3edb3708c8c5 5901 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5902 //~ cmdLine.serial().printf("\r\n 4 code=? -- CODE_LOAD");
whismanoid 0:3edb3708c8c5 5903 uint16_t code;
whismanoid 0:3edb3708c8c5 5904 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 5905 {
whismanoid 0:3edb3708c8c5 5906 }
whismanoid 0:3edb3708c8c5 5907 cmdLine.serial().printf("CODE_LOAD code=%d", code);
whismanoid 0:3edb3708c8c5 5908 g_MAX5171_device.CODE_LOAD(code);
whismanoid 10:228a52f8107d 5909 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5910 }
whismanoid 0:3edb3708c8c5 5911 break;
whismanoid 0:3edb3708c8c5 5912 case '8':
whismanoid 0:3edb3708c8c5 5913 {
whismanoid 0:3edb3708c8c5 5914 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5915 //~ cmdLine.serial().printf("\r\n 8 -- LOAD");
whismanoid 0:3edb3708c8c5 5916 cmdLine.serial().printf("LOAD");
whismanoid 0:3edb3708c8c5 5917 g_MAX5171_device.LOAD();
whismanoid 10:228a52f8107d 5918 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5919 }
whismanoid 0:3edb3708c8c5 5920 break;
whismanoid 0:3edb3708c8c5 5921 case 'c': case 'C':
whismanoid 0:3edb3708c8c5 5922 {
whismanoid 0:3edb3708c8c5 5923 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5924 //~ cmdLine.serial().printf("\r\n c -- NOP");
whismanoid 0:3edb3708c8c5 5925 cmdLine.serial().printf("NOP");
whismanoid 0:3edb3708c8c5 5926 g_MAX5171_device.NOP();
whismanoid 10:228a52f8107d 5927 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5928 }
whismanoid 0:3edb3708c8c5 5929 break;
whismanoid 0:3edb3708c8c5 5930 case 'd': case 'D':
whismanoid 0:3edb3708c8c5 5931 {
whismanoid 0:3edb3708c8c5 5932 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5933 //~ cmdLine.serial().printf("\r\n d -- SHUTDOWN");
whismanoid 0:3edb3708c8c5 5934 cmdLine.serial().printf("SHUTDOWN");
whismanoid 0:3edb3708c8c5 5935 g_MAX5171_device.SHUTDOWN();
whismanoid 10:228a52f8107d 5936 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5937 }
whismanoid 0:3edb3708c8c5 5938 break;
whismanoid 0:3edb3708c8c5 5939 case 'e': case 'E':
whismanoid 0:3edb3708c8c5 5940 {
whismanoid 0:3edb3708c8c5 5941 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5942 {
whismanoid 0:3edb3708c8c5 5943 case '0':
whismanoid 0:3edb3708c8c5 5944 {
whismanoid 0:3edb3708c8c5 5945 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5946 //~ cmdLine.serial().printf("\r\n e0 -- UPO_LOW");
whismanoid 0:3edb3708c8c5 5947 cmdLine.serial().printf("UPO_LOW");
whismanoid 0:3edb3708c8c5 5948 g_MAX5171_device.UPO_LOW();
whismanoid 10:228a52f8107d 5949 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5950 }
whismanoid 0:3edb3708c8c5 5951 break;
whismanoid 0:3edb3708c8c5 5952 case '8':
whismanoid 0:3edb3708c8c5 5953 {
whismanoid 0:3edb3708c8c5 5954 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5955 //~ cmdLine.serial().printf("\r\n e8 -- UPO_HIGH");
whismanoid 0:3edb3708c8c5 5956 cmdLine.serial().printf("UPO_HIGH");
whismanoid 0:3edb3708c8c5 5957 g_MAX5171_device.UPO_HIGH();
whismanoid 10:228a52f8107d 5958 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5959 }
whismanoid 0:3edb3708c8c5 5960 break;
whismanoid 0:3edb3708c8c5 5961 }
whismanoid 0:3edb3708c8c5 5962 }
whismanoid 0:3edb3708c8c5 5963 break;
whismanoid 0:3edb3708c8c5 5964 case 'f': case 'F':
whismanoid 0:3edb3708c8c5 5965 {
whismanoid 0:3edb3708c8c5 5966 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5967 {
whismanoid 0:3edb3708c8c5 5968 case '0':
whismanoid 0:3edb3708c8c5 5969 {
whismanoid 0:3edb3708c8c5 5970 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5971 //~ cmdLine.serial().printf("\r\n f0 -- MODE1_DOUT_SCLK_RISING_EDGE");
whismanoid 0:3edb3708c8c5 5972 cmdLine.serial().printf("MODE1_DOUT_SCLK_RISING_EDGE");
whismanoid 0:3edb3708c8c5 5973 g_MAX5171_device.MODE1_DOUT_SCLK_RISING_EDGE();
whismanoid 10:228a52f8107d 5974 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5975 }
whismanoid 0:3edb3708c8c5 5976 break;
whismanoid 0:3edb3708c8c5 5977 case '8':
whismanoid 0:3edb3708c8c5 5978 {
whismanoid 0:3edb3708c8c5 5979 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 5980 //~ cmdLine.serial().printf("\r\n f8 -- MODE0_DOUT_SCLK_FALLING_EDGE");
whismanoid 0:3edb3708c8c5 5981 cmdLine.serial().printf("MODE0_DOUT_SCLK_FALLING_EDGE");
whismanoid 0:3edb3708c8c5 5982 g_MAX5171_device.MODE0_DOUT_SCLK_FALLING_EDGE();
whismanoid 10:228a52f8107d 5983 return true; // command was handled by MAX5171
whismanoid 0:3edb3708c8c5 5984 }
whismanoid 0:3edb3708c8c5 5985 break;
whismanoid 0:3edb3708c8c5 5986 }
whismanoid 0:3edb3708c8c5 5987 }
whismanoid 0:3edb3708c8c5 5988 break;
whismanoid 0:3edb3708c8c5 5989 case 'a': case 'A':
whismanoid 0:3edb3708c8c5 5990 {
whismanoid 0:3edb3708c8c5 5991 // recommended for hex command codes A0..AF
whismanoid 0:3edb3708c8c5 5992 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 5993 {
whismanoid 0:3edb3708c8c5 5994 case 't': case 'T':
whismanoid 0:3edb3708c8c5 5995 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 5996 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5997 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 5998 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 5999 // AT command: skip the prompt to avoid confusing modem detector
whismanoid 0:3edb3708c8c5 6000 return;
whismanoid 0:3edb3708c8c5 6001 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6002 }
whismanoid 0:3edb3708c8c5 6003 }
whismanoid 0:3edb3708c8c5 6004 break;
whismanoid 0:3edb3708c8c5 6005 case 'x': case 'X':
whismanoid 0:3edb3708c8c5 6006 {
whismanoid 0:3edb3708c8c5 6007 }
whismanoid 0:3edb3708c8c5 6008 break;
whismanoid 0:3edb3708c8c5 6009 case 'y': case 'Y':
whismanoid 0:3edb3708c8c5 6010 {
whismanoid 0:3edb3708c8c5 6011 }
whismanoid 0:3edb3708c8c5 6012 break;
whismanoid 0:3edb3708c8c5 6013 case 'z': case 'Z':
whismanoid 0:3edb3708c8c5 6014 {
whismanoid 0:3edb3708c8c5 6015 }
whismanoid 0:3edb3708c8c5 6016 break;
whismanoid 0:3edb3708c8c5 6017 case '~': // TODO: IGNORE_AT_COMMANDS -- ignore ~~~ modem command
whismanoid 0:3edb3708c8c5 6018 {
whismanoid 0:3edb3708c8c5 6019 // TODO: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 6020 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6021 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6022 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6023 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6024 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6025 }
whismanoid 0:3edb3708c8c5 6026 break;
whismanoid 0:3edb3708c8c5 6027 case '+': // TODO: IGNORE_AT_COMMANDS -- ignore +++ modem command
whismanoid 0:3edb3708c8c5 6028 {
whismanoid 0:3edb3708c8c5 6029 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6030 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6031 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6032 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6033 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6034 }
whismanoid 0:3edb3708c8c5 6035 break;
whismanoid 10:228a52f8107d 6036 } // end switch (cmdLine[0])
whismanoid 10:228a52f8107d 6037 return false; // command not handled
whismanoid 10:228a52f8107d 6038 } // end bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 6039 #endif
whismanoid 0:3edb3708c8c5 6040
whismanoid 10:228a52f8107d 6041 //--------------------------------------------------
whismanoid 10:228a52f8107d 6042 #if 0 // APPLICATION_MAX11410 // MAX11410_menu_onEOLcommandParser moved to Test_Menu_MAX11410.cpp
whismanoid 10:228a52f8107d 6043 bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 6044 {
whismanoid 10:228a52f8107d 6045 switch (cmdLine[0])
whismanoid 10:228a52f8107d 6046 {
whismanoid 0:3edb3708c8c5 6047 // TODO1: MAX11410 main_menu_onEOLcommandParser
whismanoid 0:3edb3708c8c5 6048 case '0':
whismanoid 0:3edb3708c8c5 6049 {
whismanoid 0:3edb3708c8c5 6050 // recommended for hex command codes 00..0F
whismanoid 0:3edb3708c8c5 6051 // placeholder: cmdLine.serial().printf("\r\n 3 ch=? code=? -- CODEnLOADn");
whismanoid 0:3edb3708c8c5 6052 uint16_t ch = g_MAX5715_device.channelNumber_0_3;
whismanoid 0:3edb3708c8c5 6053 uint16_t code;
whismanoid 0:3edb3708c8c5 6054 if (cmdLine.parse_uint16_dec("ch", ch))
whismanoid 0:3edb3708c8c5 6055 {
whismanoid 0:3edb3708c8c5 6056 }
whismanoid 0:3edb3708c8c5 6057 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 6058 {
whismanoid 0:3edb3708c8c5 6059 }
whismanoid 0:3edb3708c8c5 6060 if (cmdLine.parse_flag("xyzzy", g_xyzzy_flag, XYZZY_FLAG))
whismanoid 0:3edb3708c8c5 6061 {
whismanoid 0:3edb3708c8c5 6062 isUpdatedSPIConfig = true;
whismanoid 0:3edb3708c8c5 6063 }
whismanoid 0:3edb3708c8c5 6064 cmdLine.serial().printf("CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 6065 MAX5715_CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 6066 cmdLine.serial().printf("\r\n placeholder");
whismanoid 10:228a52f8107d 6067 return true; // command was handled by MAX11410
whismanoid 0:3edb3708c8c5 6068 }
whismanoid 0:3edb3708c8c5 6069 break;
whismanoid 0:3edb3708c8c5 6070 case '1':
whismanoid 0:3edb3708c8c5 6071 {
whismanoid 0:3edb3708c8c5 6072 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 6073 }
whismanoid 0:3edb3708c8c5 6074 break;
whismanoid 0:3edb3708c8c5 6075 case '2':
whismanoid 0:3edb3708c8c5 6076 {
whismanoid 0:3edb3708c8c5 6077 // recommended for hex command codes 20..2F
whismanoid 0:3edb3708c8c5 6078 }
whismanoid 0:3edb3708c8c5 6079 break;
whismanoid 0:3edb3708c8c5 6080 case '3':
whismanoid 0:3edb3708c8c5 6081 {
whismanoid 0:3edb3708c8c5 6082 // recommended for hex command codes 30..3F
whismanoid 0:3edb3708c8c5 6083 }
whismanoid 0:3edb3708c8c5 6084 break;
whismanoid 0:3edb3708c8c5 6085 case '4':
whismanoid 0:3edb3708c8c5 6086 {
whismanoid 0:3edb3708c8c5 6087 // recommended for hex command codes 40..4F
whismanoid 0:3edb3708c8c5 6088 }
whismanoid 0:3edb3708c8c5 6089 break;
whismanoid 0:3edb3708c8c5 6090 case '5':
whismanoid 0:3edb3708c8c5 6091 {
whismanoid 0:3edb3708c8c5 6092 // recommended for hex command codes 50..5F
whismanoid 0:3edb3708c8c5 6093 }
whismanoid 0:3edb3708c8c5 6094 break;
whismanoid 0:3edb3708c8c5 6095 case '6':
whismanoid 0:3edb3708c8c5 6096 {
whismanoid 0:3edb3708c8c5 6097 // recommended for hex command codes 60..6F
whismanoid 0:3edb3708c8c5 6098 }
whismanoid 0:3edb3708c8c5 6099 break;
whismanoid 0:3edb3708c8c5 6100 case '7':
whismanoid 0:3edb3708c8c5 6101 {
whismanoid 0:3edb3708c8c5 6102 // recommended for hex command codes 70..7F
whismanoid 0:3edb3708c8c5 6103 }
whismanoid 0:3edb3708c8c5 6104 break;
whismanoid 0:3edb3708c8c5 6105 case '8':
whismanoid 0:3edb3708c8c5 6106 {
whismanoid 0:3edb3708c8c5 6107 // recommended for hex command codes 80..8F
whismanoid 0:3edb3708c8c5 6108 }
whismanoid 0:3edb3708c8c5 6109 break;
whismanoid 0:3edb3708c8c5 6110 case '9':
whismanoid 0:3edb3708c8c5 6111 {
whismanoid 0:3edb3708c8c5 6112 // recommended for hex command codes 90..9F
whismanoid 0:3edb3708c8c5 6113 }
whismanoid 0:3edb3708c8c5 6114 break;
whismanoid 0:3edb3708c8c5 6115 case 'a': case 'A':
whismanoid 0:3edb3708c8c5 6116 {
whismanoid 0:3edb3708c8c5 6117 // recommended for hex command codes A0..AF
whismanoid 0:3edb3708c8c5 6118 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 6119 {
whismanoid 0:3edb3708c8c5 6120 case 't': case 'T':
whismanoid 0:3edb3708c8c5 6121 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6122 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6123 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6124 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6125 // AT command: skip the prompt to avoid confusing modem detector
whismanoid 0:3edb3708c8c5 6126 return;
whismanoid 0:3edb3708c8c5 6127 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6128 }
whismanoid 0:3edb3708c8c5 6129 }
whismanoid 0:3edb3708c8c5 6130 break;
whismanoid 0:3edb3708c8c5 6131 case 'b': case 'B':
whismanoid 0:3edb3708c8c5 6132 {
whismanoid 0:3edb3708c8c5 6133 // recommended for hex command codes B0..BF
whismanoid 0:3edb3708c8c5 6134 }
whismanoid 0:3edb3708c8c5 6135 break;
whismanoid 0:3edb3708c8c5 6136 case 'c': case 'C':
whismanoid 0:3edb3708c8c5 6137 {
whismanoid 0:3edb3708c8c5 6138 // recommended for hex command codes C0..CF
whismanoid 0:3edb3708c8c5 6139 }
whismanoid 0:3edb3708c8c5 6140 break;
whismanoid 0:3edb3708c8c5 6141 case 'd': case 'D':
whismanoid 0:3edb3708c8c5 6142 {
whismanoid 0:3edb3708c8c5 6143 // recommended for hex command codes D0..DF
whismanoid 0:3edb3708c8c5 6144 }
whismanoid 0:3edb3708c8c5 6145 break;
whismanoid 0:3edb3708c8c5 6146 case 'e': case 'E':
whismanoid 0:3edb3708c8c5 6147 {
whismanoid 0:3edb3708c8c5 6148 // recommended for hex command codes E0..EF
whismanoid 0:3edb3708c8c5 6149 }
whismanoid 0:3edb3708c8c5 6150 break;
whismanoid 0:3edb3708c8c5 6151 case 'f': case 'F':
whismanoid 0:3edb3708c8c5 6152 {
whismanoid 0:3edb3708c8c5 6153 // recommended for hex command codes F0..FF
whismanoid 0:3edb3708c8c5 6154 }
whismanoid 0:3edb3708c8c5 6155 break;
whismanoid 0:3edb3708c8c5 6156 case 'x': case 'X':
whismanoid 0:3edb3708c8c5 6157 {
whismanoid 0:3edb3708c8c5 6158 }
whismanoid 0:3edb3708c8c5 6159 break;
whismanoid 0:3edb3708c8c5 6160 case 'y': case 'Y':
whismanoid 0:3edb3708c8c5 6161 {
whismanoid 0:3edb3708c8c5 6162 }
whismanoid 0:3edb3708c8c5 6163 break;
whismanoid 0:3edb3708c8c5 6164 case 'z': case 'Z':
whismanoid 0:3edb3708c8c5 6165 {
whismanoid 0:3edb3708c8c5 6166 }
whismanoid 0:3edb3708c8c5 6167 break;
whismanoid 0:3edb3708c8c5 6168 case '~': // TODO: IGNORE_AT_COMMANDS -- ignore ~~~ modem command
whismanoid 0:3edb3708c8c5 6169 {
whismanoid 0:3edb3708c8c5 6170 // TODO: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 6171 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6172 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6173 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6174 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6175 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6176 }
whismanoid 0:3edb3708c8c5 6177 break;
whismanoid 0:3edb3708c8c5 6178 case '+': // TODO: IGNORE_AT_COMMANDS -- ignore +++ modem command
whismanoid 0:3edb3708c8c5 6179 {
whismanoid 0:3edb3708c8c5 6180 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6181 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6182 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6183 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6184 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6185 }
whismanoid 0:3edb3708c8c5 6186 break;
whismanoid 10:228a52f8107d 6187 } // end switch (cmdLine[0])
whismanoid 10:228a52f8107d 6188 return false; // command not handled
whismanoid 10:228a52f8107d 6189 } // end bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 6190 #endif
whismanoid 0:3edb3708c8c5 6191
whismanoid 0:3edb3708c8c5 6192
whismanoid 10:228a52f8107d 6193 //--------------------------------------------------
whismanoid 15:2c21eaa9188b 6194 #if APPLICATION_MAX12345 // MAX12345_menu_onEOLcommandParser see Test_Menu_MAX12345.cpp
whismanoid 10:228a52f8107d 6195 bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 6196 {
whismanoid 10:228a52f8107d 6197 switch (cmdLine[0])
whismanoid 10:228a52f8107d 6198 {
whismanoid 10:228a52f8107d 6199 // TODO1: MAX12345 main_menu_onEOLcommandParser
whismanoid 0:3edb3708c8c5 6200 case '0':
whismanoid 0:3edb3708c8c5 6201 {
whismanoid 0:3edb3708c8c5 6202 // recommended for hex command codes 00..0F
whismanoid 0:3edb3708c8c5 6203 // placeholder: cmdLine.serial().printf("\r\n 3 ch=? code=? -- CODEnLOADn");
whismanoid 0:3edb3708c8c5 6204 uint16_t ch = g_MAX5715_device.channelNumber_0_3;
whismanoid 0:3edb3708c8c5 6205 uint16_t code;
whismanoid 0:3edb3708c8c5 6206 if (cmdLine.parse_uint16_dec("ch", ch))
whismanoid 0:3edb3708c8c5 6207 {
whismanoid 0:3edb3708c8c5 6208 }
whismanoid 0:3edb3708c8c5 6209 if (cmdLine.parse_uint16_dec("code", code))
whismanoid 0:3edb3708c8c5 6210 {
whismanoid 0:3edb3708c8c5 6211 }
whismanoid 0:3edb3708c8c5 6212 if (cmdLine.parse_flag("xyzzy", g_xyzzy_flag, XYZZY_FLAG))
whismanoid 0:3edb3708c8c5 6213 {
whismanoid 0:3edb3708c8c5 6214 isUpdatedSPIConfig = true;
whismanoid 0:3edb3708c8c5 6215 }
whismanoid 0:3edb3708c8c5 6216 cmdLine.serial().printf("CODEnLOADn ch=%d code=%d", ch, code);
whismanoid 0:3edb3708c8c5 6217 MAX5715_CODEnLOADn(ch, code);
whismanoid 0:3edb3708c8c5 6218 cmdLine.serial().printf("\r\n placeholder");
whismanoid 10:228a52f8107d 6219 return true; // command was handled by MAX12345
whismanoid 0:3edb3708c8c5 6220 }
whismanoid 0:3edb3708c8c5 6221 break;
whismanoid 0:3edb3708c8c5 6222 case '1':
whismanoid 0:3edb3708c8c5 6223 {
whismanoid 0:3edb3708c8c5 6224 // recommended for hex command codes 10..1F
whismanoid 0:3edb3708c8c5 6225 }
whismanoid 0:3edb3708c8c5 6226 break;
whismanoid 0:3edb3708c8c5 6227 case '2':
whismanoid 0:3edb3708c8c5 6228 {
whismanoid 0:3edb3708c8c5 6229 // recommended for hex command codes 20..2F
whismanoid 0:3edb3708c8c5 6230 }
whismanoid 0:3edb3708c8c5 6231 break;
whismanoid 0:3edb3708c8c5 6232 case '3':
whismanoid 0:3edb3708c8c5 6233 {
whismanoid 0:3edb3708c8c5 6234 // recommended for hex command codes 30..3F
whismanoid 0:3edb3708c8c5 6235 }
whismanoid 0:3edb3708c8c5 6236 break;
whismanoid 0:3edb3708c8c5 6237 case '4':
whismanoid 0:3edb3708c8c5 6238 {
whismanoid 0:3edb3708c8c5 6239 // recommended for hex command codes 40..4F
whismanoid 0:3edb3708c8c5 6240 }
whismanoid 0:3edb3708c8c5 6241 break;
whismanoid 0:3edb3708c8c5 6242 case '5':
whismanoid 0:3edb3708c8c5 6243 {
whismanoid 0:3edb3708c8c5 6244 // recommended for hex command codes 50..5F
whismanoid 0:3edb3708c8c5 6245 }
whismanoid 0:3edb3708c8c5 6246 break;
whismanoid 0:3edb3708c8c5 6247 case '6':
whismanoid 0:3edb3708c8c5 6248 {
whismanoid 0:3edb3708c8c5 6249 // recommended for hex command codes 60..6F
whismanoid 0:3edb3708c8c5 6250 }
whismanoid 0:3edb3708c8c5 6251 break;
whismanoid 0:3edb3708c8c5 6252 case '7':
whismanoid 0:3edb3708c8c5 6253 {
whismanoid 0:3edb3708c8c5 6254 // recommended for hex command codes 70..7F
whismanoid 0:3edb3708c8c5 6255 }
whismanoid 0:3edb3708c8c5 6256 break;
whismanoid 0:3edb3708c8c5 6257 case '8':
whismanoid 0:3edb3708c8c5 6258 {
whismanoid 0:3edb3708c8c5 6259 // recommended for hex command codes 80..8F
whismanoid 0:3edb3708c8c5 6260 }
whismanoid 0:3edb3708c8c5 6261 break;
whismanoid 0:3edb3708c8c5 6262 case '9':
whismanoid 0:3edb3708c8c5 6263 {
whismanoid 0:3edb3708c8c5 6264 // recommended for hex command codes 90..9F
whismanoid 0:3edb3708c8c5 6265 }
whismanoid 0:3edb3708c8c5 6266 break;
whismanoid 0:3edb3708c8c5 6267 case 'a': case 'A':
whismanoid 0:3edb3708c8c5 6268 {
whismanoid 0:3edb3708c8c5 6269 // recommended for hex command codes A0..AF
whismanoid 0:3edb3708c8c5 6270 switch (cmdLine[1])
whismanoid 0:3edb3708c8c5 6271 {
whismanoid 0:3edb3708c8c5 6272 case 't': case 'T':
whismanoid 0:3edb3708c8c5 6273 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6274 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6275 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6276 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6277 // AT command: skip the prompt to avoid confusing modem detector
whismanoid 0:3edb3708c8c5 6278 return;
whismanoid 0:3edb3708c8c5 6279 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6280 }
whismanoid 0:3edb3708c8c5 6281 }
whismanoid 0:3edb3708c8c5 6282 break;
whismanoid 0:3edb3708c8c5 6283 case 'b': case 'B':
whismanoid 0:3edb3708c8c5 6284 {
whismanoid 0:3edb3708c8c5 6285 // recommended for hex command codes B0..BF
whismanoid 0:3edb3708c8c5 6286 }
whismanoid 0:3edb3708c8c5 6287 break;
whismanoid 0:3edb3708c8c5 6288 case 'c': case 'C':
whismanoid 0:3edb3708c8c5 6289 {
whismanoid 0:3edb3708c8c5 6290 // recommended for hex command codes C0..CF
whismanoid 0:3edb3708c8c5 6291 }
whismanoid 0:3edb3708c8c5 6292 break;
whismanoid 0:3edb3708c8c5 6293 case 'd': case 'D':
whismanoid 0:3edb3708c8c5 6294 {
whismanoid 0:3edb3708c8c5 6295 // recommended for hex command codes D0..DF
whismanoid 0:3edb3708c8c5 6296 }
whismanoid 0:3edb3708c8c5 6297 break;
whismanoid 0:3edb3708c8c5 6298 case 'e': case 'E':
whismanoid 0:3edb3708c8c5 6299 {
whismanoid 0:3edb3708c8c5 6300 // recommended for hex command codes E0..EF
whismanoid 0:3edb3708c8c5 6301 }
whismanoid 0:3edb3708c8c5 6302 break;
whismanoid 0:3edb3708c8c5 6303 case 'f': case 'F':
whismanoid 0:3edb3708c8c5 6304 {
whismanoid 0:3edb3708c8c5 6305 // recommended for hex command codes F0..FF
whismanoid 0:3edb3708c8c5 6306 }
whismanoid 0:3edb3708c8c5 6307 break;
whismanoid 0:3edb3708c8c5 6308 case 'x': case 'X':
whismanoid 0:3edb3708c8c5 6309 {
whismanoid 0:3edb3708c8c5 6310 }
whismanoid 0:3edb3708c8c5 6311 break;
whismanoid 0:3edb3708c8c5 6312 case 'y': case 'Y':
whismanoid 0:3edb3708c8c5 6313 {
whismanoid 0:3edb3708c8c5 6314 }
whismanoid 0:3edb3708c8c5 6315 break;
whismanoid 0:3edb3708c8c5 6316 case 'z': case 'Z':
whismanoid 0:3edb3708c8c5 6317 {
whismanoid 0:3edb3708c8c5 6318 }
whismanoid 0:3edb3708c8c5 6319 break;
whismanoid 0:3edb3708c8c5 6320 case '~': // TODO: IGNORE_AT_COMMANDS -- ignore ~~~ modem command
whismanoid 0:3edb3708c8c5 6321 {
whismanoid 0:3edb3708c8c5 6322 // TODO: '~' is not recommended for menu commands, interferes with ssh
whismanoid 0:3edb3708c8c5 6323 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6324 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6325 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6326 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6327 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6328 }
whismanoid 0:3edb3708c8c5 6329 break;
whismanoid 0:3edb3708c8c5 6330 case '+': // TODO: IGNORE_AT_COMMANDS -- ignore +++ modem command
whismanoid 0:3edb3708c8c5 6331 {
whismanoid 0:3edb3708c8c5 6332 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6333 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6334 cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str());
whismanoid 0:3edb3708c8c5 6335 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6336 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6337 }
whismanoid 0:3edb3708c8c5 6338 break;
whismanoid 10:228a52f8107d 6339 } // end switch (cmdLine[0])
whismanoid 10:228a52f8107d 6340 return false; // command not handled
whismanoid 10:228a52f8107d 6341 } // end bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 6342 #endif
whismanoid 10:228a52f8107d 6343
whismanoid 44:a2040e43aa53 6344 //--------------------------------------------------
whismanoid 44:a2040e43aa53 6345 #if MAX11410_ONSPIPRINT
whismanoid 44:a2040e43aa53 6346 // Optional Diagnostic function to print SPI transactions
whismanoid 44:a2040e43aa53 6347 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[])
whismanoid 44:a2040e43aa53 6348 {
whismanoid 44:a2040e43aa53 6349 cmdLine_serial.serial().printf("\r\nSPI MOSI->");
whismanoid 44:a2040e43aa53 6350 for (uint8_t index = 0; index < byteCount; index++) {
whismanoid 44:a2040e43aa53 6351 cmdLine_serial.serial().printf(" 0x%2.2X", mosiData[index]);
whismanoid 44:a2040e43aa53 6352 }
whismanoid 44:a2040e43aa53 6353 cmdLine_serial.serial().printf(" MISO<-");
whismanoid 44:a2040e43aa53 6354 for (uint8_t index = 0; index < byteCount; index++) {
whismanoid 44:a2040e43aa53 6355 cmdLine_serial.serial().printf(" 0x%2.2X", misoData[index]);
whismanoid 44:a2040e43aa53 6356 }
whismanoid 44:a2040e43aa53 6357 cmdLine_serial.serial().printf(" ");
whismanoid 44:a2040e43aa53 6358 }
whismanoid 44:a2040e43aa53 6359 #endif // MAX11410_ONSPIPRINT
whismanoid 10:228a52f8107d 6360
whismanoid 10:228a52f8107d 6361 //--------------------------------------------------
whismanoid 10:228a52f8107d 6362 // main menu command-line parser
whismanoid 10:228a52f8107d 6363 // invoked by CmdLine::append(char ch) or CmdLine::idleAppendIfReadable()
whismanoid 10:228a52f8107d 6364 void main_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 10:228a52f8107d 6365 {
whismanoid 10:228a52f8107d 6366 // DIAGNOSTIC: print line buffer
whismanoid 10:228a52f8107d 6367 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 10:228a52f8107d 6368 //
whismanoid 10:228a52f8107d 6369 switch (cmdLine[0])
whismanoid 10:228a52f8107d 6370 {
whismanoid 10:228a52f8107d 6371 case '?':
whismanoid 10:228a52f8107d 6372 main_menu_status(cmdLine);
whismanoid 10:228a52f8107d 6373 main_menu_help(cmdLine);
whismanoid 10:228a52f8107d 6374 // print command prompt
whismanoid 10:228a52f8107d 6375 //cmdLine.serial().printf("\r\n>");
whismanoid 10:228a52f8107d 6376 break;
whismanoid 10:228a52f8107d 6377 case '\r': case '\n': // ignore blank line
whismanoid 10:228a52f8107d 6378 case '\0': // ignore empty line
whismanoid 10:228a52f8107d 6379 case '#': // ignore comment line
whismanoid 10:228a52f8107d 6380 // # -- lines beginning with # are comments
whismanoid 10:228a52f8107d 6381 main_menu_status(cmdLine);
whismanoid 10:228a52f8107d 6382 //~ main_menu_help(cmdLine);
whismanoid 10:228a52f8107d 6383 // print command prompt
whismanoid 10:228a52f8107d 6384 //cmdLine.serial().printf("\r\n>");
whismanoid 10:228a52f8107d 6385 break;
whismanoid 10:228a52f8107d 6386 #if ECHO_EOF_ON_EOL
whismanoid 10:228a52f8107d 6387 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 10:228a52f8107d 6388 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 10:228a52f8107d 6389 diagnostic_led_EOF();
whismanoid 10:228a52f8107d 6390 break;
whismanoid 10:228a52f8107d 6391 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 10:228a52f8107d 6392 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 10:228a52f8107d 6393 diagnostic_led_EOF();
whismanoid 10:228a52f8107d 6394 break;
whismanoid 10:228a52f8107d 6395 #endif
whismanoid 10:228a52f8107d 6396 #if APPLICATION_ArduinoPinsMonitor
whismanoid 10:228a52f8107d 6397 case '.':
whismanoid 10:228a52f8107d 6398 {
whismanoid 10:228a52f8107d 6399 // . -- SelfTest
whismanoid 10:228a52f8107d 6400 cmdLine.serial().printf("SelfTest()");
whismanoid 10:228a52f8107d 6401 SelfTest(cmdLine);
whismanoid 10:228a52f8107d 6402 }
whismanoid 10:228a52f8107d 6403 break;
whismanoid 10:228a52f8107d 6404 case '%':
whismanoid 10:228a52f8107d 6405 {
whismanoid 10:228a52f8107d 6406 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 10:228a52f8107d 6407 }
whismanoid 10:228a52f8107d 6408 break; // case '%'
whismanoid 10:228a52f8107d 6409 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 10:228a52f8107d 6410 //
whismanoid 10:228a52f8107d 6411 // Application-specific commands here
whismanoid 10:228a52f8107d 6412 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 10:228a52f8107d 6413 //
whismanoid 10:228a52f8107d 6414 #if APPLICATION_ArduinoPinsMonitor
whismanoid 10:228a52f8107d 6415 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 0:3edb3708c8c5 6416
whismanoid 0:3edb3708c8c5 6417 //
whismanoid 0:3edb3708c8c5 6418 // TODO1: add new commands here
whismanoid 0:3edb3708c8c5 6419 //
whismanoid 0:3edb3708c8c5 6420 default:
whismanoid 10:228a52f8107d 6421 #if APPLICATION_MAX5715 // main_menu_onEOLcommandParser print command prompt
whismanoid 10:228a52f8107d 6422 extern bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5715.cpp
whismanoid 10:228a52f8107d 6423 if (!MAX5715_menu_onEOLcommandParser(cmdLine))
whismanoid 10:228a52f8107d 6424 #elif APPLICATION_MAX11131 // main_menu_onEOLcommandParser print command prompt
whismanoid 10:228a52f8107d 6425 extern bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11131.cpp
whismanoid 10:228a52f8107d 6426 if (!MAX11131_menu_onEOLcommandParser(cmdLine))
whismanoid 10:228a52f8107d 6427 #elif APPLICATION_MAX5171 // main_menu_onEOLcommandParser print command prompt
whismanoid 10:228a52f8107d 6428 extern bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5171.cpp
whismanoid 10:228a52f8107d 6429 if (!MAX5171_menu_onEOLcommandParser(cmdLine))
whismanoid 10:228a52f8107d 6430 #elif APPLICATION_MAX11410 // main_menu_onEOLcommandParser print command prompt
whismanoid 10:228a52f8107d 6431 extern bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp
whismanoid 10:228a52f8107d 6432 if (!MAX11410_menu_onEOLcommandParser(cmdLine))
whismanoid 10:228a52f8107d 6433 #elif APPLICATION_MAX12345 // main_menu_onEOLcommandParser print command prompt
whismanoid 10:228a52f8107d 6434 extern bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX12345.cpp
whismanoid 10:228a52f8107d 6435 if (!MAX12345_menu_onEOLcommandParser(cmdLine))
whismanoid 10:228a52f8107d 6436 #else
whismanoid 10:228a52f8107d 6437 if (0) // not_handled_by_device_submenu
whismanoid 10:228a52f8107d 6438 #endif
whismanoid 10:228a52f8107d 6439 {
whismanoid 10:228a52f8107d 6440 cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 0:3edb3708c8c5 6441 # if HAS_DAPLINK_SERIAL
whismanoid 10:228a52f8107d 6442 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n",
whismanoid 10:228a52f8107d 6443 cmdLine.str()[0], cmdLine.str());
whismanoid 0:3edb3708c8c5 6444 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:228a52f8107d 6445 }
whismanoid 0:3edb3708c8c5 6446 } // switch (cmdLine[0])
whismanoid 0:3edb3708c8c5 6447 //
whismanoid 0:3edb3708c8c5 6448 // print command prompt
whismanoid 0:3edb3708c8c5 6449 #if APPLICATION_MAX5715 // main_menu_onEOLcommandParser print command prompt
whismanoid 0:3edb3708c8c5 6450 cmdLine.serial().printf("\r\nMAX5715 > ");
whismanoid 0:3edb3708c8c5 6451 #elif APPLICATION_MAX11131 // main_menu_onEOLcommandParser print command prompt
whismanoid 0:3edb3708c8c5 6452 cmdLine.serial().printf("\r\nMAX11131 > ");
whismanoid 0:3edb3708c8c5 6453 #elif APPLICATION_MAX5171 // main_menu_onEOLcommandParser print command prompt
whismanoid 0:3edb3708c8c5 6454 cmdLine.serial().printf("\r\nMAX5171 > ");
whismanoid 0:3edb3708c8c5 6455 #elif APPLICATION_MAX11410 // main_menu_onEOLcommandParser print command prompt
whismanoid 0:3edb3708c8c5 6456 cmdLine.serial().printf("\r\nMAX11410 > ");
whismanoid 0:3edb3708c8c5 6457 #elif APPLICATION_MAX12345 // main_menu_onEOLcommandParser print command prompt
whismanoid 0:3edb3708c8c5 6458 cmdLine.serial().printf("\r\nMAX12345 > ");
whismanoid 0:3edb3708c8c5 6459 #else
whismanoid 0:3edb3708c8c5 6460 cmdLine.serial().printf("\r\n> ");
whismanoid 0:3edb3708c8c5 6461 #endif
whismanoid 10:228a52f8107d 6462 } // end void main_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 0:3edb3708c8c5 6463
whismanoid 0:3edb3708c8c5 6464 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6465 void InitializeConfiguration()
whismanoid 0:3edb3708c8c5 6466 {
whismanoid 0:3edb3708c8c5 6467
whismanoid 0:3edb3708c8c5 6468 #if APPLICATION_MAX5715 // InitializeConfiguration
whismanoid 0:3edb3708c8c5 6469 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6470 cmdLine_DAPLINKserial.serial().printf("\r\nMAX5715_Init()");
whismanoid 0:3edb3708c8c5 6471 # endif
whismanoid 7:bf501f8cb637 6472 cmdLine_serial.serial().printf("\r\nMAX5715_Init()");
whismanoid 0:3edb3708c8c5 6473 int initResult = g_MAX5715_device.Init(); // defined in #include MAX5715.h
whismanoid 0:3edb3708c8c5 6474 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6475 cmdLine_DAPLINKserial.serial().printf("\r\nMAX5715_Init() returned %d\r\n", initResult);
whismanoid 0:3edb3708c8c5 6476 # endif
whismanoid 7:bf501f8cb637 6477 cmdLine_serial.serial().printf("\r\nMAX5715_Init() returned %d\r\n", initResult);
whismanoid 0:3edb3708c8c5 6478 #endif // APPLICATION_MAX5715
whismanoid 0:3edb3708c8c5 6479
whismanoid 0:3edb3708c8c5 6480 #if APPLICATION_MAX11131 // InitializeConfiguration
whismanoid 0:3edb3708c8c5 6481 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6482 cmdLine_DAPLINKserial.serial().printf("\r\nMAX11131_Init()");
whismanoid 0:3edb3708c8c5 6483 # endif
whismanoid 7:bf501f8cb637 6484 cmdLine_serial.serial().printf("\r\nMAX11131_Init()");
whismanoid 0:3edb3708c8c5 6485 g_MAX11131_device.Init(); // defined in #include MAX11131.h
whismanoid 0:3edb3708c8c5 6486 #endif // APPLICATION_MAX11131
whismanoid 0:3edb3708c8c5 6487
whismanoid 0:3edb3708c8c5 6488 #if APPLICATION_MAX5171 // InitializeConfiguration
whismanoid 0:3edb3708c8c5 6489 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6490 cmdLine_DAPLINKserial.serial().printf("\r\nMAX5171_Init()");
whismanoid 0:3edb3708c8c5 6491 # endif
whismanoid 7:bf501f8cb637 6492 cmdLine_serial.serial().printf("\r\nMAX5171_Init()");
whismanoid 0:3edb3708c8c5 6493 int initResult = g_MAX5171_device.Init(); // defined in #include MAX5171.h
whismanoid 0:3edb3708c8c5 6494 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6495 cmdLine_DAPLINKserial.serial().printf("\r\nMAX5171_Init() returned %d\r\n", initResult);
whismanoid 0:3edb3708c8c5 6496 # endif
whismanoid 7:bf501f8cb637 6497 cmdLine_serial.serial().printf("\r\nMAX5171_Init() returned %d\r\n", initResult);
whismanoid 0:3edb3708c8c5 6498 #endif // APPLICATION_MAX5171
whismanoid 0:3edb3708c8c5 6499
whismanoid 0:3edb3708c8c5 6500 #if APPLICATION_MAX11410 // InitializeConfiguration
whismanoid 0:3edb3708c8c5 6501 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6502 cmdLine_DAPLINKserial.serial().printf("\r\nMAX11410_Init()");
whismanoid 0:3edb3708c8c5 6503 # endif
whismanoid 7:bf501f8cb637 6504 cmdLine_serial.serial().printf("\r\nMAX11410_Init()");
whismanoid 0:3edb3708c8c5 6505 int initResult = g_MAX11410_device.Init(); // defined in #include MAX11410.h
whismanoid 0:3edb3708c8c5 6506 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6507 cmdLine_DAPLINKserial.serial().printf("\r\nMAX11410_Init() returned %d\r\n", initResult);
whismanoid 0:3edb3708c8c5 6508 # endif
whismanoid 7:bf501f8cb637 6509 cmdLine_serial.serial().printf("\r\nMAX11410_Init() returned %d\r\n", initResult);
whismanoid 44:a2040e43aa53 6510 # if MAX11410_ONSPIPRINT
whismanoid 44:a2040e43aa53 6511 // Optional Diagnostic function to print SPI transactions
whismanoid 44:a2040e43aa53 6512 g_MAX11410_device.onSPIprint = onSPIprint_handler;
whismanoid 44:a2040e43aa53 6513 # endif
whismanoid 0:3edb3708c8c5 6514 #endif // APPLICATION_MAX11410
whismanoid 0:3edb3708c8c5 6515
whismanoid 0:3edb3708c8c5 6516 #if APPLICATION_MAX12345 // InitializeConfiguration
whismanoid 0:3edb3708c8c5 6517 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6518 cmdLine_DAPLINKserial.serial().printf("\r\nMAX12345_Init()");
whismanoid 0:3edb3708c8c5 6519 # endif
whismanoid 7:bf501f8cb637 6520 cmdLine_serial.serial().printf("\r\nMAX12345_Init()");
whismanoid 15:2c21eaa9188b 6521 int initResult = g_MAX12345_device.Init(); // defined in #include MAX12345.h
whismanoid 0:3edb3708c8c5 6522 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6523 cmdLine_DAPLINKserial.serial().printf("\r\nMAX12345_Init() returned %d\r\n", initResult);
whismanoid 0:3edb3708c8c5 6524 # endif
whismanoid 7:bf501f8cb637 6525 cmdLine_serial.serial().printf("\r\nMAX12345_Init() returned %d\r\n", initResult);
whismanoid 0:3edb3708c8c5 6526 #endif // APPLICATION_MAX12345
whismanoid 0:3edb3708c8c5 6527
whismanoid 0:3edb3708c8c5 6528 }
whismanoid 0:3edb3708c8c5 6529
whismanoid 0:3edb3708c8c5 6530 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6531 // diagnostic rbg led GREEN
whismanoid 0:3edb3708c8c5 6532 void diagnostic_led_EOF()
whismanoid 0:3edb3708c8c5 6533 {
whismanoid 0:3edb3708c8c5 6534 #if USE_LEDS
whismanoid 0:3edb3708c8c5 6535 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:3edb3708c8c5 6536 // 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 0:3edb3708c8c5 6537 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 0:3edb3708c8c5 6538 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 0:3edb3708c8c5 6539 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 0:3edb3708c8c5 6540 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:3edb3708c8c5 6541 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 0:3edb3708c8c5 6542 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 0:3edb3708c8c5 6543 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 0:3edb3708c8c5 6544 #endif // USE_LEDS
whismanoid 0:3edb3708c8c5 6545 }
whismanoid 0:3edb3708c8c5 6546
whismanoid 0:3edb3708c8c5 6547 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6548 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 0:3edb3708c8c5 6549 // handled as immediate command, do not append to buffer
whismanoid 0:3edb3708c8c5 6550 void on_immediate_0x21() // Unicode (U+0021) ! EXCLAMATION MARK
whismanoid 0:3edb3708c8c5 6551 {
whismanoid 0:3edb3708c8c5 6552 #if USE_LEDS
whismanoid 0:3edb3708c8c5 6553 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 0:3edb3708c8c5 6554 #endif // USE_LEDS
whismanoid 0:3edb3708c8c5 6555 InitializeConfiguration();
whismanoid 0:3edb3708c8c5 6556 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6557 }
whismanoid 0:3edb3708c8c5 6558
whismanoid 0:3edb3708c8c5 6559 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6560 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 0:3edb3708c8c5 6561 // handled as immediate command, do not append to buffer
whismanoid 0:3edb3708c8c5 6562 void on_immediate_0x7b() // Unicode (U+007B) { LEFT CURLY BRACKET
whismanoid 0:3edb3708c8c5 6563 {
whismanoid 0:3edb3708c8c5 6564 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6565 onButton2FallingEdge();
whismanoid 0:3edb3708c8c5 6566 #endif
whismanoid 0:3edb3708c8c5 6567 }
whismanoid 0:3edb3708c8c5 6568
whismanoid 0:3edb3708c8c5 6569 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6570 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 0:3edb3708c8c5 6571 // handled as immediate command, do not append to buffer
whismanoid 0:3edb3708c8c5 6572 void on_immediate_0x7d() // Unicode (U+007D) } RIGHT CURLY BRACKET
whismanoid 0:3edb3708c8c5 6573 {
whismanoid 0:3edb3708c8c5 6574 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6575 onButton1FallingEdge();
whismanoid 0:3edb3708c8c5 6576 #endif
whismanoid 0:3edb3708c8c5 6577 }
whismanoid 0:3edb3708c8c5 6578
whismanoid 0:3edb3708c8c5 6579 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6580 // based on example code: https://os.mbed.com/docs/v5.7/reference/pwmout.html
whismanoid 0:3edb3708c8c5 6581 int main()
whismanoid 0:3edb3708c8c5 6582 {
whismanoid 0:3edb3708c8c5 6583 // Configure serial ports
whismanoid 0:3edb3708c8c5 6584 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 6585 // Note: DAPLINKserial interferes with the timer tick interrupt. Try faster baud rate?
whismanoid 0:3edb3708c8c5 6586 DAPLINKserial.baud(115200); // default 9600 baud
whismanoid 7:bf501f8cb637 6587 //serial.baud(9600); // class USBSerial has no baud function
whismanoid 0:3edb3708c8c5 6588 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6589 DAPLINKserial.printf("\r\n\r\nDAPLINK_SERIAL: main() startup\r\n");
whismanoid 0:3edb3708c8c5 6590 # endif
whismanoid 0:3edb3708c8c5 6591 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6592 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 6593 // MAX32625MBED crash if DAPLINKserial.baud(anything other than 9600 baud)
whismanoid 0:3edb3708c8c5 6594 // xxx DAPLINKserial.baud(115200); // default 9600 baud
whismanoid 7:bf501f8cb637 6595 //serial.baud(9600); // class USBSerial has no baud function
whismanoid 0:3edb3708c8c5 6596 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6597 DAPLINKserial.printf("\r\n\r\nDAPLINK_SERIAL: main() startup\r\n");
whismanoid 0:3edb3708c8c5 6598 # endif
whismanoid 0:3edb3708c8c5 6599 //--------------------------------------------------
whismanoid 0:3edb3708c8c5 6600 #elif defined(TARGET_LPC1768)
whismanoid 7:bf501f8cb637 6601 serial.baud(115200); // default 9600 baud
whismanoid 0:3edb3708c8c5 6602 #else
whismanoid 0:3edb3708c8c5 6603 // unknown target
whismanoid 0:3edb3708c8c5 6604 #endif
whismanoid 7:bf501f8cb637 6605 cmdLine_serial.clear();
whismanoid 7:bf501f8cb637 6606 //~ cmdLine_serial.serial().printf("\r\n cmdLine_serial.serial().printf test\r\n");
whismanoid 7:bf501f8cb637 6607 cmdLine_serial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 33:1f2e497afdb0 6608 cmdLine_serial.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 33:1f2e497afdb0 6609 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 7:bf501f8cb637 6610 cmdLine_serial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 7:bf501f8cb637 6611 cmdLine_serial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 7:bf501f8cb637 6612 cmdLine_serial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 0:3edb3708c8c5 6613 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6614 cmdLine_DAPLINKserial.clear();
whismanoid 0:3edb3708c8c5 6615 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 0:3edb3708c8c5 6616 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 0:3edb3708c8c5 6617 /// @todo CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 0:3edb3708c8c5 6618 cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 0:3edb3708c8c5 6619 cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 0:3edb3708c8c5 6620 cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 0:3edb3708c8c5 6621 # endif
whismanoid 0:3edb3708c8c5 6622
whismanoid 0:3edb3708c8c5 6623
whismanoid 0:3edb3708c8c5 6624 print_banner();
whismanoid 0:3edb3708c8c5 6625
whismanoid 0:3edb3708c8c5 6626 //#ifdef SCOPE_TRIG_PIN
whismanoid 0:3edb3708c8c5 6627 // scopePinP12 = 0;
whismanoid 0:3edb3708c8c5 6628 // scopePinP12 = 1;
whismanoid 0:3edb3708c8c5 6629 //#endif // SCOPE_TRIG_PIN
whismanoid 0:3edb3708c8c5 6630
whismanoid 0:3edb3708c8c5 6631 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6632 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 0:3edb3708c8c5 6633 # else
whismanoid 0:3edb3708c8c5 6634 button1.fall(&onButton1FallingEdge);
whismanoid 0:3edb3708c8c5 6635 # endif
whismanoid 0:3edb3708c8c5 6636 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6637 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6638 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 0:3edb3708c8c5 6639 # else
whismanoid 0:3edb3708c8c5 6640 button2.fall(&onButton2FallingEdge);
whismanoid 0:3edb3708c8c5 6641 # endif
whismanoid 0:3edb3708c8c5 6642 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6643
whismanoid 16:3c75011e705a 6644 #if defined(TARGET_MAX32630)
whismanoid 16:3c75011e705a 6645 // Timer tick needs to be the highest priority (priority 0, the default).
whismanoid 16:3c75011e705a 6646 // DAPLINKserial interferes with the timer tick interrupt.
whismanoid 16:3c75011e705a 6647 // Lower the priority of the serial port interrupts to avoid disrupting onTimerTick() handler.
whismanoid 16:3c75011e705a 6648 NVIC_SetPriority(UART0_IRQn, 2); // reservedBlueToothSerial(P0_1, P0_0) // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6649 NVIC_SetPriority(UART1_IRQn, 2); // DAPLINKserial(P2_1, P2_0) // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6650 NVIC_SetPriority(UART2_IRQn, 2); // reservedSerial(P3_1, P3_0) // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6651 NVIC_SetPriority(UART3_IRQn, 2); // reservedSerial(P5_4, P5_3) // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6652 NVIC_SetPriority(GPIO_P0_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6653 NVIC_SetPriority(GPIO_P1_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6654 NVIC_SetPriority(GPIO_P2_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6655 NVIC_SetPriority(GPIO_P3_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6656 NVIC_SetPriority(GPIO_P4_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6657 NVIC_SetPriority(GPIO_P5_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6658 NVIC_SetPriority(GPIO_P6_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6659 NVIC_SetPriority(GPIO_P7_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6660 NVIC_SetPriority(GPIO_P8_IRQn, 2); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6661 //~ NVIC_SetPriority(RTC0_IRQn, 0); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6662 //~ NVIC_SetPriority(RTC3_IRQn, 0); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6663 //~ NVIC_SetPriority(US_TIMER_IRQn, 0); // 0=highest priority; 1=lower
whismanoid 16:3c75011e705a 6664 #endif
whismanoid 16:3c75011e705a 6665
whismanoid 0:3edb3708c8c5 6666 #if HAS_SPI
whismanoid 0:3edb3708c8c5 6667 // spi init
whismanoid 0:3edb3708c8c5 6668 // mode | POL PHA
whismanoid 0:3edb3708c8c5 6669 // -----+--------
whismanoid 0:3edb3708c8c5 6670 // 0 | 0 0
whismanoid 0:3edb3708c8c5 6671 // 1 | 0 1
whismanoid 0:3edb3708c8c5 6672 // 2 | 1 0
whismanoid 0:3edb3708c8c5 6673 // 3 | 1 1
whismanoid 0:3edb3708c8c5 6674 //~ spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 0:3edb3708c8c5 6675 //~ spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 0:3edb3708c8c5 6676 //~ spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 0:3edb3708c8c5 6677 //~ spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 0:3edb3708c8c5 6678 //
whismanoid 0:3edb3708c8c5 6679 //~ spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 0:3edb3708c8c5 6680 //~ spi.frequency(9600000); // int SCLK_Hz=9600000 = 9.6MHz = 96MHz/10
whismanoid 0:3edb3708c8c5 6681 //~ spi.frequency(10666666); // int SCLK_Hz=10666666 = 10.6MHz = 96MHz/9
whismanoid 0:3edb3708c8c5 6682 //~ spi.frequency(12000000); // int SCLK_Hz=12000000 = 12MHz = 96MHz/8
whismanoid 0:3edb3708c8c5 6683 //~ spi.frequency(13714286); // int SCLK_Hz=13714286 = 13.7MHz = 96MHz/7
whismanoid 0:3edb3708c8c5 6684 //~ spi.frequency(16000000); // int SCLK_Hz=16000000 = 16MHz = 96MHz/6
whismanoid 0:3edb3708c8c5 6685 //~ spi.frequency(19200000); // int SCLK_Hz=19200000 = 19.2MHz = 96MHz/5
whismanoid 0:3edb3708c8c5 6686 //~ spi.frequency(24000000); // int SCLK_Hz=24000000 = 24MHz = 96MHz/4
whismanoid 0:3edb3708c8c5 6687 //~ spi.frequency(32000000); // int SCLK_Hz=32000000 = 32MHz = 96MHz/3
whismanoid 0:3edb3708c8c5 6688 //~ spi.frequency(48000000); // int SCLK_Hz=48000000 = 48MHz = 96MHz/2
whismanoid 0:3edb3708c8c5 6689 // unspecified SPI device
whismanoid 0:3edb3708c8c5 6690 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 0:3edb3708c8c5 6691 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 0:3edb3708c8c5 6692 spi_cs = 1;
whismanoid 0:3edb3708c8c5 6693 #endif
whismanoid 0:3edb3708c8c5 6694
whismanoid 0:3edb3708c8c5 6695 #if HAS_I2C
whismanoid 0:3edb3708c8c5 6696 // i2c init
whismanoid 0:3edb3708c8c5 6697 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 0:3edb3708c8c5 6698 // i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 0:3edb3708c8c5 6699 #else
whismanoid 0:3edb3708c8c5 6700 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:3edb3708c8c5 6701 #if HAS_digitalInOut14
whismanoid 0:3edb3708c8c5 6702 // DigitalInOut digitalInOut14(P1_6, PIN_INPUT, PullUp, 1); // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:3edb3708c8c5 6703 digitalInOut14.input();
whismanoid 0:3edb3708c8c5 6704 #endif
whismanoid 0:3edb3708c8c5 6705 #if HAS_digitalInOut15
whismanoid 0:3edb3708c8c5 6706 // DigitalInOut digitalInOut15(P1_7, PIN_INPUT, PullUp, 1); // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:3edb3708c8c5 6707 digitalInOut15.input();
whismanoid 0:3edb3708c8c5 6708 #endif
whismanoid 0:3edb3708c8c5 6709 #if HAS_digitalInOut16
whismanoid 0:3edb3708c8c5 6710 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:3edb3708c8c5 6711 // PullUp-->3.4V, PullDown-->1.7V, PullNone-->3.5V, OpenDrain-->0.00V
whismanoid 0:3edb3708c8c5 6712 //DigitalInOut digitalInOut16(P3_4, PIN_INPUT, OpenDrain, 0); // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:3edb3708c8c5 6713 digitalInOut16.input();
whismanoid 0:3edb3708c8c5 6714 #endif
whismanoid 0:3edb3708c8c5 6715 #if HAS_digitalInOut17
whismanoid 0:3edb3708c8c5 6716 //DigitalInOut digitalInOut17(P3_5, PIN_INPUT, OpenDrain, 0); // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:3edb3708c8c5 6717 digitalInOut17.input();
whismanoid 0:3edb3708c8c5 6718 #endif
whismanoid 0:3edb3708c8c5 6719 #endif
whismanoid 0:3edb3708c8c5 6720
whismanoid 0:3edb3708c8c5 6721 #if USE_LEDS
whismanoid 0:3edb3708c8c5 6722 #if defined(TARGET_MAX32630)
whismanoid 0:3edb3708c8c5 6723 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 0:3edb3708c8c5 6724 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6725 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 0:3edb3708c8c5 6726 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6727 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 0:3edb3708c8c5 6728 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6729 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:3edb3708c8c5 6730 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6731 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:3edb3708c8c5 6732 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6733 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:3edb3708c8c5 6734 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6735 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:3edb3708c8c5 6736 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6737 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 0:3edb3708c8c5 6738 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6739 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:3edb3708c8c5 6740 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 0:3edb3708c8c5 6741 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6742 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 0:3edb3708c8c5 6743 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6744 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 0:3edb3708c8c5 6745 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6746 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:3edb3708c8c5 6747 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6748 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:3edb3708c8c5 6749 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6750 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:3edb3708c8c5 6751 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6752 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:3edb3708c8c5 6753 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6754 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 0:3edb3708c8c5 6755 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 0:3edb3708c8c5 6756 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 0:3edb3708c8c5 6757 led1 = LED_ON;
whismanoid 0:3edb3708c8c5 6758 led2 = LED_OFF;
whismanoid 0:3edb3708c8c5 6759 led3 = LED_OFF;
whismanoid 0:3edb3708c8c5 6760 led4 = LED_OFF;
whismanoid 0:3edb3708c8c5 6761 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 0:3edb3708c8c5 6762 //led1 = LED_ON;
whismanoid 0:3edb3708c8c5 6763 led2 = LED_ON;
whismanoid 0:3edb3708c8c5 6764 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 0:3edb3708c8c5 6765 led1 = LED_OFF;
whismanoid 0:3edb3708c8c5 6766 //led2 = LED_ON;
whismanoid 0:3edb3708c8c5 6767 led3 = LED_ON;
whismanoid 0:3edb3708c8c5 6768 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 0:3edb3708c8c5 6769 led2 = LED_OFF;
whismanoid 0:3edb3708c8c5 6770 //led3 = LED_ON;
whismanoid 0:3edb3708c8c5 6771 led4 = LED_ON;
whismanoid 0:3edb3708c8c5 6772 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 0:3edb3708c8c5 6773 led3 = LED_OFF;
whismanoid 0:3edb3708c8c5 6774 led4 = LED_ON;
whismanoid 0:3edb3708c8c5 6775 //
whismanoid 0:3edb3708c8c5 6776 #endif // target definition
whismanoid 0:3edb3708c8c5 6777 #endif
whismanoid 0:3edb3708c8c5 6778
whismanoid 0:3edb3708c8c5 6779 // cmd_TE();
whismanoid 0:3edb3708c8c5 6780
whismanoid 0:3edb3708c8c5 6781 #if USE_LEDS
whismanoid 0:3edb3708c8c5 6782 rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:3edb3708c8c5 6783 #endif // USE_LEDS
whismanoid 0:3edb3708c8c5 6784 InitializeConfiguration();
whismanoid 0:3edb3708c8c5 6785
whismanoid 0:3edb3708c8c5 6786 while (1) {
whismanoid 0:3edb3708c8c5 6787 #if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 0:3edb3708c8c5 6788 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 0:3edb3708c8c5 6789 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 0:3edb3708c8c5 6790 # if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6791 static int button1_value_prev = 1;
whismanoid 0:3edb3708c8c5 6792 static int button1_value_now = 1;
whismanoid 0:3edb3708c8c5 6793 button1_value_prev = button1_value_now;
whismanoid 0:3edb3708c8c5 6794 button1_value_now = button1.read();
whismanoid 0:3edb3708c8c5 6795 if ((button1_value_prev - button1_value_now) == 1)
whismanoid 0:3edb3708c8c5 6796 {
whismanoid 0:3edb3708c8c5 6797 // on button1 falling edge (button1 press)
whismanoid 0:3edb3708c8c5 6798 onButton1FallingEdge();
whismanoid 0:3edb3708c8c5 6799 }
whismanoid 0:3edb3708c8c5 6800 # endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6801 # if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6802 static int button2_value_prev = 1;
whismanoid 0:3edb3708c8c5 6803 static int button2_value_now = 1;
whismanoid 0:3edb3708c8c5 6804 button2_value_prev = button2_value_now;
whismanoid 0:3edb3708c8c5 6805 button2_value_now = button2.read();
whismanoid 0:3edb3708c8c5 6806 if ((button2_value_prev - button2_value_now) == 1)
whismanoid 0:3edb3708c8c5 6807 {
whismanoid 0:3edb3708c8c5 6808 // on button2 falling edge (button2 press)
whismanoid 0:3edb3708c8c5 6809 onButton2FallingEdge();
whismanoid 0:3edb3708c8c5 6810 }
whismanoid 0:3edb3708c8c5 6811 # endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 0:3edb3708c8c5 6812 #endif
whismanoid 0:3edb3708c8c5 6813 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6814 if (DAPLINKserial.readable()) {
whismanoid 0:3edb3708c8c5 6815 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 0:3edb3708c8c5 6816 }
whismanoid 0:3edb3708c8c5 6817 # endif // HAS_DAPLINK_SERIAL
whismanoid 7:bf501f8cb637 6818 if (serial.readable()) {
whismanoid 7:bf501f8cb637 6819 int c = serial.getc();
whismanoid 7:bf501f8cb637 6820 cmdLine_serial.append(c);
whismanoid 0:3edb3708c8c5 6821 #if IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6822 # if HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6823 cmdLine_DAPLINKserial.serial().printf("%c", c);
whismanoid 0:3edb3708c8c5 6824 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:3edb3708c8c5 6825 #endif // IGNORE_AT_COMMANDS
whismanoid 0:3edb3708c8c5 6826 //
whismanoid 0:3edb3708c8c5 6827 }
whismanoid 0:3edb3708c8c5 6828 } // while(1)
whismanoid 0:3edb3708c8c5 6829 }