Internal_Datalogger but with USB support removed (for MAX40108 Demo board), proof of concept that MAX32625 can be used successfully with VDDB(USB) left unpowered, as long as the USB library is not used.

Dependencies:   max32625pico CmdLine

Committer:
whismanoid
Date:
Fri Apr 23 00:22:00 2021 -0700
Revision:
20:78ef670955d4
Parent:
19:5ff09c8e9daf
Child:
21:ac062a97a71d
HAS_AUX_SERIAL_HELP_BRIEF condense help string for >> args

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:cb44e2e9ec4c 1 // /*******************************************************************************
whismanoid 0:cb44e2e9ec4c 2 // * Copyright (C) 2020 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:cb44e2e9ec4c 3 // *
whismanoid 0:cb44e2e9ec4c 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:cb44e2e9ec4c 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 0:cb44e2e9ec4c 6 // * to deal in the Software without restriction, including without limitation
whismanoid 0:cb44e2e9ec4c 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:cb44e2e9ec4c 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:cb44e2e9ec4c 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 0:cb44e2e9ec4c 10 // *
whismanoid 0:cb44e2e9ec4c 11 // * The above copyright notice and this permission notice shall be included
whismanoid 0:cb44e2e9ec4c 12 // * in all copies or substantial portions of the Software.
whismanoid 0:cb44e2e9ec4c 13 // *
whismanoid 0:cb44e2e9ec4c 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:cb44e2e9ec4c 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:cb44e2e9ec4c 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:cb44e2e9ec4c 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:cb44e2e9ec4c 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:cb44e2e9ec4c 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:cb44e2e9ec4c 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:cb44e2e9ec4c 21 // *
whismanoid 0:cb44e2e9ec4c 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:cb44e2e9ec4c 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:cb44e2e9ec4c 24 // * Products, Inc. Branding Policy.
whismanoid 0:cb44e2e9ec4c 25 // *
whismanoid 0:cb44e2e9ec4c 26 // * The mere transfer of this software does not imply any licenses
whismanoid 0:cb44e2e9ec4c 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:cb44e2e9ec4c 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:cb44e2e9ec4c 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:cb44e2e9ec4c 30 // * ownership rights.
whismanoid 0:cb44e2e9ec4c 31 // *******************************************************************************
whismanoid 0:cb44e2e9ec4c 32 // */
whismanoid 0:cb44e2e9ec4c 33 // *******************************************************************************
whismanoid 0:cb44e2e9ec4c 34 // COM port settings are 9600 baud 8N1
whismanoid 0:cb44e2e9ec4c 35 // *******************************************************************************
whismanoid 19:5ff09c8e9daf 36 // Support custom target MAX40108DEMOP2U9 based on MAX32625PICO but MAX32625_NO_BOOT
whismanoid 19:5ff09c8e9daf 37 // file custom_targets.json:
whismanoid 19:5ff09c8e9daf 38 // {
whismanoid 19:5ff09c8e9daf 39 // "MAX40108DEMOP2U9": {
whismanoid 19:5ff09c8e9daf 40 // "inherits": ["MAX32625_BASE"],
whismanoid 19:5ff09c8e9daf 41 // "macros_remove": [],
whismanoid 19:5ff09c8e9daf 42 // "macros_add": ["MAX32625_NO_BOOT"]
whismanoid 19:5ff09c8e9daf 43 // }
whismanoid 19:5ff09c8e9daf 44 // }
whismanoid 19:5ff09c8e9daf 45 // files copied from mbed-os\targets\TARGET_Maxim\TARGET_MAX32625\TARGET_MAX32625PICO
whismanoid 19:5ff09c8e9daf 46 // file TARGET_MAX40108DEMOP2U9\PeripheralNames.h -- copied from TARGET_MAX32625PICO
whismanoid 19:5ff09c8e9daf 47 // file TARGET_MAX40108DEMOP2U9\PinNames.h -- copied from TARGET_MAX32625PICO
whismanoid 19:5ff09c8e9daf 48 // files copied from mbed-os\targets\TARGET_Maxim\TARGET_MAX32625\device\___\TARGET_MAX32625_NO_BOOT
whismanoid 19:5ff09c8e9daf 49 // file TARGET_MAX40108DEMOP2U9\device\TOOLCHAIN_ARM_STD\MAX32625.sct
whismanoid 19:5ff09c8e9daf 50 // file TARGET_MAX40108DEMOP2U9\device\TOOLCHAIN_GCC_ARM\max32625.ld
whismanoid 19:5ff09c8e9daf 51 // file TARGET_MAX40108DEMOP2U9\device\TOOLCHAIN_IAR\MAX32625.icf
whismanoid 19:5ff09c8e9daf 52 // file mbed_app.json:
whismanoid 19:5ff09c8e9daf 53 // {
whismanoid 19:5ff09c8e9daf 54 // "config": {
whismanoid 19:5ff09c8e9daf 55 // },
whismanoid 19:5ff09c8e9daf 56 // "macros": [
whismanoid 19:5ff09c8e9daf 57 // "MAX40108_DEMO=9"
whismanoid 19:5ff09c8e9daf 58 // ],
whismanoid 19:5ff09c8e9daf 59 // "target_overrides": {
whismanoid 19:5ff09c8e9daf 60 // }
whismanoid 19:5ff09c8e9daf 61 // }
whismanoid 19:5ff09c8e9daf 62 // *******************************************************************************
whismanoid 19:5ff09c8e9daf 63 // Validating project global defines from mbed_app.json "macros": []
whismanoid 19:5ff09c8e9daf 64 #ifndef MAX40108_DEMO
whismanoid 19:5ff09c8e9daf 65 #warning "MAX40108_DEMO not defined, missing mbed_app.json"
whismanoid 19:5ff09c8e9daf 66 #else // #ifndef MAX40108_DEMO
whismanoid 19:5ff09c8e9daf 67 #warning "Note: MAX40108_DEMO is defined, which is expected"
whismanoid 19:5ff09c8e9daf 68 #if (MAX40108_DEMO)==(9)
whismanoid 19:5ff09c8e9daf 69 #warning "Note: MAX40108_DEMO is defined with the expected value of 9"
whismanoid 19:5ff09c8e9daf 70 #elif (MAX40108_DEMO)==(5)
whismanoid 19:5ff09c8e9daf 71 #warning "Note: MAX40108_DEMO is defined with the wrong value 5"
whismanoid 19:5ff09c8e9daf 72 #else
whismanoid 19:5ff09c8e9daf 73 #warning "Note: MAX40108_DEMO is defined, but with an unsupported value"
whismanoid 19:5ff09c8e9daf 74 #endif
whismanoid 19:5ff09c8e9daf 75 #endif // #ifndef MAX40108_DEMO
whismanoid 19:5ff09c8e9daf 76 // *******************************************************************************
whismanoid 14:d4092094dbfe 77 #ifndef MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 78 // #define MAX40108_DEMO 5 for U5, or #define MAX40108_DEMO 9 for U9 in banner
whismanoid 17:9397ea3ea7e9 79 #define MAX40108_DEMO 9
whismanoid 15:37c83ec50ea0 80 #define HAS_DAPLINK_SERIAL 1
whismanoid 14:d4092094dbfe 81 #endif // MAX40108_DEMO
whismanoid 0:cb44e2e9ec4c 82 //---------- CODE GENERATOR: DataLogHelloCppCodeList
whismanoid 0:cb44e2e9ec4c 83 // CODE GENERATOR: example code includes
whismanoid 0:cb44e2e9ec4c 84
whismanoid 0:cb44e2e9ec4c 85 // example code includes
whismanoid 0:cb44e2e9ec4c 86 // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 0:cb44e2e9ec4c 87 #include "mbed.h"
whismanoid 0:cb44e2e9ec4c 88 // Platforms:
whismanoid 0:cb44e2e9ec4c 89 // - MAX32625MBED
whismanoid 0:cb44e2e9ec4c 90 // - supports mbed-os-5.11, requires USBDevice library
whismanoid 0:cb44e2e9ec4c 91 // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 0:cb44e2e9ec4c 92 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 93 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 94 // - MAX32600MBED
whismanoid 7:949ec8581f5e 95 // - Please note the last supported version is Mbed OS 6.3.
whismanoid 0:cb44e2e9ec4c 96 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 97 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 98 // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 0:cb44e2e9ec4c 99 // - NUCLEO_F446RE
whismanoid 0:cb44e2e9ec4c 100 // - remove USBDevice library
whismanoid 0:cb44e2e9ec4c 101 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 102 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 103 // - NUCLEO_F401RE
whismanoid 0:cb44e2e9ec4c 104 // - remove USBDevice library
whismanoid 0:cb44e2e9ec4c 105 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 106 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 107 // - MAX32630FTHR
whismanoid 0:cb44e2e9ec4c 108 // - #include "max32630fthr.h"
whismanoid 7:949ec8581f5e 109 // - add http://developer.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 0:cb44e2e9ec4c 110 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 111 // - MAX32620FTHR
whismanoid 0:cb44e2e9ec4c 112 // - #include "MAX32620FTHR.h"
whismanoid 0:cb44e2e9ec4c 113 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 114 // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 0:cb44e2e9ec4c 115 // - not tested yet
whismanoid 0:cb44e2e9ec4c 116 // - MAX32625PICO
whismanoid 0:cb44e2e9ec4c 117 // - #include "max32625pico.h"
whismanoid 0:cb44e2e9ec4c 118 // - add https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 0:cb44e2e9ec4c 119 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 120 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 121 // - not tested yet
whismanoid 0:cb44e2e9ec4c 122 // - see https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 0:cb44e2e9ec4c 123 // - see https://os.mbed.com/users/switches/code/PICO_board_demo/
whismanoid 0:cb44e2e9ec4c 124 // - see https://os.mbed.com/users/switches/code/PICO_USB_I2C_SPI/
whismanoid 0:cb44e2e9ec4c 125 // - see https://os.mbed.com/users/switches/code/SerialInterface/
whismanoid 0:cb44e2e9ec4c 126 // - Note: To load the MAX32625PICO firmware, hold the button while
whismanoid 0:cb44e2e9ec4c 127 // connecting the USB cable, then copy firmware bin file
whismanoid 0:cb44e2e9ec4c 128 // to the MAINTENANCE drive.
whismanoid 0:cb44e2e9ec4c 129 // - see https://os.mbed.com/platforms/MAX32625PICO/
whismanoid 0:cb44e2e9ec4c 130 // - see https://os.mbed.com/teams/MaximIntegrated/wiki/MAX32625PICO-Firmware-Updates
whismanoid 0:cb44e2e9ec4c 131 //
whismanoid 0:cb44e2e9ec4c 132 // end Platform_Include_Boilerplate
whismanoid 0:cb44e2e9ec4c 133
whismanoid 0:cb44e2e9ec4c 134 //--------------------------------------------------
whismanoid 3:9055e17e181a 135 // Option to use SPI connected ADC
whismanoid 3:9055e17e181a 136 #ifndef SPI_ADC_DeviceName
whismanoid 9:45f98573eb6d 137 #define SPI_ADC_DeviceName MAX11410
whismanoid 3:9055e17e181a 138 #undef SPI_ADC_DeviceName
whismanoid 3:9055e17e181a 139 #endif
whismanoid 3:9055e17e181a 140 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 141 #include "MAX11410.h"
whismanoid 3:9055e17e181a 142 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 143
whismanoid 0:cb44e2e9ec4c 144 #if defined(TARGET)
whismanoid 0:cb44e2e9ec4c 145 // TARGET_NAME macros from targets/TARGET_Maxim/TARGET_MAX32625/device/mxc_device.h
whismanoid 0:cb44e2e9ec4c 146 // Create a string definition for the TARGET
whismanoid 0:cb44e2e9ec4c 147 #define STRING_ARG(arg) #arg
whismanoid 0:cb44e2e9ec4c 148 #define STRING_NAME(name) STRING_ARG(name)
whismanoid 0:cb44e2e9ec4c 149 #define TARGET_NAME STRING_NAME(TARGET)
whismanoid 0:cb44e2e9ec4c 150 #elif defined(TARGET_MAX32600)
whismanoid 0:cb44e2e9ec4c 151 #define TARGET_NAME "MAX32600"
whismanoid 0:cb44e2e9ec4c 152 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 153 #define TARGET_NAME "LPC1768"
whismanoid 0:cb44e2e9ec4c 154 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 155 #define TARGET_NAME "NUCLEO_F446RE"
whismanoid 0:cb44e2e9ec4c 156 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 157 #define TARGET_NAME "NUCLEO_F401RE"
whismanoid 0:cb44e2e9ec4c 158 #else
whismanoid 0:cb44e2e9ec4c 159 #error TARGET NOT DEFINED
whismanoid 0:cb44e2e9ec4c 160 #endif
whismanoid 0:cb44e2e9ec4c 161 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 162 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 163 // TARGET=MAX32630FTHR ARM Cortex-M4F 96MHz 2048kB Flash 512kB SRAM
whismanoid 0:cb44e2e9ec4c 164 // +-------------[microUSB]-------------+
whismanoid 0:cb44e2e9ec4c 165 // | J1 MAX32630FTHR J2 |
whismanoid 0:cb44e2e9ec4c 166 // ______ | [ ] RST GND [ ] |
whismanoid 0:cb44e2e9ec4c 167 // ______ | [ ] 3V3 BAT+[ ] |
whismanoid 0:cb44e2e9ec4c 168 // ______ | [ ] 1V8 reset SW1 |
whismanoid 0:cb44e2e9ec4c 169 // ______ | [ ] GND J4 J3 |
whismanoid 0:cb44e2e9ec4c 170 // analogIn0/4 | [a] AIN_0 1.2Vfs (bat) SYS [ ] | switched BAT+
whismanoid 0:cb44e2e9ec4c 171 // analogIn1/5 | [a] AIN_1 1.2Vfs PWR [ ] | external pwr btn
whismanoid 0:cb44e2e9ec4c 172 // analogIn2 | [a] AIN_2 1.2Vfs +5V VBUS [ ] | USB +5V power
whismanoid 0:cb44e2e9ec4c 173 // analogIn3 | [a] AIN_3 1.2Vfs 1-WIRE P4_0 [d] | D0 dig9
whismanoid 0:cb44e2e9ec4c 174 // (I2C2.SDA) | [d] P5_7 SDA2 SRN P5_6 [d] | D1 dig8
whismanoid 0:cb44e2e9ec4c 175 // (I2C2.SCL) | [d] P6_0 SCL2 SDIO3 P5_5 [d] | D2 dig7
whismanoid 0:cb44e2e9ec4c 176 // D13/SCLK | [s] P5_0 SCLK SDIO2 P5_4 [d] | D3 dig6
whismanoid 0:cb44e2e9ec4c 177 // D11/MOSI | [s] P5_1 MOSI SSEL P5_3 [d] | D4 dig5
whismanoid 0:cb44e2e9ec4c 178 // D12/MISO | [s] P5_2 MISO RTS P3_3 [d] | D5 dig4
whismanoid 0:cb44e2e9ec4c 179 // D10/CS | [s] P3_0 RX CTS P3_2 [d] | D6 dig3
whismanoid 0:cb44e2e9ec4c 180 // D9 dig0 | [d] P3_1 TX SCL P3_5 [d] | D7 dig2
whismanoid 0:cb44e2e9ec4c 181 // ______ | [ ] GND SDA P3_4 [d] | D8 dig1
whismanoid 0:cb44e2e9ec4c 182 // | |
whismanoid 0:cb44e2e9ec4c 183 // | XIP Flash MAX14690N |
whismanoid 0:cb44e2e9ec4c 184 // | XIP_SCLK P1_0 SDA2 P5_7 |
whismanoid 0:cb44e2e9ec4c 185 // | XIP_MOSI P1_1 SCL2 P6_0 |
whismanoid 0:cb44e2e9ec4c 186 // | XIP_MISO P1_2 PMIC_INIT P3_7 |
whismanoid 0:cb44e2e9ec4c 187 // | XIP_SSEL P1_3 MPC P2_7 |
whismanoid 0:cb44e2e9ec4c 188 // | XIP_DIO2 P1_4 MON AIN_0 |
whismanoid 0:cb44e2e9ec4c 189 // | XIP_DIO3 P1_5 |
whismanoid 0:cb44e2e9ec4c 190 // | |
whismanoid 0:cb44e2e9ec4c 191 // | PAN1326B MicroSD LED |
whismanoid 0:cb44e2e9ec4c 192 // | BT_RX P0_0 SD_SCLK P0_4 r P2_4 |
whismanoid 0:cb44e2e9ec4c 193 // | BT_TX P0_1 SD_MOSI P0_5 g P2_5 |
whismanoid 0:cb44e2e9ec4c 194 // | BT_CTS P0_2 SD_MISO P0_6 b P2_6 |
whismanoid 0:cb44e2e9ec4c 195 // | BT_RTS P0_3 SD_SSEL P0_7 |
whismanoid 0:cb44e2e9ec4c 196 // | BT_RST P1_6 DETECT P2_2 |
whismanoid 0:cb44e2e9ec4c 197 // | BT_CLK P1_7 SW2 P2_3 |
whismanoid 0:cb44e2e9ec4c 198 // +------------------------------------+
whismanoid 0:cb44e2e9ec4c 199 // 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:cb44e2e9ec4c 200 // 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:cb44e2e9ec4c 201 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 202 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 203 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 204 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 205 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 206 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 207 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 208 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 209 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 210 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 211 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 212 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 213 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 214 //
whismanoid 0:cb44e2e9ec4c 215 #include "max32630fthr.h"
whismanoid 0:cb44e2e9ec4c 216 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 0:cb44e2e9ec4c 217 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:cb44e2e9ec4c 218 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 0:cb44e2e9ec4c 219 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 0:cb44e2e9ec4c 220 // Arduino connector
whismanoid 0:cb44e2e9ec4c 221 #ifndef A0
whismanoid 0:cb44e2e9ec4c 222 #define A0 AIN_0
whismanoid 0:cb44e2e9ec4c 223 #endif
whismanoid 0:cb44e2e9ec4c 224 #ifndef A1
whismanoid 0:cb44e2e9ec4c 225 #define A1 AIN_1
whismanoid 0:cb44e2e9ec4c 226 #endif
whismanoid 0:cb44e2e9ec4c 227 #ifndef A2
whismanoid 0:cb44e2e9ec4c 228 #define A2 AIN_2
whismanoid 0:cb44e2e9ec4c 229 #endif
whismanoid 0:cb44e2e9ec4c 230 #ifndef A3
whismanoid 0:cb44e2e9ec4c 231 #define A3 AIN_3
whismanoid 0:cb44e2e9ec4c 232 #endif
whismanoid 0:cb44e2e9ec4c 233 #ifndef D0
whismanoid 0:cb44e2e9ec4c 234 #define D0 P4_0
whismanoid 0:cb44e2e9ec4c 235 #endif
whismanoid 0:cb44e2e9ec4c 236 #ifndef D1
whismanoid 0:cb44e2e9ec4c 237 #define D1 P5_6
whismanoid 0:cb44e2e9ec4c 238 #endif
whismanoid 0:cb44e2e9ec4c 239 #ifndef D2
whismanoid 0:cb44e2e9ec4c 240 #define D2 P5_5
whismanoid 0:cb44e2e9ec4c 241 #endif
whismanoid 0:cb44e2e9ec4c 242 #ifndef D3
whismanoid 0:cb44e2e9ec4c 243 #define D3 P5_4
whismanoid 0:cb44e2e9ec4c 244 #endif
whismanoid 0:cb44e2e9ec4c 245 #ifndef D4
whismanoid 0:cb44e2e9ec4c 246 #define D4 P5_3
whismanoid 0:cb44e2e9ec4c 247 #endif
whismanoid 0:cb44e2e9ec4c 248 #ifndef D5
whismanoid 0:cb44e2e9ec4c 249 #define D5 P3_3
whismanoid 0:cb44e2e9ec4c 250 #endif
whismanoid 0:cb44e2e9ec4c 251 #ifndef D6
whismanoid 0:cb44e2e9ec4c 252 #define D6 P3_2
whismanoid 0:cb44e2e9ec4c 253 #endif
whismanoid 0:cb44e2e9ec4c 254 #ifndef D7
whismanoid 0:cb44e2e9ec4c 255 #define D7 P3_5
whismanoid 0:cb44e2e9ec4c 256 #endif
whismanoid 0:cb44e2e9ec4c 257 #ifndef D8
whismanoid 0:cb44e2e9ec4c 258 #define D8 P3_4
whismanoid 0:cb44e2e9ec4c 259 #endif
whismanoid 0:cb44e2e9ec4c 260 #ifndef D9
whismanoid 0:cb44e2e9ec4c 261 #define D9 P3_1
whismanoid 0:cb44e2e9ec4c 262 #endif
whismanoid 0:cb44e2e9ec4c 263 #ifndef D10
whismanoid 0:cb44e2e9ec4c 264 #define D10 P3_0
whismanoid 0:cb44e2e9ec4c 265 #endif
whismanoid 0:cb44e2e9ec4c 266 #ifndef D11
whismanoid 0:cb44e2e9ec4c 267 #define D11 P5_1
whismanoid 0:cb44e2e9ec4c 268 #endif
whismanoid 0:cb44e2e9ec4c 269 #ifndef D12
whismanoid 0:cb44e2e9ec4c 270 #define D12 P5_2
whismanoid 0:cb44e2e9ec4c 271 #endif
whismanoid 0:cb44e2e9ec4c 272 #ifndef D13
whismanoid 0:cb44e2e9ec4c 273 #define D13 P5_0
whismanoid 0:cb44e2e9ec4c 274 #endif
whismanoid 0:cb44e2e9ec4c 275 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 276 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 277 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 278 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 279 // +-------------------------------------+
whismanoid 0:cb44e2e9ec4c 280 // | MAX32625MBED Arduino UNO header |
whismanoid 0:cb44e2e9ec4c 281 // | |
whismanoid 0:cb44e2e9ec4c 282 // | A5/SCL[ ] | P1_7 dig15
whismanoid 0:cb44e2e9ec4c 283 // | A4/SDA[ ] | P1_6 dig14
whismanoid 0:cb44e2e9ec4c 284 // | AREF=N/C[ ] |
whismanoid 0:cb44e2e9ec4c 285 // | GND[ ] |
whismanoid 0:cb44e2e9ec4c 286 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 0:cb44e2e9ec4c 287 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 0:cb44e2e9ec4c 288 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 0:cb44e2e9ec4c 289 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 0:cb44e2e9ec4c 290 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 0:cb44e2e9ec4c 291 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 0:cb44e2e9ec4c 292 // | [ ]GND |
whismanoid 0:cb44e2e9ec4c 293 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 0:cb44e2e9ec4c 294 // | 6[ ]~| P0_6 dig6
whismanoid 0:cb44e2e9ec4c 295 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 0:cb44e2e9ec4c 296 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 0:cb44e2e9ec4c 297 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 0:cb44e2e9ec4c 298 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 0:cb44e2e9ec4c 299 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 0:cb44e2e9ec4c 300 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 0:cb44e2e9ec4c 301 // | [ ] [ ] [ ] |
whismanoid 0:cb44e2e9ec4c 302 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 0:cb44e2e9ec4c 303 // \_______________________/
whismanoid 0:cb44e2e9ec4c 304 //
whismanoid 0:cb44e2e9ec4c 305 // +------------------------+
whismanoid 0:cb44e2e9ec4c 306 // | |
whismanoid 0:cb44e2e9ec4c 307 // | MicroSD LED |
whismanoid 0:cb44e2e9ec4c 308 // | SD_SCLK P2_4 r P3_0 |
whismanoid 0:cb44e2e9ec4c 309 // | SD_MOSI P2_5 g P3_1 |
whismanoid 0:cb44e2e9ec4c 310 // | SD_MISO P2_6 b P3_2 |
whismanoid 0:cb44e2e9ec4c 311 // | SD_SSEL P2_7 y P3_3 |
whismanoid 0:cb44e2e9ec4c 312 // | |
whismanoid 0:cb44e2e9ec4c 313 // | DAPLINK BUTTONS |
whismanoid 0:cb44e2e9ec4c 314 // | TX P2_1 SW3 P2_3 |
whismanoid 0:cb44e2e9ec4c 315 // | RX P2_0 SW2 P2_2 |
whismanoid 0:cb44e2e9ec4c 316 // +------------------------+
whismanoid 0:cb44e2e9ec4c 317 //
whismanoid 0:cb44e2e9ec4c 318 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 319 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 320 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 321 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 322 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 323 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 324 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 325 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 326 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 327 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 328 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 329 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 330 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 331 //
whismanoid 0:cb44e2e9ec4c 332 //#include "max32625mbed.h" // ?
whismanoid 0:cb44e2e9ec4c 333 //MAX32625MBED mbed(MAX32625MBED::VIO_3V3); // ?
whismanoid 0:cb44e2e9ec4c 334 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:cb44e2e9ec4c 335 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 0:cb44e2e9ec4c 336 const float ADC_FULL_SCALE_VOLTAGE = 1.200; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 0:cb44e2e9ec4c 337 // Arduino connector
whismanoid 0:cb44e2e9ec4c 338 #ifndef A0
whismanoid 0:cb44e2e9ec4c 339 #define A0 AIN_0
whismanoid 0:cb44e2e9ec4c 340 #endif
whismanoid 0:cb44e2e9ec4c 341 #ifndef A1
whismanoid 0:cb44e2e9ec4c 342 #define A1 AIN_1
whismanoid 0:cb44e2e9ec4c 343 #endif
whismanoid 0:cb44e2e9ec4c 344 #ifndef A2
whismanoid 0:cb44e2e9ec4c 345 #define A2 AIN_2
whismanoid 0:cb44e2e9ec4c 346 #endif
whismanoid 0:cb44e2e9ec4c 347 #ifndef A3
whismanoid 0:cb44e2e9ec4c 348 #define A3 AIN_3
whismanoid 0:cb44e2e9ec4c 349 #endif
whismanoid 0:cb44e2e9ec4c 350 #ifndef D0
whismanoid 0:cb44e2e9ec4c 351 #define D0 P0_0
whismanoid 0:cb44e2e9ec4c 352 #endif
whismanoid 0:cb44e2e9ec4c 353 #ifndef D1
whismanoid 0:cb44e2e9ec4c 354 #define D1 P0_1
whismanoid 0:cb44e2e9ec4c 355 #endif
whismanoid 0:cb44e2e9ec4c 356 #ifndef D2
whismanoid 0:cb44e2e9ec4c 357 #define D2 P0_2
whismanoid 0:cb44e2e9ec4c 358 #endif
whismanoid 0:cb44e2e9ec4c 359 #ifndef D3
whismanoid 0:cb44e2e9ec4c 360 #define D3 P0_3
whismanoid 0:cb44e2e9ec4c 361 #endif
whismanoid 0:cb44e2e9ec4c 362 #ifndef D4
whismanoid 0:cb44e2e9ec4c 363 #define D4 P0_4
whismanoid 0:cb44e2e9ec4c 364 #endif
whismanoid 0:cb44e2e9ec4c 365 #ifndef D5
whismanoid 0:cb44e2e9ec4c 366 #define D5 P0_5
whismanoid 0:cb44e2e9ec4c 367 #endif
whismanoid 0:cb44e2e9ec4c 368 #ifndef D6
whismanoid 0:cb44e2e9ec4c 369 #define D6 P0_6
whismanoid 0:cb44e2e9ec4c 370 #endif
whismanoid 0:cb44e2e9ec4c 371 #ifndef D7
whismanoid 0:cb44e2e9ec4c 372 #define D7 P0_7
whismanoid 0:cb44e2e9ec4c 373 #endif
whismanoid 0:cb44e2e9ec4c 374 #ifndef D8
whismanoid 0:cb44e2e9ec4c 375 #define D8 P1_4
whismanoid 0:cb44e2e9ec4c 376 #endif
whismanoid 0:cb44e2e9ec4c 377 #ifndef D9
whismanoid 0:cb44e2e9ec4c 378 #define D9 P1_5
whismanoid 0:cb44e2e9ec4c 379 #endif
whismanoid 0:cb44e2e9ec4c 380 #ifndef D10
whismanoid 0:cb44e2e9ec4c 381 #define D10 P1_3
whismanoid 0:cb44e2e9ec4c 382 #endif
whismanoid 0:cb44e2e9ec4c 383 #ifndef D11
whismanoid 0:cb44e2e9ec4c 384 #define D11 P1_1
whismanoid 0:cb44e2e9ec4c 385 #endif
whismanoid 0:cb44e2e9ec4c 386 #ifndef D12
whismanoid 0:cb44e2e9ec4c 387 #define D12 P1_2
whismanoid 0:cb44e2e9ec4c 388 #endif
whismanoid 0:cb44e2e9ec4c 389 #ifndef D13
whismanoid 0:cb44e2e9ec4c 390 #define D13 P1_0
whismanoid 0:cb44e2e9ec4c 391 #endif
whismanoid 0:cb44e2e9ec4c 392 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 393 #elif defined(TARGET_MAX32600)
whismanoid 0:cb44e2e9ec4c 394 // target MAX32600
whismanoid 0:cb44e2e9ec4c 395 //
whismanoid 0:cb44e2e9ec4c 396 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:cb44e2e9ec4c 397 const float ADC_FULL_SCALE_VOLTAGE = 1.500;
whismanoid 0:cb44e2e9ec4c 398 //
whismanoid 0:cb44e2e9ec4c 399 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 400 #elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 401 #warning "TARGET_MAX32620FTHR not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 402 #include "MAX32620FTHR.h"
whismanoid 0:cb44e2e9ec4c 403 // Initialize I/O voltages on MAX32620FTHR board
whismanoid 0:cb44e2e9ec4c 404 MAX32620FTHR fthr(MAX32620FTHR::VIO_3V3);
whismanoid 0:cb44e2e9ec4c 405 //#define USE_LEDS 0 ?
whismanoid 0:cb44e2e9ec4c 406 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:cb44e2e9ec4c 407 #warning "TARGET_MAX32620FTHR not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 0:cb44e2e9ec4c 408 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 0:cb44e2e9ec4c 409 //
whismanoid 0:cb44e2e9ec4c 410 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 411 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 15:37c83ec50ea0 412 // #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 413 #include "max32625pico.h"
whismanoid 0:cb44e2e9ec4c 414 // configure MAX32625PICO VDDIOH mode, and I/O voltages for DIP pins and SWD pins
whismanoid 0:cb44e2e9ec4c 415 MAX32625PICO pico(
whismanoid 13:184a08909405 416 // Select source of higher-voltage logic high supply VDDIOH
whismanoid 0:cb44e2e9ec4c 417 // vddioh_mode_t iohMode
whismanoid 0:cb44e2e9ec4c 418 //~ MAX32625PICO::IOH_OFF, // No connections to VDDIOH
whismanoid 0:cb44e2e9ec4c 419 //~ MAX32625PICO::IOH_DIP_IN, // VDDIOH input from DIP pin 1 (AIN0)
whismanoid 0:cb44e2e9ec4c 420 //~ MAX32625PICO::IOH_SWD_IN, // VDDIOH input from SWD pin 1
whismanoid 0:cb44e2e9ec4c 421 MAX32625PICO::IOH_3V3, // VDDIOH = 3.3V from local supply
whismanoid 0:cb44e2e9ec4c 422 //~ MAX32625PICO::IOH_DIP_OUT, // VDDIOH = 3.3V output to DIP pin 1
whismanoid 0:cb44e2e9ec4c 423 //~ MAX32625PICO::IOH_SWD_OUT, // VDDIOH = 3.3V output to SWD pin 1
whismanoid 0:cb44e2e9ec4c 424 //
whismanoid 13:184a08909405 425 // Digital I/O pin logic high voltage 1.8V or 3.3V
whismanoid 0:cb44e2e9ec4c 426 // vio_t dipVio = MAX32625PICO::VIO_1V8 or MAX32625PICO::VIO_IOH
whismanoid 13:184a08909405 427 MAX32625PICO::VIO_1V8, // 1.8V IO (local)
whismanoid 13:184a08909405 428 //~ MAX32625PICO::VIO_IOH, // Use VDDIOH (from DIP pin 1, or SWD pin1, or local 3.3V)
whismanoid 0:cb44e2e9ec4c 429 //
whismanoid 13:184a08909405 430 // Software Debug logic high voltage (normally use VIO_IOH)
whismanoid 0:cb44e2e9ec4c 431 // vio_t swdVio
whismanoid 0:cb44e2e9ec4c 432 //~ MAX32625PICO::VIO_1V8 // 1.8V IO (local)
whismanoid 0:cb44e2e9ec4c 433 MAX32625PICO::VIO_IOH // Use VDDIOH (from DIP pin 1, or SWD pin1, or local 3.3V)
whismanoid 0:cb44e2e9ec4c 434 );
whismanoid 0:cb44e2e9ec4c 435 //#define USE_LEDS 0 ?
whismanoid 0:cb44e2e9ec4c 436 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 15:37c83ec50ea0 437 // #warning "TARGET_MAX32625PICO not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 0:cb44e2e9ec4c 438 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 0:cb44e2e9ec4c 439 //
whismanoid 0:cb44e2e9ec4c 440 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 441 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 442 // TODO1: target NUCLEO_F446RE
whismanoid 0:cb44e2e9ec4c 443 //
whismanoid 0:cb44e2e9ec4c 444 // USER_BUTTON PC13
whismanoid 0:cb44e2e9ec4c 445 // LED1 is shared with SPI_SCK on NUCLEO_F446RE PA_5, so don't use LED1.
whismanoid 0:cb44e2e9ec4c 446 #define USE_LEDS 0
whismanoid 0:cb44e2e9ec4c 447 // SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
whismanoid 0:cb44e2e9ec4c 448 // Serial serial(SERIAL_TX, SERIAL_RX);
whismanoid 0:cb44e2e9ec4c 449 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:cb44e2e9ec4c 450 const float ADC_FULL_SCALE_VOLTAGE = 3.300; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 0:cb44e2e9ec4c 451 //
whismanoid 0:cb44e2e9ec4c 452 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 453 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 454 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 455 // TARGET=LPC1768 ARM Cortex-M3 100 MHz 512kB flash 64kB SRAM
whismanoid 0:cb44e2e9ec4c 456 // +-------------[microUSB]-------------+
whismanoid 0:cb44e2e9ec4c 457 // ______ | [ ] GND +3.3V VOUT [ ] | ______
whismanoid 0:cb44e2e9ec4c 458 // ______ | [ ] 4.5V<VIN<9.0V +5.0V VU [ ] | ______
whismanoid 0:cb44e2e9ec4c 459 // ______ | [ ] VB USB.IF- [ ] | ______
whismanoid 0:cb44e2e9ec4c 460 // ______ | [ ] nR USB.IF+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 461 // digitalInOut0 | [ ] p5 MOSI ETHERNET.RD- [ ] | ______
whismanoid 0:cb44e2e9ec4c 462 // digitalInOut1 | [ ] p6 MISO ETHERNET.RD+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 463 // digitalInOut2 | [ ] p7 SCLK ETHERNET.TD- [ ] | ______
whismanoid 0:cb44e2e9ec4c 464 // digitalInOut3 | [ ] p8 ETHERNET.TD+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 465 // digitalInOut4 | [ ] p9 TX SDA USB.D- [ ] | ______
whismanoid 0:cb44e2e9ec4c 466 // digitalInOut5 | [ ] p10 RX SCL USB.D+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 467 // digitalInOut6 | [ ] p11 MOSI CAN-RD p30 [ ] | digitalInOut13
whismanoid 0:cb44e2e9ec4c 468 // digitalInOut7 | [ ] p12 MISO CAN-TD p29 [ ] | digitalInOut12
whismanoid 0:cb44e2e9ec4c 469 // digitalInOut8 | [ ] p13 TX SCLK SDA TX p28 [ ] | digitalInOut11
whismanoid 0:cb44e2e9ec4c 470 // digitalInOut9 | [ ] p14 RX SCL RX p27 [ ] | digitalInOut10
whismanoid 0:cb44e2e9ec4c 471 // analogIn0 | [ ] p15 AIN0 3.3Vfs PWM1 p26 [ ] | pwmDriver1
whismanoid 0:cb44e2e9ec4c 472 // analogIn1 | [ ] p16 AIN1 3.3Vfs PWM2 p25 [ ] | pwmDriver2
whismanoid 0:cb44e2e9ec4c 473 // analogIn2 | [ ] p17 AIN2 3.3Vfs PWM3 p24 [ ] | pwmDriver3
whismanoid 0:cb44e2e9ec4c 474 // analogIn3 | [ ] p18 AIN3 AOUT PWM4 p23 [ ] | pwmDriver4
whismanoid 0:cb44e2e9ec4c 475 // analogIn4 | [ ] p19 AIN4 3.3Vfs PWM5 p22 [ ] | pwmDriver5
whismanoid 0:cb44e2e9ec4c 476 // analogIn5 | [ ] p20 AIN5 3.3Vfs PWM6 p21 [ ] | pwmDriver6
whismanoid 0:cb44e2e9ec4c 477 // +------------------------------------+
whismanoid 0:cb44e2e9ec4c 478 // AIN6 = P0.3 = TGT_SBL_RXD?
whismanoid 0:cb44e2e9ec4c 479 // AIN7 = P0.2 = TGT_SBL_TXD?
whismanoid 0:cb44e2e9ec4c 480 //
whismanoid 0:cb44e2e9ec4c 481 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 482 // LPC1768 board uses VREF = 3.300V +A3,3V thru L1 to bypass capacitor C14
whismanoid 0:cb44e2e9ec4c 483 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:cb44e2e9ec4c 484 const float ADC_FULL_SCALE_VOLTAGE = 3.300;
whismanoid 0:cb44e2e9ec4c 485 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 0:cb44e2e9ec4c 486 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 487 // unknown target
whismanoid 0:cb44e2e9ec4c 488 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 489 #endif // target definition
whismanoid 0:cb44e2e9ec4c 490
whismanoid 0:cb44e2e9ec4c 491
whismanoid 0:cb44e2e9ec4c 492
whismanoid 0:cb44e2e9ec4c 493
whismanoid 18:1235c17b451e 494 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 495 // move definiton of USE_LEDS earlier than find_digitalInOutPin()
whismanoid 18:1235c17b451e 496 //--------------------------------------------------
whismanoid 18:1235c17b451e 497 // Option to use LEDs to show status
whismanoid 18:1235c17b451e 498 #ifndef USE_LEDS
whismanoid 18:1235c17b451e 499 #define USE_LEDS 1
whismanoid 18:1235c17b451e 500 #endif
whismanoid 18:1235c17b451e 501 #if USE_LEDS
whismanoid 18:1235c17b451e 502 #if defined(TARGET_MAX32630)
whismanoid 18:1235c17b451e 503 # define LED_ON 0
whismanoid 18:1235c17b451e 504 # define LED_OFF 1
whismanoid 18:1235c17b451e 505 //--------------------------------------------------
whismanoid 18:1235c17b451e 506 #elif defined(TARGET_MAX32625MBED)
whismanoid 18:1235c17b451e 507 # define LED_ON 0
whismanoid 18:1235c17b451e 508 # define LED_OFF 1
whismanoid 19:5ff09c8e9daf 509 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 18:1235c17b451e 510 # define LED_ON 0
whismanoid 18:1235c17b451e 511 # define LED_OFF 1
whismanoid 18:1235c17b451e 512 //--------------------------------------------------
whismanoid 18:1235c17b451e 513 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 18:1235c17b451e 514 #elif defined(TARGET_LPC1768)
whismanoid 18:1235c17b451e 515 # define LED_ON 1
whismanoid 18:1235c17b451e 516 # define LED_OFF 0
whismanoid 18:1235c17b451e 517 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 18:1235c17b451e 518 // USE_LEDS with some platform other than MAX32630, MAX32625MBED, LPC1768
whismanoid 18:1235c17b451e 519 // bugfix for MAX32600MBED LED blink pattern: check if LED_ON/LED_OFF already defined
whismanoid 18:1235c17b451e 520 # ifndef LED_ON
whismanoid 18:1235c17b451e 521 # define LED_ON 0
whismanoid 18:1235c17b451e 522 # endif
whismanoid 18:1235c17b451e 523 # ifndef LED_OFF
whismanoid 18:1235c17b451e 524 # define LED_OFF 1
whismanoid 18:1235c17b451e 525 # endif
whismanoid 18:1235c17b451e 526 //# define LED_ON 1
whismanoid 18:1235c17b451e 527 //# define LED_OFF 0
whismanoid 18:1235c17b451e 528 #endif // target definition
whismanoid 18:1235c17b451e 529 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 530 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 531 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 532 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 533 // change led1/2/3/4 from DigitalOut to DigitalInOut
whismanoid 18:1235c17b451e 534 DigitalInOut led1(LED1, PIN_INPUT, PullUp, LED_OFF); // MAX32630FTHR: LED1 = LED_RED
whismanoid 18:1235c17b451e 535 DigitalInOut led2(LED2, PIN_INPUT, PullUp, LED_OFF); // MAX32630FTHR: LED2 = LED_GREEN
whismanoid 18:1235c17b451e 536 DigitalInOut led3(LED3, PIN_INPUT, PullUp, LED_OFF); // MAX32630FTHR: LED3 = LED_BLUE
whismanoid 18:1235c17b451e 537 DigitalInOut led4(LED4, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 538 #else // USE_LEDS=0
whismanoid 18:1235c17b451e 539 // issue #41 support Nucleo_F446RE
whismanoid 18:1235c17b451e 540 // there are no LED indicators on the board, LED1 interferes with SPI;
whismanoid 18:1235c17b451e 541 // but we still need placeholders led1 led2 led3 led4.
whismanoid 18:1235c17b451e 542 // Declare DigitalInOut led1 led2 led3 led4 targeting safe pins.
whismanoid 18:1235c17b451e 543 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 18:1235c17b451e 544 # define LED_ON 0
whismanoid 18:1235c17b451e 545 # define LED_OFF 1
whismanoid 18:1235c17b451e 546 // change led1/2/3/4 from DigitalOut to DigitalInOut
whismanoid 18:1235c17b451e 547 DigitalInOut led1(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 548 DigitalInOut led2(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 549 DigitalInOut led3(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 550 DigitalInOut led4(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 551 #endif // USE_LEDS
whismanoid 18:1235c17b451e 552 #define led1_RFailLED led1
whismanoid 18:1235c17b451e 553 #define led2_GPassLED led2
whismanoid 18:1235c17b451e 554 #define led3_BBusyLED led3
whismanoid 18:1235c17b451e 555
whismanoid 0:cb44e2e9ec4c 556 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:cb44e2e9ec4c 557 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 558 // Declare the DigitalInOut GPIO pins
whismanoid 0:cb44e2e9ec4c 559 // Optional digitalInOut support. If there is only one it should be digitalInOut1.
whismanoid 0:cb44e2e9ec4c 560 // D) Digital High/Low/Input Pin
whismanoid 0:cb44e2e9ec4c 561 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 562 // +-------------[microUSB]-------------+
whismanoid 0:cb44e2e9ec4c 563 // | J1 MAX32630FTHR J2 |
whismanoid 0:cb44e2e9ec4c 564 // | [ ] RST GND [ ] |
whismanoid 0:cb44e2e9ec4c 565 // | [ ] 3V3 BAT+[ ] |
whismanoid 0:cb44e2e9ec4c 566 // | [ ] 1V8 reset SW1 |
whismanoid 0:cb44e2e9ec4c 567 // | [ ] GND J4 J3 |
whismanoid 0:cb44e2e9ec4c 568 // | [ ] AIN_0 1.2Vfs (bat) SYS [ ] |
whismanoid 0:cb44e2e9ec4c 569 // | [ ] AIN_1 1.2Vfs PWR [ ] |
whismanoid 0:cb44e2e9ec4c 570 // | [ ] AIN_2 1.2Vfs +5V VBUS [ ] |
whismanoid 0:cb44e2e9ec4c 571 // | [ ] AIN_3 1.2Vfs 1-WIRE P4_0 [ ] | dig9
whismanoid 0:cb44e2e9ec4c 572 // dig10 | [x] P5_7 SDA2 SRN P5_6 [ ] | dig8
whismanoid 0:cb44e2e9ec4c 573 // dig11 | [x] P6_0 SCL2 SDIO3 P5_5 [ ] | dig7
whismanoid 0:cb44e2e9ec4c 574 // dig12 | [x] P5_0 SCLK SDIO2 P5_4 [ ] | dig6
whismanoid 0:cb44e2e9ec4c 575 // dig13 | [x] P5_1 MOSI SSEL P5_3 [x] | dig5
whismanoid 0:cb44e2e9ec4c 576 // dig14 | [ ] P5_2 MISO RTS P3_3 [ ] | dig4
whismanoid 0:cb44e2e9ec4c 577 // dig15 | [ ] P3_0 RX CTS P3_2 [ ] | dig3
whismanoid 0:cb44e2e9ec4c 578 // dig0 | [ ] P3_1 TX SCL P3_5 [x] | dig2
whismanoid 0:cb44e2e9ec4c 579 // | [ ] GND SDA P3_4 [x] | dig1
whismanoid 0:cb44e2e9ec4c 580 // +------------------------------------+
whismanoid 0:cb44e2e9ec4c 581 #define HAS_digitalInOut0 1 // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:cb44e2e9ec4c 582 #define HAS_digitalInOut1 1 // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:cb44e2e9ec4c 583 #define HAS_digitalInOut2 1 // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:cb44e2e9ec4c 584 #define HAS_digitalInOut3 1 // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:cb44e2e9ec4c 585 #define HAS_digitalInOut4 1 // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:cb44e2e9ec4c 586 #define HAS_digitalInOut5 1 // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:cb44e2e9ec4c 587 #define HAS_digitalInOut6 1 // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:cb44e2e9ec4c 588 #define HAS_digitalInOut7 1 // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:cb44e2e9ec4c 589 #define HAS_digitalInOut8 1 // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:cb44e2e9ec4c 590 #define HAS_digitalInOut9 1 // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:cb44e2e9ec4c 591 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 592 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 593 #define HAS_digitalInOut10 0 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 594 #define HAS_digitalInOut11 0 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 595 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 596 #define HAS_digitalInOut10 1 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 597 #define HAS_digitalInOut11 1 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 598 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 599 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 600 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 601 #define HAS_digitalInOut12 0 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 602 #define HAS_digitalInOut13 0 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 603 #define HAS_digitalInOut14 0 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 604 #define HAS_digitalInOut15 0 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 605 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 606 #define HAS_digitalInOut12 1 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 607 #define HAS_digitalInOut13 1 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 608 #define HAS_digitalInOut14 1 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 609 #define HAS_digitalInOut15 1 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 610 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 611 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 612 DigitalInOut digitalInOut0(P3_1, PIN_INPUT, PullUp, 1); // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:cb44e2e9ec4c 613 #endif
whismanoid 0:cb44e2e9ec4c 614 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 615 DigitalInOut digitalInOut1(P3_4, PIN_INPUT, PullUp, 1); // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:cb44e2e9ec4c 616 #endif
whismanoid 0:cb44e2e9ec4c 617 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 618 DigitalInOut digitalInOut2(P3_5, PIN_INPUT, PullUp, 1); // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:cb44e2e9ec4c 619 #endif
whismanoid 0:cb44e2e9ec4c 620 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 621 DigitalInOut digitalInOut3(P3_2, PIN_INPUT, PullUp, 1); // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:cb44e2e9ec4c 622 #endif
whismanoid 0:cb44e2e9ec4c 623 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 624 DigitalInOut digitalInOut4(P3_3, PIN_INPUT, PullUp, 1); // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:cb44e2e9ec4c 625 #endif
whismanoid 0:cb44e2e9ec4c 626 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 627 DigitalInOut digitalInOut5(P5_3, PIN_INPUT, PullUp, 1); // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:cb44e2e9ec4c 628 #endif
whismanoid 0:cb44e2e9ec4c 629 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 630 DigitalInOut digitalInOut6(P5_4, PIN_INPUT, PullUp, 1); // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:cb44e2e9ec4c 631 #endif
whismanoid 0:cb44e2e9ec4c 632 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 633 DigitalInOut digitalInOut7(P5_5, PIN_INPUT, PullUp, 1); // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:cb44e2e9ec4c 634 #endif
whismanoid 0:cb44e2e9ec4c 635 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 636 DigitalInOut digitalInOut8(P5_6, PIN_INPUT, PullUp, 1); // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:cb44e2e9ec4c 637 #endif
whismanoid 0:cb44e2e9ec4c 638 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 639 DigitalInOut digitalInOut9(P4_0, PIN_INPUT, PullUp, 1); // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:cb44e2e9ec4c 640 #endif
whismanoid 0:cb44e2e9ec4c 641 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 642 DigitalInOut digitalInOut10(P5_7, PIN_INPUT, PullUp, 1); // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 643 #endif
whismanoid 0:cb44e2e9ec4c 644 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 645 DigitalInOut digitalInOut11(P6_0, PIN_INPUT, PullUp, 1); // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 646 #endif
whismanoid 0:cb44e2e9ec4c 647 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 648 DigitalInOut digitalInOut12(P5_0, PIN_INPUT, PullUp, 1); // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 649 #endif
whismanoid 0:cb44e2e9ec4c 650 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 651 DigitalInOut digitalInOut13(P5_1, PIN_INPUT, PullUp, 1); // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 652 #endif
whismanoid 0:cb44e2e9ec4c 653 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 654 DigitalInOut digitalInOut14(P5_2, PIN_INPUT, PullUp, 1); // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 655 #endif
whismanoid 0:cb44e2e9ec4c 656 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 657 DigitalInOut digitalInOut15(P3_0, PIN_INPUT, PullUp, 1); // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 658 #endif
whismanoid 0:cb44e2e9ec4c 659 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 660 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 661 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 662 // +-------------------------------------+
whismanoid 0:cb44e2e9ec4c 663 // | MAX32625MBED Arduino UNO header |
whismanoid 0:cb44e2e9ec4c 664 // | |
whismanoid 0:cb44e2e9ec4c 665 // | A5/SCL[ ] | P1_7 dig15
whismanoid 0:cb44e2e9ec4c 666 // | A4/SDA[ ] | P1_6 dig14
whismanoid 0:cb44e2e9ec4c 667 // | AREF=N/C[ ] |
whismanoid 0:cb44e2e9ec4c 668 // | GND[ ] |
whismanoid 0:cb44e2e9ec4c 669 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 0:cb44e2e9ec4c 670 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 0:cb44e2e9ec4c 671 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 0:cb44e2e9ec4c 672 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 0:cb44e2e9ec4c 673 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 0:cb44e2e9ec4c 674 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 0:cb44e2e9ec4c 675 // | [ ]GND |
whismanoid 0:cb44e2e9ec4c 676 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 0:cb44e2e9ec4c 677 // | 6[ ]~| P0_6 dig6
whismanoid 0:cb44e2e9ec4c 678 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 0:cb44e2e9ec4c 679 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 0:cb44e2e9ec4c 680 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 0:cb44e2e9ec4c 681 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 0:cb44e2e9ec4c 682 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 0:cb44e2e9ec4c 683 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 0:cb44e2e9ec4c 684 // | [ ] [ ] [ ] |
whismanoid 0:cb44e2e9ec4c 685 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 0:cb44e2e9ec4c 686 // \_______________________/
whismanoid 0:cb44e2e9ec4c 687 //
whismanoid 0:cb44e2e9ec4c 688 #define HAS_digitalInOut0 1 // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:cb44e2e9ec4c 689 #define HAS_digitalInOut1 1 // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:cb44e2e9ec4c 690 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 691 #define HAS_digitalInOut2 0 // P0_2 TARGET_MAX32625MBED D2 -- MAX11131 EOC DigitalIn
whismanoid 0:cb44e2e9ec4c 692 #else
whismanoid 0:cb44e2e9ec4c 693 #define HAS_digitalInOut2 1 // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:cb44e2e9ec4c 694 #endif
whismanoid 0:cb44e2e9ec4c 695 #define HAS_digitalInOut3 1 // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:cb44e2e9ec4c 696 #define HAS_digitalInOut4 1 // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:cb44e2e9ec4c 697 #define HAS_digitalInOut5 1 // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:cb44e2e9ec4c 698 #define HAS_digitalInOut6 1 // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:cb44e2e9ec4c 699 #define HAS_digitalInOut7 1 // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:cb44e2e9ec4c 700 #define HAS_digitalInOut8 1 // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:cb44e2e9ec4c 701 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 702 #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:cb44e2e9ec4c 703 #else
whismanoid 0:cb44e2e9ec4c 704 #define HAS_digitalInOut9 1 // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:cb44e2e9ec4c 705 #endif
whismanoid 0:cb44e2e9ec4c 706 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 707 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 708 #define HAS_digitalInOut10 0 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 709 #define HAS_digitalInOut11 0 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 710 #define HAS_digitalInOut12 0 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 711 #define HAS_digitalInOut13 0 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 712 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 713 #define HAS_digitalInOut10 1 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 714 #define HAS_digitalInOut11 1 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 715 #define HAS_digitalInOut12 1 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 716 #define HAS_digitalInOut13 1 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 717 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 718 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 719 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 720 #define HAS_digitalInOut14 0 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 721 #define HAS_digitalInOut15 0 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 722 #define HAS_digitalInOut16 0 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 723 #define HAS_digitalInOut17 0 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 724 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 725 #define HAS_digitalInOut14 1 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 726 #define HAS_digitalInOut15 1 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 727 #define HAS_digitalInOut16 1 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 728 #define HAS_digitalInOut17 1 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 729 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 730 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 731 DigitalInOut digitalInOut0(P0_0, PIN_INPUT, PullUp, 1); // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:cb44e2e9ec4c 732 #endif
whismanoid 0:cb44e2e9ec4c 733 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 734 DigitalInOut digitalInOut1(P0_1, PIN_INPUT, PullUp, 1); // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:cb44e2e9ec4c 735 #endif
whismanoid 0:cb44e2e9ec4c 736 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 737 DigitalInOut digitalInOut2(P0_2, PIN_INPUT, PullUp, 1); // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:cb44e2e9ec4c 738 #endif
whismanoid 0:cb44e2e9ec4c 739 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 740 DigitalInOut digitalInOut3(P0_3, PIN_INPUT, PullUp, 1); // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:cb44e2e9ec4c 741 #endif
whismanoid 0:cb44e2e9ec4c 742 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 743 DigitalInOut digitalInOut4(P0_4, PIN_INPUT, PullUp, 1); // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:cb44e2e9ec4c 744 #endif
whismanoid 0:cb44e2e9ec4c 745 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 746 DigitalInOut digitalInOut5(P0_5, PIN_INPUT, PullUp, 1); // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:cb44e2e9ec4c 747 #endif
whismanoid 0:cb44e2e9ec4c 748 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 749 DigitalInOut digitalInOut6(P0_6, PIN_INPUT, PullUp, 1); // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:cb44e2e9ec4c 750 #endif
whismanoid 0:cb44e2e9ec4c 751 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 752 DigitalInOut digitalInOut7(P0_7, PIN_INPUT, PullUp, 1); // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:cb44e2e9ec4c 753 #endif
whismanoid 0:cb44e2e9ec4c 754 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 755 DigitalInOut digitalInOut8(P1_4, PIN_INPUT, PullUp, 1); // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:cb44e2e9ec4c 756 #endif
whismanoid 0:cb44e2e9ec4c 757 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 758 DigitalInOut digitalInOut9(P1_5, PIN_INPUT, PullUp, 1); // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:cb44e2e9ec4c 759 #endif
whismanoid 0:cb44e2e9ec4c 760 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 761 DigitalInOut digitalInOut10(P1_3, PIN_INPUT, PullUp, 1); // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 762 #endif
whismanoid 0:cb44e2e9ec4c 763 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 764 DigitalInOut digitalInOut11(P1_1, PIN_INPUT, PullUp, 1); // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 765 #endif
whismanoid 0:cb44e2e9ec4c 766 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 767 DigitalInOut digitalInOut12(P1_2, PIN_INPUT, PullUp, 1); // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 768 #endif
whismanoid 0:cb44e2e9ec4c 769 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 770 DigitalInOut digitalInOut13(P1_0, PIN_INPUT, PullUp, 1); // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 771 #endif
whismanoid 0:cb44e2e9ec4c 772 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 773 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 774 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:cb44e2e9ec4c 775 DigitalInOut digitalInOut14(P1_6, PIN_INPUT, OpenDrain, 1); // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 776 #endif
whismanoid 0:cb44e2e9ec4c 777 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 778 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 779 DigitalInOut digitalInOut15(P1_7, PIN_INPUT, OpenDrain, 1); // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 780 #endif
whismanoid 0:cb44e2e9ec4c 781 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 782 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 783 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:cb44e2e9ec4c 784 // PullUp-->3.4V, PullDown-->1.7V, PullNone-->3.5V, OpenDrain-->0.00V
whismanoid 0:cb44e2e9ec4c 785 DigitalInOut digitalInOut16(P3_4, PIN_INPUT, OpenDrain, 0); // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 786 #endif
whismanoid 0:cb44e2e9ec4c 787 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 788 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 789 DigitalInOut digitalInOut17(P3_5, PIN_INPUT, OpenDrain, 0); // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 790 #endif
whismanoid 0:cb44e2e9ec4c 791 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 792 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 15:37c83ec50ea0 793 // TARGET=MAX32625PICO ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 15:37c83ec50ea0 794 // +-------------[microUSB]-------------+
whismanoid 15:37c83ec50ea0 795 // | [27]D+ D-[26] |
whismanoid 15:37c83ec50ea0 796 // | |
whismanoid 15:37c83ec50ea0 797 // | [BUTTON P2_7] |
whismanoid 15:37c83ec50ea0 798 // | P2_4 LED_R P2_5 LED_G P2_6 LED_B |
whismanoid 15:37c83ec50ea0 799 // | |
whismanoid 15:37c83ec50ea0 800 // 1V8 | [11] 1.8V MAX32625PICO GND [10] | GND
whismanoid 15:37c83ec50ea0 801 // 3V3 | [12] 3.3V +5V [09] | 5V0
whismanoid 15:37c83ec50ea0 802 // SPI CS D7 | [13] P0_7 CS s-ssel P4_7 [08] | D15
whismanoid 15:37c83ec50ea0 803 // SPI MISO D6 | [14] P0_6 MISO s-miso P4_6 [07] | D14
whismanoid 15:37c83ec50ea0 804 // SPI MOSI D5 | [15] P0_5 MOSI s-mosi P4_5 [06] | D13
whismanoid 15:37c83ec50ea0 805 // SPI SCLK D4 | [16] P0_4 SCLK s-sclk P4_4 [05] | D12
whismanoid 15:37c83ec50ea0 806 // D3 | [17] P0_3 RTS SCL P1_7 [04] | SCL/D17
whismanoid 15:37c83ec50ea0 807 // D2 | [18] P0_2 CTS SDA P1_6 [03] | SDA/D16
whismanoid 15:37c83ec50ea0 808 // TX/D1 | [19] P0_1 TX0 AIN_2 [02] | A2
whismanoid 15:37c83ec50ea0 809 // RX/D0 | [20] P0_0 RX0 AIN_0 [01] | A0/A4
whismanoid 15:37c83ec50ea0 810 // | |
whismanoid 15:37c83ec50ea0 811 // | DAPLINK |
whismanoid 15:37c83ec50ea0 812 // | J3 p3_3 p3_2 p3_0 p3_1 p3_7 |
whismanoid 15:37c83ec50ea0 813 // | DAP [ ] [ ] [RX2][TX2][ ] |
whismanoid 15:37c83ec50ea0 814 // | TOP [ ] [ ] [ ] [ ] [ ] |
whismanoid 15:37c83ec50ea0 815 // | AIN1/A5 gnd gnd nc AIN3 |
whismanoid 15:37c83ec50ea0 816 // | IOH 1-wire |
whismanoid 15:37c83ec50ea0 817 // | |
whismanoid 15:37c83ec50ea0 818 // |NO USE RST P2_0 P2_1 |
whismanoid 15:37c83ec50ea0 819 // |BOTTOM [ ] [ ] [RX1][ ] [TX1] |
whismanoid 15:37c83ec50ea0 820 // | RST SWC GND SWD 1V8 |
whismanoid 15:37c83ec50ea0 821 // |BOTTOM [21] [22] [23] [24] [25] |
whismanoid 15:37c83ec50ea0 822 // +------------------------------------+
whismanoid 15:37c83ec50ea0 823 #if MAX40108_DEMO
whismanoid 15:37c83ec50ea0 824 // MAX40108 demo p2: D0..D7 = P0_0..P0_7; D8..15 = P4_0..P4_7; D16/D17=I2C
whismanoid 15:37c83ec50ea0 825 #endif
whismanoid 15:37c83ec50ea0 826 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 827 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 828 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 829 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 830 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 831 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 832 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 833 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 15:37c83ec50ea0 834 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 15:37c83ec50ea0 835 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 15:37c83ec50ea0 836 // AIN_10 = x undefined?
whismanoid 15:37c83ec50ea0 837 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 838 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 839 //
whismanoid 15:37c83ec50ea0 840 #if MAX40108_DEMO
whismanoid 15:37c83ec50ea0 841 // avoid resource conflict D0,D1 alternate function as RX/TX
whismanoid 15:37c83ec50ea0 842 #define HAS_digitalInOut0 0
whismanoid 15:37c83ec50ea0 843 #define HAS_digitalInOut1 0
whismanoid 15:37c83ec50ea0 844 #else
whismanoid 15:37c83ec50ea0 845 #define HAS_digitalInOut0 1
whismanoid 19:5ff09c8e9daf 846 #define HAS_digitalInOut1 1
whismanoid 19:5ff09c8e9daf 847 // P0_1 TARGET_MAX32625PICO D1
whismanoid 15:37c83ec50ea0 848 #endif
whismanoid 15:37c83ec50ea0 849 #if APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 850 // avoid resource conflict D2 alternate function as interrupt input
whismanoid 15:37c83ec50ea0 851 #define HAS_digitalInOut2 0
whismanoid 15:37c83ec50ea0 852 #else
whismanoid 15:37c83ec50ea0 853 #define HAS_digitalInOut2 1
whismanoid 15:37c83ec50ea0 854 #endif
whismanoid 15:37c83ec50ea0 855 #define HAS_digitalInOut3 1
whismanoid 15:37c83ec50ea0 856 #define HAS_digitalInOut4 1
whismanoid 15:37c83ec50ea0 857 #define HAS_digitalInOut5 1
whismanoid 15:37c83ec50ea0 858 #define HAS_digitalInOut6 1
whismanoid 15:37c83ec50ea0 859 #define HAS_digitalInOut7 1
whismanoid 15:37c83ec50ea0 860 //
whismanoid 15:37c83ec50ea0 861 #define HAS_digitalInOut8 1
whismanoid 15:37c83ec50ea0 862 #define HAS_digitalInOut9 1
whismanoid 15:37c83ec50ea0 863 #define HAS_digitalInOut10 1
whismanoid 15:37c83ec50ea0 864 #define HAS_digitalInOut11 1
whismanoid 15:37c83ec50ea0 865 #define HAS_digitalInOut12 1
whismanoid 15:37c83ec50ea0 866 #define HAS_digitalInOut13 1
whismanoid 15:37c83ec50ea0 867 #define HAS_digitalInOut14 1
whismanoid 15:37c83ec50ea0 868 #define HAS_digitalInOut15 1
whismanoid 15:37c83ec50ea0 869 #if HAS_I2C
whismanoid 15:37c83ec50ea0 870 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 15:37c83ec50ea0 871 //~ #define HAS_digitalInOut14 0 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 15:37c83ec50ea0 872 //~ #define HAS_digitalInOut15 0 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 15:37c83ec50ea0 873 #define HAS_digitalInOut16 0 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 15:37c83ec50ea0 874 #define HAS_digitalInOut17 0 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 15:37c83ec50ea0 875 #else // HAS_I2C
whismanoid 15:37c83ec50ea0 876 //~ #define HAS_digitalInOut14 1 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 15:37c83ec50ea0 877 //~ #define HAS_digitalInOut15 1 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 15:37c83ec50ea0 878 #define HAS_digitalInOut16 1 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 15:37c83ec50ea0 879 #define HAS_digitalInOut17 1 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 15:37c83ec50ea0 880 #endif // HAS_I2C
whismanoid 15:37c83ec50ea0 881 #if HAS_digitalInOut0
whismanoid 15:37c83ec50ea0 882 DigitalInOut digitalInOut0(P0_0, PIN_INPUT, PullUp, 1); // P0_0 TARGET_MAX32625PICO D0
whismanoid 15:37c83ec50ea0 883 #endif
whismanoid 15:37c83ec50ea0 884 #if HAS_digitalInOut1
whismanoid 15:37c83ec50ea0 885 DigitalInOut digitalInOut1(P0_1, PIN_INPUT, PullUp, 1); // P0_1 TARGET_MAX32625PICO D1
whismanoid 15:37c83ec50ea0 886 #endif
whismanoid 15:37c83ec50ea0 887 #if HAS_digitalInOut2
whismanoid 15:37c83ec50ea0 888 DigitalInOut digitalInOut2(P0_2, PIN_INPUT, PullUp, 1); // P0_2 TARGET_MAX32625PICO D2
whismanoid 15:37c83ec50ea0 889 #endif
whismanoid 15:37c83ec50ea0 890 #if HAS_digitalInOut3
whismanoid 15:37c83ec50ea0 891 DigitalInOut digitalInOut3(P0_3, PIN_INPUT, PullUp, 1); // P0_3 TARGET_MAX32625PICO D3
whismanoid 15:37c83ec50ea0 892 #endif
whismanoid 15:37c83ec50ea0 893 #if HAS_digitalInOut4
whismanoid 15:37c83ec50ea0 894 DigitalInOut digitalInOut4(P0_4, PIN_INPUT, PullUp, 1); // P0_4 TARGET_MAX32625PICO D4
whismanoid 15:37c83ec50ea0 895 #endif
whismanoid 15:37c83ec50ea0 896 #if HAS_digitalInOut5
whismanoid 15:37c83ec50ea0 897 DigitalInOut digitalInOut5(P0_5, PIN_INPUT, PullUp, 1); // P0_5 TARGET_MAX32625PICO D5
whismanoid 15:37c83ec50ea0 898 #endif
whismanoid 15:37c83ec50ea0 899 #if HAS_digitalInOut6
whismanoid 15:37c83ec50ea0 900 DigitalInOut digitalInOut6(P0_6, PIN_INPUT, PullUp, 1); // P0_6 TARGET_MAX32625PICO D6
whismanoid 15:37c83ec50ea0 901 #endif
whismanoid 15:37c83ec50ea0 902 #if HAS_digitalInOut7
whismanoid 15:37c83ec50ea0 903 DigitalInOut digitalInOut7(P0_7, PIN_INPUT, PullUp, 1); // P0_7 TARGET_MAX32625PICO D7
whismanoid 15:37c83ec50ea0 904 #endif
whismanoid 15:37c83ec50ea0 905 #if HAS_digitalInOut8
whismanoid 15:37c83ec50ea0 906 DigitalInOut digitalInOut8(P4_0, PIN_INPUT, PullUp, 1); // P4_0 TARGET_MAX32625PICO D8
whismanoid 15:37c83ec50ea0 907 #endif
whismanoid 15:37c83ec50ea0 908 #if HAS_digitalInOut9
whismanoid 15:37c83ec50ea0 909 DigitalInOut digitalInOut9(P4_1, PIN_INPUT, PullUp, 1); // P4_1 TARGET_MAX32625PICO D9
whismanoid 15:37c83ec50ea0 910 #endif
whismanoid 15:37c83ec50ea0 911 #if HAS_digitalInOut10
whismanoid 15:37c83ec50ea0 912 DigitalInOut digitalInOut10(P4_2, PIN_INPUT, PullUp, 1); // P4_2 TARGET_MAX32625PICO D10
whismanoid 15:37c83ec50ea0 913 #endif
whismanoid 15:37c83ec50ea0 914 #if HAS_digitalInOut11
whismanoid 15:37c83ec50ea0 915 DigitalInOut digitalInOut11(P4_3, PIN_INPUT, PullUp, 1); // P4_3 TARGET_MAX32625PICO D11
whismanoid 15:37c83ec50ea0 916 #endif
whismanoid 15:37c83ec50ea0 917 #if HAS_digitalInOut12
whismanoid 15:37c83ec50ea0 918 DigitalInOut digitalInOut12(P4_4, PIN_INPUT, PullUp, 1); // P4_4 TARGET_MAX32625PICO D12
whismanoid 15:37c83ec50ea0 919 #endif
whismanoid 15:37c83ec50ea0 920 #if HAS_digitalInOut13
whismanoid 15:37c83ec50ea0 921 DigitalInOut digitalInOut13(P4_5, PIN_INPUT, PullUp, 1); // P4_5 TARGET_MAX32625PICO D13
whismanoid 15:37c83ec50ea0 922 #endif
whismanoid 15:37c83ec50ea0 923 #if HAS_digitalInOut14
whismanoid 15:37c83ec50ea0 924 DigitalInOut digitalInOut14(P4_6, PIN_INPUT, PullUp, 1); // P4_6 TARGET_MAX32625PICO D14
whismanoid 15:37c83ec50ea0 925 #endif
whismanoid 15:37c83ec50ea0 926 #if HAS_digitalInOut15
whismanoid 15:37c83ec50ea0 927 DigitalInOut digitalInOut15(P4_7, PIN_INPUT, PullUp, 1); // P4_7 TARGET_MAX32625PICO D15
whismanoid 15:37c83ec50ea0 928 #endif
whismanoid 15:37c83ec50ea0 929 #if HAS_digitalInOut16
whismanoid 15:37c83ec50ea0 930 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 15:37c83ec50ea0 931 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 15:37c83ec50ea0 932 DigitalInOut digitalInOut16(P1_6, PIN_INPUT, OpenDrain, 1); // P1_6 TARGET_MAX32635PICO A4/SDA
whismanoid 15:37c83ec50ea0 933 #endif
whismanoid 15:37c83ec50ea0 934 #if HAS_digitalInOut17
whismanoid 15:37c83ec50ea0 935 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 15:37c83ec50ea0 936 DigitalInOut digitalInOut17(P1_7, PIN_INPUT, OpenDrain, 1); // P1_7 TARGET_MAX32635PICO A5/SCL
whismanoid 15:37c83ec50ea0 937 #endif
whismanoid 15:37c83ec50ea0 938 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 939 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 940 #define HAS_digitalInOut0 0
whismanoid 0:cb44e2e9ec4c 941 #define HAS_digitalInOut1 0
whismanoid 0:cb44e2e9ec4c 942 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 943 // D2 -- MAX11131 EOC DigitalIn
whismanoid 0:cb44e2e9ec4c 944 #define HAS_digitalInOut2 0
whismanoid 0:cb44e2e9ec4c 945 #else
whismanoid 0:cb44e2e9ec4c 946 #define HAS_digitalInOut2 1
whismanoid 0:cb44e2e9ec4c 947 #endif
whismanoid 0:cb44e2e9ec4c 948 #define HAS_digitalInOut3 1
whismanoid 0:cb44e2e9ec4c 949 #define HAS_digitalInOut4 1
whismanoid 0:cb44e2e9ec4c 950 #define HAS_digitalInOut5 1
whismanoid 0:cb44e2e9ec4c 951 #define HAS_digitalInOut6 1
whismanoid 0:cb44e2e9ec4c 952 #define HAS_digitalInOut7 1
whismanoid 0:cb44e2e9ec4c 953 #if APPLICATION_MAX5715
whismanoid 0:cb44e2e9ec4c 954 // D8 -- MAX5715 CLRb DigitalOut
whismanoid 0:cb44e2e9ec4c 955 #define HAS_digitalInOut8 0
whismanoid 0:cb44e2e9ec4c 956 #else
whismanoid 0:cb44e2e9ec4c 957 #define HAS_digitalInOut8 1
whismanoid 0:cb44e2e9ec4c 958 #endif
whismanoid 0:cb44e2e9ec4c 959 #if APPLICATION_MAX5715
whismanoid 0:cb44e2e9ec4c 960 // D9 -- MAX5715 LDACb DigitalOut
whismanoid 0:cb44e2e9ec4c 961 #define HAS_digitalInOut9 0
whismanoid 0:cb44e2e9ec4c 962 #elif APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 963 // D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:cb44e2e9ec4c 964 #define HAS_digitalInOut9 0
whismanoid 0:cb44e2e9ec4c 965 #else
whismanoid 0:cb44e2e9ec4c 966 #define HAS_digitalInOut9 1
whismanoid 0:cb44e2e9ec4c 967 #endif
whismanoid 0:cb44e2e9ec4c 968 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 969 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 970 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:cb44e2e9ec4c 971 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:cb44e2e9ec4c 972 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:cb44e2e9ec4c 973 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:cb44e2e9ec4c 974 #define HAS_digitalInOut10 0
whismanoid 0:cb44e2e9ec4c 975 #define HAS_digitalInOut11 0
whismanoid 0:cb44e2e9ec4c 976 #define HAS_digitalInOut12 0
whismanoid 0:cb44e2e9ec4c 977 #define HAS_digitalInOut13 0
whismanoid 0:cb44e2e9ec4c 978 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 979 #define HAS_digitalInOut10 1
whismanoid 0:cb44e2e9ec4c 980 #define HAS_digitalInOut11 1
whismanoid 0:cb44e2e9ec4c 981 #define HAS_digitalInOut12 1
whismanoid 0:cb44e2e9ec4c 982 #define HAS_digitalInOut13 1
whismanoid 0:cb44e2e9ec4c 983 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 984 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 985 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 986 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 987 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 988 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 989 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 990 #define HAS_digitalInOut14 0
whismanoid 0:cb44e2e9ec4c 991 #define HAS_digitalInOut15 0
whismanoid 0:cb44e2e9ec4c 992 #define HAS_digitalInOut16 0
whismanoid 0:cb44e2e9ec4c 993 #define HAS_digitalInOut17 0
whismanoid 0:cb44e2e9ec4c 994 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 995 #define HAS_digitalInOut14 1
whismanoid 0:cb44e2e9ec4c 996 #define HAS_digitalInOut15 1
whismanoid 0:cb44e2e9ec4c 997 #define HAS_digitalInOut16 0
whismanoid 0:cb44e2e9ec4c 998 #define HAS_digitalInOut17 0
whismanoid 0:cb44e2e9ec4c 999 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 1000 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1001 DigitalInOut digitalInOut0(D0, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1002 #endif
whismanoid 0:cb44e2e9ec4c 1003 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1004 DigitalInOut digitalInOut1(D1, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1005 #endif
whismanoid 0:cb44e2e9ec4c 1006 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1007 DigitalInOut digitalInOut2(D2, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1008 #endif
whismanoid 0:cb44e2e9ec4c 1009 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1010 DigitalInOut digitalInOut3(D3, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1011 #endif
whismanoid 0:cb44e2e9ec4c 1012 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1013 DigitalInOut digitalInOut4(D4, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1014 #endif
whismanoid 0:cb44e2e9ec4c 1015 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1016 DigitalInOut digitalInOut5(D5, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1017 #endif
whismanoid 0:cb44e2e9ec4c 1018 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1019 DigitalInOut digitalInOut6(D6, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1020 #endif
whismanoid 0:cb44e2e9ec4c 1021 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1022 DigitalInOut digitalInOut7(D7, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1023 #endif
whismanoid 0:cb44e2e9ec4c 1024 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1025 DigitalInOut digitalInOut8(D8, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1026 #endif
whismanoid 0:cb44e2e9ec4c 1027 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1028 DigitalInOut digitalInOut9(D9, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1029 #endif
whismanoid 0:cb44e2e9ec4c 1030 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1031 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:cb44e2e9ec4c 1032 DigitalInOut digitalInOut10(D10, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1033 #endif
whismanoid 0:cb44e2e9ec4c 1034 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1035 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:cb44e2e9ec4c 1036 DigitalInOut digitalInOut11(D11, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1037 #endif
whismanoid 0:cb44e2e9ec4c 1038 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1039 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:cb44e2e9ec4c 1040 DigitalInOut digitalInOut12(D12, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1041 #endif
whismanoid 0:cb44e2e9ec4c 1042 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1043 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:cb44e2e9ec4c 1044 DigitalInOut digitalInOut13(D13, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1045 #endif
whismanoid 0:cb44e2e9ec4c 1046 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1047 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1048 DigitalInOut digitalInOut14(D14, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1049 #endif
whismanoid 0:cb44e2e9ec4c 1050 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1051 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1052 DigitalInOut digitalInOut15(D15, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1053 #endif
whismanoid 0:cb44e2e9ec4c 1054 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1055 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1056 DigitalInOut digitalInOut16(D16, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1057 #endif
whismanoid 0:cb44e2e9ec4c 1058 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1059 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1060 DigitalInOut digitalInOut17(D17, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1061 #endif
whismanoid 0:cb44e2e9ec4c 1062 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1063 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1064 #define HAS_digitalInOut0 1
whismanoid 0:cb44e2e9ec4c 1065 #define HAS_digitalInOut1 1
whismanoid 0:cb44e2e9ec4c 1066 #define HAS_digitalInOut2 1
whismanoid 0:cb44e2e9ec4c 1067 #define HAS_digitalInOut3 1
whismanoid 0:cb44e2e9ec4c 1068 #define HAS_digitalInOut4 1
whismanoid 0:cb44e2e9ec4c 1069 #define HAS_digitalInOut5 1
whismanoid 0:cb44e2e9ec4c 1070 #define HAS_digitalInOut6 1
whismanoid 0:cb44e2e9ec4c 1071 #define HAS_digitalInOut7 1
whismanoid 0:cb44e2e9ec4c 1072 #define HAS_digitalInOut8 1
whismanoid 0:cb44e2e9ec4c 1073 #define HAS_digitalInOut9 1
whismanoid 0:cb44e2e9ec4c 1074 // #define HAS_digitalInOut10 1
whismanoid 0:cb44e2e9ec4c 1075 // #define HAS_digitalInOut11 1
whismanoid 0:cb44e2e9ec4c 1076 // #define HAS_digitalInOut12 1
whismanoid 0:cb44e2e9ec4c 1077 // #define HAS_digitalInOut13 1
whismanoid 0:cb44e2e9ec4c 1078 // #define HAS_digitalInOut14 1
whismanoid 0:cb44e2e9ec4c 1079 // #define HAS_digitalInOut15 1
whismanoid 0:cb44e2e9ec4c 1080 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1081 DigitalInOut digitalInOut0(p5, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.9/I2STX_SDA/MOSI1/MAT2.3
whismanoid 0:cb44e2e9ec4c 1082 #endif
whismanoid 0:cb44e2e9ec4c 1083 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1084 DigitalInOut digitalInOut1(p6, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.8/I2STX_WS/MISO1/MAT2.2
whismanoid 0:cb44e2e9ec4c 1085 #endif
whismanoid 0:cb44e2e9ec4c 1086 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1087 DigitalInOut digitalInOut2(p7, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.7/I2STX_CLK/SCK1/MAT2.1
whismanoid 0:cb44e2e9ec4c 1088 #endif
whismanoid 0:cb44e2e9ec4c 1089 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1090 DigitalInOut digitalInOut3(p8, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.6/I2SRX_SDA/SSEL1/MAT2.0
whismanoid 0:cb44e2e9ec4c 1091 #endif
whismanoid 0:cb44e2e9ec4c 1092 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1093 DigitalInOut digitalInOut4(p9, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.0/CAN_RX1/TXD3/SDA1
whismanoid 0:cb44e2e9ec4c 1094 #endif
whismanoid 0:cb44e2e9ec4c 1095 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1096 DigitalInOut digitalInOut5(p10, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.1/CAN_TX1/RXD3/SCL1
whismanoid 0:cb44e2e9ec4c 1097 #endif
whismanoid 0:cb44e2e9ec4c 1098 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1099 DigitalInOut digitalInOut6(p11, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.18/DCD1/MOSI0/MOSI1
whismanoid 0:cb44e2e9ec4c 1100 #endif
whismanoid 0:cb44e2e9ec4c 1101 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1102 DigitalInOut digitalInOut7(p12, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.17/CTS1/MISO0/MISO
whismanoid 0:cb44e2e9ec4c 1103 #endif
whismanoid 0:cb44e2e9ec4c 1104 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1105 DigitalInOut digitalInOut8(p13, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.15/TXD1/SCK0/SCK
whismanoid 0:cb44e2e9ec4c 1106 #endif
whismanoid 0:cb44e2e9ec4c 1107 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1108 DigitalInOut digitalInOut9(p14, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.16/RXD1/SSEL0/SSEL
whismanoid 0:cb44e2e9ec4c 1109 #endif
whismanoid 0:cb44e2e9ec4c 1110 //
whismanoid 0:cb44e2e9ec4c 1111 // these pins support analog input analogIn0 .. analogIn5
whismanoid 0:cb44e2e9ec4c 1112 //DigitalInOut digitalInOut_(p15, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:cb44e2e9ec4c 1113 //DigitalInOut digitalInOut_(p16, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:cb44e2e9ec4c 1114 //DigitalInOut digitalInOut_(p17, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:cb44e2e9ec4c 1115 //DigitalInOut digitalInOut_(p18, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:cb44e2e9ec4c 1116 //DigitalInOut digitalInOut_(p19, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:cb44e2e9ec4c 1117 //DigitalInOut digitalInOut_(p20, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:cb44e2e9ec4c 1118 //
whismanoid 0:cb44e2e9ec4c 1119 // these pins support PWM pwmDriver1 .. pwmDriver6
whismanoid 0:cb44e2e9ec4c 1120 //DigitalInOut digitalInOut_(p21, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.5/PWM1.6/DTR1/TRACEDATA0
whismanoid 0:cb44e2e9ec4c 1121 //DigitalInOut digitalInOut_(p22, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.4/PWM1.5/DSR1/TRACEDATA1
whismanoid 0:cb44e2e9ec4c 1122 //DigitalInOut digitalInOut_(p23, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.3/PWM1.4/DCD1/TRACEDATA2
whismanoid 0:cb44e2e9ec4c 1123 //DigitalInOut digitalInOut_(p24, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.2/PWM1.3/CTS1/TRACEDATA3
whismanoid 0:cb44e2e9ec4c 1124 //DigitalInOut digitalInOut_(p25, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.1/PWM1.2/RXD1
whismanoid 0:cb44e2e9ec4c 1125 //DigitalInOut digitalInOut_(p26, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.0/PWM1.1/TXD1/TRACECLK
whismanoid 0:cb44e2e9ec4c 1126 //
whismanoid 0:cb44e2e9ec4c 1127 // these could be additional digitalInOut pins
whismanoid 0:cb44e2e9ec4c 1128 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1129 DigitalInOut digitalInOut10(p27, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.11/RXD2/SCL2/MAT3.1
whismanoid 0:cb44e2e9ec4c 1130 #endif
whismanoid 0:cb44e2e9ec4c 1131 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1132 DigitalInOut digitalInOut11(p28, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.10/TXD2/SDA2/MAT3.0
whismanoid 0:cb44e2e9ec4c 1133 #endif
whismanoid 0:cb44e2e9ec4c 1134 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1135 DigitalInOut digitalInOut12(p29, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.5/I2SRX_WS/CAN_TX2/CAP2.1
whismanoid 0:cb44e2e9ec4c 1136 #endif
whismanoid 0:cb44e2e9ec4c 1137 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1138 DigitalInOut digitalInOut13(p30, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.4/I2SRX_CLK/CAN_RX2/CAP2.0
whismanoid 0:cb44e2e9ec4c 1139 #endif
whismanoid 0:cb44e2e9ec4c 1140 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1141 DigitalInOut digitalInOut14(___, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1142 #endif
whismanoid 0:cb44e2e9ec4c 1143 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1144 DigitalInOut digitalInOut15(___, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1145 #endif
whismanoid 0:cb44e2e9ec4c 1146 #else
whismanoid 0:cb44e2e9ec4c 1147 // unknown target
whismanoid 0:cb44e2e9ec4c 1148 #endif
whismanoid 0:cb44e2e9ec4c 1149 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:cb44e2e9ec4c 1150 #if HAS_digitalInOut0 || HAS_digitalInOut1 \
whismanoid 0:cb44e2e9ec4c 1151 || HAS_digitalInOut2 || HAS_digitalInOut3 \
whismanoid 0:cb44e2e9ec4c 1152 || HAS_digitalInOut4 || HAS_digitalInOut5 \
whismanoid 0:cb44e2e9ec4c 1153 || HAS_digitalInOut6 || HAS_digitalInOut7 \
whismanoid 0:cb44e2e9ec4c 1154 || HAS_digitalInOut8 || HAS_digitalInOut9 \
whismanoid 0:cb44e2e9ec4c 1155 || HAS_digitalInOut10 || HAS_digitalInOut11 \
whismanoid 0:cb44e2e9ec4c 1156 || HAS_digitalInOut12 || HAS_digitalInOut13 \
whismanoid 0:cb44e2e9ec4c 1157 || HAS_digitalInOut14 || HAS_digitalInOut15 \
whismanoid 0:cb44e2e9ec4c 1158 || HAS_digitalInOut16 || HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1159 #define HAS_digitalInOuts 1
whismanoid 0:cb44e2e9ec4c 1160 #else
whismanoid 0:cb44e2e9ec4c 1161 #warning "Note: There are no digitalInOut resources defined"
whismanoid 0:cb44e2e9ec4c 1162 #endif
whismanoid 0:cb44e2e9ec4c 1163
whismanoid 0:cb44e2e9ec4c 1164 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:cb44e2e9ec4c 1165 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1166 // Declare the AnalogIn driver
whismanoid 0:cb44e2e9ec4c 1167 // Optional analogIn support. If there is only one it should be analogIn1.
whismanoid 0:cb44e2e9ec4c 1168 // A) analog input
whismanoid 0:cb44e2e9ec4c 1169 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 1170 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1171 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1172 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1173 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1174 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1175 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1176 #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1177 #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1178 #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1179 #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1180 // #define HAS_analogIn10 0
whismanoid 0:cb44e2e9ec4c 1181 // #define HAS_analogIn11 0
whismanoid 0:cb44e2e9ec4c 1182 // #define HAS_analogIn12 0
whismanoid 0:cb44e2e9ec4c 1183 // #define HAS_analogIn13 0
whismanoid 0:cb44e2e9ec4c 1184 // #define HAS_analogIn14 0
whismanoid 0:cb44e2e9ec4c 1185 // #define HAS_analogIn15 0
whismanoid 0:cb44e2e9ec4c 1186 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1187 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1188 #endif
whismanoid 0:cb44e2e9ec4c 1189 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1190 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1191 #endif
whismanoid 0:cb44e2e9ec4c 1192 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1193 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1194 #endif
whismanoid 0:cb44e2e9ec4c 1195 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1196 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1197 #endif
whismanoid 0:cb44e2e9ec4c 1198 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1199 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1200 #endif
whismanoid 0:cb44e2e9ec4c 1201 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1202 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1203 #endif
whismanoid 0:cb44e2e9ec4c 1204 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1205 AnalogIn analogIn6(AIN_6); // TARGET_MAX32630 AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1206 #endif
whismanoid 0:cb44e2e9ec4c 1207 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1208 AnalogIn analogIn7(AIN_7); // TARGET_MAX32630 AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1209 #endif
whismanoid 0:cb44e2e9ec4c 1210 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1211 AnalogIn analogIn8(AIN_8); // TARGET_MAX32630 AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1212 #endif
whismanoid 0:cb44e2e9ec4c 1213 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1214 AnalogIn analogIn9(AIN_9); // TARGET_MAX32630 AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1215 #endif
whismanoid 0:cb44e2e9ec4c 1216 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1217 AnalogIn analogIn10(____); // TARGET_MAX32630 AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1218 #endif
whismanoid 0:cb44e2e9ec4c 1219 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1220 AnalogIn analogIn11(____); // TARGET_MAX32630 AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1221 #endif
whismanoid 0:cb44e2e9ec4c 1222 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1223 AnalogIn analogIn12(____); // TARGET_MAX32630 AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1224 #endif
whismanoid 0:cb44e2e9ec4c 1225 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1226 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1227 #endif
whismanoid 0:cb44e2e9ec4c 1228 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1229 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1230 #endif
whismanoid 0:cb44e2e9ec4c 1231 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1232 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1233 #endif
whismanoid 0:cb44e2e9ec4c 1234 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1235 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 1236 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1237 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1238 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1239 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1240 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1241 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1242 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1243 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1244 #endif
whismanoid 0:cb44e2e9ec4c 1245 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1246 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1247 #endif
whismanoid 0:cb44e2e9ec4c 1248 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1249 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1250 #endif
whismanoid 0:cb44e2e9ec4c 1251 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1252 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1253 #endif
whismanoid 0:cb44e2e9ec4c 1254 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1255 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1256 #endif
whismanoid 0:cb44e2e9ec4c 1257 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1258 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1259 #endif
whismanoid 0:cb44e2e9ec4c 1260 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1261 #elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 1262 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1263 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1264 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1265 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1266 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1267 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1268 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1269 #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1270 #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1271 #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1272 #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1273 // #define HAS_analogIn10 0
whismanoid 0:cb44e2e9ec4c 1274 // #define HAS_analogIn11 0
whismanoid 0:cb44e2e9ec4c 1275 // #define HAS_analogIn12 0
whismanoid 0:cb44e2e9ec4c 1276 // #define HAS_analogIn13 0
whismanoid 0:cb44e2e9ec4c 1277 // #define HAS_analogIn14 0
whismanoid 0:cb44e2e9ec4c 1278 // #define HAS_analogIn15 0
whismanoid 0:cb44e2e9ec4c 1279 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1280 AnalogIn analogIn0(AIN_0); // TARGET_MAX32620FTHR J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1281 #endif
whismanoid 0:cb44e2e9ec4c 1282 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1283 AnalogIn analogIn1(AIN_1); // TARGET_MAX32620FTHR J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1284 #endif
whismanoid 0:cb44e2e9ec4c 1285 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1286 AnalogIn analogIn2(AIN_2); // TARGET_MAX32620FTHR J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1287 #endif
whismanoid 0:cb44e2e9ec4c 1288 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1289 AnalogIn analogIn3(AIN_3); // TARGET_MAX32620FTHR J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1290 #endif
whismanoid 0:cb44e2e9ec4c 1291 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1292 AnalogIn analogIn4(AIN_4); // TARGET_MAX32620FTHR J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1293 #endif
whismanoid 0:cb44e2e9ec4c 1294 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1295 AnalogIn analogIn5(AIN_5); // TARGET_MAX32620FTHR J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1296 #endif
whismanoid 0:cb44e2e9ec4c 1297 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1298 AnalogIn analogIn6(AIN_6); // TARGET_MAX32620FTHR AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1299 #endif
whismanoid 0:cb44e2e9ec4c 1300 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1301 AnalogIn analogIn7(AIN_7); // TARGET_MAX32620FTHR AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1302 #endif
whismanoid 0:cb44e2e9ec4c 1303 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1304 AnalogIn analogIn8(AIN_8); // TARGET_MAX32620FTHR AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1305 #endif
whismanoid 0:cb44e2e9ec4c 1306 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1307 AnalogIn analogIn9(AIN_9); // TARGET_MAX32620FTHR AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1308 #endif
whismanoid 0:cb44e2e9ec4c 1309 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1310 AnalogIn analogIn10(____); // TARGET_MAX32620FTHR AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1311 #endif
whismanoid 0:cb44e2e9ec4c 1312 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1313 AnalogIn analogIn11(____); // TARGET_MAX32620FTHR AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1314 #endif
whismanoid 0:cb44e2e9ec4c 1315 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1316 AnalogIn analogIn12(____); // TARGET_MAX32620FTHR AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1317 #endif
whismanoid 0:cb44e2e9ec4c 1318 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1319 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1320 #endif
whismanoid 0:cb44e2e9ec4c 1321 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1322 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1323 #endif
whismanoid 0:cb44e2e9ec4c 1324 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1325 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1326 #endif
whismanoid 0:cb44e2e9ec4c 1327 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 1328 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 1329 #warning "TARGET_MAX32625PICO not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1330 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1331 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1332 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1333 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1334 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1335 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1336 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1337 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1338 #endif
whismanoid 0:cb44e2e9ec4c 1339 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1340 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1341 #endif
whismanoid 0:cb44e2e9ec4c 1342 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1343 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1344 #endif
whismanoid 0:cb44e2e9ec4c 1345 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1346 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1347 #endif
whismanoid 0:cb44e2e9ec4c 1348 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1349 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1350 #endif
whismanoid 0:cb44e2e9ec4c 1351 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1352 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1353 #endif
whismanoid 0:cb44e2e9ec4c 1354 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1355 #elif defined(TARGET_MAX32600)
whismanoid 0:cb44e2e9ec4c 1356 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1357 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1358 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1359 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1360 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1361 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1362 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1363 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1364 #endif
whismanoid 0:cb44e2e9ec4c 1365 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1366 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1367 #endif
whismanoid 0:cb44e2e9ec4c 1368 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1369 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1370 #endif
whismanoid 0:cb44e2e9ec4c 1371 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1372 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1373 #endif
whismanoid 0:cb44e2e9ec4c 1374 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1375 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1376 #endif
whismanoid 0:cb44e2e9ec4c 1377 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1378 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1379 #endif
whismanoid 0:cb44e2e9ec4c 1380 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1381 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 1382 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1383 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1384 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1385 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1386 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1387 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1388 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1389 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1390 #endif
whismanoid 0:cb44e2e9ec4c 1391 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1392 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1393 #endif
whismanoid 0:cb44e2e9ec4c 1394 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1395 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1396 #endif
whismanoid 0:cb44e2e9ec4c 1397 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1398 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1399 #endif
whismanoid 0:cb44e2e9ec4c 1400 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1401 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1402 #endif
whismanoid 0:cb44e2e9ec4c 1403 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1404 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1405 #endif
whismanoid 0:cb44e2e9ec4c 1406 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1407 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1408 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1409 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1410 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1411 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1412 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1413 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1414 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1415 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1416 #endif
whismanoid 0:cb44e2e9ec4c 1417 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1418 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1419 #endif
whismanoid 0:cb44e2e9ec4c 1420 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1421 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1422 #endif
whismanoid 0:cb44e2e9ec4c 1423 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1424 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1425 #endif
whismanoid 0:cb44e2e9ec4c 1426 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1427 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1428 #endif
whismanoid 0:cb44e2e9ec4c 1429 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1430 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1431 #endif
whismanoid 0:cb44e2e9ec4c 1432 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1433 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 1434 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1435 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1436 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1437 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1438 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1439 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1440 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1441 // #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1442 // #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1443 // #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1444 // #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1445 // #define HAS_analogIn10 1
whismanoid 0:cb44e2e9ec4c 1446 // #define HAS_analogIn11 1
whismanoid 0:cb44e2e9ec4c 1447 // #define HAS_analogIn12 1
whismanoid 0:cb44e2e9ec4c 1448 // #define HAS_analogIn13 1
whismanoid 0:cb44e2e9ec4c 1449 // #define HAS_analogIn14 1
whismanoid 0:cb44e2e9ec4c 1450 // #define HAS_analogIn15 1
whismanoid 0:cb44e2e9ec4c 1451 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1452 AnalogIn analogIn0(p15); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:cb44e2e9ec4c 1453 #endif
whismanoid 0:cb44e2e9ec4c 1454 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1455 AnalogIn analogIn1(p16); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:cb44e2e9ec4c 1456 #endif
whismanoid 0:cb44e2e9ec4c 1457 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1458 AnalogIn analogIn2(p17); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:cb44e2e9ec4c 1459 #endif
whismanoid 0:cb44e2e9ec4c 1460 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1461 AnalogIn analogIn3(p18); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:cb44e2e9ec4c 1462 #endif
whismanoid 0:cb44e2e9ec4c 1463 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1464 AnalogIn analogIn4(p19); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:cb44e2e9ec4c 1465 #endif
whismanoid 0:cb44e2e9ec4c 1466 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1467 AnalogIn analogIn5(p20); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:cb44e2e9ec4c 1468 #endif
whismanoid 0:cb44e2e9ec4c 1469 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1470 AnalogIn analogIn6(____);
whismanoid 0:cb44e2e9ec4c 1471 #endif
whismanoid 0:cb44e2e9ec4c 1472 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1473 AnalogIn analogIn7(____);
whismanoid 0:cb44e2e9ec4c 1474 #endif
whismanoid 0:cb44e2e9ec4c 1475 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1476 AnalogIn analogIn8(____);
whismanoid 0:cb44e2e9ec4c 1477 #endif
whismanoid 0:cb44e2e9ec4c 1478 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1479 AnalogIn analogIn9(____);
whismanoid 0:cb44e2e9ec4c 1480 #endif
whismanoid 0:cb44e2e9ec4c 1481 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1482 AnalogIn analogIn10(____);
whismanoid 0:cb44e2e9ec4c 1483 #endif
whismanoid 0:cb44e2e9ec4c 1484 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1485 AnalogIn analogIn11(____);
whismanoid 0:cb44e2e9ec4c 1486 #endif
whismanoid 0:cb44e2e9ec4c 1487 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1488 AnalogIn analogIn12(____);
whismanoid 0:cb44e2e9ec4c 1489 #endif
whismanoid 0:cb44e2e9ec4c 1490 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1491 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1492 #endif
whismanoid 0:cb44e2e9ec4c 1493 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1494 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1495 #endif
whismanoid 0:cb44e2e9ec4c 1496 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1497 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1498 #endif
whismanoid 0:cb44e2e9ec4c 1499 #else
whismanoid 0:cb44e2e9ec4c 1500 // unknown target
whismanoid 0:cb44e2e9ec4c 1501 #endif
whismanoid 0:cb44e2e9ec4c 1502 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:cb44e2e9ec4c 1503 #if HAS_analogIn0 || HAS_analogIn1 \
whismanoid 0:cb44e2e9ec4c 1504 || HAS_analogIn2 || HAS_analogIn3 \
whismanoid 0:cb44e2e9ec4c 1505 || HAS_analogIn4 || HAS_analogIn5 \
whismanoid 0:cb44e2e9ec4c 1506 || HAS_analogIn6 || HAS_analogIn7 \
whismanoid 0:cb44e2e9ec4c 1507 || HAS_analogIn8 || HAS_analogIn9 \
whismanoid 0:cb44e2e9ec4c 1508 || HAS_analogIn10 || HAS_analogIn11 \
whismanoid 0:cb44e2e9ec4c 1509 || HAS_analogIn12 || HAS_analogIn13 \
whismanoid 0:cb44e2e9ec4c 1510 || HAS_analogIn14 || HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1511 #define HAS_analogIns 1
whismanoid 0:cb44e2e9ec4c 1512 #else
whismanoid 0:cb44e2e9ec4c 1513 #warning "Note: There are no analogIn resources defined"
whismanoid 0:cb44e2e9ec4c 1514 #endif
whismanoid 0:cb44e2e9ec4c 1515
whismanoid 0:cb44e2e9ec4c 1516 // DigitalInOut pin resource: print the pin index names to serial
whismanoid 0:cb44e2e9ec4c 1517 #if HAS_digitalInOuts
whismanoid 0:cb44e2e9ec4c 1518 void list_digitalInOutPins(Stream& serialStream)
whismanoid 0:cb44e2e9ec4c 1519 {
whismanoid 0:cb44e2e9ec4c 1520 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1521 serialStream.printf(" 0");
whismanoid 0:cb44e2e9ec4c 1522 #endif
whismanoid 0:cb44e2e9ec4c 1523 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1524 serialStream.printf(" 1");
whismanoid 0:cb44e2e9ec4c 1525 #endif
whismanoid 0:cb44e2e9ec4c 1526 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1527 serialStream.printf(" 2");
whismanoid 0:cb44e2e9ec4c 1528 #endif
whismanoid 0:cb44e2e9ec4c 1529 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1530 serialStream.printf(" 3");
whismanoid 0:cb44e2e9ec4c 1531 #endif
whismanoid 0:cb44e2e9ec4c 1532 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1533 serialStream.printf(" 4");
whismanoid 0:cb44e2e9ec4c 1534 #endif
whismanoid 0:cb44e2e9ec4c 1535 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1536 serialStream.printf(" 5");
whismanoid 0:cb44e2e9ec4c 1537 #endif
whismanoid 0:cb44e2e9ec4c 1538 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1539 serialStream.printf(" 6");
whismanoid 0:cb44e2e9ec4c 1540 #endif
whismanoid 0:cb44e2e9ec4c 1541 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1542 serialStream.printf(" 7");
whismanoid 0:cb44e2e9ec4c 1543 #endif
whismanoid 0:cb44e2e9ec4c 1544 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1545 serialStream.printf(" 8");
whismanoid 0:cb44e2e9ec4c 1546 #endif
whismanoid 0:cb44e2e9ec4c 1547 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1548 serialStream.printf(" 9");
whismanoid 0:cb44e2e9ec4c 1549 #endif
whismanoid 0:cb44e2e9ec4c 1550 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1551 serialStream.printf(" 10");
whismanoid 0:cb44e2e9ec4c 1552 #endif
whismanoid 0:cb44e2e9ec4c 1553 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1554 serialStream.printf(" 11");
whismanoid 0:cb44e2e9ec4c 1555 #endif
whismanoid 0:cb44e2e9ec4c 1556 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1557 serialStream.printf(" 12");
whismanoid 0:cb44e2e9ec4c 1558 #endif
whismanoid 0:cb44e2e9ec4c 1559 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1560 serialStream.printf(" 13");
whismanoid 0:cb44e2e9ec4c 1561 #endif
whismanoid 0:cb44e2e9ec4c 1562 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1563 serialStream.printf(" 14");
whismanoid 0:cb44e2e9ec4c 1564 #endif
whismanoid 0:cb44e2e9ec4c 1565 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1566 serialStream.printf(" 15");
whismanoid 0:cb44e2e9ec4c 1567 #endif
whismanoid 0:cb44e2e9ec4c 1568 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1569 serialStream.printf(" 16");
whismanoid 0:cb44e2e9ec4c 1570 #endif
whismanoid 0:cb44e2e9ec4c 1571 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1572 serialStream.printf(" 17");
whismanoid 0:cb44e2e9ec4c 1573 #endif
whismanoid 18:1235c17b451e 1574 #if USE_LEDS
whismanoid 18:1235c17b451e 1575 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 1576 // support list_digitalInOutPins() listing buttons and leds as pin numbers 90/91/92/93
whismanoid 18:1235c17b451e 1577 // TODO: support find_digitalInOutPin(90) return DigitalInOut of switch SW1/BUTTON1
whismanoid 18:1235c17b451e 1578 //~ serialStream.printf(" 90");
whismanoid 18:1235c17b451e 1579 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 1580 serialStream.printf(" 91");
whismanoid 18:1235c17b451e 1581 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 1582 serialStream.printf(" 92");
whismanoid 18:1235c17b451e 1583 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 1584 serialStream.printf(" 93");
whismanoid 18:1235c17b451e 1585 #else // USE_LEDS
whismanoid 18:1235c17b451e 1586 #endif // USE_LEDS
whismanoid 0:cb44e2e9ec4c 1587 }
whismanoid 0:cb44e2e9ec4c 1588 #endif
whismanoid 0:cb44e2e9ec4c 1589
whismanoid 0:cb44e2e9ec4c 1590
whismanoid 0:cb44e2e9ec4c 1591 // DigitalInOut pin resource: search index
whismanoid 0:cb44e2e9ec4c 1592 #if HAS_digitalInOuts
whismanoid 0:cb44e2e9ec4c 1593 DigitalInOut& find_digitalInOutPin(int cPinIndex)
whismanoid 0:cb44e2e9ec4c 1594 {
whismanoid 0:cb44e2e9ec4c 1595 switch (cPinIndex)
whismanoid 0:cb44e2e9ec4c 1596 {
whismanoid 0:cb44e2e9ec4c 1597 default: // default to the first defined digitalInOut pin
whismanoid 0:cb44e2e9ec4c 1598 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1599 case '0': case 0x00: return digitalInOut0;
whismanoid 0:cb44e2e9ec4c 1600 #endif
whismanoid 0:cb44e2e9ec4c 1601 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1602 case '1': case 0x01: return digitalInOut1;
whismanoid 0:cb44e2e9ec4c 1603 #endif
whismanoid 0:cb44e2e9ec4c 1604 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1605 case '2': case 0x02: return digitalInOut2;
whismanoid 0:cb44e2e9ec4c 1606 #endif
whismanoid 0:cb44e2e9ec4c 1607 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1608 case '3': case 0x03: return digitalInOut3;
whismanoid 0:cb44e2e9ec4c 1609 #endif
whismanoid 0:cb44e2e9ec4c 1610 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1611 case '4': case 0x04: return digitalInOut4;
whismanoid 0:cb44e2e9ec4c 1612 #endif
whismanoid 0:cb44e2e9ec4c 1613 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1614 case '5': case 0x05: return digitalInOut5;
whismanoid 0:cb44e2e9ec4c 1615 #endif
whismanoid 0:cb44e2e9ec4c 1616 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1617 case '6': case 0x06: return digitalInOut6;
whismanoid 0:cb44e2e9ec4c 1618 #endif
whismanoid 0:cb44e2e9ec4c 1619 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1620 case '7': case 0x07: return digitalInOut7;
whismanoid 0:cb44e2e9ec4c 1621 #endif
whismanoid 0:cb44e2e9ec4c 1622 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1623 case '8': case 0x08: return digitalInOut8;
whismanoid 0:cb44e2e9ec4c 1624 #endif
whismanoid 0:cb44e2e9ec4c 1625 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1626 case '9': case 0x09: return digitalInOut9;
whismanoid 0:cb44e2e9ec4c 1627 #endif
whismanoid 0:cb44e2e9ec4c 1628 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1629 case 'a': case 0x0a: return digitalInOut10;
whismanoid 0:cb44e2e9ec4c 1630 #endif
whismanoid 0:cb44e2e9ec4c 1631 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1632 case 'b': case 0x0b: return digitalInOut11;
whismanoid 0:cb44e2e9ec4c 1633 #endif
whismanoid 0:cb44e2e9ec4c 1634 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1635 case 'c': case 0x0c: return digitalInOut12;
whismanoid 0:cb44e2e9ec4c 1636 #endif
whismanoid 0:cb44e2e9ec4c 1637 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1638 case 'd': case 0x0d: return digitalInOut13;
whismanoid 0:cb44e2e9ec4c 1639 #endif
whismanoid 0:cb44e2e9ec4c 1640 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1641 case 'e': case 0x0e: return digitalInOut14;
whismanoid 0:cb44e2e9ec4c 1642 #endif
whismanoid 0:cb44e2e9ec4c 1643 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1644 case 'f': case 0x0f: return digitalInOut15;
whismanoid 0:cb44e2e9ec4c 1645 #endif
whismanoid 0:cb44e2e9ec4c 1646 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1647 case 'g': case 0x10: return digitalInOut16;
whismanoid 0:cb44e2e9ec4c 1648 #endif
whismanoid 0:cb44e2e9ec4c 1649 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1650 case 'h': case 0x11: return digitalInOut17;
whismanoid 0:cb44e2e9ec4c 1651 #endif
whismanoid 18:1235c17b451e 1652 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 1653 // TODO: support find_digitalInOutPin(90) return DigitalInOut of switch SW1/BUTTON1
whismanoid 18:1235c17b451e 1654 //~ case 90: return button1;
whismanoid 18:1235c17b451e 1655 #if USE_LEDS
whismanoid 18:1235c17b451e 1656 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 1657 case 91: return led1_RFailLED;
whismanoid 18:1235c17b451e 1658 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 1659 case 92: return led2_GPassLED;
whismanoid 18:1235c17b451e 1660 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 1661 case 93: return led3_BBusyLED;
whismanoid 18:1235c17b451e 1662 #else // USE_LEDS
whismanoid 18:1235c17b451e 1663 #endif // USE_LEDS
whismanoid 0:cb44e2e9ec4c 1664 }
whismanoid 0:cb44e2e9ec4c 1665 }
whismanoid 0:cb44e2e9ec4c 1666 #endif
whismanoid 0:cb44e2e9ec4c 1667
whismanoid 0:cb44e2e9ec4c 1668
whismanoid 0:cb44e2e9ec4c 1669 // AnalogIn pin resource: search index
whismanoid 0:cb44e2e9ec4c 1670 #if HAS_analogIns
whismanoid 0:cb44e2e9ec4c 1671 AnalogIn& find_analogInPin(int cPinIndex)
whismanoid 0:cb44e2e9ec4c 1672 {
whismanoid 0:cb44e2e9ec4c 1673 switch (cPinIndex)
whismanoid 0:cb44e2e9ec4c 1674 {
whismanoid 0:cb44e2e9ec4c 1675 default: // default to the first defined analogIn pin
whismanoid 0:cb44e2e9ec4c 1676 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1677 case '0': case 0x00: return analogIn0;
whismanoid 0:cb44e2e9ec4c 1678 #endif
whismanoid 0:cb44e2e9ec4c 1679 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1680 case '1': case 0x01: return analogIn1;
whismanoid 0:cb44e2e9ec4c 1681 #endif
whismanoid 0:cb44e2e9ec4c 1682 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1683 case '2': case 0x02: return analogIn2;
whismanoid 0:cb44e2e9ec4c 1684 #endif
whismanoid 0:cb44e2e9ec4c 1685 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1686 case '3': case 0x03: return analogIn3;
whismanoid 0:cb44e2e9ec4c 1687 #endif
whismanoid 0:cb44e2e9ec4c 1688 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1689 case '4': case 0x04: return analogIn4;
whismanoid 0:cb44e2e9ec4c 1690 #endif
whismanoid 0:cb44e2e9ec4c 1691 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1692 case '5': case 0x05: return analogIn5;
whismanoid 0:cb44e2e9ec4c 1693 #endif
whismanoid 0:cb44e2e9ec4c 1694 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1695 case '6': case 0x06: return analogIn6;
whismanoid 0:cb44e2e9ec4c 1696 #endif
whismanoid 0:cb44e2e9ec4c 1697 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1698 case '7': case 0x07: return analogIn7;
whismanoid 0:cb44e2e9ec4c 1699 #endif
whismanoid 0:cb44e2e9ec4c 1700 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1701 case '8': case 0x08: return analogIn8;
whismanoid 0:cb44e2e9ec4c 1702 #endif
whismanoid 0:cb44e2e9ec4c 1703 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1704 case '9': case 0x09: return analogIn9;
whismanoid 0:cb44e2e9ec4c 1705 #endif
whismanoid 0:cb44e2e9ec4c 1706 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1707 case 'a': case 0x0a: return analogIn10;
whismanoid 0:cb44e2e9ec4c 1708 #endif
whismanoid 0:cb44e2e9ec4c 1709 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1710 case 'b': case 0x0b: return analogIn11;
whismanoid 0:cb44e2e9ec4c 1711 #endif
whismanoid 0:cb44e2e9ec4c 1712 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1713 case 'c': case 0x0c: return analogIn12;
whismanoid 0:cb44e2e9ec4c 1714 #endif
whismanoid 0:cb44e2e9ec4c 1715 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1716 case 'd': case 0x0d: return analogIn13;
whismanoid 0:cb44e2e9ec4c 1717 #endif
whismanoid 0:cb44e2e9ec4c 1718 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1719 case 'e': case 0x0e: return analogIn14;
whismanoid 0:cb44e2e9ec4c 1720 #endif
whismanoid 0:cb44e2e9ec4c 1721 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1722 case 'f': case 0x0f: return analogIn15;
whismanoid 0:cb44e2e9ec4c 1723 #endif
whismanoid 0:cb44e2e9ec4c 1724 }
whismanoid 0:cb44e2e9ec4c 1725 }
whismanoid 0:cb44e2e9ec4c 1726 #endif
whismanoid 0:cb44e2e9ec4c 1727
whismanoid 0:cb44e2e9ec4c 1728 #if HAS_analogIns
whismanoid 0:cb44e2e9ec4c 1729 const float analogInPin_fullScaleVoltage[] = {
whismanoid 0:cb44e2e9ec4c 1730 # if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 1731 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1732 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1733 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1734 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1735 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1736 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1737 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1738 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1739 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1740 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1741 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1742 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1743 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1744 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1745 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1746 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1747 # elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 1748 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1749 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1750 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1751 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1752 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1753 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1754 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1755 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1756 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1757 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1758 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1759 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1760 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1761 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1762 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1763 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1764 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 19:5ff09c8e9daf 1765 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 1766 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn0 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1767 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn1 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1768 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn2 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1769 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn3 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1770 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1771 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1772 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1773 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1774 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1775 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1776 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1777 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1778 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1779 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1780 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1781 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1782 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 1783 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1784 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1785 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1786 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1787 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1788 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1789 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1790 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1791 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1792 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1793 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1794 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1795 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1796 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1797 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1798 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1799 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1800 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1801 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1802 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1803 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1804 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1805 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1806 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1807 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1808 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1809 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1810 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1811 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1812 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1813 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1814 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1815 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1816 //#elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1817 #else
whismanoid 0:cb44e2e9ec4c 1818 // unknown target
whismanoid 0:cb44e2e9ec4c 1819 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1820 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1821 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1822 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1823 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1824 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1825 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1826 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1827 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1828 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1829 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1830 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1831 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1832 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1833 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1834 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1835 # endif
whismanoid 0:cb44e2e9ec4c 1836 };
whismanoid 0:cb44e2e9ec4c 1837 #endif
whismanoid 0:cb44e2e9ec4c 1838
whismanoid 0:cb44e2e9ec4c 1839
whismanoid 0:cb44e2e9ec4c 1840
whismanoid 0:cb44e2e9ec4c 1841
whismanoid 0:cb44e2e9ec4c 1842 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 1843 // TODO support CmdLine command menus (like on Serial_Tester)
whismanoid 4:d9b05924ad4c 1844 #ifndef USE_CMDLINE_MENUS
whismanoid 4:d9b05924ad4c 1845 #define USE_CMDLINE_MENUS 1
whismanoid 4:d9b05924ad4c 1846 //~ #undef USE_CMDLINE_MENUS
whismanoid 4:d9b05924ad4c 1847 #endif
whismanoid 4:d9b05924ad4c 1848 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 1849 #include "CmdLine.h"
whismanoid 4:d9b05924ad4c 1850 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 1851 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 1852 extern CmdLine cmdLine; // declared later
whismanoid 4:d9b05924ad4c 1853 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 1854
whismanoid 4:d9b05924ad4c 1855 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 1856 // Datalog trigger types
whismanoid 4:d9b05924ad4c 1857 #ifndef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 1858 #define USE_DATALOGGER_TRIGGER 1
whismanoid 4:d9b05924ad4c 1859 //~ #undef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 1860 #endif
whismanoid 4:d9b05924ad4c 1861 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 1862 typedef enum Datalogger_Trigger_enum_t {
whismanoid 4:d9b05924ad4c 1863 trigger_Halt = 0, //!< halt
whismanoid 4:d9b05924ad4c 1864 trigger_FreeRun = 1, //!< free run as fast as possible
whismanoid 4:d9b05924ad4c 1865 trigger_Timer = 2, //!< timer (configure interval)
whismanoid 4:d9b05924ad4c 1866 trigger_PlatformDigitalInput, //!< platform digital input (configure digital input pin reference)
whismanoid 4:d9b05924ad4c 1867 trigger_SPIDeviceRegRead, //!< SPI device register read (configure regaddr, mask value, match value)
whismanoid 4:d9b05924ad4c 1868 } Datalogger_Trigger_enum_t;
whismanoid 4:d9b05924ad4c 1869 Datalogger_Trigger_enum_t Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 1870 //
whismanoid 17:9397ea3ea7e9 1871 // configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 1872 int g_timer_interval_msec = 500; // trigger_Timer
whismanoid 17:9397ea3ea7e9 1873 int g_timer_interval_count = 10; // trigger_Timer
whismanoid 17:9397ea3ea7e9 1874 int g_timer_interval_counter = 0; // trigger_Timer
whismanoid 17:9397ea3ea7e9 1875 //
whismanoid 17:9397ea3ea7e9 1876 // TODO: configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 1877 //
whismanoid 17:9397ea3ea7e9 1878 // TODO: configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 1879 //
whismanoid 4:d9b05924ad4c 1880 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 1881
whismanoid 4:d9b05924ad4c 1882 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 1883 // support trigger_SPIDeviceRegRead: Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 1884 #ifndef USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 1885 #define USE_DATALOGGER_SPIDeviceRegRead 0
whismanoid 17:9397ea3ea7e9 1886 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 1887 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 1888 // TODO: uint16_t regAddr;
whismanoid 17:9397ea3ea7e9 1889 // TODO: uint16_t regDataMask;
whismanoid 17:9397ea3ea7e9 1890 // TODO: uint16_t regDataTest;
whismanoid 17:9397ea3ea7e9 1891 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 1892
whismanoid 17:9397ea3ea7e9 1893 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 1894 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 1895 #ifndef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 1896 #define USE_DATALOGGER_ActionTable 1
whismanoid 17:9397ea3ea7e9 1897 //~ #undef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 1898 #endif
whismanoid 17:9397ea3ea7e9 1899 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 1900 //
whismanoid 17:9397ea3ea7e9 1901 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 1902 typedef enum action_type_enum_t {
whismanoid 17:9397ea3ea7e9 1903 action_noop = 0, // no operation
whismanoid 17:9397ea3ea7e9 1904 action_digitalOutLow, // pin = low if condition
whismanoid 17:9397ea3ea7e9 1905 action_digitalOutHigh, // pin = low if condition
whismanoid 17:9397ea3ea7e9 1906 action_trigger_Halt,
whismanoid 17:9397ea3ea7e9 1907 action_trigger_FreeRun,
whismanoid 17:9397ea3ea7e9 1908 action_trigger_Timer,
whismanoid 17:9397ea3ea7e9 1909 action_trigger_PlatformDigitalInput,
whismanoid 17:9397ea3ea7e9 1910 action_trigger_SPIDeviceRegRead,
whismanoid 17:9397ea3ea7e9 1911 } action_type_enum_t;
whismanoid 17:9397ea3ea7e9 1912 //
whismanoid 17:9397ea3ea7e9 1913 // Datalogger_RunActionTable() supported conditions
whismanoid 17:9397ea3ea7e9 1914 typedef enum action_condition_enum_t {
whismanoid 17:9397ea3ea7e9 1915 condition_always = 0, // ( true )
whismanoid 17:9397ea3ea7e9 1916 condition_if_An_gt_threshold, // (Platform_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 1917 condition_if_An_lt_threshold, // (Platform_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 1918 condition_if_An_eq_threshold, // (Platform_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 1919 condition_if_An_ge_threshold, // (Platform_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 1920 condition_if_An_le_threshold, // (Platform_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 1921 condition_if_An_ne_threshold, // (Platform_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 1922 condition_if_AINn_gt_threshold, // (SPI_AIN_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 1923 condition_if_AINn_lt_threshold, // (SPI_AIN_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 1924 condition_if_AINn_eq_threshold, // (SPI_AIN_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 1925 condition_if_AINn_ge_threshold, // (SPI_AIN_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 1926 condition_if_AINn_le_threshold, // (SPI_AIN_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 1927 condition_if_AINn_ne_threshold, // (SPI_AIN_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 1928 } condition_enum_t;
whismanoid 17:9397ea3ea7e9 1929 //
whismanoid 17:9397ea3ea7e9 1930 // Datalogger_RunActionTable() structure
whismanoid 17:9397ea3ea7e9 1931 typedef struct action_table_row_t {
whismanoid 17:9397ea3ea7e9 1932 action_type_enum_t action;
whismanoid 17:9397ea3ea7e9 1933 int digitalOutPin;
whismanoid 17:9397ea3ea7e9 1934 action_condition_enum_t condition;
whismanoid 17:9397ea3ea7e9 1935 int condition_channel;
whismanoid 17:9397ea3ea7e9 1936 double condition_threshold;
whismanoid 17:9397ea3ea7e9 1937 } action_table_row_t;
whismanoid 17:9397ea3ea7e9 1938 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 1939 const int channel_WE = 2;
whismanoid 17:9397ea3ea7e9 1940 const double threshold_WE_0V5 = 0.5;
whismanoid 17:9397ea3ea7e9 1941 const double threshold_WE_0V6 = 0.6;
whismanoid 17:9397ea3ea7e9 1942 const double threshold_WE_0V7 = 0.7;
whismanoid 18:1235c17b451e 1943 const int pin_LED_1 = 91; // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 1944 const int pin_LED_2 = 92; // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 1945 const int pin_LED_3 = 93; // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 17:9397ea3ea7e9 1946 #endif
whismanoid 17:9397ea3ea7e9 1947 const int ACTION_TABLE_ROW_MAX = 20;
whismanoid 17:9397ea3ea7e9 1948 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 1949 bool Datalogger_action_table_enabled = true;
whismanoid 18:1235c17b451e 1950 int Datalogger_action_table_row_count = 6; // assert (Datalogger_action_table_row_count <= ACTION_TABLE_ROW_MAX)
whismanoid 17:9397ea3ea7e9 1951 #else // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 1952 int Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 1953 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 1954 action_table_row_t Datalogger_action_table[ACTION_TABLE_ROW_MAX] = {
whismanoid 17:9397ea3ea7e9 1955 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 1956 // LED indicator show (WE > 0.5V)
whismanoid 18:1235c17b451e 1957 // L@0 act=1 pin=92 if=1 ch=2 x=0.500000 -- digitalOutLow D92 if A2 > 0.500000
whismanoid 18:1235c17b451e 1958 {action_digitalOutLow, pin_LED_2, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V5},
whismanoid 17:9397ea3ea7e9 1959 //
whismanoid 17:9397ea3ea7e9 1960 // LED indicator show (WE > 0.6V)
whismanoid 18:1235c17b451e 1961 // L@1 act=1 pin=93 if=1 ch=2 x=0.600000 -- digitalOutLow D93 if A2 > 0.600000
whismanoid 18:1235c17b451e 1962 {action_digitalOutLow, pin_LED_3, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 17:9397ea3ea7e9 1963 //
whismanoid 17:9397ea3ea7e9 1964 // switch to always-on mode `trigger_FreeRun` if (WE > 0.7V)
whismanoid 18:1235c17b451e 1965 // L@2 act=4 if=1 ch=2 x=0.700000 -- trigger_FreeRun if A2 > 0.700000
whismanoid 17:9397ea3ea7e9 1966 {action_trigger_FreeRun, 0, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 17:9397ea3ea7e9 1967 //
whismanoid 17:9397ea3ea7e9 1968 // switch to intermittent-sleep-mode `trigger_Timer` if (WE < 0.6V)
whismanoid 18:1235c17b451e 1969 // L@3 act=5 if=2 ch=2 x=0.600000 -- trigger_Timer(10 x 500msec) if A2 < 0.600000
whismanoid 17:9397ea3ea7e9 1970 {action_trigger_Timer, 0, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 1971 //
whismanoid 18:1235c17b451e 1972 // LED indicator show (`Datalogger_Trigger` == `trigger_FreeRun`)
whismanoid 18:1235c17b451e 1973 // {action_noop, 0, condition_always, 0, 0},
whismanoid 18:1235c17b451e 1974 // L@4 act=1 pin=91 if=1 ch=2 x=0.700000 -- digitalOutLow D91 if A2 > 0.700000
whismanoid 18:1235c17b451e 1975 {action_digitalOutLow, pin_LED_1, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 18:1235c17b451e 1976 //
whismanoid 18:1235c17b451e 1977 // L@5 act=2 pin=91 if=2 ch=2 x=0.600000 -- digitalOutHigh D91 if A2 < 0.600000
whismanoid 18:1235c17b451e 1978 {action_digitalOutHigh, pin_LED_1, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 1979 //
whismanoid 17:9397ea3ea7e9 1980 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 1981 //
whismanoid 17:9397ea3ea7e9 1982 {action_noop, 0, condition_always, 0, 0},
whismanoid 17:9397ea3ea7e9 1983 };
whismanoid 17:9397ea3ea7e9 1984 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 1985
whismanoid 17:9397ea3ea7e9 1986 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 1987 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 1988 uint8_t Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 1989 uint8_t need_reinit = true;
whismanoid 8:dffee7509bfb 1990 void Datalogger_PrintHeader(CmdLine& cmdLine);
whismanoid 5:aaf8b5f5fda1 1991 void Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 1992 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 1993 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 1994 void Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 1995 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 8:dffee7509bfb 1996 void Datalogger_PrintRow(CmdLine& cmdLine);
whismanoid 4:d9b05924ad4c 1997
whismanoid 4:d9b05924ad4c 1998 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1999 // Option to validate SPI link by reading PART_ID register
whismanoid 0:cb44e2e9ec4c 2000 #ifndef VERIFY_PART_ID_IN_LOOP
whismanoid 3:9055e17e181a 2001 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2002 #define VERIFY_PART_ID_IN_LOOP 1
whismanoid 3:9055e17e181a 2003 #else
whismanoid 0:cb44e2e9ec4c 2004 #define VERIFY_PART_ID_IN_LOOP 0
whismanoid 3:9055e17e181a 2005 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2006 #endif
whismanoid 0:cb44e2e9ec4c 2007
whismanoid 3:9055e17e181a 2008 //--------------------------------------------------
whismanoid 3:9055e17e181a 2009 #define NUM_DUT_ANALOG_IN_CHANNELS 10
whismanoid 3:9055e17e181a 2010
whismanoid 3:9055e17e181a 2011 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2012 // MAX11410 individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 3:9055e17e181a 2013 typedef enum SPI_AIN_Enable_t {
whismanoid 10:04022a61b527 2014 SPI_AIN_Disable = 0,
whismanoid 10:04022a61b527 2015 SPI_AIN_Enable_LSB = 1,
whismanoid 10:04022a61b527 2016 SPI_AIN_Enable_Volt = 2,
whismanoid 3:9055e17e181a 2017 } SPI_AIN_Enable_t;
whismanoid 3:9055e17e181a 2018 uint8_t SPI_AIN_Enable_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2019 SPI_AIN_Enable_LSB, // AIN0 1=LSB
whismanoid 10:04022a61b527 2020 SPI_AIN_Enable_LSB, // AIN1 1=LSB
whismanoid 10:04022a61b527 2021 SPI_AIN_Enable_LSB, // AIN2 1=LSB
whismanoid 10:04022a61b527 2022 SPI_AIN_Enable_LSB, // AIN3 1=LSB
whismanoid 10:04022a61b527 2023 SPI_AIN_Enable_LSB, // AIN4 1=LSB
whismanoid 10:04022a61b527 2024 SPI_AIN_Enable_LSB, // AIN5 1=LSB
whismanoid 10:04022a61b527 2025 SPI_AIN_Enable_LSB, // AIN6 1=LSB
whismanoid 10:04022a61b527 2026 SPI_AIN_Enable_LSB, // AIN7 1=LSB
whismanoid 10:04022a61b527 2027 SPI_AIN_Enable_LSB, // AIN8 1=LSB
whismanoid 10:04022a61b527 2028 SPI_AIN_Enable_LSB, // AIN9 1=LSB
whismanoid 3:9055e17e181a 2029 };
whismanoid 3:9055e17e181a 2030 //
whismanoid 10:04022a61b527 2031 double SPI_AIN_Voltage[NUM_DUT_ANALOG_IN_CHANNELS];
whismanoid 13:184a08909405 2032 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2033 #ifndef HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 2034 #define HAS_SPI_AIN_customChannelHeader 0
whismanoid 13:184a08909405 2035 #endif
whismanoid 13:184a08909405 2036 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2037 const char* const SPI_AIN_customChannelHeader_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2038 "", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2039 "", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2040 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2041 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2042 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2043 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2044 };
whismanoid 13:184a08909405 2045 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 3:9055e17e181a 2046 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2047 // ---------- Measure_Voltage_custom_props in Measure_Voltage @pre and in class properties ----------
whismanoid 3:9055e17e181a 2048 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 2049 // MAX11410 specific per-channel config register v_filter
whismanoid 3:9055e17e181a 2050 uint8_t SPI_AIN_Cfg_v_filter_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2051 0x34, // AIN0 @ v_filter=0x34
whismanoid 3:9055e17e181a 2052 0x34, // AIN1 @ v_filter=0x34
whismanoid 3:9055e17e181a 2053 0x34, // AIN2 @ v_filter=0x34
whismanoid 3:9055e17e181a 2054 0x34, // AIN3 @ v_filter=0x34
whismanoid 3:9055e17e181a 2055 0x34, // AIN4 @ v_filter=0x34
whismanoid 3:9055e17e181a 2056 0x34, // AIN5 @ v_filter=0x34
whismanoid 3:9055e17e181a 2057 0x34, // AIN6 @ v_filter=0x34
whismanoid 3:9055e17e181a 2058 0x34, // AIN7 @ v_filter=0x34
whismanoid 3:9055e17e181a 2059 0x34, // AIN8 @ v_filter=0x34
whismanoid 3:9055e17e181a 2060 0x34, // AIN9 @ v_filter=0x34
whismanoid 3:9055e17e181a 2061 };
whismanoid 3:9055e17e181a 2062 //
whismanoid 4:d9b05924ad4c 2063 // MAX11410 specific per-channel config register v_ctrl
whismanoid 3:9055e17e181a 2064 uint8_t SPI_AIN_Cfg_v_ctrl_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2065 0x42, // AIN0 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2066 0x42, // AIN1 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2067 0x42, // AIN2 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2068 0x42, // AIN3 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2069 0x42, // AIN4 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2070 0x42, // AIN5 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2071 0x42, // AIN6 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2072 0x42, // AIN7 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2073 0x42, // AIN8 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2074 0x42, // AIN9 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2075 };
whismanoid 3:9055e17e181a 2076 //
whismanoid 4:d9b05924ad4c 2077 // MAX11410 specific per-channel config register v_pga
whismanoid 3:9055e17e181a 2078 uint8_t SPI_AIN_Cfg_v_pga_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2079 0x00, // AIN0 @ v_pga=0x00
whismanoid 3:9055e17e181a 2080 0x00, // AIN1 @ v_pga=0x00
whismanoid 3:9055e17e181a 2081 0x00, // AIN2 @ v_pga=0x00
whismanoid 3:9055e17e181a 2082 0x00, // AIN3 @ v_pga=0x00
whismanoid 3:9055e17e181a 2083 0x00, // AIN4 @ v_pga=0x00
whismanoid 3:9055e17e181a 2084 0x00, // AIN5 @ v_pga=0x00
whismanoid 3:9055e17e181a 2085 0x00, // AIN6 @ v_pga=0x00
whismanoid 3:9055e17e181a 2086 0x00, // AIN7 @ v_pga=0x00
whismanoid 3:9055e17e181a 2087 0x00, // AIN8 @ v_pga=0x00
whismanoid 3:9055e17e181a 2088 0x00, // AIN9 @ v_pga=0x00
whismanoid 3:9055e17e181a 2089 };
whismanoid 3:9055e17e181a 2090 //
whismanoid 3:9055e17e181a 2091 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2092 // ---------- Measure_Voltage_custom_props ----------
whismanoid 0:cb44e2e9ec4c 2093 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2094 // filter register configuration in Measure_Voltage and Read_All_Voltages CONV_TYPE_01_Continuous
whismanoid 0:cb44e2e9ec4c 2095 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2096 //~ const uint8_t custom_v_filter = 0x00; // @ v_filter=0x00 -- LINEF_00_50Hz_60Hz_FIR RATE_0000 | 1.1SPS
whismanoid 0:cb44e2e9ec4c 2097 //~ const uint8_t custom_v_filter = 0x01; // @ v_filter=0x01 -- LINEF_00_50Hz_60Hz_FIR RATE_0001 | 2.1SPS
whismanoid 0:cb44e2e9ec4c 2098 //~ const uint8_t custom_v_filter = 0x02; // @ v_filter=0x02 -- LINEF_00_50Hz_60Hz_FIR RATE_0010 | 4.2SPS
whismanoid 0:cb44e2e9ec4c 2099 //~ const uint8_t custom_v_filter = 0x03; // @ v_filter=0x03 -- LINEF_00_50Hz_60Hz_FIR RATE_0011 | 8.4SPS
whismanoid 0:cb44e2e9ec4c 2100 //~ const uint8_t custom_v_filter = 0x04; // @ v_filter=0x04 -- LINEF_00_50Hz_60Hz_FIR RATE_0100 | 16.8SPS
whismanoid 0:cb44e2e9ec4c 2101 //~ const uint8_t custom_v_filter = 0x10; // @ v_filter=0x10 -- LINEF_01_50Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2102 //~ const uint8_t custom_v_filter = 0x11; // @ v_filter=0x11 -- LINEF_01_50Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2103 //~ const uint8_t custom_v_filter = 0x12; // @ v_filter=0x12 -- LINEF_01_50Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2104 //~ const uint8_t custom_v_filter = 0x13; // @ v_filter=0x13 -- LINEF_01_50Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2105 //~ const uint8_t custom_v_filter = 0x14; // @ v_filter=0x14 -- LINEF_01_50Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2106 //~ const uint8_t custom_v_filter = 0x15; // @ v_filter=0x15 -- LINEF_01_50Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2107 //~ const uint8_t custom_v_filter = 0x20; // @ v_filter=0x20 -- LINEF_10_60Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2108 //~ const uint8_t custom_v_filter = 0x21; // @ v_filter=0x21 -- LINEF_10_60Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2109 //~ const uint8_t custom_v_filter = 0x22; // @ v_filter=0x22 -- LINEF_10_60Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2110 //~ const uint8_t custom_v_filter = 0x23; // @ v_filter=0x23 -- LINEF_10_60Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2111 //~ const uint8_t custom_v_filter = 0x24; // @ v_filter=0x24 -- LINEF_10_60Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2112 //~ const uint8_t custom_v_filter = 0x25; // @ v_filter=0x25 -- LINEF_10_60Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2113 //~ const uint8_t custom_v_filter = 0x30; // @ v_filter=0x30 -- LINEF_11_SINC4 RATE_0000 | 4SPS
whismanoid 0:cb44e2e9ec4c 2114 //~ const uint8_t custom_v_filter = 0x31; // @ v_filter=0x31 -- LINEF_11_SINC4 RATE_0001 | 10SPS
whismanoid 0:cb44e2e9ec4c 2115 //~ const uint8_t custom_v_filter = 0x32; // @ v_filter=0x32 -- LINEF_11_SINC4 RATE_0010 | 20SPS
whismanoid 0:cb44e2e9ec4c 2116 //~ const uint8_t custom_v_filter = 0x33; // @ v_filter=0x33 -- LINEF_11_SINC4 RATE_0011 | 40SPS
whismanoid 0:cb44e2e9ec4c 2117 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2118 //~ const uint8_t custom_v_filter = 0x35; // @ v_filter=0x35 -- LINEF_11_SINC4 RATE_0101 | 120SPS
whismanoid 0:cb44e2e9ec4c 2119 //~ const uint8_t custom_v_filter = 0x36; // @ v_filter=0x36 -- LINEF_11_SINC4 RATE_0110 | 240SPS
whismanoid 0:cb44e2e9ec4c 2120 //~ const uint8_t custom_v_filter = 0x37; // @ v_filter=0x37 -- LINEF_11_SINC4 RATE_0111 | 480SPS
whismanoid 0:cb44e2e9ec4c 2121 //~ const uint8_t custom_v_filter = 0x38; // @ v_filter=0x38 -- LINEF_11_SINC4 RATE_1000 | 960SPS
whismanoid 0:cb44e2e9ec4c 2122 //~ const uint8_t custom_v_filter = 0x39; // @ v_filter=0x39 -- LINEF_11_SINC4 RATE_1001 | 1920SPS
whismanoid 0:cb44e2e9ec4c 2123 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2124 //
whismanoid 0:cb44e2e9ec4c 2125 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2126 // pga register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 0:cb44e2e9ec4c 2127 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2128 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2129 //~ const uint8_t custom_v_pga = 0x10; // @ v_pga=0x10 -- 0x10 SIG_PATH_01_BYPASS
whismanoid 0:cb44e2e9ec4c 2130 //~ const uint8_t custom_v_pga = 0x20; // @ v_pga=0x20 -- 0x20 SIG_PATH_10_PGA GAIN_000_1
whismanoid 0:cb44e2e9ec4c 2131 //~ const uint8_t custom_v_pga = 0x21; // @ v_pga=0x21 --*0x21 SIG_PATH_10_PGA GAIN_001_2
whismanoid 0:cb44e2e9ec4c 2132 //~ const uint8_t custom_v_pga = 0x22; // @ v_pga=0x22 -- 0x22 SIG_PATH_10_PGA GAIN_010_4
whismanoid 0:cb44e2e9ec4c 2133 //~ const uint8_t custom_v_pga = 0x23; // @ v_pga=0x23 -- 0x23 SIG_PATH_10_PGA GAIN_011_8
whismanoid 0:cb44e2e9ec4c 2134 //~ const uint8_t custom_v_pga = 0x24; // @ v_pga=0x24 -- 0x24 SIG_PATH_10_PGA GAIN_100_16
whismanoid 0:cb44e2e9ec4c 2135 //~ const uint8_t custom_v_pga = 0x25; // @ v_pga=0x25 -- 0x25 SIG_PATH_10_PGA GAIN_101_32
whismanoid 0:cb44e2e9ec4c 2136 //~ const uint8_t custom_v_pga = 0x26; // @ v_pga=0x26 -- 0x26 SIG_PATH_10_PGA GAIN_110_64
whismanoid 0:cb44e2e9ec4c 2137 //~ const uint8_t custom_v_pga = 0x27; // @ v_pga=0x27 -- 0x27 SIG_PATH_10_PGA GAIN_111_128
whismanoid 0:cb44e2e9ec4c 2138 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2139 //
whismanoid 0:cb44e2e9ec4c 2140 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2141 // ctrl register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 3:9055e17e181a 2142 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2143 //~ const uint8_t custom_v_ctrl = 0x40; // @ v_ctrl=0x40 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1
whismanoid 0:cb44e2e9ec4c 2144 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2145 //~ const uint8_t custom_v_ctrl = 0x58; // @ v_ctrl=0x58 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2146 //
whismanoid 0:cb44e2e9ec4c 2147 //~ const uint8_t custom_v_ctrl = 0x41; // @ v_ctrl=0x41 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N
whismanoid 0:cb44e2e9ec4c 2148 //~ const uint8_t custom_v_ctrl = 0x45; // @ v_ctrl=0x45 -- 0x40 unipolar, 0x05 REF_SEL_101_REF1P_AGND
whismanoid 0:cb44e2e9ec4c 2149 //~ const uint8_t custom_v_ctrl = 0x59; // @ v_ctrl=0x59 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2150 //
whismanoid 0:cb44e2e9ec4c 2151 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2152 //~ const uint8_t custom_v_ctrl = 0x46; // @ v_ctrl=0x46 -- 0x40 unipolar, 0x06 REF_SEL_110_REF2P_AGND
whismanoid 0:cb44e2e9ec4c 2153 //~ const uint8_t custom_v_ctrl = 0x22; // @ v_ctrl=0x22 -- 0x20 bipolar offset binary, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2154 //~ const uint8_t custom_v_ctrl = 0x02; // @ v_ctrl=0x02 -- 0x00 bipolar 2's complement, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2155 //
whismanoid 0:cb44e2e9ec4c 2156 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2157 //~ const uint8_t custom_v_ctrl = 0x47; // @ v_ctrl=0x47 -- 0x40 unipolar, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2158 //~ const uint8_t custom_v_ctrl = 0x27; // @ v_ctrl=0x27 -- 0x20 bipolar offset binary, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2159 //~ const uint8_t custom_v_ctrl = 0x07; // @ v_ctrl=0x07 -- 0x00 bipolar 2's complement, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2160 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2161
whismanoid 3:9055e17e181a 2162 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2163 // example code declare SPI interface (GPIO controlled CS)
whismanoid 0:cb44e2e9ec4c 2164 #if defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 2165 SPI spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625MBED: P1_1 P1_2 P1_0 Arduino 10-pin header D11 D12 D13
whismanoid 0:cb44e2e9ec4c 2166 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 19:5ff09c8e9daf 2167 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 2168 #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 2169 SPI spi(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625PICO: pin P0_5 P0_6 P0_4
whismanoid 0:cb44e2e9ec4c 2170 DigitalOut spi_cs(SPI0_SS); // TARGET_MAX32625PICO: pin P0_7
whismanoid 0:cb44e2e9ec4c 2171 #elif defined(TARGET_MAX32600MBED)
whismanoid 0:cb44e2e9ec4c 2172 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:cb44e2e9ec4c 2173 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2174 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 2175 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 2176 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:cb44e2e9ec4c 2177 //
whismanoid 0:cb44e2e9ec4c 2178 // TODO1: NUCLEO_F446RE SPI not working; CS and MOSI data looks OK but no SCLK clock pulses.
whismanoid 0:cb44e2e9ec4c 2179 SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk spi1 TARGET_NUCLEO_F446RE: Arduino 10-pin header D11 D12 D13
whismanoid 0:cb44e2e9ec4c 2180 DigitalOut spi_cs(SPI_CS); // TARGET_NUCLEO_F446RE: PB_6 Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2181 //
whismanoid 0:cb44e2e9ec4c 2182 #else
whismanoid 3:9055e17e181a 2183 SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 3:9055e17e181a 2184 DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2185 #endif
whismanoid 0:cb44e2e9ec4c 2186
whismanoid 0:cb44e2e9ec4c 2187 // example code declare GPIO interface pins
whismanoid 0:cb44e2e9ec4c 2188 // example code declare device instance
whismanoid 3:9055e17e181a 2189 MAX11410 g_MAX11410_device(spi, spi_cs, MAX11410::MAX11410_IC);
whismanoid 3:9055e17e181a 2190 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2191
whismanoid 1:747f1602abfc 2192 //--------------------------------------------------
whismanoid 3:9055e17e181a 2193 // Option to Datalog Arduino platform analog inputs
whismanoid 3:9055e17e181a 2194 #ifndef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2195 #define LOG_PLATFORM_AIN 6
whismanoid 3:9055e17e181a 2196 //~ #undef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2197 #endif
whismanoid 3:9055e17e181a 2198 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 1:747f1602abfc 2199 //#ifndef NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 1:747f1602abfc 2200 //#define NUM_PLATFORM_ANALOG_IN_CHANNELS 6
whismanoid 1:747f1602abfc 2201 //#endif
whismanoid 1:747f1602abfc 2202 const int NUM_PLATFORM_ANALOG_IN_CHANNELS = 6;
whismanoid 1:747f1602abfc 2203 const double adc_full_scale_voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2204 analogInPin_fullScaleVoltage[0], // 1.2,
whismanoid 10:04022a61b527 2205 analogInPin_fullScaleVoltage[1], // 1.2,
whismanoid 10:04022a61b527 2206 analogInPin_fullScaleVoltage[2], // 1.2,
whismanoid 10:04022a61b527 2207 analogInPin_fullScaleVoltage[3], // 1.2,
whismanoid 10:04022a61b527 2208 analogInPin_fullScaleVoltage[4], // 6.0
whismanoid 10:04022a61b527 2209 analogInPin_fullScaleVoltage[5], // 6.0
whismanoid 0:cb44e2e9ec4c 2210 };
whismanoid 9:45f98573eb6d 2211 // Platform ADC individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 9:45f98573eb6d 2212 typedef enum Platform_AIN_Enable_t {
whismanoid 9:45f98573eb6d 2213 Platform_AIN_Disable = 0,
whismanoid 9:45f98573eb6d 2214 Platform_AIN_Enable_LSB = 1,
whismanoid 9:45f98573eb6d 2215 Platform_AIN_Enable_Volt = 2,
whismanoid 9:45f98573eb6d 2216 } Platform_AIN_Enable_t;
whismanoid 13:184a08909405 2217 uint8_t Platform_Enable_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 9:45f98573eb6d 2218 Platform_AIN_Enable_Volt, // AIN0 2=Volt
whismanoid 9:45f98573eb6d 2219 Platform_AIN_Enable_Volt, // AIN1 2=Volt
whismanoid 9:45f98573eb6d 2220 Platform_AIN_Enable_Volt, // AIN2 2=Volt
whismanoid 9:45f98573eb6d 2221 Platform_AIN_Enable_Volt, // AIN3 2=Volt
whismanoid 9:45f98573eb6d 2222 Platform_AIN_Enable_Volt, // AIN4 2=Volt
whismanoid 9:45f98573eb6d 2223 Platform_AIN_Enable_Volt, // AIN5 2=Volt
whismanoid 9:45f98573eb6d 2224 };
whismanoid 13:184a08909405 2225 #ifndef HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 2226 #define HAS_Platform_AIN_customChannelHeader 1
whismanoid 13:184a08909405 2227 #endif
whismanoid 13:184a08909405 2228 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2229 const char* const Platform_AIN_customChannelHeader_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2230 "=AIN4", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2231 "=AIN5", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2232 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2233 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2234 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2235 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2236 };
whismanoid 13:184a08909405 2237 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 1:747f1602abfc 2238 //--------------------------------------------------
whismanoid 1:747f1602abfc 2239 // Option to log platform analog inputs as raw LSB code
whismanoid 1:747f1602abfc 2240 #ifndef LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2241 #define LOG_PLATFORM_ANALOG_IN_LSB 0
whismanoid 1:747f1602abfc 2242 #endif
whismanoid 1:747f1602abfc 2243 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2244 int Platform_LSB[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2245 #endif
whismanoid 1:747f1602abfc 2246
whismanoid 1:747f1602abfc 2247 //--------------------------------------------------
whismanoid 1:747f1602abfc 2248 // Option to use platform analog inputs as Voltage
whismanoid 1:747f1602abfc 2249 #ifndef LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2250 #define LOG_PLATFORM_ANALOG_IN_VOLTS 1
whismanoid 1:747f1602abfc 2251 #endif
whismanoid 1:747f1602abfc 2252 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2253 double Platform_Voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2254 #endif
whismanoid 3:9055e17e181a 2255 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 0:cb44e2e9ec4c 2256
whismanoid 10:04022a61b527 2257 //--------------------------------------------------
whismanoid 10:04022a61b527 2258 // Option to use Command forwarding to Auxiliary serial port
whismanoid 10:04022a61b527 2259 // Command forwarding to Auxiliary serial port TX/RX
whismanoid 10:04022a61b527 2260 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial
whismanoid 10:04022a61b527 2261 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial
whismanoid 10:04022a61b527 2262 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2263 #ifndef USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2264 #define USE_AUX_SERIAL_CMD_FORWARDING 1
whismanoid 10:04022a61b527 2265 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2266 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2267 // Command forwarding to Auxiliary serial port TX/RX #257 -- global parameters
whismanoid 10:04022a61b527 2268 const size_t RX_STRING_BUF_SIZE = 1000;
whismanoid 10:04022a61b527 2269 int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 2270 // transmit command string by AUX TX
whismanoid 10:04022a61b527 2271 #if 0
whismanoid 10:04022a61b527 2272 int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 2273 int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 2274 int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 2275 #endif
whismanoid 10:04022a61b527 2276 // capture received string from AUX RX
whismanoid 10:04022a61b527 2277 Timer g_auxSerialCom_Timer;
whismanoid 10:04022a61b527 2278 int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 2279 int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 2280 int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 2281 int g_auxSerialCom_rx_idle_ms = 500; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 2282 int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 2283 const int aux_serial_cmd_forwarding_rx_eot_not_used = 'x';
whismanoid 10:04022a61b527 2284 int g_auxSerialCom_rx_eot = aux_serial_cmd_forwarding_rx_eot_not_used; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 2285 //~ int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text string?
whismanoid 10:04022a61b527 2286 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2287 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2288 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257
whismanoid 10:04022a61b527 2289 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2290 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2291 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2292 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2293 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2294 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2295 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 2296 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2297 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2298 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2299 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2300 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2301 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2302 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2303 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2304
whismanoid 8:dffee7509bfb 2305 // CODE GENERATOR: example code for ADC: serial port declaration
whismanoid 8:dffee7509bfb 2306 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2307 // Declare the Serial driver
whismanoid 8:dffee7509bfb 2308 // default baud rate settings are 9600 8N1
whismanoid 8:dffee7509bfb 2309 // install device driver from http://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe
whismanoid 8:dffee7509bfb 2310 // see docs https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/getting_started/what_need/
whismanoid 8:dffee7509bfb 2311 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2312 #if defined(TARGET_MAX32630)
whismanoid 8:dffee7509bfb 2313 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2314 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2315 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2316 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2317 //
whismanoid 8:dffee7509bfb 2318 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2319 Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2320 //Serial J3AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2321 //Serial BTAUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2322 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2323 //
whismanoid 8:dffee7509bfb 2324 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2325 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2326 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2327 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2328 //
whismanoid 8:dffee7509bfb 2329 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2330 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2331 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2332 USBSerial serial;
whismanoid 8:dffee7509bfb 2333 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2334 #elif defined(TARGET_MAX32625MBED)
whismanoid 8:dffee7509bfb 2335 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625MBED: P0_1,P0_0 (Arduino D1,D0)
whismanoid 8:dffee7509bfb 2336 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2337 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625MBED: P3_1,P3_0 (J15-LEDgreen,LEDred)
whismanoid 8:dffee7509bfb 2338 //
whismanoid 8:dffee7509bfb 2339 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2340 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2341 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2342 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2343 //
whismanoid 8:dffee7509bfb 2344 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2345 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2346 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2347 USBSerial serial;
whismanoid 8:dffee7509bfb 2348 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 2349 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 8:dffee7509bfb 2350 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2351 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625PICO: P2_1,P2_0 (underside?)
whismanoid 8:dffee7509bfb 2352 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2353 //
whismanoid 14:d4092094dbfe 2354 #if MAX40108_DEMO
whismanoid 14:d4092094dbfe 2355 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial is used as main serial port in MAX40108 Demo board
whismanoid 14:d4092094dbfe 2356 Serial serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 14:d4092094dbfe 2357 // #define HAS_AUX_SERIAL 1
whismanoid 14:d4092094dbfe 2358 //
whismanoid 16:819c5aaf5271 2359 // Serial AUXserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625PICO: P2_1,P2_0 (underside?)
whismanoid 16:819c5aaf5271 2360 // #define HAS_AUX_SERIAL 1
whismanoid 16:819c5aaf5271 2361 //
whismanoid 14:d4092094dbfe 2362 // Hardware serial port over DAPLink
whismanoid 14:d4092094dbfe 2363 Serial DAPLINKserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 14:d4092094dbfe 2364 #define HAS_DAPLINK_SERIAL 1
whismanoid 14:d4092094dbfe 2365 //
whismanoid 14:d4092094dbfe 2366 // Virtual serial port over USB
whismanoid 14:d4092094dbfe 2367 // #include "USBSerial.h"
whismanoid 14:d4092094dbfe 2368 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 14:d4092094dbfe 2369 //USBSerial serial;
whismanoid 14:d4092094dbfe 2370 #else // MAX40108_DEMO
whismanoid 8:dffee7509bfb 2371 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2372 Serial AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2373 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2374 //
whismanoid 8:dffee7509bfb 2375 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2376 Serial DAPLINKserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2377 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2378 //
whismanoid 8:dffee7509bfb 2379 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2380 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2381 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2382 USBSerial serial;
whismanoid 14:d4092094dbfe 2383 #endif // MAX40108_DEMO
whismanoid 8:dffee7509bfb 2384 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2385 #elif defined(TARGET_MAX32620FTHR)
whismanoid 8:dffee7509bfb 2386 #warning "TARGET_MAX32620FTHR not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2387 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2388 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32620FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2389 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2390 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2391 //
whismanoid 8:dffee7509bfb 2392 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2393 Serial serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2394 //Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2395 Serial AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2396 //Serial PMOD0AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2397 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2398 //
whismanoid 8:dffee7509bfb 2399 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2400 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2401 Serial DAPLINKserial(USBTX, USBRX); // tx,rx MAX32620FTHR: P2_1,P2_0
whismanoid 8:dffee7509bfb 2402 //Serial DAPLINKserial(STDIO_UART_TX, STDIO_UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2403 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2404 //
whismanoid 8:dffee7509bfb 2405 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2406 // #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2407 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2408 //USBSerial serial; // MAX32620FTHR: USBSerial crash??
whismanoid 8:dffee7509bfb 2409 #warning "TARGET_MAX32620FTHR not previously tested; USBSerial crash?"
whismanoid 8:dffee7509bfb 2410 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2411 #elif defined(TARGET_MAX32600)
whismanoid 8:dffee7509bfb 2412 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2413 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART2 MAX32625MBED: P1_3,P1_2 (Arduino D3,D2)
whismanoid 8:dffee7509bfb 2414 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART1 MAX32625MBED: P7_3,P7_2 ( ?? )
whismanoid 8:dffee7509bfb 2415 //
whismanoid 8:dffee7509bfb 2416 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2417 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2418 Serial DAPLINKserial(P1_1,P1_0); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2419 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2420 //
whismanoid 8:dffee7509bfb 2421 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2422 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2423 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2424 USBSerial serial;
whismanoid 8:dffee7509bfb 2425 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2426 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 8:dffee7509bfb 2427 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2428 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2429 #else
whismanoid 8:dffee7509bfb 2430 #if defined(SERIAL_TX)
whismanoid 8:dffee7509bfb 2431 #warning "target not previously tested; guess serial pins are SERIAL_TX, SERIAL_RX..."
whismanoid 8:dffee7509bfb 2432 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2433 #elif defined(USBTX)
whismanoid 8:dffee7509bfb 2434 #warning "target not previously tested; guess serial pins are USBTX, USBRX..."
whismanoid 8:dffee7509bfb 2435 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 8:dffee7509bfb 2436 #elif defined(UART_TX)
whismanoid 8:dffee7509bfb 2437 #warning "target not previously tested; guess serial pins are UART_TX, UART_RX..."
whismanoid 8:dffee7509bfb 2438 Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2439 #else
whismanoid 8:dffee7509bfb 2440 #warning "target not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2441 #endif
whismanoid 8:dffee7509bfb 2442 #endif
whismanoid 8:dffee7509bfb 2443 //
whismanoid 8:dffee7509bfb 2444 #include "CmdLine.h"
whismanoid 8:dffee7509bfb 2445
whismanoid 8:dffee7509bfb 2446 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2447 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2448 CmdLine cmdLine_AUXserial(AUXserial, "AUXserial");
whismanoid 10:04022a61b527 2449 uint8_t Datalogger_enable_AUXserial = {
whismanoid 10:04022a61b527 2450 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2451 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 2452 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 2453 false
whismanoid 10:04022a61b527 2454 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2455 true
whismanoid 10:04022a61b527 2456 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2457 };
whismanoid 8:dffee7509bfb 2458 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2459 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2460 CmdLine cmdLine_DAPLINKserial(DAPLINKserial, "DAPLINK");
whismanoid 8:dffee7509bfb 2461 uint8_t Datalogger_enable_DAPLINKserial = true;
whismanoid 8:dffee7509bfb 2462 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2463 CmdLine cmdLine(serial, "serial");
whismanoid 8:dffee7509bfb 2464 uint8_t Datalogger_enable_serial = true;
whismanoid 8:dffee7509bfb 2465 // CODE GENERATOR: example code for ADC: serial port declaration (end)
whismanoid 8:dffee7509bfb 2466
whismanoid 4:d9b05924ad4c 2467 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 2468 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2469 inline void print_command_prompt()
whismanoid 4:d9b05924ad4c 2470 {
whismanoid 4:d9b05924ad4c 2471 //~ Serial.println(F(">"));
whismanoid 4:d9b05924ad4c 2472 cmdLine.serial().printf("\r\n> ");
whismanoid 4:d9b05924ad4c 2473 }
whismanoid 4:d9b05924ad4c 2474 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 2475
whismanoid 4:d9b05924ad4c 2476 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 2477 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2478 void main_menu_status(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 2479 {
whismanoid 4:d9b05924ad4c 2480 cmdLine.serial().printf("\r\nMain menu");
whismanoid 4:d9b05924ad4c 2481 #if APPLICATION_MAX5715 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2482 cmdLine.serial().printf(" MAX5715 12-bit 4-ch SPI VOUT DAC");
whismanoid 4:d9b05924ad4c 2483 #elif APPLICATION_MAX11131 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2484 cmdLine.serial().printf(" MAX11131 12-bit 3MSps 16-ch ADC");
whismanoid 4:d9b05924ad4c 2485 #elif APPLICATION_MAX5171 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2486 cmdLine.serial().printf(" MAX5171 14-bit Force/Sense VOUT DAC");
whismanoid 4:d9b05924ad4c 2487 #elif APPLICATION_MAX11410 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2488 cmdLine.serial().printf(" MAX11410 24-bit 1.9ksps Delta-Sigma ADC");
whismanoid 4:d9b05924ad4c 2489 #elif APPLICATION_MAX12345 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2490 cmdLine.serial().printf(" MAX12345");
whismanoid 16:819c5aaf5271 2491 #elif MAX40108_DEMO // main_menu_status banner
whismanoid 17:9397ea3ea7e9 2492 cmdLine.serial().printf(" MAX40108_U%d", MAX40108_DEMO);
whismanoid 4:d9b05924ad4c 2493 #else
whismanoid 4:d9b05924ad4c 2494 //cmdLine.serial().printf(" ");
whismanoid 4:d9b05924ad4c 2495 #endif
whismanoid 4:d9b05924ad4c 2496 //cmdLine.serial().printf(" %s", TARGET_NAME);
whismanoid 4:d9b05924ad4c 2497 if (cmdLine.nameStr())
whismanoid 4:d9b05924ad4c 2498 {
whismanoid 4:d9b05924ad4c 2499 cmdLine.serial().printf(" [%s]", cmdLine.nameStr());
whismanoid 4:d9b05924ad4c 2500 }
whismanoid 4:d9b05924ad4c 2501 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 4:d9b05924ad4c 2502 cmdLine.serial().printf(" [Button1=DemoConfig1]");
whismanoid 4:d9b05924ad4c 2503 #endif
whismanoid 4:d9b05924ad4c 2504 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 4:d9b05924ad4c 2505 cmdLine.serial().printf(" [Button2=DemoConfig2]");
whismanoid 4:d9b05924ad4c 2506 #endif
whismanoid 4:d9b05924ad4c 2507 #if HAS_BUTTON1_DEMO
whismanoid 4:d9b05924ad4c 2508 // print BUTTON1 status
whismanoid 4:d9b05924ad4c 2509 cmdLine.serial().printf("\r\n BUTTON1 = %d", button1.read());
whismanoid 4:d9b05924ad4c 2510 #endif
whismanoid 4:d9b05924ad4c 2511 #if HAS_BUTTON2_DEMO
whismanoid 4:d9b05924ad4c 2512 // print BUTTON1 status
whismanoid 4:d9b05924ad4c 2513 cmdLine.serial().printf("\r\n BUTTON2 = %d", button2.read());
whismanoid 4:d9b05924ad4c 2514 #endif
whismanoid 4:d9b05924ad4c 2515 cmdLine.serial().printf("\r\n ? -- help");
whismanoid 4:d9b05924ad4c 2516 }
whismanoid 4:d9b05924ad4c 2517 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 2518
whismanoid 4:d9b05924ad4c 2519 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 2520 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2521 void main_menu_help(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 2522 {
whismanoid 4:d9b05924ad4c 2523 // ? -- help
whismanoid 4:d9b05924ad4c 2524 //~ cmdLine.serial().printf("\r\nMenu:");
whismanoid 10:04022a61b527 2525 //
whismanoid 4:d9b05924ad4c 2526 cmdLine.serial().printf("\r\n # -- lines beginning with # are comments");
whismanoid 10:04022a61b527 2527 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 2528 cmdLine.serial().printf("\r\n ! -- Init");
whismanoid 10:04022a61b527 2529 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 2530 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 2531 cmdLine.serial().printf("\r\n . -- SelfTest");
whismanoid 4:d9b05924ad4c 2532 #endif // USE_SELFTEST
whismanoid 9:45f98573eb6d 2533 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 9:45f98573eb6d 2534 // CODE GENERATOR: help menu if has_register_write_command: *regname? -- read register; *regname=regvalue -- write register
whismanoid 9:45f98573eb6d 2535 cmdLine.serial().printf("\r\n * -- read core registers\r\n *regname? -- read register\r\n *regname=regvalue -- write register");
whismanoid 9:45f98573eb6d 2536 // cmdLine.serial().printf("\r\n 01 23 45 67 89 ab cd ef -- write and read raw hex codes");
whismanoid 10:04022a61b527 2537 #endif // USE_STAR_REG_READWRITE
whismanoid 10:04022a61b527 2538 //
whismanoid 10:04022a61b527 2539 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2540 // Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_help
whismanoid 10:04022a61b527 2541 //~ cmdLine.serial().printf("\r\n > -- auxiliary UART port");
whismanoid 10:04022a61b527 2542 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2543 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2544 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2545 if (cmdLine_AUXserial.nameStr())
whismanoid 10:04022a61b527 2546 {
whismanoid 10:04022a61b527 2547 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_AUXserial.nameStr());
whismanoid 10:04022a61b527 2548 }
whismanoid 10:04022a61b527 2549 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2550 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2551 if (cmdLine_DAPLINKserial.nameStr())
whismanoid 10:04022a61b527 2552 {
whismanoid 10:04022a61b527 2553 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_DAPLINKserial.nameStr());
whismanoid 10:04022a61b527 2554 }
whismanoid 10:04022a61b527 2555 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2556 # if HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2557 // WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2558 cmdLine.serial().printf("\r\n >xyzzy -- Forward command/data 'xyzzy' to aux TX/RX");
whismanoid 10:04022a61b527 2559 cmdLine.serial().printf("\r\n >>xyzzy -- Forward 'xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 2560 cmdLine.serial().printf("\r\n >>>xyzzy -- Forward '>xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 2561 #if 0
whismanoid 10:04022a61b527 2562 cmdLine.serial().printf("\r\n >tx_wait_echo=%d -- configure TX wait for each character echo", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 2563 cmdLine.serial().printf("\r\n >tx_char_delay_ms=%d -- configure TX delay after each char", g_auxSerialCom_tx_char_delay_ms);
whismanoid 10:04022a61b527 2564 cmdLine.serial().printf("\r\n >tx_line_delay_ms=%d -- configure TX delay after each CR/LF", g_auxSerialCom_tx_line_delay_ms);
whismanoid 10:04022a61b527 2565 #endif
whismanoid 20:78ef670955d4 2566 #if 1 // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 2567 cmdLine.serial().printf("\r\n >baud=%d message_ms=%d rx_idle_ms=%d rx_max_count=%d rx_eot=%d",
whismanoid 20:78ef670955d4 2568 g_auxSerialCom_baud,
whismanoid 20:78ef670955d4 2569 g_auxSerialCom_message_ms,
whismanoid 20:78ef670955d4 2570 g_auxSerialCom_rx_idle_ms,
whismanoid 20:78ef670955d4 2571 g_auxSerialCom_rx_max_count,
whismanoid 20:78ef670955d4 2572 g_auxSerialCom_rx_eot);
whismanoid 20:78ef670955d4 2573 #else // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 2574 cmdLine.serial().printf("\r\n >baud=%d -- configure aux TX/RX port", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 2575 cmdLine.serial().printf("\r\n >message_ms=%d -- maximum RX message total response time", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 2576 cmdLine.serial().printf("\r\n >rx_idle_ms=%d -- maximum RX message idle time between characters", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 2577 cmdLine.serial().printf("\r\n >rx_max_count=%d -- maximum RX message total length", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 2578 cmdLine.serial().printf("\r\n >rx_eot=%d -- capture RX until match end of text char (unless %d)", g_auxSerialCom_rx_eot, aux_serial_cmd_forwarding_rx_eot_not_used);
whismanoid 20:78ef670955d4 2579 #endif // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 10:04022a61b527 2580 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2581 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2582 //
whismanoid 4:d9b05924ad4c 2583 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 2584 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 2585 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 2586 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 9:45f98573eb6d 2587 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 9:45f98573eb6d 2588 //
whismanoid 17:9397ea3ea7e9 2589 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 4:d9b05924ad4c 2590 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 9:45f98573eb6d 2591 //
whismanoid 17:9397ea3ea7e9 2592 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 2593 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 17:9397ea3ea7e9 2594 cmdLine.serial().printf("\r\n LT count=%d base=%dms -- Datalog timer", g_timer_interval_count, g_timer_interval_msec); // trigger_Timer
whismanoid 9:45f98573eb6d 2595 //
whismanoid 9:45f98573eb6d 2596 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 2597 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 2598 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 2599 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 9:45f98573eb6d 2600 //
whismanoid 17:9397ea3ea7e9 2601 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 9:45f98573eb6d 2602 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 2603 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2604 cmdLine.serial().printf("\r\n L$regaddr@dataMask=testValue -- Datalog when SPI read of address matches mask"); // trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2605 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2606 //
whismanoid 17:9397ea3ea7e9 2607 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2608 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table");
whismanoid 17:9397ea3ea7e9 2609 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 9:45f98573eb6d 2610 //
whismanoid 9:45f98573eb6d 2611 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 2612 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 2613 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 2614 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 2615 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 9:45f98573eb6d 2616 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 9:45f98573eb6d 2617 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 9:45f98573eb6d 2618 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 9:45f98573eb6d 2619 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 9:45f98573eb6d 2620 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 9:45f98573eb6d 2621 //
whismanoid 9:45f98573eb6d 2622 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 2623 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 9:45f98573eb6d 2624 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 9:45f98573eb6d 2625 //
whismanoid 9:45f98573eb6d 2626 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 2627 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 2628 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 9:45f98573eb6d 2629 //
whismanoid 9:45f98573eb6d 2630 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 2631 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 9:45f98573eb6d 2632 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 2633 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 9:45f98573eb6d 2634 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 2635 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 9:45f98573eb6d 2636 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 2637 //
whismanoid 9:45f98573eb6d 2638 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 2639 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 9:45f98573eb6d 2640 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 9:45f98573eb6d 2641 //
whismanoid 9:45f98573eb6d 2642 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 2643 //
whismanoid 9:45f98573eb6d 2644 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 2645 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 2646 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 2647 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 2648 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 9:45f98573eb6d 2649 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2650 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 9:45f98573eb6d 2651 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2652 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2653 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 9:45f98573eb6d 2654 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2655 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 9:45f98573eb6d 2656 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2657 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 9:45f98573eb6d 2658 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2659 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2660 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 9:45f98573eb6d 2661 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2662 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 4:d9b05924ad4c 2663 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 8:dffee7509bfb 2664 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 2665 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 2666 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2667 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 2668 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 2669 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 2670 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 8:dffee7509bfb 2671 //
whismanoid 4:d9b05924ad4c 2672 //cmdLine.serial().print(F("\r\n ! -- Initial Configuration"));
whismanoid 4:d9b05924ad4c 2673 //
whismanoid 4:d9b05924ad4c 2674 // % standardize diagnostic commands
whismanoid 4:d9b05924ad4c 2675 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 2676 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 2677 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 2678 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 2679 // %Ppin df=xx -- pwm output
whismanoid 4:d9b05924ad4c 2680 // %Wpin -- measure high pulsewidth input in usec
whismanoid 4:d9b05924ad4c 2681 // %wpin -- measure low pulsewidth input in usec
whismanoid 4:d9b05924ad4c 2682 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 2683 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 2684 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 2685 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 4:d9b05924ad4c 2686 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 2687 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2688 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 2689 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 2690 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 2691 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 2692 // A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 2693 //
whismanoid 4:d9b05924ad4c 2694 #if HAS_digitalInOuts
whismanoid 4:d9b05924ad4c 2695 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 2696 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 2697 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 2698 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 4:d9b05924ad4c 2699 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 2700 cmdLine.serial().printf("} -- High Output");
whismanoid 4:d9b05924ad4c 2701 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 4:d9b05924ad4c 2702 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 2703 cmdLine.serial().printf("} -- Low Output");
whismanoid 4:d9b05924ad4c 2704 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 4:d9b05924ad4c 2705 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 2706 cmdLine.serial().printf("} -- Input");
whismanoid 4:d9b05924ad4c 2707 #endif
whismanoid 4:d9b05924ad4c 2708
whismanoid 4:d9b05924ad4c 2709 #if HAS_analogIns
whismanoid 4:d9b05924ad4c 2710 // Menu A) analogRead A0..7
whismanoid 4:d9b05924ad4c 2711 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 2712 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 4:d9b05924ad4c 2713 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 4:d9b05924ad4c 2714 #endif
whismanoid 4:d9b05924ad4c 2715
whismanoid 4:d9b05924ad4c 2716 #if HAS_SPI2_MAX541
whismanoid 4:d9b05924ad4c 2717 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 4:d9b05924ad4c 2718 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 4:d9b05924ad4c 2719 #endif
whismanoid 4:d9b05924ad4c 2720
whismanoid 4:d9b05924ad4c 2721 #if HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2722 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2723 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2724 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 4:d9b05924ad4c 2725 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 2726 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 2727 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 2728 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 4:d9b05924ad4c 2729 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 2730 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2731 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 4:d9b05924ad4c 2732 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 4:d9b05924ad4c 2733 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 4:d9b05924ad4c 2734 (g_I2C_SCL_Hz / 1000.));
whismanoid 4:d9b05924ad4c 2735 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 4:d9b05924ad4c 2736 g_I2C_deviceAddress7);
whismanoid 4:d9b05924ad4c 2737 //
whismanoid 4:d9b05924ad4c 2738 #if SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2739 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2740 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 4:d9b05924ad4c 2741 // test low-level I2C i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2742 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2743 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 4:d9b05924ad4c 2744 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 4:d9b05924ad4c 2745 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 4:d9b05924ad4c 2746 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2747
whismanoid 4:d9b05924ad4c 2748 #if HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 2749 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 2750 // SPI test command S (mosiData)+
whismanoid 4:d9b05924ad4c 2751 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 2752 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 2753 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 2754 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 2755 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 4:d9b05924ad4c 2756 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 4:d9b05924ad4c 2757 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 4:d9b05924ad4c 2758 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 4:d9b05924ad4c 2759 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 4:d9b05924ad4c 2760 // mode | POL PHA
whismanoid 4:d9b05924ad4c 2761 // -----+--------
whismanoid 4:d9b05924ad4c 2762 // 0 | 0 0
whismanoid 4:d9b05924ad4c 2763 // 1 | 0 1
whismanoid 4:d9b05924ad4c 2764 // 2 | 1 0
whismanoid 4:d9b05924ad4c 2765 // 3 | 1 1
whismanoid 4:d9b05924ad4c 2766 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 4:d9b05924ad4c 2767 // 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 4:d9b05924ad4c 2768 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 4:d9b05924ad4c 2769 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 4:d9b05924ad4c 2770 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 4:d9b05924ad4c 2771 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 4:d9b05924ad4c 2772 cmdLine.serial().printf("\r\n %%SD -- SPI diagnostic messages ");
whismanoid 4:d9b05924ad4c 2773 if (g_MAX11410_device.onSPIprint) {
whismanoid 4:d9b05924ad4c 2774 cmdLine.serial().printf("hide");
whismanoid 4:d9b05924ad4c 2775 }
whismanoid 4:d9b05924ad4c 2776 else {
whismanoid 4:d9b05924ad4c 2777 cmdLine.serial().printf("show");
whismanoid 4:d9b05924ad4c 2778 }
whismanoid 4:d9b05924ad4c 2779 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 4:d9b05924ad4c 2780 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 4:d9b05924ad4c 2781 #endif // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 2782 //
whismanoid 4:d9b05924ad4c 2783 // Application-specific commands (help text) here
whismanoid 4:d9b05924ad4c 2784 //
whismanoid 4:d9b05924ad4c 2785 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 2786 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 2787 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 2788 //
whismanoid 4:d9b05924ad4c 2789
whismanoid 4:d9b05924ad4c 2790 //~ extern void MAX11410_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp\n
whismanoid 4:d9b05924ad4c 2791 //~ MAX11410_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 2792 }
whismanoid 4:d9b05924ad4c 2793 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 2794
whismanoid 4:d9b05924ad4c 2795 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 15:37c83ec50ea0 2796
whismanoid 15:37c83ec50ea0 2797 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 2798 void pinsMonitor_submenu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 15:37c83ec50ea0 2799 {
whismanoid 15:37c83ec50ea0 2800 // % diagnostic commands submenu
whismanoid 15:37c83ec50ea0 2801 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 2802 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 2803 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 2804 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 2805 // %Ppin df=xx -- pwm output
whismanoid 15:37c83ec50ea0 2806 // %Wpin -- measure high pulsewidth input in usec
whismanoid 15:37c83ec50ea0 2807 // %wpin -- measure low pulsewidth input in usec
whismanoid 15:37c83ec50ea0 2808 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 2809 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 2810 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 2811 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 2812 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 2813 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 2814 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 2815 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 2816 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 2817 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 2818 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 2819 //
whismanoid 15:37c83ec50ea0 2820 char strPinIndex[3];
whismanoid 15:37c83ec50ea0 2821 strPinIndex[0] = cmdLine[2];
whismanoid 15:37c83ec50ea0 2822 strPinIndex[1] = cmdLine[3];
whismanoid 15:37c83ec50ea0 2823 strPinIndex[2] = '\0';
whismanoid 15:37c83ec50ea0 2824 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 15:37c83ec50ea0 2825 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 15:37c83ec50ea0 2826 //
whismanoid 15:37c83ec50ea0 2827 // get next character
whismanoid 15:37c83ec50ea0 2828 switch (cmdLine[1])
whismanoid 15:37c83ec50ea0 2829 {
whismanoid 15:37c83ec50ea0 2830 #if HAS_digitalInOuts
whismanoid 15:37c83ec50ea0 2831 case 'H': case 'h':
whismanoid 15:37c83ec50ea0 2832 {
whismanoid 15:37c83ec50ea0 2833 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 2834 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2835 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2836 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2837 #else
whismanoid 15:37c83ec50ea0 2838 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 2839 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 2840 digitalInOutPin.write(1);
whismanoid 15:37c83ec50ea0 2841 #endif
whismanoid 15:37c83ec50ea0 2842 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 15:37c83ec50ea0 2843 }
whismanoid 15:37c83ec50ea0 2844 break;
whismanoid 15:37c83ec50ea0 2845 case 'L': case 'l':
whismanoid 15:37c83ec50ea0 2846 {
whismanoid 15:37c83ec50ea0 2847 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 2848 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2849 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2850 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2851 #else
whismanoid 15:37c83ec50ea0 2852 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 2853 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 2854 digitalInOutPin.write(0);
whismanoid 15:37c83ec50ea0 2855 #endif
whismanoid 15:37c83ec50ea0 2856 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 15:37c83ec50ea0 2857 }
whismanoid 15:37c83ec50ea0 2858 break;
whismanoid 15:37c83ec50ea0 2859 case '?':
whismanoid 15:37c83ec50ea0 2860 {
whismanoid 15:37c83ec50ea0 2861 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 2862 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2863 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2864 #else
whismanoid 15:37c83ec50ea0 2865 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 2866 digitalInOutPin.input();
whismanoid 15:37c83ec50ea0 2867 #endif
whismanoid 15:37c83ec50ea0 2868 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 15:37c83ec50ea0 2869 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2870 int value = digitalRead(pinIndex);
whismanoid 15:37c83ec50ea0 2871 #else
whismanoid 15:37c83ec50ea0 2872 int value = digitalInOutPin.read();
whismanoid 15:37c83ec50ea0 2873 #endif
whismanoid 15:37c83ec50ea0 2874 cmdLine.serial().printf("%d ", value);
whismanoid 15:37c83ec50ea0 2875 }
whismanoid 15:37c83ec50ea0 2876 break;
whismanoid 15:37c83ec50ea0 2877 #endif
whismanoid 15:37c83ec50ea0 2878 //
whismanoid 15:37c83ec50ea0 2879 #if HAS_analogIns
whismanoid 15:37c83ec50ea0 2880 case 'A': case 'a':
whismanoid 15:37c83ec50ea0 2881 {
whismanoid 15:37c83ec50ea0 2882 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 2883 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 2884 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 15:37c83ec50ea0 2885 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 15:37c83ec50ea0 2886 {
whismanoid 15:37c83ec50ea0 2887 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 2888 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 2889 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 2890 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 2891 //
whismanoid 15:37c83ec50ea0 2892 int pinIndexH = pinIndex + 4;
whismanoid 15:37c83ec50ea0 2893 int cPinIndexH = '0' + pinIndexH;
whismanoid 15:37c83ec50ea0 2894 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 15:37c83ec50ea0 2895 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 15:37c83ec50ea0 2896 float normValueH_0_1 = analogInPinH.read();
whismanoid 15:37c83ec50ea0 2897 //
whismanoid 15:37c83ec50ea0 2898 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV AIN%c = %7.3f%% = %1.3fV \r\n",
whismanoid 15:37c83ec50ea0 2899 cPinIndex,
whismanoid 15:37c83ec50ea0 2900 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2901 normValue_0_1 * adc_full_scale_voltage,
whismanoid 15:37c83ec50ea0 2902 cPinIndexH,
whismanoid 15:37c83ec50ea0 2903 normValueH_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2904 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 15:37c83ec50ea0 2905 );
whismanoid 15:37c83ec50ea0 2906 }
whismanoid 15:37c83ec50ea0 2907 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 15:37c83ec50ea0 2908 {
whismanoid 15:37c83ec50ea0 2909 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 2910 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 2911 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 2912 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 2913 //
whismanoid 15:37c83ec50ea0 2914 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 2915 cPinIndex,
whismanoid 15:37c83ec50ea0 2916 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2917 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 2918 );
whismanoid 15:37c83ec50ea0 2919 }
whismanoid 15:37c83ec50ea0 2920 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 2921 // Platform board uses simple analog inputs
whismanoid 15:37c83ec50ea0 2922 // assume standard Arduino analog inputs A0-A5
whismanoid 15:37c83ec50ea0 2923 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 15:37c83ec50ea0 2924 {
whismanoid 15:37c83ec50ea0 2925 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 2926 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 2927 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 2928 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 2929 //
whismanoid 15:37c83ec50ea0 2930 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 2931 cPinIndex,
whismanoid 15:37c83ec50ea0 2932 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2933 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 2934 );
whismanoid 15:37c83ec50ea0 2935 }
whismanoid 15:37c83ec50ea0 2936 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 2937 }
whismanoid 15:37c83ec50ea0 2938 break;
whismanoid 15:37c83ec50ea0 2939 #endif
whismanoid 15:37c83ec50ea0 2940 //
whismanoid 15:37c83ec50ea0 2941 #if HAS_SPI2_MAX541
whismanoid 15:37c83ec50ea0 2942 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 2943 {
whismanoid 15:37c83ec50ea0 2944 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 15:37c83ec50ea0 2945 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 15:37c83ec50ea0 2946 float voltageV = max541.Get_Voltage();
whismanoid 15:37c83ec50ea0 2947 // if (cmdLine[2] == '+') {
whismanoid 15:37c83ec50ea0 2948 // // %D+
whismanoid 15:37c83ec50ea0 2949 // voltageV = voltageV * 1.25f;
whismanoid 15:37c83ec50ea0 2950 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 15:37c83ec50ea0 2951 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2952 // }
whismanoid 15:37c83ec50ea0 2953 // else if (cmdLine[2] == '-') {
whismanoid 15:37c83ec50ea0 2954 // // %D-
whismanoid 15:37c83ec50ea0 2955 // voltageV = voltageV * 0.75f;
whismanoid 15:37c83ec50ea0 2956 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 15:37c83ec50ea0 2957 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2958 // }
whismanoid 15:37c83ec50ea0 2959 if (cmdLine.parse_float("V", voltageV))
whismanoid 15:37c83ec50ea0 2960 {
whismanoid 15:37c83ec50ea0 2961 // %D V=1.234 -- set voltage
whismanoid 15:37c83ec50ea0 2962 max541.Set_Voltage(voltageV);
whismanoid 15:37c83ec50ea0 2963 }
whismanoid 15:37c83ec50ea0 2964 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 15:37c83ec50ea0 2965 {
whismanoid 15:37c83ec50ea0 2966 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 15:37c83ec50ea0 2967 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2968 }
whismanoid 15:37c83ec50ea0 2969 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 15:37c83ec50ea0 2970 {
whismanoid 15:37c83ec50ea0 2971 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 15:37c83ec50ea0 2972
whismanoid 15:37c83ec50ea0 2973 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 15:37c83ec50ea0 2974 double max541_midscale_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 2975 const int average_count = 100;
whismanoid 15:37c83ec50ea0 2976 const double average_K = 0.25;
whismanoid 15:37c83ec50ea0 2977 for (int count = 0; count < average_count; count++) {
whismanoid 15:37c83ec50ea0 2978 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 2979 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 15:37c83ec50ea0 2980 }
whismanoid 15:37c83ec50ea0 2981 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 15:37c83ec50ea0 2982 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 2983 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 15:37c83ec50ea0 2984 max541_midscale_V, max541.VRef);
whismanoid 15:37c83ec50ea0 2985 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 15:37c83ec50ea0 2986 voltageV = 1.0f;
whismanoid 15:37c83ec50ea0 2987 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2988 }
whismanoid 15:37c83ec50ea0 2989 else {
whismanoid 15:37c83ec50ea0 2990 // %D -- print MAX541 DAC status
whismanoid 15:37c83ec50ea0 2991 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 15:37c83ec50ea0 2992 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 15:37c83ec50ea0 2993 }
whismanoid 15:37c83ec50ea0 2994 }
whismanoid 15:37c83ec50ea0 2995 break;
whismanoid 15:37c83ec50ea0 2996 #endif
whismanoid 15:37c83ec50ea0 2997
whismanoid 15:37c83ec50ea0 2998 //
whismanoid 15:37c83ec50ea0 2999 #if HAS_I2C // SUPPORT_I2C
whismanoid 15:37c83ec50ea0 3000 case 'I': case 'i':
whismanoid 15:37c83ec50ea0 3001 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 3002 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3003 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3004 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3005 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3006 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3007 // get next character
whismanoid 15:37c83ec50ea0 3008 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 15:37c83ec50ea0 3009 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 15:37c83ec50ea0 3010 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 15:37c83ec50ea0 3011 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 15:37c83ec50ea0 3012 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 15:37c83ec50ea0 3013 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 15:37c83ec50ea0 3014 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 15:37c83ec50ea0 3015 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 3016 {
whismanoid 15:37c83ec50ea0 3017 case 'P': case 'p':
whismanoid 15:37c83ec50ea0 3018 {
whismanoid 15:37c83ec50ea0 3019 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3020 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 15:37c83ec50ea0 3021 }
whismanoid 15:37c83ec50ea0 3022 break;
whismanoid 15:37c83ec50ea0 3023 case 'C': case 'c':
whismanoid 15:37c83ec50ea0 3024 {
whismanoid 15:37c83ec50ea0 3025 bool isUpdatedI2CConfig = false;
whismanoid 15:37c83ec50ea0 3026 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3027 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 15:37c83ec50ea0 3028 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 15:37c83ec50ea0 3029 {
whismanoid 15:37c83ec50ea0 3030 isUpdatedI2CConfig = true;
whismanoid 15:37c83ec50ea0 3031 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 3032 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 3033 {
whismanoid 15:37c83ec50ea0 3034 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 3035 }
whismanoid 15:37c83ec50ea0 3036 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 3037 {
whismanoid 15:37c83ec50ea0 3038 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 3039 }
whismanoid 15:37c83ec50ea0 3040 }
whismanoid 15:37c83ec50ea0 3041 if (isUpdatedI2CConfig)
whismanoid 15:37c83ec50ea0 3042 {
whismanoid 15:37c83ec50ea0 3043 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3044 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3045 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3046 i2cMaster.start();
whismanoid 15:37c83ec50ea0 3047 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 3048 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3049 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3050 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 15:37c83ec50ea0 3051 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 15:37c83ec50ea0 3052 (g_I2C_SCL_Hz / 1000.));
whismanoid 15:37c83ec50ea0 3053 i2cMaster.start();
whismanoid 15:37c83ec50ea0 3054 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 3055 }
whismanoid 15:37c83ec50ea0 3056 }
whismanoid 15:37c83ec50ea0 3057 break;
whismanoid 15:37c83ec50ea0 3058 case 'W': case 'w':
whismanoid 15:37c83ec50ea0 3059 {
whismanoid 15:37c83ec50ea0 3060 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3061 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3062 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3063 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3064 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3065 #define MAX_I2C_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 3066 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 3067 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3068 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3069 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 3070 MAX_I2C_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 3071 {
whismanoid 15:37c83ec50ea0 3072 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3073 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3074 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 15:37c83ec50ea0 3075 g_I2C_deviceAddress7,
whismanoid 15:37c83ec50ea0 3076 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 15:37c83ec50ea0 3077 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 3078 {
whismanoid 15:37c83ec50ea0 3079 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 3080 }
whismanoid 15:37c83ec50ea0 3081 //
whismanoid 15:37c83ec50ea0 3082 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3083 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3084 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3085 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3086 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3087 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3088 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3089 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3090 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3091 // /* 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 15:37c83ec50ea0 3092 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3093 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3094 unsigned int misoLength = 0;
whismanoid 15:37c83ec50ea0 3095 bool repeated = (g_I2C_read_count > 0);
whismanoid 15:37c83ec50ea0 3096 //
whismanoid 15:37c83ec50ea0 3097 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 15:37c83ec50ea0 3098 switch (writeStatus)
whismanoid 15:37c83ec50ea0 3099 {
whismanoid 15:37c83ec50ea0 3100 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 3101 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 3102 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 3103 writeStatus);
whismanoid 15:37c83ec50ea0 3104 }
whismanoid 15:37c83ec50ea0 3105 if (repeated)
whismanoid 15:37c83ec50ea0 3106 {
whismanoid 15:37c83ec50ea0 3107 int readStatus =
whismanoid 15:37c83ec50ea0 3108 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 15:37c83ec50ea0 3109 switch (readStatus)
whismanoid 15:37c83ec50ea0 3110 {
whismanoid 15:37c83ec50ea0 3111 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 3112 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 3113 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 3114 readStatus);
whismanoid 15:37c83ec50ea0 3115 }
whismanoid 15:37c83ec50ea0 3116 }
whismanoid 15:37c83ec50ea0 3117 //
whismanoid 15:37c83ec50ea0 3118 if (misoLength > 0)
whismanoid 15:37c83ec50ea0 3119 {
whismanoid 15:37c83ec50ea0 3120 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3121 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 3122 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 15:37c83ec50ea0 3123 byteIndex++)
whismanoid 15:37c83ec50ea0 3124 {
whismanoid 15:37c83ec50ea0 3125 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 3126 }
whismanoid 15:37c83ec50ea0 3127 }
whismanoid 15:37c83ec50ea0 3128 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 3129 }
whismanoid 15:37c83ec50ea0 3130 }
whismanoid 15:37c83ec50ea0 3131 break;
whismanoid 15:37c83ec50ea0 3132 case 'R': case 'r':
whismanoid 15:37c83ec50ea0 3133 {
whismanoid 15:37c83ec50ea0 3134 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3135 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3136 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3137 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3138 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3139 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3140 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3141 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3142 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3143 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3144 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3145 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3146 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3147 // /* 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 15:37c83ec50ea0 3148 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3149 }
whismanoid 15:37c83ec50ea0 3150 break;
whismanoid 15:37c83ec50ea0 3151 case '^':
whismanoid 15:37c83ec50ea0 3152 {
whismanoid 15:37c83ec50ea0 3153 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3154 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3155 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3156 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3157 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3158 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3159 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3160 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3161 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3162 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3163 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3164 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3165 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3166 // /* 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 15:37c83ec50ea0 3167 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3168 }
whismanoid 15:37c83ec50ea0 3169 break;
whismanoid 15:37c83ec50ea0 3170 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 3171 break;
whismanoid 15:37c83ec50ea0 3172 #endif
whismanoid 15:37c83ec50ea0 3173 //
whismanoid 15:37c83ec50ea0 3174 #if HAS_SPI // SUPPORT_SPI
whismanoid 15:37c83ec50ea0 3175 case 'S': case 's':
whismanoid 15:37c83ec50ea0 3176 {
whismanoid 15:37c83ec50ea0 3177 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3178 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3179 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3180 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3181 //
whismanoid 15:37c83ec50ea0 3182 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 15:37c83ec50ea0 3183 bool isUpdatedSPIConfig = false;
whismanoid 15:37c83ec50ea0 3184 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 15:37c83ec50ea0 3185 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 15:37c83ec50ea0 3186 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 15:37c83ec50ea0 3187 {
whismanoid 15:37c83ec50ea0 3188 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3189 }
whismanoid 15:37c83ec50ea0 3190 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 15:37c83ec50ea0 3191 {
whismanoid 15:37c83ec50ea0 3192 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3193 }
whismanoid 15:37c83ec50ea0 3194 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 15:37c83ec50ea0 3195 {
whismanoid 15:37c83ec50ea0 3196 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3197 }
whismanoid 15:37c83ec50ea0 3198 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 15:37c83ec50ea0 3199 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 15:37c83ec50ea0 3200 {
whismanoid 15:37c83ec50ea0 3201 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3202 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 3203 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 3204 {
whismanoid 15:37c83ec50ea0 3205 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 3206 }
whismanoid 15:37c83ec50ea0 3207 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 3208 {
whismanoid 15:37c83ec50ea0 3209 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 3210 }
whismanoid 15:37c83ec50ea0 3211 }
whismanoid 15:37c83ec50ea0 3212 // Update SPI configuration
whismanoid 15:37c83ec50ea0 3213 if (isUpdatedSPIConfig)
whismanoid 15:37c83ec50ea0 3214 {
whismanoid 15:37c83ec50ea0 3215 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3216 spi_cs = g_SPI_cs_state;
whismanoid 15:37c83ec50ea0 3217 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 15:37c83ec50ea0 3218 #if APPLICATION_MAX5715
whismanoid 15:37c83ec50ea0 3219 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3220 #elif APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 3221 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3222 #elif APPLICATION_MAX5171
whismanoid 15:37c83ec50ea0 3223 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3224 #elif APPLICATION_MAX11410
whismanoid 15:37c83ec50ea0 3225 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3226 #elif APPLICATION_MAX12345
whismanoid 15:37c83ec50ea0 3227 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3228 #else
whismanoid 15:37c83ec50ea0 3229 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 15:37c83ec50ea0 3230 #endif
whismanoid 15:37c83ec50ea0 3231 //
whismanoid 15:37c83ec50ea0 3232 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 3233 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 15:37c83ec50ea0 3234 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 15:37c83ec50ea0 3235 //
whismanoid 15:37c83ec50ea0 3236 // 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 15:37c83ec50ea0 3237 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3238 "\r\n %%SC CPOL=%d CPHA=%d CS=%d SCLK=%ld=%1.3fMHz (%1.1fMHz/%1.2f = actual %1.3fMHz) -- SPI config",
whismanoid 15:37c83ec50ea0 3239 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 15:37c83ec50ea0 3240 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 15:37c83ec50ea0 3241 g_SPI_cs_state,
whismanoid 15:37c83ec50ea0 3242 g_SPI_SCLK_Hz,
whismanoid 15:37c83ec50ea0 3243 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 15:37c83ec50ea0 3244 ((double)(SystemCoreClock / 1000000.)),
whismanoid 15:37c83ec50ea0 3245 ideal_divisor,
whismanoid 15:37c83ec50ea0 3246 (actual_SCLK_Hz / 1000000.)
whismanoid 15:37c83ec50ea0 3247 );
whismanoid 15:37c83ec50ea0 3248 }
whismanoid 15:37c83ec50ea0 3249 // get next character
whismanoid 15:37c83ec50ea0 3250 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 3251 {
whismanoid 15:37c83ec50ea0 3252 case 'C': case 's':
whismanoid 15:37c83ec50ea0 3253 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3254 break;
whismanoid 15:37c83ec50ea0 3255 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 3256 // %SD -- SPI diagnostic messages enable
whismanoid 15:37c83ec50ea0 3257 if (g_MAX5719_device.onSPIprint) {
whismanoid 15:37c83ec50ea0 3258 g_MAX5719_device.onSPIprint = NULL;
whismanoid 15:37c83ec50ea0 3259 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') != None is false
whismanoid 15:37c83ec50ea0 3260 }
whismanoid 15:37c83ec50ea0 3261 else {
whismanoid 15:37c83ec50ea0 3262 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[]);
whismanoid 15:37c83ec50ea0 3263 g_MAX5719_device.onSPIprint = onSPIprint_handler;
whismanoid 15:37c83ec50ea0 3264 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') is false
whismanoid 15:37c83ec50ea0 3265 }
whismanoid 15:37c83ec50ea0 3266 break;
whismanoid 15:37c83ec50ea0 3267 case 'W': case 'R': case 'w': case 'r':
whismanoid 15:37c83ec50ea0 3268 {
whismanoid 15:37c83ec50ea0 3269 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3270 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3271 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3272 #define MAX_SPI_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 3273 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 3274 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3275 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3276 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 3277 MAX_SPI_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 3278 {
whismanoid 15:37c83ec50ea0 3279 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3280 cmdLine.serial().printf("\r\nSPI");
whismanoid 15:37c83ec50ea0 3281 if (byteCount > 7) {
whismanoid 15:37c83ec50ea0 3282 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 15:37c83ec50ea0 3283 }
whismanoid 15:37c83ec50ea0 3284 cmdLine.serial().printf(" MOSI->");
whismanoid 15:37c83ec50ea0 3285 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 3286 {
whismanoid 15:37c83ec50ea0 3287 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 3288 }
whismanoid 15:37c83ec50ea0 3289 spi_cs = 0;
whismanoid 15:37c83ec50ea0 3290 unsigned int numBytesTransferred =
whismanoid 15:37c83ec50ea0 3291 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 15:37c83ec50ea0 3292 spi_cs = 1;
whismanoid 15:37c83ec50ea0 3293 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3294 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 3295 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 15:37c83ec50ea0 3296 byteIndex++)
whismanoid 15:37c83ec50ea0 3297 {
whismanoid 15:37c83ec50ea0 3298 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 3299 }
whismanoid 15:37c83ec50ea0 3300 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 3301 }
whismanoid 15:37c83ec50ea0 3302 }
whismanoid 15:37c83ec50ea0 3303 break;
whismanoid 15:37c83ec50ea0 3304 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 3305 } // case 'S': // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3306 break;
whismanoid 15:37c83ec50ea0 3307 #endif
whismanoid 15:37c83ec50ea0 3308 //
whismanoid 15:37c83ec50ea0 3309 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 3310 } // switch(cmdLine[1])
whismanoid 15:37c83ec50ea0 3311 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 15:37c83ec50ea0 3312 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 15:37c83ec50ea0 3313
whismanoid 15:37c83ec50ea0 3314 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3315 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3316 void main_menu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 3317 {
whismanoid 9:45f98573eb6d 3318 // process command line
whismanoid 9:45f98573eb6d 3319 cmdLine.serial().printf("\r\nCmdLine buf:\"%s\"\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 3320
whismanoid 4:d9b05924ad4c 3321 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 3322 // If datalog is free running, halt on any possible received command
whismanoid 17:9397ea3ea7e9 3323 if (Datalogger_Trigger != trigger_Halt) {
whismanoid 4:d9b05924ad4c 3324 Datalogger_Trigger = trigger_Halt;
whismanoid 9:45f98573eb6d 3325 cmdLine.serial().printf("Datalog stopped by USB command input\r\n");
whismanoid 9:45f98573eb6d 3326 cmdLine.serial().printf("Restart datalog by sending LR\r\n");
whismanoid 4:d9b05924ad4c 3327 }
whismanoid 4:d9b05924ad4c 3328 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 3329
whismanoid 4:d9b05924ad4c 3330 // DIAGNOSTIC: print line buffer
whismanoid 4:d9b05924ad4c 3331 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 3332 //
whismanoid 4:d9b05924ad4c 3333 switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 3334 {
whismanoid 4:d9b05924ad4c 3335 case '?':
whismanoid 4:d9b05924ad4c 3336 main_menu_status(cmdLine);
whismanoid 4:d9b05924ad4c 3337 main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 3338 // print command prompt
whismanoid 4:d9b05924ad4c 3339 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 3340 break;
whismanoid 4:d9b05924ad4c 3341 case '\r': case '\n': // ignore blank line
whismanoid 4:d9b05924ad4c 3342 case '\0': // ignore empty line
whismanoid 4:d9b05924ad4c 3343 case '#': // ignore comment line
whismanoid 4:d9b05924ad4c 3344 // # -- lines beginning with # are comments
whismanoid 4:d9b05924ad4c 3345 main_menu_status(cmdLine);
whismanoid 4:d9b05924ad4c 3346 //~ main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 3347 // print command prompt
whismanoid 4:d9b05924ad4c 3348 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 3349 break;
whismanoid 4:d9b05924ad4c 3350 #if ECHO_EOF_ON_EOL
whismanoid 4:d9b05924ad4c 3351 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 4:d9b05924ad4c 3352 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 3353 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 3354 break;
whismanoid 4:d9b05924ad4c 3355 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 4:d9b05924ad4c 3356 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 3357 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 3358 break;
whismanoid 4:d9b05924ad4c 3359 #endif
whismanoid 10:04022a61b527 3360 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 3361 case '!': // device init
whismanoid 10:04022a61b527 3362 {
whismanoid 10:04022a61b527 3363 cmdLine.serial().printf("Init");
whismanoid 10:04022a61b527 3364 // call function Init
whismanoid 10:04022a61b527 3365 uint8_t result = g_MAX11410_device.Init();
whismanoid 10:04022a61b527 3366 // cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 3367 cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 3368 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 3369 // in command '!' device init, apply list of custom register writes after init
whismanoid 10:04022a61b527 3370 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 3371 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 10:04022a61b527 3372 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 10:04022a61b527 3373 uint32_t regData = custom_reg_init_data[index];
whismanoid 10:04022a61b527 3374 cmdLine.serial().printf("*%s=0x%06.6x",
whismanoid 10:04022a61b527 3375 g_MAX11410_device.RegName((MAX11410::MAX11410_CMD_enum_t)regAddress),
whismanoid 10:04022a61b527 3376 regData
whismanoid 10:04022a61b527 3377 );
whismanoid 10:04022a61b527 3378 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 10:04022a61b527 3379 }
whismanoid 10:04022a61b527 3380 #endif // USE_CUSTOM_REG_INIT
whismanoid 10:04022a61b527 3381 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 3382 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 3383 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 3384 }
whismanoid 10:04022a61b527 3385 break;
whismanoid 10:04022a61b527 3386 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 3387 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 3388 case '.':
whismanoid 4:d9b05924ad4c 3389 {
whismanoid 4:d9b05924ad4c 3390 // . -- SelfTest
whismanoid 4:d9b05924ad4c 3391 cmdLine.serial().printf("SelfTest()");
whismanoid 4:d9b05924ad4c 3392 SelfTest(cmdLine);
whismanoid 4:d9b05924ad4c 3393 }
whismanoid 4:d9b05924ad4c 3394 break;
whismanoid 4:d9b05924ad4c 3395 #endif // USE_SELFTEST
whismanoid 15:37c83ec50ea0 3396 #if 1 // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3397 case '%':
whismanoid 4:d9b05924ad4c 3398 {
whismanoid 4:d9b05924ad4c 3399 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 4:d9b05924ad4c 3400 }
whismanoid 4:d9b05924ad4c 3401 break; // case '%'
whismanoid 4:d9b05924ad4c 3402 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 9:45f98573eb6d 3403 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 3404 // reuse the Serial_Tester command *regName=regValue
whismanoid 10:04022a61b527 3405 // CODE GENERATOR: generate * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 3406 case '*':
whismanoid 10:04022a61b527 3407 {
whismanoid 10:04022a61b527 3408 // if buffer starts with a regName:
whismanoid 10:04022a61b527 3409 // for each reg value (0..n) if(cmdLine.has_keyword(device.regName(r))):
whismanoid 10:04022a61b527 3410 // cmdLine.serial().printf(" scan RegName...\r\n");
whismanoid 10:04022a61b527 3411 }
whismanoid 10:04022a61b527 3412 break;
whismanoid 9:45f98573eb6d 3413 #endif // USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 3414 //
whismanoid 10:04022a61b527 3415 #if 1 // USE_AUX_SERIAL_CMD_FORWARDING && (HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL)
whismanoid 10:04022a61b527 3416 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_onEOLcommandParser
whismanoid 10:04022a61b527 3417 case '>':
whismanoid 10:04022a61b527 3418 {
whismanoid 10:04022a61b527 3419 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 3420 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3421 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3422 CmdLine& cmdLine_AuxSerial = cmdLine_AUXserial;
whismanoid 10:04022a61b527 3423 Serial& AuxSerial = AUXserial;
whismanoid 10:04022a61b527 3424 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3425 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 3426 CmdLine& cmdLine_AuxSerial = cmdLine_DAPLINKserial;
whismanoid 10:04022a61b527 3427 Serial& AuxSerial = DAPLINKserial;
whismanoid 10:04022a61b527 3428 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3429 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 3430 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3431 //
whismanoid 10:04022a61b527 3432 // >> suppress key=value parsing
whismanoid 10:04022a61b527 3433 bool suppress_parsing = (cmdLine[1] == '>');
whismanoid 10:04022a61b527 3434 if (suppress_parsing == false) {
whismanoid 10:04022a61b527 3435 // int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 3436 if (cmdLine.parse_int_dec("baud", g_auxSerialCom_baud))
whismanoid 10:04022a61b527 3437 {
whismanoid 10:04022a61b527 3438 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- baud rate
whismanoid 10:04022a61b527 3439 cmdLine_AuxSerial.serial().printf("\r\n*** New Baud Rate %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3440 AuxSerial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3441 cmdLine_AuxSerial.serial().printf("\r\n*** Baud Rate was set to %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3442 }
whismanoid 10:04022a61b527 3443 #if 0
whismanoid 10:04022a61b527 3444 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 3445 if (cmdLine.parse_int_dec("tx_wait_echo", g_auxSerialCom_tx_wait_echo))
whismanoid 10:04022a61b527 3446 {
whismanoid 10:04022a61b527 3447 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_wait_echo
whismanoid 10:04022a61b527 3448 //~ cmdLine_AuxSerial.serial().printf("\r\n*** tx_wait_echo was set to %d ***\r\n", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 3449 cmdLine.serial().printf("\r\n tx_wait_echo=%d", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 3450 }
whismanoid 10:04022a61b527 3451 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 3452 if (cmdLine.parse_int_dec("tx_char_delay_ms", g_auxSerialCom_tx_char_delay_ms))
whismanoid 10:04022a61b527 3453 {
whismanoid 10:04022a61b527 3454 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_char_delay_ms
whismanoid 10:04022a61b527 3455 //~ cmdLine_AuxSerial.serial().printf("\r\n*** tx_char_delay_ms was set to %d ***\r\n", g_auxSerialCom_tx_char_delay_ms);
whismanoid 10:04022a61b527 3456 cmdLine.serial().printf("\r\n tx_char_delay_ms=%dms", g_auxSerialCom_tx_char_delay_ms);
whismanoid 10:04022a61b527 3457 }
whismanoid 10:04022a61b527 3458 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 3459 if (cmdLine.parse_int_dec("tx_line_delay_ms", g_auxSerialCom_tx_line_delay_ms))
whismanoid 10:04022a61b527 3460 {
whismanoid 10:04022a61b527 3461 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_line_delay_ms
whismanoid 10:04022a61b527 3462 //~ cmdLine_AuxSerial.serial().printf("\r\n*** tx_line_delay_ms was set to %d ***\r\n", g_auxSerialCom_tx_line_delay_ms);
whismanoid 10:04022a61b527 3463 cmdLine.serial().printf("\r\n tx_line_delay_ms=%dms", g_auxSerialCom_tx_line_delay_ms);
whismanoid 10:04022a61b527 3464 }
whismanoid 10:04022a61b527 3465 #endif
whismanoid 10:04022a61b527 3466 // int g_auxSerialCom_message_ms = 0; //!< capture RX until response timeout?
whismanoid 10:04022a61b527 3467 if (cmdLine.parse_int_dec("message_ms", g_auxSerialCom_message_ms))
whismanoid 10:04022a61b527 3468 {
whismanoid 10:04022a61b527 3469 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 10:04022a61b527 3470 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3471 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3472 }
whismanoid 10:04022a61b527 3473 // int g_auxSerialCom_rx_idle_ms = 0; //!< capture RX until idle timeout?
whismanoid 10:04022a61b527 3474 if (cmdLine.parse_int_dec("rx_idle_ms", g_auxSerialCom_rx_idle_ms))
whismanoid 10:04022a61b527 3475 {
whismanoid 10:04022a61b527 3476 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_idle_ms
whismanoid 10:04022a61b527 3477 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_idle_ms was set to %d ***\r\n", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3478 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3479 }
whismanoid 10:04022a61b527 3480 // int g_auxSerialCom_rx_max_count = 0; //!< capture RX until max character count?
whismanoid 10:04022a61b527 3481 if (cmdLine.parse_int_dec("rx_max_count", g_auxSerialCom_rx_max_count))
whismanoid 10:04022a61b527 3482 {
whismanoid 10:04022a61b527 3483 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_max_count
whismanoid 10:04022a61b527 3484 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_max_count was set to %d ***\r\n", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3485 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3486 }
whismanoid 10:04022a61b527 3487 // int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text char?
whismanoid 10:04022a61b527 3488 if (cmdLine.parse_int_dec("rx_eot", g_auxSerialCom_rx_eot))
whismanoid 10:04022a61b527 3489 {
whismanoid 10:04022a61b527 3490 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_eot
whismanoid 10:04022a61b527 3491 //~ cmdLine_AUXserial.serial().printf("\r\n*** rx_eot was set to %d ***\r\n", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 3492 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 3493 }
whismanoid 10:04022a61b527 3494 }
whismanoid 10:04022a61b527 3495 // Command forwarding to AUX serial TX/RX cmdLine_AuxSerial #257 -- send outgoing_string
whismanoid 10:04022a61b527 3496 char* outgoing_string = (char*)cmdLine.str();
whismanoid 10:04022a61b527 3497 // > use key=value parsing
whismanoid 10:04022a61b527 3498 // >> suppress key=value parsing
whismanoid 10:04022a61b527 3499 if (suppress_parsing) {
whismanoid 10:04022a61b527 3500 cmdLine.serial().printf("\r\n suppress_parsing outgoing_string=\"%s\"", outgoing_string);
whismanoid 10:04022a61b527 3501 outgoing_string++; // skip the first '>'
whismanoid 10:04022a61b527 3502 outgoing_string++; // skip the second '>'
whismanoid 10:04022a61b527 3503 } else {
whismanoid 10:04022a61b527 3504 // TODO: after parsing, key=value pairs should be deleted, but outgoing_string=">xyzzy abc=def"
whismanoid 10:04022a61b527 3505 cmdLine.serial().printf("\r\n after parsing, outgoing_string=\"%s\"", outgoing_string);
whismanoid 10:04022a61b527 3506 outgoing_string++; // skip the first '>'
whismanoid 10:04022a61b527 3507 }
whismanoid 10:04022a61b527 3508 static char rx_string_buf[RX_STRING_BUF_SIZE];
whismanoid 10:04022a61b527 3509 unsigned int rx_string_length = 0;
whismanoid 10:04022a61b527 3510 cmdLine.serial().printf("\r\n >%s\r\n <", outgoing_string);
whismanoid 10:04022a61b527 3511 rx_string_buf[0] = '\0';
whismanoid 10:04022a61b527 3512 rx_string_length = 0;
whismanoid 10:04022a61b527 3513 //
whismanoid 10:04022a61b527 3514 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 3515 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 3516 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 3517 //
whismanoid 10:04022a61b527 3518 // int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 3519 // int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 3520 // int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 3521 // int g_auxSerialCom_rx_idle_ms = 2000; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 3522 // int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 3523 // int g_auxSerialCom_rx_eot = '\r'; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 3524 //~ cmdLine_AuxSerial.serial().printf("\r\n*** TODO forward %s ***\r\n", outgoing_string);
whismanoid 10:04022a61b527 3525 //
whismanoid 10:04022a61b527 3526 // TODO: send whole string or send character-by-character?
whismanoid 10:04022a61b527 3527 cmdLine_AuxSerial.serial().printf("%s", outgoing_string);
whismanoid 10:04022a61b527 3528 cmdLine_AuxSerial.serial().printf("\r\n");
whismanoid 10:04022a61b527 3529 g_auxSerialCom_Timer.start();
whismanoid 10:04022a61b527 3530 g_auxSerialCom_Timer_begin_message_ms = g_auxSerialCom_Timer.read_ms(); // start of message
whismanoid 10:04022a61b527 3531 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 3532 while (rx_string_length < (RX_STRING_BUF_SIZE-1)) {
whismanoid 10:04022a61b527 3533 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_message_ms) > g_auxSerialCom_message_ms) {
whismanoid 10:04022a61b527 3534 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3535 break;
whismanoid 10:04022a61b527 3536 }
whismanoid 10:04022a61b527 3537 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_rx_idle_ms) > g_auxSerialCom_rx_idle_ms) {
whismanoid 10:04022a61b527 3538 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3539 break;
whismanoid 10:04022a61b527 3540 }
whismanoid 10:04022a61b527 3541 if (rx_string_length >= g_auxSerialCom_rx_max_count) {
whismanoid 15:37c83ec50ea0 3542 // [Warning] comparison between signed and unsigned integer expressions
whismanoid 10:04022a61b527 3543 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3544 break;
whismanoid 10:04022a61b527 3545 }
whismanoid 10:04022a61b527 3546 if (AuxSerial.readable()) {
whismanoid 10:04022a61b527 3547 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 3548 char ch = AuxSerial.getc();
whismanoid 10:04022a61b527 3549 rx_string_buf[rx_string_length++] = ch;
whismanoid 10:04022a61b527 3550 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 10:04022a61b527 3551 cmdLine.serial().printf("%s", &(rx_string_buf[rx_string_length-1]) ); // immediate character echo
whismanoid 10:04022a61b527 3552 if (g_auxSerialCom_rx_eot != aux_serial_cmd_forwarding_rx_eot_not_used) {
whismanoid 10:04022a61b527 3553 if (ch == g_auxSerialCom_rx_eot) {
whismanoid 10:04022a61b527 3554 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 3555 break;
whismanoid 10:04022a61b527 3556 }
whismanoid 10:04022a61b527 3557 }
whismanoid 10:04022a61b527 3558 }
whismanoid 10:04022a61b527 3559 } // end while (rx_string_length < (RX_STRING_BUF_SIZE-1))
whismanoid 10:04022a61b527 3560 #if 1
whismanoid 10:04022a61b527 3561 // print summary. is this needed? we already print aux rx as it is received.
whismanoid 10:04022a61b527 3562 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 10:04022a61b527 3563 cmdLine.serial().printf("\r\n >%s", outgoing_string);
whismanoid 10:04022a61b527 3564 cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 10:04022a61b527 3565 #endif
whismanoid 10:04022a61b527 3566 //
whismanoid 10:04022a61b527 3567 }
whismanoid 10:04022a61b527 3568 break; // case '>'
whismanoid 10:04022a61b527 3569 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3570 //
whismanoid 4:d9b05924ad4c 3571 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 3572 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 3573 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 3574 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 3575 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible
whismanoid 9:45f98573eb6d 3576 case 'L': case 'l':
whismanoid 4:d9b05924ad4c 3577 {
whismanoid 4:d9b05924ad4c 3578 // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 3579 Datalogger_Trigger = trigger_Halt;
whismanoid 4:d9b05924ad4c 3580 switch (cmdLine[1])
whismanoid 4:d9b05924ad4c 3581 {
whismanoid 17:9397ea3ea7e9 3582 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 3583 case 'T': case 't':
whismanoid 17:9397ea3ea7e9 3584 {
whismanoid 17:9397ea3ea7e9 3585 // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 3586 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 3587 Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 3588 g_timer_interval_counter = 0;
whismanoid 17:9397ea3ea7e9 3589 // TODO: get g_timer_interval_msec from cmdLine
whismanoid 17:9397ea3ea7e9 3590 // g_timer_interval_msec = 500;
whismanoid 17:9397ea3ea7e9 3591 // g_timer_interval_count = 10;
whismanoid 17:9397ea3ea7e9 3592 if (cmdLine.parse_int_dec("count", g_timer_interval_count))
whismanoid 17:9397ea3ea7e9 3593 {
whismanoid 17:9397ea3ea7e9 3594 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 3595 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 3596 cmdLine.serial().printf("\r\n g_timer_interval_count=%d", g_timer_interval_count);
whismanoid 17:9397ea3ea7e9 3597 }
whismanoid 17:9397ea3ea7e9 3598 if (cmdLine.parse_int_dec("base", g_timer_interval_msec))
whismanoid 17:9397ea3ea7e9 3599 {
whismanoid 17:9397ea3ea7e9 3600 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 3601 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 3602 cmdLine.serial().printf("\r\n g_timer_interval_msec=%d", g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 3603 }
whismanoid 17:9397ea3ea7e9 3604 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 17:9397ea3ea7e9 3605 }
whismanoid 17:9397ea3ea7e9 3606 break;
whismanoid 17:9397ea3ea7e9 3607 // LIH3 -- Datalog when input high D3
whismanoid 17:9397ea3ea7e9 3608 // LIL6 -- Datalog when input low D6
whismanoid 17:9397ea3ea7e9 3609 case 'I': case 'i':
whismanoid 17:9397ea3ea7e9 3610 {
whismanoid 17:9397ea3ea7e9 3611 // TODO: switch cmdLine[2] configure High or Low, configure input pin
whismanoid 17:9397ea3ea7e9 3612 }
whismanoid 17:9397ea3ea7e9 3613 break;
whismanoid 17:9397ea3ea7e9 3614 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3615 // L$regaddr@dataMask=testValue -- Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 3616 case '$':
whismanoid 17:9397ea3ea7e9 3617 {
whismanoid 17:9397ea3ea7e9 3618 // TODO: scan cmdLine for regAddr, dataMask, testValue
whismanoid 17:9397ea3ea7e9 3619 }
whismanoid 17:9397ea3ea7e9 3620 break;
whismanoid 17:9397ea3ea7e9 3621 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3622 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 3623 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3624 case '@':
whismanoid 17:9397ea3ea7e9 3625 {
whismanoid 17:9397ea3ea7e9 3626 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3627 int editRowIndex = 0;
whismanoid 17:9397ea3ea7e9 3628 int edit_action = (int)action_noop;
whismanoid 17:9397ea3ea7e9 3629 int edit_digitalOutPin = 0;
whismanoid 17:9397ea3ea7e9 3630 int edit_condition = (int)condition_always;
whismanoid 17:9397ea3ea7e9 3631 int edit_condition_channel = 0;
whismanoid 17:9397ea3ea7e9 3632 double edit_condition_threshold = 0;
whismanoid 17:9397ea3ea7e9 3633 //
whismanoid 17:9397ea3ea7e9 3634 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 3635 {
whismanoid 17:9397ea3ea7e9 3636 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 3637 }
whismanoid 17:9397ea3ea7e9 3638 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 3639 {
whismanoid 17:9397ea3ea7e9 3640 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 3641 }
whismanoid 17:9397ea3ea7e9 3642 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 3643 {
whismanoid 17:9397ea3ea7e9 3644 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 3645 }
whismanoid 17:9397ea3ea7e9 3646 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 3647 {
whismanoid 17:9397ea3ea7e9 3648 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 3649 }
whismanoid 17:9397ea3ea7e9 3650 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 3651 {
whismanoid 17:9397ea3ea7e9 3652 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 3653 }
whismanoid 17:9397ea3ea7e9 3654 //
whismanoid 17:9397ea3ea7e9 3655 // Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3656 switch (cmdLine[2]) // L@... -- Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3657 {
whismanoid 17:9397ea3ea7e9 3658 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 3659 case '0': case '1': case '2': case '3': case '4':
whismanoid 17:9397ea3ea7e9 3660 case '5': case '6': case '7': case '8': case '9':
whismanoid 17:9397ea3ea7e9 3661 // edit row data
whismanoid 17:9397ea3ea7e9 3662 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 3663 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 3664 // get row number to edit from cmdLine[2]
whismanoid 17:9397ea3ea7e9 3665 editRowIndex = atoi(cmdLine.str()+2);
whismanoid 17:9397ea3ea7e9 3666 // default is no change
whismanoid 17:9397ea3ea7e9 3667 edit_action = Datalogger_action_table[editRowIndex].action;
whismanoid 17:9397ea3ea7e9 3668 edit_digitalOutPin = Datalogger_action_table[editRowIndex].digitalOutPin;
whismanoid 17:9397ea3ea7e9 3669 edit_condition = Datalogger_action_table[editRowIndex].condition;
whismanoid 17:9397ea3ea7e9 3670 edit_condition_channel = Datalogger_action_table[editRowIndex].condition_channel;
whismanoid 17:9397ea3ea7e9 3671 edit_condition_threshold = Datalogger_action_table[editRowIndex].condition_threshold;
whismanoid 17:9397ea3ea7e9 3672 // scan cmdLine[2] for key=value of what fields to change
whismanoid 17:9397ea3ea7e9 3673 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 3674 {
whismanoid 17:9397ea3ea7e9 3675 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 3676 }
whismanoid 17:9397ea3ea7e9 3677 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 3678 {
whismanoid 17:9397ea3ea7e9 3679 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 3680 }
whismanoid 17:9397ea3ea7e9 3681 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 3682 {
whismanoid 17:9397ea3ea7e9 3683 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 3684 }
whismanoid 17:9397ea3ea7e9 3685 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 3686 {
whismanoid 17:9397ea3ea7e9 3687 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 3688 }
whismanoid 17:9397ea3ea7e9 3689 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 3690 {
whismanoid 17:9397ea3ea7e9 3691 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 3692 }
whismanoid 17:9397ea3ea7e9 3693 // update row
whismanoid 17:9397ea3ea7e9 3694 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 3695 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 3696 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 3697 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 3698 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 3699 }
whismanoid 17:9397ea3ea7e9 3700 break;
whismanoid 17:9397ea3ea7e9 3701 case '+':
whismanoid 17:9397ea3ea7e9 3702 // add a new row at end of table
whismanoid 17:9397ea3ea7e9 3703 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 3704 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 3705 editRowIndex = Datalogger_action_table_row_count;
whismanoid 17:9397ea3ea7e9 3706 Datalogger_action_table_row_count++;
whismanoid 17:9397ea3ea7e9 3707 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 3708 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 3709 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 3710 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 3711 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 3712 }
whismanoid 17:9397ea3ea7e9 3713 break;
whismanoid 17:9397ea3ea7e9 3714 case '-':
whismanoid 17:9397ea3ea7e9 3715 // delete row from table
whismanoid 17:9397ea3ea7e9 3716 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 3717 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 3718 if ((cmdLine[3] == '~') && (cmdLine[4] == '~') && (cmdLine[5] == '~')) {
whismanoid 17:9397ea3ea7e9 3719 // L@-~~~ -- delete all rows from table
whismanoid 17:9397ea3ea7e9 3720 Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 3721 break;
whismanoid 17:9397ea3ea7e9 3722 }
whismanoid 17:9397ea3ea7e9 3723 editRowIndex = atoi(cmdLine.str()+3);
whismanoid 17:9397ea3ea7e9 3724 // delete row editRowIndex from Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3725 for (int i = editRowIndex; i < (Datalogger_action_table_row_count-1); i++)
whismanoid 17:9397ea3ea7e9 3726 {
whismanoid 17:9397ea3ea7e9 3727 // copy row i+1 into row i
whismanoid 17:9397ea3ea7e9 3728 Datalogger_action_table[i].action = Datalogger_action_table[i+1].action;
whismanoid 17:9397ea3ea7e9 3729 Datalogger_action_table[i].digitalOutPin = Datalogger_action_table[i+1].digitalOutPin;
whismanoid 17:9397ea3ea7e9 3730 Datalogger_action_table[i].condition = Datalogger_action_table[i+1].condition;
whismanoid 17:9397ea3ea7e9 3731 Datalogger_action_table[i].condition_channel = Datalogger_action_table[i+1].condition_channel;
whismanoid 17:9397ea3ea7e9 3732 Datalogger_action_table[i].condition_threshold = Datalogger_action_table[i+1].condition_threshold;
whismanoid 17:9397ea3ea7e9 3733 }
whismanoid 17:9397ea3ea7e9 3734 Datalogger_action_table_row_count--;
whismanoid 17:9397ea3ea7e9 3735 }
whismanoid 17:9397ea3ea7e9 3736 break;
whismanoid 17:9397ea3ea7e9 3737 case '!':
whismanoid 17:9397ea3ea7e9 3738 // pause the entire action table
whismanoid 17:9397ea3ea7e9 3739 Datalogger_action_table_enabled = false;
whismanoid 17:9397ea3ea7e9 3740 break;
whismanoid 17:9397ea3ea7e9 3741 case '@':
whismanoid 17:9397ea3ea7e9 3742 // enable the entire action table
whismanoid 17:9397ea3ea7e9 3743 Datalogger_action_table_enabled = true;
whismanoid 17:9397ea3ea7e9 3744 break;
whismanoid 17:9397ea3ea7e9 3745 }
whismanoid 17:9397ea3ea7e9 3746 //
whismanoid 17:9397ea3ea7e9 3747 // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3748 if (Datalogger_action_table_enabled) {
whismanoid 17:9397ea3ea7e9 3749 cmdLine.serial().printf("Action table enabled; L@! to pause");
whismanoid 17:9397ea3ea7e9 3750 }
whismanoid 17:9397ea3ea7e9 3751 else {
whismanoid 17:9397ea3ea7e9 3752 cmdLine.serial().printf("Action table paused; L@@ to enable");
whismanoid 17:9397ea3ea7e9 3753 }
whismanoid 17:9397ea3ea7e9 3754 //~ cmdLine.serial().printf("\r\n Datalogger_action_table_row_count=%d", Datalogger_action_table_row_count);
whismanoid 17:9397ea3ea7e9 3755 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 3756 {
whismanoid 17:9397ea3ea7e9 3757 cmdLine.serial().printf("\r\n L@%d", i);
whismanoid 17:9397ea3ea7e9 3758 cmdLine.serial().printf(" act=%d", Datalogger_action_table[i].action);
whismanoid 17:9397ea3ea7e9 3759 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 3760 {
whismanoid 17:9397ea3ea7e9 3761 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 3762 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 3763 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 3764 break;
whismanoid 17:9397ea3ea7e9 3765 default:
whismanoid 17:9397ea3ea7e9 3766 case action_noop:
whismanoid 17:9397ea3ea7e9 3767 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 3768 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 3769 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 3770 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 3771 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 3772 break;
whismanoid 17:9397ea3ea7e9 3773 }
whismanoid 17:9397ea3ea7e9 3774 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 3775 {
whismanoid 17:9397ea3ea7e9 3776 case condition_always:
whismanoid 17:9397ea3ea7e9 3777 break;
whismanoid 17:9397ea3ea7e9 3778 default:
whismanoid 17:9397ea3ea7e9 3779 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 3780 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 3781 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 3782 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 3783 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 3784 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 3785 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 3786 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 3787 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 3788 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 3789 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 3790 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 3791 cmdLine.serial().printf(" if=%d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 3792 cmdLine.serial().printf(" ch=%d", Datalogger_action_table[i].condition_channel);
whismanoid 17:9397ea3ea7e9 3793 cmdLine.serial().printf(" x=%f", Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3794 break;
whismanoid 17:9397ea3ea7e9 3795 }
whismanoid 17:9397ea3ea7e9 3796 cmdLine.serial().printf(" -- ");
whismanoid 17:9397ea3ea7e9 3797 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 3798 {
whismanoid 17:9397ea3ea7e9 3799 case action_noop:
whismanoid 17:9397ea3ea7e9 3800 cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 3801 break;
whismanoid 17:9397ea3ea7e9 3802 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 3803 cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 3804 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 3805 break;
whismanoid 17:9397ea3ea7e9 3806 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 3807 cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 3808 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 3809 break;
whismanoid 17:9397ea3ea7e9 3810 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 3811 cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 3812 break;
whismanoid 17:9397ea3ea7e9 3813 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 3814 cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 3815 break;
whismanoid 17:9397ea3ea7e9 3816 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 3817 cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 3818 // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 3819 cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 3820 break;
whismanoid 17:9397ea3ea7e9 3821 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 3822 cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 3823 // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3824 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 3825 break;
whismanoid 17:9397ea3ea7e9 3826 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 3827 cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 3828 // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3829 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 3830 break;
whismanoid 17:9397ea3ea7e9 3831 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 3832 //~ cmdLine.serial().printf(" condition %d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 3833 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 3834 {
whismanoid 17:9397ea3ea7e9 3835 case condition_always:
whismanoid 17:9397ea3ea7e9 3836 cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 3837 break;
whismanoid 17:9397ea3ea7e9 3838 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 3839 cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3840 break;
whismanoid 17:9397ea3ea7e9 3841 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 3842 cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3843 break;
whismanoid 17:9397ea3ea7e9 3844 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 3845 cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3846 break;
whismanoid 17:9397ea3ea7e9 3847 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 3848 cmdLine.serial().printf(" if A%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3849 break;
whismanoid 17:9397ea3ea7e9 3850 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 3851 cmdLine.serial().printf(" if A%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3852 break;
whismanoid 17:9397ea3ea7e9 3853 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 3854 cmdLine.serial().printf(" if A%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3855 break;
whismanoid 17:9397ea3ea7e9 3856 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 3857 cmdLine.serial().printf(" if AIN%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3858 break;
whismanoid 17:9397ea3ea7e9 3859 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 3860 cmdLine.serial().printf(" if AIN%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3861 break;
whismanoid 17:9397ea3ea7e9 3862 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 3863 cmdLine.serial().printf(" if AIN%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3864 break;
whismanoid 17:9397ea3ea7e9 3865 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 3866 cmdLine.serial().printf(" if AIN%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3867 break;
whismanoid 17:9397ea3ea7e9 3868 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 3869 cmdLine.serial().printf(" if AIN%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3870 break;
whismanoid 17:9397ea3ea7e9 3871 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 3872 cmdLine.serial().printf(" if AIN%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3873 break;
whismanoid 17:9397ea3ea7e9 3874 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 3875 } // for ...Datalogger_action_table_row_count // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3876 cmdLine.serial().printf("\r\nAction table editing commands:");
whismanoid 17:9397ea3ea7e9 3877 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 3878 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 3879 cmdLine.serial().printf("\r\n L@+ act=4 if=1 ch=5 x=12345 -- add new entry at end of table");
whismanoid 17:9397ea3ea7e9 3880 }
whismanoid 17:9397ea3ea7e9 3881 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 3882 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 3883 cmdLine.serial().printf("\r\n L@%d act=4 if=1 ch=5 x=12345 -- edit row %d",
whismanoid 17:9397ea3ea7e9 3884 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 3885 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 3886 cmdLine.serial().printf("\r\n L@-%d -- delete row %d",
whismanoid 17:9397ea3ea7e9 3887 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 3888 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 3889 cmdLine.serial().printf("\r\n L@-~~~ -- delete all rows");
whismanoid 17:9397ea3ea7e9 3890 cmdLine.serial().printf("\r\n L@! -- pause entire action table");
whismanoid 17:9397ea3ea7e9 3891 cmdLine.serial().printf("\r\n L@@ -- enable action table");
whismanoid 17:9397ea3ea7e9 3892 }
whismanoid 17:9397ea3ea7e9 3893 //
whismanoid 17:9397ea3ea7e9 3894 } // case L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3895 break;
whismanoid 17:9397ea3ea7e9 3896 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 3897 // LR -- Datalog free run as fast as possible
whismanoid 4:d9b05924ad4c 3898 case 'R': case 'r':
whismanoid 4:d9b05924ad4c 3899 // free run as fast as possible
whismanoid 8:dffee7509bfb 3900 Datalogger_Trigger = trigger_FreeRun;
whismanoid 8:dffee7509bfb 3901 Datalogger_Need_PrintHeader = true;
whismanoid 4:d9b05924ad4c 3902 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 9:45f98573eb6d 3903 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3904 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 3905 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3906 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3907 case 'S': case 's':
whismanoid 9:45f98573eb6d 3908 {
whismanoid 9:45f98573eb6d 3909 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 3910 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 3911 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 3912 )
whismanoid 9:45f98573eb6d 3913 {
whismanoid 9:45f98573eb6d 3914 // it's me
whismanoid 9:45f98573eb6d 3915 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 3916 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 3917 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 3918 {
whismanoid 9:45f98573eb6d 3919 case 'D': case 'd':
whismanoid 9:45f98573eb6d 3920 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Disable;
whismanoid 9:45f98573eb6d 3921 break;
whismanoid 9:45f98573eb6d 3922 case 'L': case 'l':
whismanoid 9:45f98573eb6d 3923 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 3924 break;
whismanoid 9:45f98573eb6d 3925 case 'V': case 'v':
whismanoid 9:45f98573eb6d 3926 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 3927 break;
whismanoid 9:45f98573eb6d 3928 //
whismanoid 9:45f98573eb6d 3929 //
whismanoid 9:45f98573eb6d 3930 // TODO: MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3931 case 'C': case 'c':
whismanoid 9:45f98573eb6d 3932 {
whismanoid 9:45f98573eb6d 3933 uint8_t hexValue = 0;
whismanoid 9:45f98573eb6d 3934 hexValue = hexValueOfChar(cmdLine[5]) * 0x10 + hexValueOfChar(cmdLine[6]);
whismanoid 9:45f98573eb6d 3935 switch (cmdLine[4])
whismanoid 9:45f98573eb6d 3936 {
whismanoid 9:45f98573eb6d 3937 //
whismanoid 9:45f98573eb6d 3938 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 3939 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34"));
whismanoid 9:45f98573eb6d 3940 case 'F': case 'f':
whismanoid 9:45f98573eb6d 3941 SPI_AIN_Cfg_v_filter_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 3942 break;
whismanoid 9:45f98573eb6d 3943 //
whismanoid 9:45f98573eb6d 3944 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3945 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 3946 case 'C': case 'c':
whismanoid 9:45f98573eb6d 3947 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 3948 break;
whismanoid 9:45f98573eb6d 3949 //
whismanoid 9:45f98573eb6d 3950 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 3951 // cmdLine.serial().print(F("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00"));
whismanoid 9:45f98573eb6d 3952 case 'P': case 'p':
whismanoid 9:45f98573eb6d 3953 SPI_AIN_Cfg_v_pga_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 3954 break;
whismanoid 9:45f98573eb6d 3955 //
whismanoid 9:45f98573eb6d 3956 // cmdLine.serial().print(F("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar"));
whismanoid 9:45f98573eb6d 3957 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3958 case 'U': case 'u':
whismanoid 9:45f98573eb6d 3959 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] | 0x40;
whismanoid 9:45f98573eb6d 3960 break;
whismanoid 9:45f98573eb6d 3961 //
whismanoid 9:45f98573eb6d 3962 // cmdLine.serial().print(F("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar"));
whismanoid 9:45f98573eb6d 3963 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3964 case 'B': case 'b':
whismanoid 9:45f98573eb6d 3965 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] &~ 0x40;
whismanoid 9:45f98573eb6d 3966 break;
whismanoid 9:45f98573eb6d 3967 }
whismanoid 9:45f98573eb6d 3968 break;
whismanoid 9:45f98573eb6d 3969 }
whismanoid 9:45f98573eb6d 3970 //
whismanoid 9:45f98573eb6d 3971 //
whismanoid 9:45f98573eb6d 3972 }
whismanoid 9:45f98573eb6d 3973 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 3974 } // end for channel_index
whismanoid 9:45f98573eb6d 3975 Datalogger_PrintHeader();
whismanoid 9:45f98573eb6d 3976 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 3977 }
whismanoid 9:45f98573eb6d 3978 break;
whismanoid 9:45f98573eb6d 3979 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3980 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 3981 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 3982 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3983 // verb: D for disable, V for Voltage, L for LSB
whismanoid 8:dffee7509bfb 3984 case 'A': case 'a':
whismanoid 9:45f98573eb6d 3985 {
whismanoid 9:45f98573eb6d 3986 // all-channel: loop through all valid channel_index, test cmdLine[2] 'is it me'?
whismanoid 9:45f98573eb6d 3987 // for channel_index loop through 0..NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 9:45f98573eb6d 3988 // if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 3989 // || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 3990 // ) {
whismanoid 9:45f98573eb6d 3991 // // it's me
whismanoid 9:45f98573eb6d 3992 // // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 3993 // // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 3994 // } end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 3995 // } end for channel_index
whismanoid 9:45f98573eb6d 3996 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 3997 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 3998 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 3999 )
whismanoid 9:45f98573eb6d 4000 {
whismanoid 9:45f98573eb6d 4001 // it's me
whismanoid 9:45f98573eb6d 4002 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 4003 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 4004 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 4005 {
whismanoid 9:45f98573eb6d 4006 case 'D': case 'd':
whismanoid 9:45f98573eb6d 4007 Platform_Enable_ch[channel_index] = Platform_AIN_Disable;
whismanoid 9:45f98573eb6d 4008 break;
whismanoid 9:45f98573eb6d 4009 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4010 case 'L': case 'l':
whismanoid 9:45f98573eb6d 4011 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 4012 break;
whismanoid 9:45f98573eb6d 4013 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4014 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 4015 case 'V': case 'v':
whismanoid 9:45f98573eb6d 4016 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 4017 break;
whismanoid 9:45f98573eb6d 4018 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 4019 }
whismanoid 9:45f98573eb6d 4020 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 4021 } // end for channel_index
whismanoid 10:04022a61b527 4022 // Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 4023 if (Datalogger_enable_serial) {
whismanoid 9:45f98573eb6d 4024 Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 4025 }
whismanoid 9:45f98573eb6d 4026 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4027 if (Datalogger_enable_AUXserial) {
whismanoid 9:45f98573eb6d 4028 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 9:45f98573eb6d 4029 }
whismanoid 9:45f98573eb6d 4030 # endif // HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4031 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4032 if (Datalogger_enable_DAPLINKserial) {
whismanoid 9:45f98573eb6d 4033 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 9:45f98573eb6d 4034 }
whismanoid 9:45f98573eb6d 4035 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4036 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4037 }
whismanoid 8:dffee7509bfb 4038 break;
whismanoid 9:45f98573eb6d 4039 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 4040 case '>':
whismanoid 9:45f98573eb6d 4041 // L>A -- Datalogger_enable_AUXserial
whismanoid 9:45f98573eb6d 4042 // L>D -- Datalogger_enable_DAPLINKserial
whismanoid 9:45f98573eb6d 4043 // L>S -- Datalogger_enable_serial
whismanoid 9:45f98573eb6d 4044 switch (cmdLine[2])
whismanoid 9:45f98573eb6d 4045 {
whismanoid 9:45f98573eb6d 4046 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4047 case 'A': case 'a':
whismanoid 9:45f98573eb6d 4048 Datalogger_enable_AUXserial = !Datalogger_enable_AUXserial;
whismanoid 9:45f98573eb6d 4049 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4050 break;
whismanoid 8:dffee7509bfb 4051 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4052 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4053 case 'D': case 'd':
whismanoid 9:45f98573eb6d 4054 Datalogger_enable_DAPLINKserial = !Datalogger_enable_DAPLINKserial;
whismanoid 9:45f98573eb6d 4055 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4056 break;
whismanoid 8:dffee7509bfb 4057 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4058 case 'S': case 's':
whismanoid 9:45f98573eb6d 4059 Datalogger_enable_serial = !Datalogger_enable_serial;
whismanoid 9:45f98573eb6d 4060 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4061 break;
whismanoid 9:45f98573eb6d 4062 }
whismanoid 9:45f98573eb6d 4063 break; // case '>' L>S serial enable toggle
whismanoid 17:9397ea3ea7e9 4064 } // switch (cmdLine[1]) inside case 'L'
whismanoid 4:d9b05924ad4c 4065 }
whismanoid 4:d9b05924ad4c 4066 break; // case 'L'
whismanoid 4:d9b05924ad4c 4067 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 4068 //
whismanoid 4:d9b05924ad4c 4069 // Application-specific commands here
whismanoid 4:d9b05924ad4c 4070 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 4071 //
whismanoid 4:d9b05924ad4c 4072 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4073 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4074
whismanoid 4:d9b05924ad4c 4075 //
whismanoid 4:d9b05924ad4c 4076 // TODO1: add new commands here
whismanoid 4:d9b05924ad4c 4077 //
whismanoid 4:d9b05924ad4c 4078 default:
whismanoid 4:d9b05924ad4c 4079 #if APPLICATION_MAX5715 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4080 extern bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5715.cpp
whismanoid 4:d9b05924ad4c 4081 if (!MAX5715_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4082 #elif APPLICATION_MAX11131 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4083 extern bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11131.cpp
whismanoid 4:d9b05924ad4c 4084 if (!MAX11131_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4085 #elif APPLICATION_MAX5171 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4086 extern bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5171.cpp
whismanoid 4:d9b05924ad4c 4087 if (!MAX5171_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4088 #elif APPLICATION_MAX11410 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4089 extern bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp
whismanoid 4:d9b05924ad4c 4090 if (!MAX11410_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4091 #elif APPLICATION_MAX12345 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4092 extern bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX12345.cpp
whismanoid 4:d9b05924ad4c 4093 if (!MAX12345_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4094 #else
whismanoid 4:d9b05924ad4c 4095 if (0) // not_handled_by_device_submenu
whismanoid 4:d9b05924ad4c 4096 #endif
whismanoid 4:d9b05924ad4c 4097 {
whismanoid 4:d9b05924ad4c 4098 cmdLine.serial().printf("\r\n unknown command ");
whismanoid 4:d9b05924ad4c 4099 //~ cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 4100 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4101 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n",
whismanoid 4:d9b05924ad4c 4102 cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 4103 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4104 }
whismanoid 4:d9b05924ad4c 4105 } // switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 4106 //
whismanoid 4:d9b05924ad4c 4107 // print command prompt
whismanoid 8:dffee7509bfb 4108 // print_command_prompt();
whismanoid 8:dffee7509bfb 4109 cmdLine.serial().printf("\r\n> ");
whismanoid 4:d9b05924ad4c 4110 }
whismanoid 4:d9b05924ad4c 4111 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 4112
whismanoid 4:d9b05924ad4c 4113 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 4114 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 4115 void Datalogger_PrintHeader(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 4116 {
whismanoid 4:d9b05924ad4c 4117 // column header banner for csv data columns
whismanoid 4:d9b05924ad4c 4118 int field_index = 0;
whismanoid 4:d9b05924ad4c 4119 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4120 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 4121 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 4:d9b05924ad4c 4122 continue;
whismanoid 4:d9b05924ad4c 4123 }
whismanoid 4:d9b05924ad4c 4124 // comma between fields
whismanoid 4:d9b05924ad4c 4125 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 4126 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 4127 }
whismanoid 10:04022a61b527 4128 field_index++;
whismanoid 4:d9b05924ad4c 4129 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 4130 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 4131 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 4:d9b05924ad4c 4132 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 4:d9b05924ad4c 4133 cmdLine.serial().printf("\"AIN%d-%d_BIP", channel_index, channel_index+1);
whismanoid 4:d9b05924ad4c 4134 }
whismanoid 4:d9b05924ad4c 4135 else {
whismanoid 4:d9b05924ad4c 4136 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 4137 }
whismanoid 4:d9b05924ad4c 4138 #else // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 4139 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 4140 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 4141 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_LSB) {
whismanoid 4:d9b05924ad4c 4142 // _LSB column header suffix
whismanoid 13:184a08909405 4143 cmdLine.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 4144 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4145 cmdLine_DAPLINKserial.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 4146 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4147 }
whismanoid 10:04022a61b527 4148 else if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_Volt) {
whismanoid 4:d9b05924ad4c 4149 // _V column header suffix
whismanoid 13:184a08909405 4150 cmdLine.serial().printf("_V");
whismanoid 4:d9b05924ad4c 4151 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4152 cmdLine_DAPLINKserial.serial().printf("_V");
whismanoid 4:d9b05924ad4c 4153 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4154 }
whismanoid 13:184a08909405 4155 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4156 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4157 if (SPI_AIN_customChannelHeader_ch[channel_index] && SPI_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 4158 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 4159 cmdLine.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4160 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4161 cmdLine_DAPLINKserial.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4162 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4163 } else {
whismanoid 13:184a08909405 4164 // no custom channel name for this channel
whismanoid 13:184a08909405 4165 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 4166 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4167 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 4168 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4169 }
whismanoid 13:184a08909405 4170 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 4171 // close quote
whismanoid 13:184a08909405 4172 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 4173 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4174 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 4175 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4176 }
whismanoid 4:d9b05924ad4c 4177
whismanoid 4:d9b05924ad4c 4178 #if VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 4179 // PART_ID field: Device ID Validation
whismanoid 4:d9b05924ad4c 4180 cmdLine.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 4181 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4182 cmdLine_DAPLINKserial.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 4183 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4184 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 4185 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 4186 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 4187 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 4188 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 4189 continue;
whismanoid 9:45f98573eb6d 4190 }
whismanoid 4:d9b05924ad4c 4191 // comma between fields
whismanoid 4:d9b05924ad4c 4192 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 4193 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 4194 }
whismanoid 9:45f98573eb6d 4195 field_index++;
whismanoid 4:d9b05924ad4c 4196 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 4197 cmdLine.serial().printf("\"A%d", channel_index);
whismanoid 9:45f98573eb6d 4198 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 9:45f98573eb6d 4199 // _LSB column header suffix
whismanoid 13:184a08909405 4200 cmdLine.serial().printf("_LSB");
whismanoid 9:45f98573eb6d 4201 }
whismanoid 9:45f98573eb6d 4202 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 4203 // _V column header suffix
whismanoid 13:184a08909405 4204 cmdLine.serial().printf("_V");
whismanoid 9:45f98573eb6d 4205 }
whismanoid 13:184a08909405 4206 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4207 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4208 if (Platform_AIN_customChannelHeader_ch[channel_index] && Platform_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 4209 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 4210 cmdLine.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4211 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4212 cmdLine_DAPLINKserial.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4213 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4214 } else {
whismanoid 13:184a08909405 4215 // no custom channel name for this channel
whismanoid 13:184a08909405 4216 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 4217 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4218 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 4219 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4220 }
whismanoid 13:184a08909405 4221 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 4222 // close quote
whismanoid 13:184a08909405 4223 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 4224 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4225 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 4226 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4227 }
whismanoid 4:d9b05924ad4c 4228 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 4:d9b05924ad4c 4229 // end of column header line
whismanoid 4:d9b05924ad4c 4230 cmdLine.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 4231 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4232 cmdLine_DAPLINKserial.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 4233 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4234 } // void Datalogger_PrintHeader()
whismanoid 4:d9b05924ad4c 4235
whismanoid 5:aaf8b5f5fda1 4236 //--------------------------------------------------
whismanoid 5:aaf8b5f5fda1 4237 void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 4238 {
whismanoid 5:aaf8b5f5fda1 4239 // CODE GENERATOR: example code: has no member function ScanStandardExternalClock
whismanoid 5:aaf8b5f5fda1 4240 // CODE GENERATOR: example code: has no member function ReadAINcode
whismanoid 5:aaf8b5f5fda1 4241 // CODE GENERATOR: example code: member function Read_All_Voltages
whismanoid 5:aaf8b5f5fda1 4242 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4243 // Measure ADC channels in sequence from AIN0 to channelNumber_0_9.
whismanoid 5:aaf8b5f5fda1 4244 // @param[in] g_MAX11410_device.channelNumber_0_15: AIN Channel Number
whismanoid 5:aaf8b5f5fda1 4245 // @param[in] g_MAX11410_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 5:aaf8b5f5fda1 4246 // @param[in] g_MAX11410_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 10:04022a61b527 4247 //~ int channelId_0_9 = NUM_DUT_ANALOG_IN_CHANNELS-1+1;
whismanoid 5:aaf8b5f5fda1 4248 //g_MAX11410_device.channelNumber_0_15 = channelId_0_9;
whismanoid 5:aaf8b5f5fda1 4249 //g_MAX11410_device.PowerManagement_0_2 = 0;
whismanoid 5:aaf8b5f5fda1 4250 //g_MAX11410_device.chan_id_0_1 = 1;
whismanoid 5:aaf8b5f5fda1 4251 //----------------------------------------
whismanoid 5:aaf8b5f5fda1 4252 // scan AIN0..AIN9
whismanoid 5:aaf8b5f5fda1 4253 //
whismanoid 10:04022a61b527 4254 #if 1
whismanoid 10:04022a61b527 4255 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 4256 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 4257 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 4258 //
whismanoid 10:04022a61b527 4259 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4260 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc3); // GP1 = 0
whismanoid 10:04022a61b527 4261 //
whismanoid 10:04022a61b527 4262 int field_index = 0;
whismanoid 10:04022a61b527 4263 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 4264 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 10:04022a61b527 4265 continue;
whismanoid 10:04022a61b527 4266 }
whismanoid 10:04022a61b527 4267 field_index++;
whismanoid 10:04022a61b527 4268 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[channel_index];
whismanoid 10:04022a61b527 4269 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[channel_index];
whismanoid 10:04022a61b527 4270 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[channel_index];
whismanoid 10:04022a61b527 4271 //
whismanoid 10:04022a61b527 4272 // WIP SampleRate_of_FILTER_CONV_START() MAX11410EMC-FW slow ODR 10Sps #262
whismanoid 10:04022a61b527 4273 // adjust the MAX11410.loop_limit value if the sample rate is set to a value slower than 20sps
whismanoid 10:04022a61b527 4274 // SampleRate_of_FILTER_CONV_START(uint8_t FILTER_RegValue, uint8_t CONV_START_RegValue)
whismanoid 10:04022a61b527 4275 double SampleRate = g_MAX11410_device.SampleRate_of_FILTER_CONV_START(g_MAX11410_device.v_filter, MAX11410::MAX11410_CONV_TYPE_enum_t::CONV_TYPE_01_Continuous);
whismanoid 10:04022a61b527 4276 if (SampleRate < 20.0) {
whismanoid 10:04022a61b527 4277 g_MAX11410_device.loop_limit = 32767; // TODO: is this timeout long enough for the slow output data rates?
whismanoid 10:04022a61b527 4278 }
whismanoid 10:04022a61b527 4279 //
whismanoid 10:04022a61b527 4280 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4281 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc3); // GP0 = 0
whismanoid 10:04022a61b527 4282 //
whismanoid 10:04022a61b527 4283 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 4284 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 10:04022a61b527 4285 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 10:04022a61b527 4286 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 4287 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = (MAX11410::MAX11410_AINN_SEL_enum_t)(channel_index^1);
whismanoid 10:04022a61b527 4288 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 4289 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 4290 }
whismanoid 10:04022a61b527 4291 else {
whismanoid 10:04022a61b527 4292 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 4293 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = MAX11410::AINN_SEL_1010_GND;
whismanoid 10:04022a61b527 4294 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 4295 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 4296 }
whismanoid 10:04022a61b527 4297 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 4298 //
whismanoid 10:04022a61b527 4299 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4300 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc4); // GP0 = 1
whismanoid 10:04022a61b527 4301 //
whismanoid 10:04022a61b527 4302 }
whismanoid 10:04022a61b527 4303 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4304 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc4); // GP1 = 1
whismanoid 10:04022a61b527 4305 #else
whismanoid 5:aaf8b5f5fda1 4306 g_MAX11410_device.Read_All_Voltages();
whismanoid 10:04022a61b527 4307 #endif
whismanoid 10:04022a61b527 4308 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4309 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 4310 // mbed
whismanoid 5:aaf8b5f5fda1 4311 // Platform board uses simple analog inputs
whismanoid 5:aaf8b5f5fda1 4312 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 5:aaf8b5f5fda1 4313 Platform_LSB[0] = analogIn0.read();
whismanoid 5:aaf8b5f5fda1 4314 Platform_LSB[1] = analogIn1.read();
whismanoid 5:aaf8b5f5fda1 4315 Platform_LSB[2] = analogIn2.read();
whismanoid 5:aaf8b5f5fda1 4316 Platform_LSB[3] = analogIn3.read();
whismanoid 5:aaf8b5f5fda1 4317 Platform_LSB[4] = analogIn4.read();
whismanoid 5:aaf8b5f5fda1 4318 Platform_LSB[5] = analogIn5.read();
whismanoid 10:04022a61b527 4319 #endif
whismanoid 10:04022a61b527 4320 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 5:aaf8b5f5fda1 4321 Platform_Voltage[0] = analogIn0.read() * adc_full_scale_voltage[0];
whismanoid 5:aaf8b5f5fda1 4322 Platform_Voltage[1] = analogIn1.read() * adc_full_scale_voltage[1];
whismanoid 5:aaf8b5f5fda1 4323 Platform_Voltage[2] = analogIn2.read() * adc_full_scale_voltage[2];
whismanoid 5:aaf8b5f5fda1 4324 Platform_Voltage[3] = analogIn3.read() * adc_full_scale_voltage[3];
whismanoid 5:aaf8b5f5fda1 4325 Platform_Voltage[4] = analogIn4.read() * adc_full_scale_voltage[4];
whismanoid 5:aaf8b5f5fda1 4326 Platform_Voltage[5] = analogIn5.read() * adc_full_scale_voltage[5];
whismanoid 5:aaf8b5f5fda1 4327 #endif
whismanoid 5:aaf8b5f5fda1 4328 #endif // defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 4329
whismanoid 5:aaf8b5f5fda1 4330 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4331 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 4332 const uint32_t part_id_expect = 0x000F02;
whismanoid 5:aaf8b5f5fda1 4333 uint32_t part_id_readback;
whismanoid 5:aaf8b5f5fda1 4334 g_MAX11410_device.RegRead(MAX11410::CMD_r001_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xddd_PART_ID, &part_id_readback);
whismanoid 5:aaf8b5f5fda1 4335 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4336 } // void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 4337
whismanoid 17:9397ea3ea7e9 4338 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4339 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 4340 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 4341 void Datalogger_RunActionTable()
whismanoid 17:9397ea3ea7e9 4342 {
whismanoid 17:9397ea3ea7e9 4343 if (Datalogger_action_table_enabled == false) {
whismanoid 17:9397ea3ea7e9 4344 return;
whismanoid 17:9397ea3ea7e9 4345 }
whismanoid 17:9397ea3ea7e9 4346 // TODO: verbose Datalogger_RunActionTable() emit a csv column ,"Action"
whismanoid 17:9397ea3ea7e9 4347 // TODO: assert Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX
whismanoid 17:9397ea3ea7e9 4348 // for Datalogger_action_table[0..Datalogger_action_table_row_count]
whismanoid 17:9397ea3ea7e9 4349 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 4350 {
whismanoid 17:9397ea3ea7e9 4351 // skip if Datalogger_action_table[i].action == action_noop
whismanoid 17:9397ea3ea7e9 4352 if (Datalogger_action_table[i].action == action_noop) {
whismanoid 17:9397ea3ea7e9 4353 continue;
whismanoid 17:9397ea3ea7e9 4354 }
whismanoid 17:9397ea3ea7e9 4355 // TODO: test Datalogger_action_table[i].condition "if="
whismanoid 17:9397ea3ea7e9 4356 // TODO: Could the .condition field also distinguish Platform ADC from SPI ADC?
whismanoid 17:9397ea3ea7e9 4357 // That way we keep both sets of ADC channels in separate lists
whismanoid 17:9397ea3ea7e9 4358 // if=0 -- always
whismanoid 17:9397ea3ea7e9 4359 // if=1,2,3,4,5,6 -- Platform_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 4360 // if=7,8,9,10,11,12 -- SPI_AIN_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 4361 // also, are we comparing code or voltage?
whismanoid 17:9397ea3ea7e9 4362 // TODO: selected Datalogger_action_table[i].condition_channel
whismanoid 17:9397ea3ea7e9 4363 // Datalogger could have both platform ADC and external SPI ADC channels
whismanoid 17:9397ea3ea7e9 4364 // if SPI_ADC_DeviceName
whismanoid 17:9397ea3ea7e9 4365 // NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 4366 // SPI_AIN_Enable_ch[]
whismanoid 17:9397ea3ea7e9 4367 // SPI_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 4368 // SPI_AIN_Voltage[]
whismanoid 17:9397ea3ea7e9 4369 // if LOG_PLATFORM_AIN
whismanoid 17:9397ea3ea7e9 4370 // NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 4371 // analogInPin_fullScaleVoltage[]
whismanoid 17:9397ea3ea7e9 4372 // Platform_Enable_ch[]
whismanoid 17:9397ea3ea7e9 4373 // Platform_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 4374 // Platform_Voltage[]
whismanoid 17:9397ea3ea7e9 4375 // TODO: selected Datalogger_action_table[i].condition_threshold
whismanoid 17:9397ea3ea7e9 4376 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 4377 {
whismanoid 17:9397ea3ea7e9 4378 case condition_always:
whismanoid 17:9397ea3ea7e9 4379 //~ cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 4380 break;
whismanoid 17:9397ea3ea7e9 4381 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 4382 //~ cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4383 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4384 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4385 continue;
whismanoid 17:9397ea3ea7e9 4386 }
whismanoid 17:9397ea3ea7e9 4387 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4388 break;
whismanoid 17:9397ea3ea7e9 4389 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 4390 //~ cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4391 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4392 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4393 continue;
whismanoid 17:9397ea3ea7e9 4394 }
whismanoid 17:9397ea3ea7e9 4395 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4396 break;
whismanoid 17:9397ea3ea7e9 4397 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 4398 //~ cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4399 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4400 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4401 continue;
whismanoid 17:9397ea3ea7e9 4402 }
whismanoid 17:9397ea3ea7e9 4403 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4404 break;
whismanoid 17:9397ea3ea7e9 4405 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 4406 //~ cmdLine.serial().printf(" if A%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4407 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4408 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4409 continue;
whismanoid 17:9397ea3ea7e9 4410 }
whismanoid 17:9397ea3ea7e9 4411 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4412 break;
whismanoid 17:9397ea3ea7e9 4413 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 4414 //~ cmdLine.serial().printf(" if A%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4415 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4416 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4417 continue;
whismanoid 17:9397ea3ea7e9 4418 }
whismanoid 17:9397ea3ea7e9 4419 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4420 break;
whismanoid 17:9397ea3ea7e9 4421 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 4422 //~ cmdLine.serial().printf(" if A%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4423 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4424 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4425 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4426 continue;
whismanoid 17:9397ea3ea7e9 4427 }
whismanoid 17:9397ea3ea7e9 4428 break;
whismanoid 17:9397ea3ea7e9 4429 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 4430 //~ cmdLine.serial().printf(" if AIN%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4431 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4432 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4433 continue;
whismanoid 17:9397ea3ea7e9 4434 }
whismanoid 17:9397ea3ea7e9 4435 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4436 break;
whismanoid 17:9397ea3ea7e9 4437 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 4438 //~ cmdLine.serial().printf(" if AIN%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4439 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4440 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4441 continue;
whismanoid 17:9397ea3ea7e9 4442 }
whismanoid 17:9397ea3ea7e9 4443 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4444 break;
whismanoid 17:9397ea3ea7e9 4445 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 4446 //~ cmdLine.serial().printf(" if AIN%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4447 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4448 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4449 continue;
whismanoid 17:9397ea3ea7e9 4450 }
whismanoid 17:9397ea3ea7e9 4451 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4452 break;
whismanoid 17:9397ea3ea7e9 4453 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 4454 //~ cmdLine.serial().printf(" if AIN%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4455 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4456 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4457 continue;
whismanoid 17:9397ea3ea7e9 4458 }
whismanoid 17:9397ea3ea7e9 4459 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4460 break;
whismanoid 17:9397ea3ea7e9 4461 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 4462 //~ cmdLine.serial().printf(" if AIN%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4463 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4464 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4465 continue;
whismanoid 17:9397ea3ea7e9 4466 }
whismanoid 17:9397ea3ea7e9 4467 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4468 break;
whismanoid 17:9397ea3ea7e9 4469 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 4470 //~ cmdLine.serial().printf(" if AIN%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4471 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4472 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4473 continue;
whismanoid 17:9397ea3ea7e9 4474 }
whismanoid 17:9397ea3ea7e9 4475 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4476 break;
whismanoid 17:9397ea3ea7e9 4477 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 4478 // selected Datalogger_action_table[i].digitalOutPin
whismanoid 17:9397ea3ea7e9 4479 // perform selected Datalogger_action_table[i].action
whismanoid 17:9397ea3ea7e9 4480 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 4481 {
whismanoid 17:9397ea3ea7e9 4482 case action_noop:
whismanoid 17:9397ea3ea7e9 4483 //~ cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 4484 break;
whismanoid 17:9397ea3ea7e9 4485 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 4486 {
whismanoid 17:9397ea3ea7e9 4487 //~ cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 4488 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 4489 // perform action digitalOutLow
whismanoid 17:9397ea3ea7e9 4490 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 4491 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 4492 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4493 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4494 #else
whismanoid 17:9397ea3ea7e9 4495 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 4496 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 4497 digitalInOutPin.write(0);
whismanoid 17:9397ea3ea7e9 4498 #endif
whismanoid 17:9397ea3ea7e9 4499 }
whismanoid 17:9397ea3ea7e9 4500 break;
whismanoid 17:9397ea3ea7e9 4501 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 4502 {
whismanoid 17:9397ea3ea7e9 4503 //~ cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 4504 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 4505 // perform action digitalOutHigh
whismanoid 17:9397ea3ea7e9 4506 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 4507 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 4508 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4509 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4510 #else
whismanoid 17:9397ea3ea7e9 4511 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 4512 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 4513 digitalInOutPin.write(1);
whismanoid 17:9397ea3ea7e9 4514 #endif
whismanoid 17:9397ea3ea7e9 4515 }
whismanoid 17:9397ea3ea7e9 4516 break;
whismanoid 17:9397ea3ea7e9 4517 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 4518 //~ cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 4519 // perform action trigger_Halt
whismanoid 17:9397ea3ea7e9 4520 Datalogger_Trigger = trigger_Halt;
whismanoid 17:9397ea3ea7e9 4521 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4522 break;
whismanoid 17:9397ea3ea7e9 4523 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 4524 //~ cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 4525 // perform action trigger_FreeRun
whismanoid 17:9397ea3ea7e9 4526 Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 4527 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4528 break;
whismanoid 17:9397ea3ea7e9 4529 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 4530 //~ cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 4531 //~ // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 4532 //~ cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 4533 // perform action trigger_Timer
whismanoid 17:9397ea3ea7e9 4534 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 4535 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4536 break;
whismanoid 17:9397ea3ea7e9 4537 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 4538 //~ cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 4539 //~ // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 4540 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 4541 // TODO: perform action action_trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 4542 Datalogger_Trigger = trigger_PlatformDigitalInput;
whismanoid 17:9397ea3ea7e9 4543 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4544 break;
whismanoid 17:9397ea3ea7e9 4545 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 4546 //~ cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 4547 //~ // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 4548 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 4549 // TODO: perform action action_trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 4550 Datalogger_Trigger = trigger_SPIDeviceRegRead;
whismanoid 17:9397ea3ea7e9 4551 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4552 break;
whismanoid 17:9397ea3ea7e9 4553 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 4554 // consider next row of action table
whismanoid 17:9397ea3ea7e9 4555 } // for ...Datalogger_action_table_row_count
whismanoid 17:9397ea3ea7e9 4556 }
whismanoid 17:9397ea3ea7e9 4557 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4558
whismanoid 5:aaf8b5f5fda1 4559 //--------------------------------------------------
whismanoid 8:dffee7509bfb 4560 void Datalogger_PrintRow(CmdLine& cmdLine)
whismanoid 5:aaf8b5f5fda1 4561 {
whismanoid 5:aaf8b5f5fda1 4562 int field_index = 0;
whismanoid 5:aaf8b5f5fda1 4563 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4564 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 4565 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 5:aaf8b5f5fda1 4566 continue;
whismanoid 5:aaf8b5f5fda1 4567 }
whismanoid 5:aaf8b5f5fda1 4568 // comma between fields
whismanoid 5:aaf8b5f5fda1 4569 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 4570 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 4571 }
whismanoid 10:04022a61b527 4572 field_index++;
whismanoid 10:04022a61b527 4573 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 10:04022a61b527 4574 cmdLine.serial().printf("%d", g_MAX11410_device.AINcode[channel_index]);
whismanoid 10:04022a61b527 4575 }
whismanoid 10:04022a61b527 4576 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 10:04022a61b527 4577 // TODO: report Voltage instead of LSB
whismanoid 10:04022a61b527 4578 // Serial.print(SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 4579 static char strOutLineBuffer[16];
whismanoid 10:04022a61b527 4580 cmdLine.serial().printf("%6.6f", SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 4581 }
whismanoid 5:aaf8b5f5fda1 4582 }
whismanoid 5:aaf8b5f5fda1 4583 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4584 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 4585 if (part_id_readback != part_id_expect) {
whismanoid 5:aaf8b5f5fda1 4586 cmdLine.serial().printf(",\"FAIL\"");
whismanoid 9:45f98573eb6d 4587 need_reinit = true;
whismanoid 5:aaf8b5f5fda1 4588 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4589 g_MAX11410_device.Init();
whismanoid 5:aaf8b5f5fda1 4590 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 5:aaf8b5f5fda1 4591 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 5:aaf8b5f5fda1 4592 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 5:aaf8b5f5fda1 4593 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4594 }
whismanoid 5:aaf8b5f5fda1 4595 else {
whismanoid 5:aaf8b5f5fda1 4596 cmdLine.serial().printf(",\"OK\"");
whismanoid 5:aaf8b5f5fda1 4597 }
whismanoid 5:aaf8b5f5fda1 4598 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4599 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4600 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 4601 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 4602 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 4603 continue;
whismanoid 9:45f98573eb6d 4604 }
whismanoid 5:aaf8b5f5fda1 4605 // comma between fields
whismanoid 5:aaf8b5f5fda1 4606 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 4607 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 4608 }
whismanoid 9:45f98573eb6d 4609 field_index++;
whismanoid 9:45f98573eb6d 4610 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 5:aaf8b5f5fda1 4611 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4612 cmdLine.serial().printf("%u", Platform_LSB[channel_index]);
whismanoid 9:45f98573eb6d 4613 #endif
whismanoid 9:45f98573eb6d 4614 }
whismanoid 9:45f98573eb6d 4615 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 4616 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 11:2b8adc78618a 4617 // Datalog Volts omit V suffix from numbers #275
whismanoid 11:2b8adc78618a 4618 // because Excel graphs can't handle numbers that have a suffix.
whismanoid 11:2b8adc78618a 4619 cmdLine.serial().printf("%6.6f", Platform_Voltage[channel_index]);
whismanoid 9:45f98573eb6d 4620 #endif
whismanoid 9:45f98573eb6d 4621 }
whismanoid 5:aaf8b5f5fda1 4622 }
whismanoid 5:aaf8b5f5fda1 4623 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 4624 if (need_reinit) {
whismanoid 9:45f98573eb6d 4625 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4626 if (g_MAX11410_device.Init() == 0) {
whismanoid 9:45f98573eb6d 4627 //~ cmdLine.serial().printf(",\"Init() failed\"");
whismanoid 9:45f98573eb6d 4628 } else {
whismanoid 9:45f98573eb6d 4629 //~ cmdLine.serial().printf(",\"Init() success\"");
whismanoid 9:45f98573eb6d 4630 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 4631 // in Datalogger_PrintRow(), when part_id test fails,
whismanoid 9:45f98573eb6d 4632 // apply list of custom register writes after re-init
whismanoid 9:45f98573eb6d 4633 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 4634 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 9:45f98573eb6d 4635 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 9:45f98573eb6d 4636 uint32_t regData = custom_reg_init_data[index];
whismanoid 9:45f98573eb6d 4637 cmdLine.serial().printf("*%s=0x%06.6x", g_MAX11410_device.RegName(regAddress), regData);
whismanoid 9:45f98573eb6d 4638 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 9:45f98573eb6d 4639 }
whismanoid 9:45f98573eb6d 4640 #endif // USE_CUSTOM_REG_INIT
whismanoid 9:45f98573eb6d 4641 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 9:45f98573eb6d 4642 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 9:45f98573eb6d 4643 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 9:45f98573eb6d 4644 need_reinit = false;
whismanoid 9:45f98573eb6d 4645 }
whismanoid 9:45f98573eb6d 4646 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4647 need_reinit = false;
whismanoid 9:45f98573eb6d 4648 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4649 }
whismanoid 5:aaf8b5f5fda1 4650 cmdLine.serial().printf("\r\n");
whismanoid 9:45f98573eb6d 4651 if (need_reinit) {
whismanoid 9:45f98573eb6d 4652 //~ delay(500); // platform_delay_ms 500ms timing delay function
whismanoid 9:45f98573eb6d 4653 }
whismanoid 5:aaf8b5f5fda1 4654 } // void Datalogger_PrintRow()
whismanoid 5:aaf8b5f5fda1 4655
whismanoid 0:cb44e2e9ec4c 4656 // example code main function
whismanoid 0:cb44e2e9ec4c 4657 int main()
whismanoid 0:cb44e2e9ec4c 4658 {
whismanoid 0:cb44e2e9ec4c 4659 // setup: put your setup code here, to run once
whismanoid 4:d9b05924ad4c 4660 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 4661 // Configure serial ports
whismanoid 4:d9b05924ad4c 4662 cmdLine.clear();
whismanoid 4:d9b05924ad4c 4663 //~ cmdLine.serial().printf("\r\n cmdLine.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 4664 cmdLine.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 4665 //~ cmdLine.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 4:d9b05924ad4c 4666 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 4:d9b05924ad4c 4667 //~ cmdLine.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 4668 //~ cmdLine.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 4669 //~ cmdLine.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 4670 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4671 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4672 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 4673 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 4674 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 4675 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 4676 # else
whismanoid 10:04022a61b527 4677 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 4678 DAPLINKserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 4679 # endif
whismanoid 10:04022a61b527 4680 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 4681 cmdLine_DAPLINKserial.clear();
whismanoid 4:d9b05924ad4c 4682 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 4683 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 4684 //~ cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 4685 //~ cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 4686 //~ cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 4687 # endif
whismanoid 6:f6d16658342b 4688 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4689 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 10:04022a61b527 4690 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4691 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 4692 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 4693 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 4694 AUXserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 4695 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 6:f6d16658342b 4696 cmdLine_AUXserial.clear();
whismanoid 6:f6d16658342b 4697 //~ cmdLine_AUXserial.serial().printf("\r\n cmdLine_AUXserial.serial().printf test\r\n");
whismanoid 6:f6d16658342b 4698 cmdLine_AUXserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 6:f6d16658342b 4699 //~ cmdLine_AUXserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 6:f6d16658342b 4700 //~ cmdLine_AUXserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 6:f6d16658342b 4701 //~ cmdLine_AUXserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 6:f6d16658342b 4702 # endif // HAS_AUX_SERIAL
whismanoid 4:d9b05924ad4c 4703 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 0:cb44e2e9ec4c 4704
whismanoid 0:cb44e2e9ec4c 4705 // example code: serial port banner message
whismanoid 0:cb44e2e9ec4c 4706 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 4707 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4708 cmdLine.serial().printf("\r\nDataLogger_MAX11410\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 4709 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4710 cmdLine.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 4711 # if HAS_DAPLINK_SERIAL
whismanoid 3:9055e17e181a 4712 cmdLine_DAPLINKserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 4713 # endif // HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 4714 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4715 cmdLine_AUXserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 6:f6d16658342b 4716 # endif // HAS_AUX_SERIAL
whismanoid 3:9055e17e181a 4717 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4718
whismanoid 1:747f1602abfc 4719 // CODE GENERATOR: get spi properties from device
whismanoid 3:9055e17e181a 4720 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4721 if (g_SPI_SCLK_Hz > g_MAX11410_device.get_spi_frequency())
whismanoid 3:9055e17e181a 4722 { // Device limits SPI SCLK frequency
whismanoid 3:9055e17e181a 4723 g_SPI_SCLK_Hz = g_MAX11410_device.get_spi_frequency();
whismanoid 3:9055e17e181a 4724 cmdLine.serial().printf("\r\nMAX11410 limits SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 4725
whismanoid 3:9055e17e181a 4726 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 4727 }
whismanoid 3:9055e17e181a 4728 if (g_MAX11410_device.get_spi_frequency() > g_SPI_SCLK_Hz)
whismanoid 3:9055e17e181a 4729 { // Platform limits SPI SCLK frequency
whismanoid 3:9055e17e181a 4730 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 4731 cmdLine.serial().printf("\r\nPlatform limits MAX11410 SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 4732
whismanoid 3:9055e17e181a 4733 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 4734 }
whismanoid 0:cb44e2e9ec4c 4735 // g_SPI_dataMode = g_MAX11410_device.get_spi_dataMode();
whismanoid 3:9055e17e181a 4736 while (g_MAX11410_device.Init() == 0)
whismanoid 3:9055e17e181a 4737 {
whismanoid 3:9055e17e181a 4738 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 4739 cmdLine.serial().printf("\r\nMAX11410 Init failed; retry...\r\n");
whismanoid 3:9055e17e181a 4740
whismanoid 3:9055e17e181a 4741 }
whismanoid 0:cb44e2e9ec4c 4742
whismanoid 0:cb44e2e9ec4c 4743 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 3:9055e17e181a 4744 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4745 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 3:9055e17e181a 4746 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 3:9055e17e181a 4747 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 3:9055e17e181a 4748 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4749 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 3:9055e17e181a 4750 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4751 // CODE GENERATOR: example code: has no member function REF
whismanoid 0:cb44e2e9ec4c 4752 // CODE GENERATOR: example code for ADC: repeat-forever convert and print conversion result, one record per line
whismanoid 0:cb44e2e9ec4c 4753 // CODE GENERATOR: ResolutionBits = 24
whismanoid 0:cb44e2e9ec4c 4754 // CODE GENERATOR: FScode = 0xffffff
whismanoid 0:cb44e2e9ec4c 4755 // CODE GENERATOR: NumChannels = 10
whismanoid 0:cb44e2e9ec4c 4756 // CODE GENERATOR: banner before DataLogHelloCppCodeList while(1)
whismanoid 3:9055e17e181a 4757 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4758 cmdLine.serial().printf("v_filter = 0x%2.2x\r\n", g_MAX11410_device.v_filter);
whismanoid 0:cb44e2e9ec4c 4759
whismanoid 3:9055e17e181a 4760 cmdLine.serial().printf("v_pga = 0x%2.2x\r\n", g_MAX11410_device.v_pga);
whismanoid 0:cb44e2e9ec4c 4761
whismanoid 3:9055e17e181a 4762 cmdLine.serial().printf("v_ctrl = 0x%2.2x\r\n", g_MAX11410_device.v_ctrl);
whismanoid 3:9055e17e181a 4763
whismanoid 3:9055e17e181a 4764 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4765
whismanoid 3:9055e17e181a 4766 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 4767 Datalogger_Need_PrintHeader = true;
whismanoid 10:04022a61b527 4768
whismanoid 12:2dfc1f2009e0 4769 #if USE_LEDS
whismanoid 12:2dfc1f2009e0 4770 #if defined(TARGET_MAX32630)
whismanoid 12:2dfc1f2009e0 4771 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 4772 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4773 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 4774 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4775 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 4776 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4777 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 4778 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4779 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 4780 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4781 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 4782 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4783 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 4784 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4785 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 4786 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 19:5ff09c8e9daf 4787 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 12:2dfc1f2009e0 4788 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 4789 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4790 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 4791 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4792 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 4793 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4794 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 4795 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4796 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 4797 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4798 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 4799 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4800 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 4801 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4802 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 4803 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4804 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 12:2dfc1f2009e0 4805 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 4806 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4807 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4808 led4 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4809 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4810 //led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 4811 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 4812 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4813 led1 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4814 //led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 4815 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 4816 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4817 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4818 //led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 4819 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 4820 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4821 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4822 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 4823 //
whismanoid 12:2dfc1f2009e0 4824 #endif // target definition
whismanoid 12:2dfc1f2009e0 4825 #endif
whismanoid 12:2dfc1f2009e0 4826
whismanoid 12:2dfc1f2009e0 4827 if (led1.is_connected()) {
whismanoid 12:2dfc1f2009e0 4828 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 4829 }
whismanoid 12:2dfc1f2009e0 4830 if (led2.is_connected()) {
whismanoid 12:2dfc1f2009e0 4831 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 4832 }
whismanoid 12:2dfc1f2009e0 4833 if (led3.is_connected()) {
whismanoid 12:2dfc1f2009e0 4834 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 4835 }
whismanoid 12:2dfc1f2009e0 4836
whismanoid 4:d9b05924ad4c 4837 while(1) { // this code repeats forever
whismanoid 4:d9b05924ad4c 4838 // this code repeats forever
whismanoid 4:d9b05924ad4c 4839
whismanoid 4:d9b05924ad4c 4840 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 4841 // TODO support CmdLine command menus (like on Serial_Tester); help and usual boilerplate
whismanoid 10:04022a61b527 4842 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4843 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 4844 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 4845 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4846 // Accept commands from Auxiliary serial port
whismanoid 6:f6d16658342b 4847 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4848 if (AUXserial.readable()) {
whismanoid 6:f6d16658342b 4849 cmdLine_AUXserial.append(AUXserial.getc());
whismanoid 6:f6d16658342b 4850 }
whismanoid 6:f6d16658342b 4851 # endif // HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4852 # if HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 4853 if (DAPLINKserial.readable()) {
whismanoid 6:f6d16658342b 4854 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 6:f6d16658342b 4855 }
whismanoid 6:f6d16658342b 4856 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4857 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 4858 if (serial.readable()) {
whismanoid 4:d9b05924ad4c 4859 int c = serial.getc(); // instead of getc() or fgetc()
whismanoid 4:d9b05924ad4c 4860 cmdLine.append(c);
whismanoid 4:d9b05924ad4c 4861 // cmdLine.onEOLcommandParser handler implements menus
whismanoid 4:d9b05924ad4c 4862 } // if (Serial.available())
whismanoid 4:d9b05924ad4c 4863 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 4864
whismanoid 4:d9b05924ad4c 4865 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 4866 // TODO Datalog trigger
whismanoid 4:d9b05924ad4c 4867 if (Datalogger_Trigger == trigger_Halt) {
whismanoid 4:d9b05924ad4c 4868 // halt the datalogger; continue accepting commands
whismanoid 3:9055e17e181a 4869 continue;
whismanoid 3:9055e17e181a 4870 }
whismanoid 4:d9b05924ad4c 4871 if (Datalogger_Trigger == trigger_FreeRun) {
whismanoid 4:d9b05924ad4c 4872 // free run as fast as possible
whismanoid 3:9055e17e181a 4873 }
whismanoid 4:d9b05924ad4c 4874 if (Datalogger_Trigger == trigger_Timer) {
whismanoid 4:d9b05924ad4c 4875 // timer (configure interval)
whismanoid 17:9397ea3ea7e9 4876 // TODO: if Datalogger_Trigger == trigger_Timer sleep(g_timer_interval_msec)
whismanoid 17:9397ea3ea7e9 4877 // sleep(g_timer_interval_msec); // error: too many arguments to function 'void sleep()'
whismanoid 17:9397ea3ea7e9 4878 wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 17:9397ea3ea7e9 4879 if (g_timer_interval_counter > 0) {
whismanoid 17:9397ea3ea7e9 4880 g_timer_interval_counter--;
whismanoid 17:9397ea3ea7e9 4881 continue;
whismanoid 17:9397ea3ea7e9 4882 }
whismanoid 17:9397ea3ea7e9 4883 // if time interval not yet reached, continue (continue accepting commands)
whismanoid 17:9397ea3ea7e9 4884 g_timer_interval_counter = g_timer_interval_count;
whismanoid 3:9055e17e181a 4885 }
whismanoid 4:d9b05924ad4c 4886 if (Datalogger_Trigger == trigger_PlatformDigitalInput) {
whismanoid 4:d9b05924ad4c 4887 // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 4888 // TODO: read selected input pin, test value
whismanoid 17:9397ea3ea7e9 4889 // TODO: if no match, continue (continue accepting commands)
whismanoid 3:9055e17e181a 4890 }
whismanoid 4:d9b05924ad4c 4891 if (Datalogger_Trigger == trigger_SPIDeviceRegRead) {
whismanoid 4:d9b05924ad4c 4892 // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 4893 // TODO: SPI transfer regAddr
whismanoid 17:9397ea3ea7e9 4894 // TODO: apply dataMask, compare with testValue
whismanoid 17:9397ea3ea7e9 4895 // TODO: if no match, continue (continue accepting commands)
whismanoid 4:d9b05924ad4c 4896 }
whismanoid 4:d9b05924ad4c 4897 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 0:cb44e2e9ec4c 4898
whismanoid 8:dffee7509bfb 4899 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 4900 if (Datalogger_Need_PrintHeader) {
whismanoid 8:dffee7509bfb 4901 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 4902 Datalogger_PrintHeader(cmdLine);
whismanoid 8:dffee7509bfb 4903 }
whismanoid 8:dffee7509bfb 4904 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4905 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 4906 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 4907 }
whismanoid 8:dffee7509bfb 4908 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4909 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4910 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 4911 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 4912 }
whismanoid 8:dffee7509bfb 4913 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4914 Datalogger_Need_PrintHeader = false;
whismanoid 8:dffee7509bfb 4915 }
whismanoid 5:aaf8b5f5fda1 4916 Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 4917 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4918 // Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 4919 Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 4920 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 0:cb44e2e9ec4c 4921 // wait(3.0);
whismanoid 0:cb44e2e9ec4c 4922 // CODE GENERATOR: print conversion result
whismanoid 0:cb44e2e9ec4c 4923 // Use Arduino Serial Plotter to view output: Tools | Serial Plotter
whismanoid 8:dffee7509bfb 4924 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 4925 Datalogger_PrintRow(cmdLine);
whismanoid 8:dffee7509bfb 4926 }
whismanoid 8:dffee7509bfb 4927 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4928 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 4929 Datalogger_PrintRow(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 4930 }
whismanoid 8:dffee7509bfb 4931 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4932 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4933 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 4934 Datalogger_PrintRow(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 4935 }
whismanoid 8:dffee7509bfb 4936 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:cb44e2e9ec4c 4937
whismanoid 0:cb44e2e9ec4c 4938 } // this code repeats forever
whismanoid 0:cb44e2e9ec4c 4939 }
whismanoid 0:cb44e2e9ec4c 4940 //---------- CODE GENERATOR: end DataLogHelloCppCodeList