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:
Thu Apr 22 22:58:57 2021 -0700
Revision:
19:5ff09c8e9daf
Parent:
18:1235c17b451e
Child:
20:78ef670955d4
Support custom target MAX40108DEMOP2U9 based on MAX32625PICO but MAX32625_NO_BOOT

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 cmdLine.serial().printf("\r\n >baud=%d -- configure aux TX/RX port", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 2562 #if 0
whismanoid 10:04022a61b527 2563 cmdLine.serial().printf("\r\n >tx_wait_echo=%d -- configure TX wait for each character echo", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 2564 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 2565 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 2566 #endif
whismanoid 10:04022a61b527 2567 cmdLine.serial().printf("\r\n >message_ms=%d -- maximum RX message total response time", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 2568 cmdLine.serial().printf("\r\n >rx_idle_ms=%d -- maximum RX message idle time between characters", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 2569 cmdLine.serial().printf("\r\n >rx_max_count=%d -- maximum RX message total length", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 2570 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 10:04022a61b527 2571 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2572 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2573 //
whismanoid 4:d9b05924ad4c 2574 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 2575 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 2576 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 2577 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 9:45f98573eb6d 2578 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 9:45f98573eb6d 2579 //
whismanoid 17:9397ea3ea7e9 2580 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 4:d9b05924ad4c 2581 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 9:45f98573eb6d 2582 //
whismanoid 17:9397ea3ea7e9 2583 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 2584 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 17:9397ea3ea7e9 2585 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 2586 //
whismanoid 9:45f98573eb6d 2587 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 2588 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 2589 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 2590 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 9:45f98573eb6d 2591 //
whismanoid 17:9397ea3ea7e9 2592 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 9:45f98573eb6d 2593 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 2594 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2595 cmdLine.serial().printf("\r\n L$regaddr@dataMask=testValue -- Datalog when SPI read of address matches mask"); // trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2596 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2597 //
whismanoid 17:9397ea3ea7e9 2598 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2599 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table");
whismanoid 17:9397ea3ea7e9 2600 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 9:45f98573eb6d 2601 //
whismanoid 9:45f98573eb6d 2602 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 2603 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 2604 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 2605 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 2606 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 9:45f98573eb6d 2607 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 9:45f98573eb6d 2608 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 9:45f98573eb6d 2609 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 9:45f98573eb6d 2610 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 9:45f98573eb6d 2611 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 9:45f98573eb6d 2612 //
whismanoid 9:45f98573eb6d 2613 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 2614 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 9:45f98573eb6d 2615 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 9:45f98573eb6d 2616 //
whismanoid 9:45f98573eb6d 2617 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 2618 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 2619 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 9:45f98573eb6d 2620 //
whismanoid 9:45f98573eb6d 2621 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 2622 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 9:45f98573eb6d 2623 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 2624 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 9:45f98573eb6d 2625 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 2626 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 9:45f98573eb6d 2627 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 2628 //
whismanoid 9:45f98573eb6d 2629 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 2630 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 9:45f98573eb6d 2631 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 9:45f98573eb6d 2632 //
whismanoid 9:45f98573eb6d 2633 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 2634 //
whismanoid 9:45f98573eb6d 2635 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 2636 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 2637 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 2638 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 2639 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 9:45f98573eb6d 2640 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2641 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 9:45f98573eb6d 2642 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2643 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2644 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 9:45f98573eb6d 2645 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2646 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 9:45f98573eb6d 2647 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2648 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 9:45f98573eb6d 2649 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 2650 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2651 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 9:45f98573eb6d 2652 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 2653 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 4:d9b05924ad4c 2654 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 8:dffee7509bfb 2655 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 2656 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 2657 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2658 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 2659 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 2660 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 2661 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 8:dffee7509bfb 2662 //
whismanoid 4:d9b05924ad4c 2663 //cmdLine.serial().print(F("\r\n ! -- Initial Configuration"));
whismanoid 4:d9b05924ad4c 2664 //
whismanoid 4:d9b05924ad4c 2665 // % standardize diagnostic commands
whismanoid 4:d9b05924ad4c 2666 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 2667 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 2668 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 2669 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 2670 // %Ppin df=xx -- pwm output
whismanoid 4:d9b05924ad4c 2671 // %Wpin -- measure high pulsewidth input in usec
whismanoid 4:d9b05924ad4c 2672 // %wpin -- measure low pulsewidth input in usec
whismanoid 4:d9b05924ad4c 2673 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 2674 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 2675 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 2676 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 4:d9b05924ad4c 2677 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 2678 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2679 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 2680 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 2681 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 2682 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 2683 // A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 2684 //
whismanoid 4:d9b05924ad4c 2685 #if HAS_digitalInOuts
whismanoid 4:d9b05924ad4c 2686 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 2687 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 2688 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 2689 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 4:d9b05924ad4c 2690 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 2691 cmdLine.serial().printf("} -- High Output");
whismanoid 4:d9b05924ad4c 2692 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 4:d9b05924ad4c 2693 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 2694 cmdLine.serial().printf("} -- Low Output");
whismanoid 4:d9b05924ad4c 2695 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 4:d9b05924ad4c 2696 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 2697 cmdLine.serial().printf("} -- Input");
whismanoid 4:d9b05924ad4c 2698 #endif
whismanoid 4:d9b05924ad4c 2699
whismanoid 4:d9b05924ad4c 2700 #if HAS_analogIns
whismanoid 4:d9b05924ad4c 2701 // Menu A) analogRead A0..7
whismanoid 4:d9b05924ad4c 2702 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 2703 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 4:d9b05924ad4c 2704 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 4:d9b05924ad4c 2705 #endif
whismanoid 4:d9b05924ad4c 2706
whismanoid 4:d9b05924ad4c 2707 #if HAS_SPI2_MAX541
whismanoid 4:d9b05924ad4c 2708 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 4:d9b05924ad4c 2709 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 4:d9b05924ad4c 2710 #endif
whismanoid 4:d9b05924ad4c 2711
whismanoid 4:d9b05924ad4c 2712 #if HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2713 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2714 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2715 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 4:d9b05924ad4c 2716 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 2717 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 2718 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 2719 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 4:d9b05924ad4c 2720 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 2721 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2722 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 4:d9b05924ad4c 2723 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 4:d9b05924ad4c 2724 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 4:d9b05924ad4c 2725 (g_I2C_SCL_Hz / 1000.));
whismanoid 4:d9b05924ad4c 2726 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 4:d9b05924ad4c 2727 g_I2C_deviceAddress7);
whismanoid 4:d9b05924ad4c 2728 //
whismanoid 4:d9b05924ad4c 2729 #if SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2730 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2731 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 4:d9b05924ad4c 2732 // test low-level I2C i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 2733 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2734 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 4:d9b05924ad4c 2735 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 4:d9b05924ad4c 2736 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 4:d9b05924ad4c 2737 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 2738
whismanoid 4:d9b05924ad4c 2739 #if HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 2740 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 2741 // SPI test command S (mosiData)+
whismanoid 4:d9b05924ad4c 2742 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 2743 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 2744 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 2745 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 2746 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 4:d9b05924ad4c 2747 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 4:d9b05924ad4c 2748 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 4:d9b05924ad4c 2749 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 4:d9b05924ad4c 2750 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 4:d9b05924ad4c 2751 // mode | POL PHA
whismanoid 4:d9b05924ad4c 2752 // -----+--------
whismanoid 4:d9b05924ad4c 2753 // 0 | 0 0
whismanoid 4:d9b05924ad4c 2754 // 1 | 0 1
whismanoid 4:d9b05924ad4c 2755 // 2 | 1 0
whismanoid 4:d9b05924ad4c 2756 // 3 | 1 1
whismanoid 4:d9b05924ad4c 2757 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 4:d9b05924ad4c 2758 // 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 2759 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 4:d9b05924ad4c 2760 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 4:d9b05924ad4c 2761 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 4:d9b05924ad4c 2762 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 4:d9b05924ad4c 2763 cmdLine.serial().printf("\r\n %%SD -- SPI diagnostic messages ");
whismanoid 4:d9b05924ad4c 2764 if (g_MAX11410_device.onSPIprint) {
whismanoid 4:d9b05924ad4c 2765 cmdLine.serial().printf("hide");
whismanoid 4:d9b05924ad4c 2766 }
whismanoid 4:d9b05924ad4c 2767 else {
whismanoid 4:d9b05924ad4c 2768 cmdLine.serial().printf("show");
whismanoid 4:d9b05924ad4c 2769 }
whismanoid 4:d9b05924ad4c 2770 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 4:d9b05924ad4c 2771 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 4:d9b05924ad4c 2772 #endif // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 2773 //
whismanoid 4:d9b05924ad4c 2774 // Application-specific commands (help text) here
whismanoid 4:d9b05924ad4c 2775 //
whismanoid 4:d9b05924ad4c 2776 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 2777 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 2778 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 2779 //
whismanoid 4:d9b05924ad4c 2780
whismanoid 4:d9b05924ad4c 2781 //~ extern void MAX11410_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp\n
whismanoid 4:d9b05924ad4c 2782 //~ MAX11410_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 2783 }
whismanoid 4:d9b05924ad4c 2784 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 2785
whismanoid 4:d9b05924ad4c 2786 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 15:37c83ec50ea0 2787
whismanoid 15:37c83ec50ea0 2788 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 2789 void pinsMonitor_submenu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 15:37c83ec50ea0 2790 {
whismanoid 15:37c83ec50ea0 2791 // % diagnostic commands submenu
whismanoid 15:37c83ec50ea0 2792 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 2793 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 2794 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 2795 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 2796 // %Ppin df=xx -- pwm output
whismanoid 15:37c83ec50ea0 2797 // %Wpin -- measure high pulsewidth input in usec
whismanoid 15:37c83ec50ea0 2798 // %wpin -- measure low pulsewidth input in usec
whismanoid 15:37c83ec50ea0 2799 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 2800 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 2801 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 2802 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 2803 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 2804 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 2805 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 2806 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 2807 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 2808 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 2809 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 2810 //
whismanoid 15:37c83ec50ea0 2811 char strPinIndex[3];
whismanoid 15:37c83ec50ea0 2812 strPinIndex[0] = cmdLine[2];
whismanoid 15:37c83ec50ea0 2813 strPinIndex[1] = cmdLine[3];
whismanoid 15:37c83ec50ea0 2814 strPinIndex[2] = '\0';
whismanoid 15:37c83ec50ea0 2815 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 15:37c83ec50ea0 2816 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 15:37c83ec50ea0 2817 //
whismanoid 15:37c83ec50ea0 2818 // get next character
whismanoid 15:37c83ec50ea0 2819 switch (cmdLine[1])
whismanoid 15:37c83ec50ea0 2820 {
whismanoid 15:37c83ec50ea0 2821 #if HAS_digitalInOuts
whismanoid 15:37c83ec50ea0 2822 case 'H': case 'h':
whismanoid 15:37c83ec50ea0 2823 {
whismanoid 15:37c83ec50ea0 2824 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 2825 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2826 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2827 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2828 #else
whismanoid 15:37c83ec50ea0 2829 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 2830 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 2831 digitalInOutPin.write(1);
whismanoid 15:37c83ec50ea0 2832 #endif
whismanoid 15:37c83ec50ea0 2833 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 15:37c83ec50ea0 2834 }
whismanoid 15:37c83ec50ea0 2835 break;
whismanoid 15:37c83ec50ea0 2836 case 'L': case 'l':
whismanoid 15:37c83ec50ea0 2837 {
whismanoid 15:37c83ec50ea0 2838 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 2839 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2840 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2841 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2842 #else
whismanoid 15:37c83ec50ea0 2843 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 2844 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 2845 digitalInOutPin.write(0);
whismanoid 15:37c83ec50ea0 2846 #endif
whismanoid 15:37c83ec50ea0 2847 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 15:37c83ec50ea0 2848 }
whismanoid 15:37c83ec50ea0 2849 break;
whismanoid 15:37c83ec50ea0 2850 case '?':
whismanoid 15:37c83ec50ea0 2851 {
whismanoid 15:37c83ec50ea0 2852 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 2853 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2854 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 2855 #else
whismanoid 15:37c83ec50ea0 2856 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 2857 digitalInOutPin.input();
whismanoid 15:37c83ec50ea0 2858 #endif
whismanoid 15:37c83ec50ea0 2859 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 15:37c83ec50ea0 2860 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 2861 int value = digitalRead(pinIndex);
whismanoid 15:37c83ec50ea0 2862 #else
whismanoid 15:37c83ec50ea0 2863 int value = digitalInOutPin.read();
whismanoid 15:37c83ec50ea0 2864 #endif
whismanoid 15:37c83ec50ea0 2865 cmdLine.serial().printf("%d ", value);
whismanoid 15:37c83ec50ea0 2866 }
whismanoid 15:37c83ec50ea0 2867 break;
whismanoid 15:37c83ec50ea0 2868 #endif
whismanoid 15:37c83ec50ea0 2869 //
whismanoid 15:37c83ec50ea0 2870 #if HAS_analogIns
whismanoid 15:37c83ec50ea0 2871 case 'A': case 'a':
whismanoid 15:37c83ec50ea0 2872 {
whismanoid 15:37c83ec50ea0 2873 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 2874 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 2875 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 15:37c83ec50ea0 2876 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 15:37c83ec50ea0 2877 {
whismanoid 15:37c83ec50ea0 2878 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 2879 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 2880 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 2881 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 2882 //
whismanoid 15:37c83ec50ea0 2883 int pinIndexH = pinIndex + 4;
whismanoid 15:37c83ec50ea0 2884 int cPinIndexH = '0' + pinIndexH;
whismanoid 15:37c83ec50ea0 2885 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 15:37c83ec50ea0 2886 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 15:37c83ec50ea0 2887 float normValueH_0_1 = analogInPinH.read();
whismanoid 15:37c83ec50ea0 2888 //
whismanoid 15:37c83ec50ea0 2889 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV AIN%c = %7.3f%% = %1.3fV \r\n",
whismanoid 15:37c83ec50ea0 2890 cPinIndex,
whismanoid 15:37c83ec50ea0 2891 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2892 normValue_0_1 * adc_full_scale_voltage,
whismanoid 15:37c83ec50ea0 2893 cPinIndexH,
whismanoid 15:37c83ec50ea0 2894 normValueH_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2895 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 15:37c83ec50ea0 2896 );
whismanoid 15:37c83ec50ea0 2897 }
whismanoid 15:37c83ec50ea0 2898 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 15:37c83ec50ea0 2899 {
whismanoid 15:37c83ec50ea0 2900 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 2901 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 2902 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 2903 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 2904 //
whismanoid 15:37c83ec50ea0 2905 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 2906 cPinIndex,
whismanoid 15:37c83ec50ea0 2907 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2908 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 2909 );
whismanoid 15:37c83ec50ea0 2910 }
whismanoid 15:37c83ec50ea0 2911 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 2912 // Platform board uses simple analog inputs
whismanoid 15:37c83ec50ea0 2913 // assume standard Arduino analog inputs A0-A5
whismanoid 15:37c83ec50ea0 2914 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 15:37c83ec50ea0 2915 {
whismanoid 15:37c83ec50ea0 2916 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 2917 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 2918 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 2919 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 2920 //
whismanoid 15:37c83ec50ea0 2921 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 2922 cPinIndex,
whismanoid 15:37c83ec50ea0 2923 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 2924 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 2925 );
whismanoid 15:37c83ec50ea0 2926 }
whismanoid 15:37c83ec50ea0 2927 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 2928 }
whismanoid 15:37c83ec50ea0 2929 break;
whismanoid 15:37c83ec50ea0 2930 #endif
whismanoid 15:37c83ec50ea0 2931 //
whismanoid 15:37c83ec50ea0 2932 #if HAS_SPI2_MAX541
whismanoid 15:37c83ec50ea0 2933 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 2934 {
whismanoid 15:37c83ec50ea0 2935 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 15:37c83ec50ea0 2936 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 15:37c83ec50ea0 2937 float voltageV = max541.Get_Voltage();
whismanoid 15:37c83ec50ea0 2938 // if (cmdLine[2] == '+') {
whismanoid 15:37c83ec50ea0 2939 // // %D+
whismanoid 15:37c83ec50ea0 2940 // voltageV = voltageV * 1.25f;
whismanoid 15:37c83ec50ea0 2941 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 15:37c83ec50ea0 2942 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2943 // }
whismanoid 15:37c83ec50ea0 2944 // else if (cmdLine[2] == '-') {
whismanoid 15:37c83ec50ea0 2945 // // %D-
whismanoid 15:37c83ec50ea0 2946 // voltageV = voltageV * 0.75f;
whismanoid 15:37c83ec50ea0 2947 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 15:37c83ec50ea0 2948 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2949 // }
whismanoid 15:37c83ec50ea0 2950 if (cmdLine.parse_float("V", voltageV))
whismanoid 15:37c83ec50ea0 2951 {
whismanoid 15:37c83ec50ea0 2952 // %D V=1.234 -- set voltage
whismanoid 15:37c83ec50ea0 2953 max541.Set_Voltage(voltageV);
whismanoid 15:37c83ec50ea0 2954 }
whismanoid 15:37c83ec50ea0 2955 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 15:37c83ec50ea0 2956 {
whismanoid 15:37c83ec50ea0 2957 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 15:37c83ec50ea0 2958 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2959 }
whismanoid 15:37c83ec50ea0 2960 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 15:37c83ec50ea0 2961 {
whismanoid 15:37c83ec50ea0 2962 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 15:37c83ec50ea0 2963
whismanoid 15:37c83ec50ea0 2964 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 15:37c83ec50ea0 2965 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 2966 const int average_count = 100;
whismanoid 15:37c83ec50ea0 2967 const double average_K = 0.25;
whismanoid 15:37c83ec50ea0 2968 for (int count = 0; count < average_count; count++) {
whismanoid 15:37c83ec50ea0 2969 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 2970 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 15:37c83ec50ea0 2971 }
whismanoid 15:37c83ec50ea0 2972 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 15:37c83ec50ea0 2973 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 2974 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 15:37c83ec50ea0 2975 max541_midscale_V, max541.VRef);
whismanoid 15:37c83ec50ea0 2976 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 15:37c83ec50ea0 2977 voltageV = 1.0f;
whismanoid 15:37c83ec50ea0 2978 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 2979 }
whismanoid 15:37c83ec50ea0 2980 else {
whismanoid 15:37c83ec50ea0 2981 // %D -- print MAX541 DAC status
whismanoid 15:37c83ec50ea0 2982 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 15:37c83ec50ea0 2983 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 15:37c83ec50ea0 2984 }
whismanoid 15:37c83ec50ea0 2985 }
whismanoid 15:37c83ec50ea0 2986 break;
whismanoid 15:37c83ec50ea0 2987 #endif
whismanoid 15:37c83ec50ea0 2988
whismanoid 15:37c83ec50ea0 2989 //
whismanoid 15:37c83ec50ea0 2990 #if HAS_I2C // SUPPORT_I2C
whismanoid 15:37c83ec50ea0 2991 case 'I': case 'i':
whismanoid 15:37c83ec50ea0 2992 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 2993 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 2994 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 2995 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 2996 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 2997 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 2998 // get next character
whismanoid 15:37c83ec50ea0 2999 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 15:37c83ec50ea0 3000 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 15:37c83ec50ea0 3001 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 15:37c83ec50ea0 3002 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 15:37c83ec50ea0 3003 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 15:37c83ec50ea0 3004 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 15:37c83ec50ea0 3005 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 15:37c83ec50ea0 3006 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 3007 {
whismanoid 15:37c83ec50ea0 3008 case 'P': case 'p':
whismanoid 15:37c83ec50ea0 3009 {
whismanoid 15:37c83ec50ea0 3010 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3011 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 15:37c83ec50ea0 3012 }
whismanoid 15:37c83ec50ea0 3013 break;
whismanoid 15:37c83ec50ea0 3014 case 'C': case 'c':
whismanoid 15:37c83ec50ea0 3015 {
whismanoid 15:37c83ec50ea0 3016 bool isUpdatedI2CConfig = false;
whismanoid 15:37c83ec50ea0 3017 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3018 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 15:37c83ec50ea0 3019 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 15:37c83ec50ea0 3020 {
whismanoid 15:37c83ec50ea0 3021 isUpdatedI2CConfig = true;
whismanoid 15:37c83ec50ea0 3022 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 3023 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 3024 {
whismanoid 15:37c83ec50ea0 3025 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 3026 }
whismanoid 15:37c83ec50ea0 3027 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 3028 {
whismanoid 15:37c83ec50ea0 3029 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 3030 }
whismanoid 15:37c83ec50ea0 3031 }
whismanoid 15:37c83ec50ea0 3032 if (isUpdatedI2CConfig)
whismanoid 15:37c83ec50ea0 3033 {
whismanoid 15:37c83ec50ea0 3034 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3035 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3036 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3037 i2cMaster.start();
whismanoid 15:37c83ec50ea0 3038 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 3039 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3040 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3041 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 15:37c83ec50ea0 3042 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 15:37c83ec50ea0 3043 (g_I2C_SCL_Hz / 1000.));
whismanoid 15:37c83ec50ea0 3044 i2cMaster.start();
whismanoid 15:37c83ec50ea0 3045 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 3046 }
whismanoid 15:37c83ec50ea0 3047 }
whismanoid 15:37c83ec50ea0 3048 break;
whismanoid 15:37c83ec50ea0 3049 case 'W': case 'w':
whismanoid 15:37c83ec50ea0 3050 {
whismanoid 15:37c83ec50ea0 3051 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3052 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3053 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3054 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3055 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3056 #define MAX_I2C_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 3057 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 3058 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3059 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3060 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 3061 MAX_I2C_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 3062 {
whismanoid 15:37c83ec50ea0 3063 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3064 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3065 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 15:37c83ec50ea0 3066 g_I2C_deviceAddress7,
whismanoid 15:37c83ec50ea0 3067 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 15:37c83ec50ea0 3068 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 3069 {
whismanoid 15:37c83ec50ea0 3070 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 3071 }
whismanoid 15:37c83ec50ea0 3072 //
whismanoid 15:37c83ec50ea0 3073 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3074 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3075 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3076 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3077 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3078 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3079 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3080 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3081 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3082 // /* 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 3083 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3084 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3085 unsigned int misoLength = 0;
whismanoid 15:37c83ec50ea0 3086 bool repeated = (g_I2C_read_count > 0);
whismanoid 15:37c83ec50ea0 3087 //
whismanoid 15:37c83ec50ea0 3088 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 15:37c83ec50ea0 3089 switch (writeStatus)
whismanoid 15:37c83ec50ea0 3090 {
whismanoid 15:37c83ec50ea0 3091 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 3092 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 3093 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 3094 writeStatus);
whismanoid 15:37c83ec50ea0 3095 }
whismanoid 15:37c83ec50ea0 3096 if (repeated)
whismanoid 15:37c83ec50ea0 3097 {
whismanoid 15:37c83ec50ea0 3098 int readStatus =
whismanoid 15:37c83ec50ea0 3099 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 15:37c83ec50ea0 3100 switch (readStatus)
whismanoid 15:37c83ec50ea0 3101 {
whismanoid 15:37c83ec50ea0 3102 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 3103 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 3104 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 3105 readStatus);
whismanoid 15:37c83ec50ea0 3106 }
whismanoid 15:37c83ec50ea0 3107 }
whismanoid 15:37c83ec50ea0 3108 //
whismanoid 15:37c83ec50ea0 3109 if (misoLength > 0)
whismanoid 15:37c83ec50ea0 3110 {
whismanoid 15:37c83ec50ea0 3111 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3112 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 3113 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 15:37c83ec50ea0 3114 byteIndex++)
whismanoid 15:37c83ec50ea0 3115 {
whismanoid 15:37c83ec50ea0 3116 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 3117 }
whismanoid 15:37c83ec50ea0 3118 }
whismanoid 15:37c83ec50ea0 3119 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 3120 }
whismanoid 15:37c83ec50ea0 3121 }
whismanoid 15:37c83ec50ea0 3122 break;
whismanoid 15:37c83ec50ea0 3123 case 'R': case 'r':
whismanoid 15:37c83ec50ea0 3124 {
whismanoid 15:37c83ec50ea0 3125 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3126 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3127 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3128 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3129 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3130 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3131 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3132 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3133 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3134 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3135 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3136 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3137 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3138 // /* 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 3139 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3140 }
whismanoid 15:37c83ec50ea0 3141 break;
whismanoid 15:37c83ec50ea0 3142 case '^':
whismanoid 15:37c83ec50ea0 3143 {
whismanoid 15:37c83ec50ea0 3144 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3145 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3146 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3147 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3148 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3149 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3150 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3151 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3152 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3153 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3154 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3155 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3156 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3157 // /* 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 3158 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3159 }
whismanoid 15:37c83ec50ea0 3160 break;
whismanoid 15:37c83ec50ea0 3161 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 3162 break;
whismanoid 15:37c83ec50ea0 3163 #endif
whismanoid 15:37c83ec50ea0 3164 //
whismanoid 15:37c83ec50ea0 3165 #if HAS_SPI // SUPPORT_SPI
whismanoid 15:37c83ec50ea0 3166 case 'S': case 's':
whismanoid 15:37c83ec50ea0 3167 {
whismanoid 15:37c83ec50ea0 3168 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3169 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3170 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3171 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3172 //
whismanoid 15:37c83ec50ea0 3173 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 15:37c83ec50ea0 3174 bool isUpdatedSPIConfig = false;
whismanoid 15:37c83ec50ea0 3175 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 15:37c83ec50ea0 3176 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 15:37c83ec50ea0 3177 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 15:37c83ec50ea0 3178 {
whismanoid 15:37c83ec50ea0 3179 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3180 }
whismanoid 15:37c83ec50ea0 3181 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 15:37c83ec50ea0 3182 {
whismanoid 15:37c83ec50ea0 3183 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3184 }
whismanoid 15:37c83ec50ea0 3185 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 15:37c83ec50ea0 3186 {
whismanoid 15:37c83ec50ea0 3187 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3188 }
whismanoid 15:37c83ec50ea0 3189 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 15:37c83ec50ea0 3190 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 15:37c83ec50ea0 3191 {
whismanoid 15:37c83ec50ea0 3192 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 3193 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 3194 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 3195 {
whismanoid 15:37c83ec50ea0 3196 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 3197 }
whismanoid 15:37c83ec50ea0 3198 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 3199 {
whismanoid 15:37c83ec50ea0 3200 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 3201 }
whismanoid 15:37c83ec50ea0 3202 }
whismanoid 15:37c83ec50ea0 3203 // Update SPI configuration
whismanoid 15:37c83ec50ea0 3204 if (isUpdatedSPIConfig)
whismanoid 15:37c83ec50ea0 3205 {
whismanoid 15:37c83ec50ea0 3206 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3207 spi_cs = g_SPI_cs_state;
whismanoid 15:37c83ec50ea0 3208 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 15:37c83ec50ea0 3209 #if APPLICATION_MAX5715
whismanoid 15:37c83ec50ea0 3210 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3211 #elif APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 3212 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3213 #elif APPLICATION_MAX5171
whismanoid 15:37c83ec50ea0 3214 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3215 #elif APPLICATION_MAX11410
whismanoid 15:37c83ec50ea0 3216 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3217 #elif APPLICATION_MAX12345
whismanoid 15:37c83ec50ea0 3218 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 3219 #else
whismanoid 15:37c83ec50ea0 3220 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 15:37c83ec50ea0 3221 #endif
whismanoid 15:37c83ec50ea0 3222 //
whismanoid 15:37c83ec50ea0 3223 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 3224 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 15:37c83ec50ea0 3225 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 15:37c83ec50ea0 3226 //
whismanoid 15:37c83ec50ea0 3227 // 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 3228 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3229 "\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 3230 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 15:37c83ec50ea0 3231 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 15:37c83ec50ea0 3232 g_SPI_cs_state,
whismanoid 15:37c83ec50ea0 3233 g_SPI_SCLK_Hz,
whismanoid 15:37c83ec50ea0 3234 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 15:37c83ec50ea0 3235 ((double)(SystemCoreClock / 1000000.)),
whismanoid 15:37c83ec50ea0 3236 ideal_divisor,
whismanoid 15:37c83ec50ea0 3237 (actual_SCLK_Hz / 1000000.)
whismanoid 15:37c83ec50ea0 3238 );
whismanoid 15:37c83ec50ea0 3239 }
whismanoid 15:37c83ec50ea0 3240 // get next character
whismanoid 15:37c83ec50ea0 3241 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 3242 {
whismanoid 15:37c83ec50ea0 3243 case 'C': case 's':
whismanoid 15:37c83ec50ea0 3244 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3245 break;
whismanoid 15:37c83ec50ea0 3246 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 3247 // %SD -- SPI diagnostic messages enable
whismanoid 15:37c83ec50ea0 3248 if (g_MAX5719_device.onSPIprint) {
whismanoid 15:37c83ec50ea0 3249 g_MAX5719_device.onSPIprint = NULL;
whismanoid 15:37c83ec50ea0 3250 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') != None is false
whismanoid 15:37c83ec50ea0 3251 }
whismanoid 15:37c83ec50ea0 3252 else {
whismanoid 15:37c83ec50ea0 3253 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[]);
whismanoid 15:37c83ec50ea0 3254 g_MAX5719_device.onSPIprint = onSPIprint_handler;
whismanoid 15:37c83ec50ea0 3255 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') is false
whismanoid 15:37c83ec50ea0 3256 }
whismanoid 15:37c83ec50ea0 3257 break;
whismanoid 15:37c83ec50ea0 3258 case 'W': case 'R': case 'w': case 'r':
whismanoid 15:37c83ec50ea0 3259 {
whismanoid 15:37c83ec50ea0 3260 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3261 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3262 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3263 #define MAX_SPI_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 3264 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 3265 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3266 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3267 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 3268 MAX_SPI_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 3269 {
whismanoid 15:37c83ec50ea0 3270 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3271 cmdLine.serial().printf("\r\nSPI");
whismanoid 15:37c83ec50ea0 3272 if (byteCount > 7) {
whismanoid 15:37c83ec50ea0 3273 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 15:37c83ec50ea0 3274 }
whismanoid 15:37c83ec50ea0 3275 cmdLine.serial().printf(" MOSI->");
whismanoid 15:37c83ec50ea0 3276 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 3277 {
whismanoid 15:37c83ec50ea0 3278 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 3279 }
whismanoid 15:37c83ec50ea0 3280 spi_cs = 0;
whismanoid 15:37c83ec50ea0 3281 unsigned int numBytesTransferred =
whismanoid 15:37c83ec50ea0 3282 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 15:37c83ec50ea0 3283 spi_cs = 1;
whismanoid 15:37c83ec50ea0 3284 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3285 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 3286 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 15:37c83ec50ea0 3287 byteIndex++)
whismanoid 15:37c83ec50ea0 3288 {
whismanoid 15:37c83ec50ea0 3289 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 3290 }
whismanoid 15:37c83ec50ea0 3291 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 3292 }
whismanoid 15:37c83ec50ea0 3293 }
whismanoid 15:37c83ec50ea0 3294 break;
whismanoid 15:37c83ec50ea0 3295 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 3296 } // case 'S': // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3297 break;
whismanoid 15:37c83ec50ea0 3298 #endif
whismanoid 15:37c83ec50ea0 3299 //
whismanoid 15:37c83ec50ea0 3300 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 3301 } // switch(cmdLine[1])
whismanoid 15:37c83ec50ea0 3302 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 15:37c83ec50ea0 3303 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 15:37c83ec50ea0 3304
whismanoid 15:37c83ec50ea0 3305 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3306 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3307 void main_menu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 3308 {
whismanoid 9:45f98573eb6d 3309 // process command line
whismanoid 9:45f98573eb6d 3310 cmdLine.serial().printf("\r\nCmdLine buf:\"%s\"\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 3311
whismanoid 4:d9b05924ad4c 3312 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 3313 // If datalog is free running, halt on any possible received command
whismanoid 17:9397ea3ea7e9 3314 if (Datalogger_Trigger != trigger_Halt) {
whismanoid 4:d9b05924ad4c 3315 Datalogger_Trigger = trigger_Halt;
whismanoid 9:45f98573eb6d 3316 cmdLine.serial().printf("Datalog stopped by USB command input\r\n");
whismanoid 9:45f98573eb6d 3317 cmdLine.serial().printf("Restart datalog by sending LR\r\n");
whismanoid 4:d9b05924ad4c 3318 }
whismanoid 4:d9b05924ad4c 3319 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 3320
whismanoid 4:d9b05924ad4c 3321 // DIAGNOSTIC: print line buffer
whismanoid 4:d9b05924ad4c 3322 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 3323 //
whismanoid 4:d9b05924ad4c 3324 switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 3325 {
whismanoid 4:d9b05924ad4c 3326 case '?':
whismanoid 4:d9b05924ad4c 3327 main_menu_status(cmdLine);
whismanoid 4:d9b05924ad4c 3328 main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 3329 // print command prompt
whismanoid 4:d9b05924ad4c 3330 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 3331 break;
whismanoid 4:d9b05924ad4c 3332 case '\r': case '\n': // ignore blank line
whismanoid 4:d9b05924ad4c 3333 case '\0': // ignore empty line
whismanoid 4:d9b05924ad4c 3334 case '#': // ignore comment line
whismanoid 4:d9b05924ad4c 3335 // # -- lines beginning with # are comments
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 #if ECHO_EOF_ON_EOL
whismanoid 4:d9b05924ad4c 3342 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 4:d9b05924ad4c 3343 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 3344 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 3345 break;
whismanoid 4:d9b05924ad4c 3346 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 4:d9b05924ad4c 3347 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 3348 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 3349 break;
whismanoid 4:d9b05924ad4c 3350 #endif
whismanoid 10:04022a61b527 3351 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 3352 case '!': // device init
whismanoid 10:04022a61b527 3353 {
whismanoid 10:04022a61b527 3354 cmdLine.serial().printf("Init");
whismanoid 10:04022a61b527 3355 // call function Init
whismanoid 10:04022a61b527 3356 uint8_t result = g_MAX11410_device.Init();
whismanoid 10:04022a61b527 3357 // cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 3358 cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 3359 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 3360 // in command '!' device init, apply list of custom register writes after init
whismanoid 10:04022a61b527 3361 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 3362 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 10:04022a61b527 3363 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 10:04022a61b527 3364 uint32_t regData = custom_reg_init_data[index];
whismanoid 10:04022a61b527 3365 cmdLine.serial().printf("*%s=0x%06.6x",
whismanoid 10:04022a61b527 3366 g_MAX11410_device.RegName((MAX11410::MAX11410_CMD_enum_t)regAddress),
whismanoid 10:04022a61b527 3367 regData
whismanoid 10:04022a61b527 3368 );
whismanoid 10:04022a61b527 3369 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 10:04022a61b527 3370 }
whismanoid 10:04022a61b527 3371 #endif // USE_CUSTOM_REG_INIT
whismanoid 10:04022a61b527 3372 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 3373 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 3374 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 3375 }
whismanoid 10:04022a61b527 3376 break;
whismanoid 10:04022a61b527 3377 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 3378 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 3379 case '.':
whismanoid 4:d9b05924ad4c 3380 {
whismanoid 4:d9b05924ad4c 3381 // . -- SelfTest
whismanoid 4:d9b05924ad4c 3382 cmdLine.serial().printf("SelfTest()");
whismanoid 4:d9b05924ad4c 3383 SelfTest(cmdLine);
whismanoid 4:d9b05924ad4c 3384 }
whismanoid 4:d9b05924ad4c 3385 break;
whismanoid 4:d9b05924ad4c 3386 #endif // USE_SELFTEST
whismanoid 15:37c83ec50ea0 3387 #if 1 // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3388 case '%':
whismanoid 4:d9b05924ad4c 3389 {
whismanoid 4:d9b05924ad4c 3390 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 4:d9b05924ad4c 3391 }
whismanoid 4:d9b05924ad4c 3392 break; // case '%'
whismanoid 4:d9b05924ad4c 3393 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 9:45f98573eb6d 3394 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 3395 // reuse the Serial_Tester command *regName=regValue
whismanoid 10:04022a61b527 3396 // CODE GENERATOR: generate * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 3397 case '*':
whismanoid 10:04022a61b527 3398 {
whismanoid 10:04022a61b527 3399 // if buffer starts with a regName:
whismanoid 10:04022a61b527 3400 // for each reg value (0..n) if(cmdLine.has_keyword(device.regName(r))):
whismanoid 10:04022a61b527 3401 // cmdLine.serial().printf(" scan RegName...\r\n");
whismanoid 10:04022a61b527 3402 }
whismanoid 10:04022a61b527 3403 break;
whismanoid 9:45f98573eb6d 3404 #endif // USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 3405 //
whismanoid 10:04022a61b527 3406 #if 1 // USE_AUX_SERIAL_CMD_FORWARDING && (HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL)
whismanoid 10:04022a61b527 3407 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_onEOLcommandParser
whismanoid 10:04022a61b527 3408 case '>':
whismanoid 10:04022a61b527 3409 {
whismanoid 10:04022a61b527 3410 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 3411 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3412 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3413 CmdLine& cmdLine_AuxSerial = cmdLine_AUXserial;
whismanoid 10:04022a61b527 3414 Serial& AuxSerial = AUXserial;
whismanoid 10:04022a61b527 3415 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3416 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 3417 CmdLine& cmdLine_AuxSerial = cmdLine_DAPLINKserial;
whismanoid 10:04022a61b527 3418 Serial& AuxSerial = DAPLINKserial;
whismanoid 10:04022a61b527 3419 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3420 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 3421 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3422 //
whismanoid 10:04022a61b527 3423 // >> suppress key=value parsing
whismanoid 10:04022a61b527 3424 bool suppress_parsing = (cmdLine[1] == '>');
whismanoid 10:04022a61b527 3425 if (suppress_parsing == false) {
whismanoid 10:04022a61b527 3426 // int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 3427 if (cmdLine.parse_int_dec("baud", g_auxSerialCom_baud))
whismanoid 10:04022a61b527 3428 {
whismanoid 10:04022a61b527 3429 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- baud rate
whismanoid 10:04022a61b527 3430 cmdLine_AuxSerial.serial().printf("\r\n*** New Baud Rate %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3431 AuxSerial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3432 cmdLine_AuxSerial.serial().printf("\r\n*** Baud Rate was set to %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3433 }
whismanoid 10:04022a61b527 3434 #if 0
whismanoid 10:04022a61b527 3435 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 3436 if (cmdLine.parse_int_dec("tx_wait_echo", g_auxSerialCom_tx_wait_echo))
whismanoid 10:04022a61b527 3437 {
whismanoid 10:04022a61b527 3438 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_wait_echo
whismanoid 10:04022a61b527 3439 //~ cmdLine_AuxSerial.serial().printf("\r\n*** tx_wait_echo was set to %d ***\r\n", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 3440 cmdLine.serial().printf("\r\n tx_wait_echo=%d", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 3441 }
whismanoid 10:04022a61b527 3442 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 3443 if (cmdLine.parse_int_dec("tx_char_delay_ms", g_auxSerialCom_tx_char_delay_ms))
whismanoid 10:04022a61b527 3444 {
whismanoid 10:04022a61b527 3445 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_char_delay_ms
whismanoid 10:04022a61b527 3446 //~ 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 3447 cmdLine.serial().printf("\r\n tx_char_delay_ms=%dms", g_auxSerialCom_tx_char_delay_ms);
whismanoid 10:04022a61b527 3448 }
whismanoid 10:04022a61b527 3449 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 3450 if (cmdLine.parse_int_dec("tx_line_delay_ms", g_auxSerialCom_tx_line_delay_ms))
whismanoid 10:04022a61b527 3451 {
whismanoid 10:04022a61b527 3452 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_line_delay_ms
whismanoid 10:04022a61b527 3453 //~ 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 3454 cmdLine.serial().printf("\r\n tx_line_delay_ms=%dms", g_auxSerialCom_tx_line_delay_ms);
whismanoid 10:04022a61b527 3455 }
whismanoid 10:04022a61b527 3456 #endif
whismanoid 10:04022a61b527 3457 // int g_auxSerialCom_message_ms = 0; //!< capture RX until response timeout?
whismanoid 10:04022a61b527 3458 if (cmdLine.parse_int_dec("message_ms", g_auxSerialCom_message_ms))
whismanoid 10:04022a61b527 3459 {
whismanoid 10:04022a61b527 3460 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 10:04022a61b527 3461 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3462 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3463 }
whismanoid 10:04022a61b527 3464 // int g_auxSerialCom_rx_idle_ms = 0; //!< capture RX until idle timeout?
whismanoid 10:04022a61b527 3465 if (cmdLine.parse_int_dec("rx_idle_ms", g_auxSerialCom_rx_idle_ms))
whismanoid 10:04022a61b527 3466 {
whismanoid 10:04022a61b527 3467 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_idle_ms
whismanoid 10:04022a61b527 3468 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_idle_ms was set to %d ***\r\n", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3469 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3470 }
whismanoid 10:04022a61b527 3471 // int g_auxSerialCom_rx_max_count = 0; //!< capture RX until max character count?
whismanoid 10:04022a61b527 3472 if (cmdLine.parse_int_dec("rx_max_count", g_auxSerialCom_rx_max_count))
whismanoid 10:04022a61b527 3473 {
whismanoid 10:04022a61b527 3474 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_max_count
whismanoid 10:04022a61b527 3475 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_max_count was set to %d ***\r\n", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3476 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3477 }
whismanoid 10:04022a61b527 3478 // int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text char?
whismanoid 10:04022a61b527 3479 if (cmdLine.parse_int_dec("rx_eot", g_auxSerialCom_rx_eot))
whismanoid 10:04022a61b527 3480 {
whismanoid 10:04022a61b527 3481 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_eot
whismanoid 10:04022a61b527 3482 //~ cmdLine_AUXserial.serial().printf("\r\n*** rx_eot was set to %d ***\r\n", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 3483 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 3484 }
whismanoid 10:04022a61b527 3485 }
whismanoid 10:04022a61b527 3486 // Command forwarding to AUX serial TX/RX cmdLine_AuxSerial #257 -- send outgoing_string
whismanoid 10:04022a61b527 3487 char* outgoing_string = (char*)cmdLine.str();
whismanoid 10:04022a61b527 3488 // > use key=value parsing
whismanoid 10:04022a61b527 3489 // >> suppress key=value parsing
whismanoid 10:04022a61b527 3490 if (suppress_parsing) {
whismanoid 10:04022a61b527 3491 cmdLine.serial().printf("\r\n suppress_parsing outgoing_string=\"%s\"", outgoing_string);
whismanoid 10:04022a61b527 3492 outgoing_string++; // skip the first '>'
whismanoid 10:04022a61b527 3493 outgoing_string++; // skip the second '>'
whismanoid 10:04022a61b527 3494 } else {
whismanoid 10:04022a61b527 3495 // TODO: after parsing, key=value pairs should be deleted, but outgoing_string=">xyzzy abc=def"
whismanoid 10:04022a61b527 3496 cmdLine.serial().printf("\r\n after parsing, outgoing_string=\"%s\"", outgoing_string);
whismanoid 10:04022a61b527 3497 outgoing_string++; // skip the first '>'
whismanoid 10:04022a61b527 3498 }
whismanoid 10:04022a61b527 3499 static char rx_string_buf[RX_STRING_BUF_SIZE];
whismanoid 10:04022a61b527 3500 unsigned int rx_string_length = 0;
whismanoid 10:04022a61b527 3501 cmdLine.serial().printf("\r\n >%s\r\n <", outgoing_string);
whismanoid 10:04022a61b527 3502 rx_string_buf[0] = '\0';
whismanoid 10:04022a61b527 3503 rx_string_length = 0;
whismanoid 10:04022a61b527 3504 //
whismanoid 10:04022a61b527 3505 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 3506 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 3507 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 3508 //
whismanoid 10:04022a61b527 3509 // int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 3510 // int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 3511 // int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 3512 // int g_auxSerialCom_rx_idle_ms = 2000; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 3513 // int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 3514 // int g_auxSerialCom_rx_eot = '\r'; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 3515 //~ cmdLine_AuxSerial.serial().printf("\r\n*** TODO forward %s ***\r\n", outgoing_string);
whismanoid 10:04022a61b527 3516 //
whismanoid 10:04022a61b527 3517 // TODO: send whole string or send character-by-character?
whismanoid 10:04022a61b527 3518 cmdLine_AuxSerial.serial().printf("%s", outgoing_string);
whismanoid 10:04022a61b527 3519 cmdLine_AuxSerial.serial().printf("\r\n");
whismanoid 10:04022a61b527 3520 g_auxSerialCom_Timer.start();
whismanoid 10:04022a61b527 3521 g_auxSerialCom_Timer_begin_message_ms = g_auxSerialCom_Timer.read_ms(); // start of message
whismanoid 10:04022a61b527 3522 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 3523 while (rx_string_length < (RX_STRING_BUF_SIZE-1)) {
whismanoid 10:04022a61b527 3524 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_message_ms) > g_auxSerialCom_message_ms) {
whismanoid 10:04022a61b527 3525 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3526 break;
whismanoid 10:04022a61b527 3527 }
whismanoid 10:04022a61b527 3528 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_rx_idle_ms) > g_auxSerialCom_rx_idle_ms) {
whismanoid 10:04022a61b527 3529 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3530 break;
whismanoid 10:04022a61b527 3531 }
whismanoid 10:04022a61b527 3532 if (rx_string_length >= g_auxSerialCom_rx_max_count) {
whismanoid 15:37c83ec50ea0 3533 // [Warning] comparison between signed and unsigned integer expressions
whismanoid 10:04022a61b527 3534 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3535 break;
whismanoid 10:04022a61b527 3536 }
whismanoid 10:04022a61b527 3537 if (AuxSerial.readable()) {
whismanoid 10:04022a61b527 3538 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 3539 char ch = AuxSerial.getc();
whismanoid 10:04022a61b527 3540 rx_string_buf[rx_string_length++] = ch;
whismanoid 10:04022a61b527 3541 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 10:04022a61b527 3542 cmdLine.serial().printf("%s", &(rx_string_buf[rx_string_length-1]) ); // immediate character echo
whismanoid 10:04022a61b527 3543 if (g_auxSerialCom_rx_eot != aux_serial_cmd_forwarding_rx_eot_not_used) {
whismanoid 10:04022a61b527 3544 if (ch == g_auxSerialCom_rx_eot) {
whismanoid 10:04022a61b527 3545 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 3546 break;
whismanoid 10:04022a61b527 3547 }
whismanoid 10:04022a61b527 3548 }
whismanoid 10:04022a61b527 3549 }
whismanoid 10:04022a61b527 3550 } // end while (rx_string_length < (RX_STRING_BUF_SIZE-1))
whismanoid 10:04022a61b527 3551 #if 1
whismanoid 10:04022a61b527 3552 // print summary. is this needed? we already print aux rx as it is received.
whismanoid 10:04022a61b527 3553 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 10:04022a61b527 3554 cmdLine.serial().printf("\r\n >%s", outgoing_string);
whismanoid 10:04022a61b527 3555 cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 10:04022a61b527 3556 #endif
whismanoid 10:04022a61b527 3557 //
whismanoid 10:04022a61b527 3558 }
whismanoid 10:04022a61b527 3559 break; // case '>'
whismanoid 10:04022a61b527 3560 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3561 //
whismanoid 4:d9b05924ad4c 3562 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 3563 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 3564 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 3565 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 3566 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible
whismanoid 9:45f98573eb6d 3567 case 'L': case 'l':
whismanoid 4:d9b05924ad4c 3568 {
whismanoid 4:d9b05924ad4c 3569 // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 3570 Datalogger_Trigger = trigger_Halt;
whismanoid 4:d9b05924ad4c 3571 switch (cmdLine[1])
whismanoid 4:d9b05924ad4c 3572 {
whismanoid 17:9397ea3ea7e9 3573 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 3574 case 'T': case 't':
whismanoid 17:9397ea3ea7e9 3575 {
whismanoid 17:9397ea3ea7e9 3576 // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 3577 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 3578 Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 3579 g_timer_interval_counter = 0;
whismanoid 17:9397ea3ea7e9 3580 // TODO: get g_timer_interval_msec from cmdLine
whismanoid 17:9397ea3ea7e9 3581 // g_timer_interval_msec = 500;
whismanoid 17:9397ea3ea7e9 3582 // g_timer_interval_count = 10;
whismanoid 17:9397ea3ea7e9 3583 if (cmdLine.parse_int_dec("count", g_timer_interval_count))
whismanoid 17:9397ea3ea7e9 3584 {
whismanoid 17:9397ea3ea7e9 3585 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 3586 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 3587 cmdLine.serial().printf("\r\n g_timer_interval_count=%d", g_timer_interval_count);
whismanoid 17:9397ea3ea7e9 3588 }
whismanoid 17:9397ea3ea7e9 3589 if (cmdLine.parse_int_dec("base", g_timer_interval_msec))
whismanoid 17:9397ea3ea7e9 3590 {
whismanoid 17:9397ea3ea7e9 3591 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 3592 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 3593 cmdLine.serial().printf("\r\n g_timer_interval_msec=%d", g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 3594 }
whismanoid 17:9397ea3ea7e9 3595 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 17:9397ea3ea7e9 3596 }
whismanoid 17:9397ea3ea7e9 3597 break;
whismanoid 17:9397ea3ea7e9 3598 // LIH3 -- Datalog when input high D3
whismanoid 17:9397ea3ea7e9 3599 // LIL6 -- Datalog when input low D6
whismanoid 17:9397ea3ea7e9 3600 case 'I': case 'i':
whismanoid 17:9397ea3ea7e9 3601 {
whismanoid 17:9397ea3ea7e9 3602 // TODO: switch cmdLine[2] configure High or Low, configure input pin
whismanoid 17:9397ea3ea7e9 3603 }
whismanoid 17:9397ea3ea7e9 3604 break;
whismanoid 17:9397ea3ea7e9 3605 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3606 // L$regaddr@dataMask=testValue -- Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 3607 case '$':
whismanoid 17:9397ea3ea7e9 3608 {
whismanoid 17:9397ea3ea7e9 3609 // TODO: scan cmdLine for regAddr, dataMask, testValue
whismanoid 17:9397ea3ea7e9 3610 }
whismanoid 17:9397ea3ea7e9 3611 break;
whismanoid 17:9397ea3ea7e9 3612 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3613 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 3614 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3615 case '@':
whismanoid 17:9397ea3ea7e9 3616 {
whismanoid 17:9397ea3ea7e9 3617 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3618 int editRowIndex = 0;
whismanoid 17:9397ea3ea7e9 3619 int edit_action = (int)action_noop;
whismanoid 17:9397ea3ea7e9 3620 int edit_digitalOutPin = 0;
whismanoid 17:9397ea3ea7e9 3621 int edit_condition = (int)condition_always;
whismanoid 17:9397ea3ea7e9 3622 int edit_condition_channel = 0;
whismanoid 17:9397ea3ea7e9 3623 double edit_condition_threshold = 0;
whismanoid 17:9397ea3ea7e9 3624 //
whismanoid 17:9397ea3ea7e9 3625 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 3626 {
whismanoid 17:9397ea3ea7e9 3627 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 3628 }
whismanoid 17:9397ea3ea7e9 3629 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 3630 {
whismanoid 17:9397ea3ea7e9 3631 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 3632 }
whismanoid 17:9397ea3ea7e9 3633 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 3634 {
whismanoid 17:9397ea3ea7e9 3635 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 3636 }
whismanoid 17:9397ea3ea7e9 3637 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 3638 {
whismanoid 17:9397ea3ea7e9 3639 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 3640 }
whismanoid 17:9397ea3ea7e9 3641 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 3642 {
whismanoid 17:9397ea3ea7e9 3643 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 3644 }
whismanoid 17:9397ea3ea7e9 3645 //
whismanoid 17:9397ea3ea7e9 3646 // Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3647 switch (cmdLine[2]) // L@... -- Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3648 {
whismanoid 17:9397ea3ea7e9 3649 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 3650 case '0': case '1': case '2': case '3': case '4':
whismanoid 17:9397ea3ea7e9 3651 case '5': case '6': case '7': case '8': case '9':
whismanoid 17:9397ea3ea7e9 3652 // edit row data
whismanoid 17:9397ea3ea7e9 3653 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 3654 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 3655 // get row number to edit from cmdLine[2]
whismanoid 17:9397ea3ea7e9 3656 editRowIndex = atoi(cmdLine.str()+2);
whismanoid 17:9397ea3ea7e9 3657 // default is no change
whismanoid 17:9397ea3ea7e9 3658 edit_action = Datalogger_action_table[editRowIndex].action;
whismanoid 17:9397ea3ea7e9 3659 edit_digitalOutPin = Datalogger_action_table[editRowIndex].digitalOutPin;
whismanoid 17:9397ea3ea7e9 3660 edit_condition = Datalogger_action_table[editRowIndex].condition;
whismanoid 17:9397ea3ea7e9 3661 edit_condition_channel = Datalogger_action_table[editRowIndex].condition_channel;
whismanoid 17:9397ea3ea7e9 3662 edit_condition_threshold = Datalogger_action_table[editRowIndex].condition_threshold;
whismanoid 17:9397ea3ea7e9 3663 // scan cmdLine[2] for key=value of what fields to change
whismanoid 17:9397ea3ea7e9 3664 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 3665 {
whismanoid 17:9397ea3ea7e9 3666 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 3667 }
whismanoid 17:9397ea3ea7e9 3668 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 3669 {
whismanoid 17:9397ea3ea7e9 3670 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 3671 }
whismanoid 17:9397ea3ea7e9 3672 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 3673 {
whismanoid 17:9397ea3ea7e9 3674 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 3675 }
whismanoid 17:9397ea3ea7e9 3676 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 3677 {
whismanoid 17:9397ea3ea7e9 3678 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 3679 }
whismanoid 17:9397ea3ea7e9 3680 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 3681 {
whismanoid 17:9397ea3ea7e9 3682 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 3683 }
whismanoid 17:9397ea3ea7e9 3684 // update row
whismanoid 17:9397ea3ea7e9 3685 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 3686 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 3687 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 3688 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 3689 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 3690 }
whismanoid 17:9397ea3ea7e9 3691 break;
whismanoid 17:9397ea3ea7e9 3692 case '+':
whismanoid 17:9397ea3ea7e9 3693 // add a new row at end of table
whismanoid 17:9397ea3ea7e9 3694 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 3695 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 3696 editRowIndex = Datalogger_action_table_row_count;
whismanoid 17:9397ea3ea7e9 3697 Datalogger_action_table_row_count++;
whismanoid 17:9397ea3ea7e9 3698 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 3699 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 3700 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 3701 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 3702 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 3703 }
whismanoid 17:9397ea3ea7e9 3704 break;
whismanoid 17:9397ea3ea7e9 3705 case '-':
whismanoid 17:9397ea3ea7e9 3706 // delete row from table
whismanoid 17:9397ea3ea7e9 3707 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 3708 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 3709 if ((cmdLine[3] == '~') && (cmdLine[4] == '~') && (cmdLine[5] == '~')) {
whismanoid 17:9397ea3ea7e9 3710 // L@-~~~ -- delete all rows from table
whismanoid 17:9397ea3ea7e9 3711 Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 3712 break;
whismanoid 17:9397ea3ea7e9 3713 }
whismanoid 17:9397ea3ea7e9 3714 editRowIndex = atoi(cmdLine.str()+3);
whismanoid 17:9397ea3ea7e9 3715 // delete row editRowIndex from Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3716 for (int i = editRowIndex; i < (Datalogger_action_table_row_count-1); i++)
whismanoid 17:9397ea3ea7e9 3717 {
whismanoid 17:9397ea3ea7e9 3718 // copy row i+1 into row i
whismanoid 17:9397ea3ea7e9 3719 Datalogger_action_table[i].action = Datalogger_action_table[i+1].action;
whismanoid 17:9397ea3ea7e9 3720 Datalogger_action_table[i].digitalOutPin = Datalogger_action_table[i+1].digitalOutPin;
whismanoid 17:9397ea3ea7e9 3721 Datalogger_action_table[i].condition = Datalogger_action_table[i+1].condition;
whismanoid 17:9397ea3ea7e9 3722 Datalogger_action_table[i].condition_channel = Datalogger_action_table[i+1].condition_channel;
whismanoid 17:9397ea3ea7e9 3723 Datalogger_action_table[i].condition_threshold = Datalogger_action_table[i+1].condition_threshold;
whismanoid 17:9397ea3ea7e9 3724 }
whismanoid 17:9397ea3ea7e9 3725 Datalogger_action_table_row_count--;
whismanoid 17:9397ea3ea7e9 3726 }
whismanoid 17:9397ea3ea7e9 3727 break;
whismanoid 17:9397ea3ea7e9 3728 case '!':
whismanoid 17:9397ea3ea7e9 3729 // pause the entire action table
whismanoid 17:9397ea3ea7e9 3730 Datalogger_action_table_enabled = false;
whismanoid 17:9397ea3ea7e9 3731 break;
whismanoid 17:9397ea3ea7e9 3732 case '@':
whismanoid 17:9397ea3ea7e9 3733 // enable the entire action table
whismanoid 17:9397ea3ea7e9 3734 Datalogger_action_table_enabled = true;
whismanoid 17:9397ea3ea7e9 3735 break;
whismanoid 17:9397ea3ea7e9 3736 }
whismanoid 17:9397ea3ea7e9 3737 //
whismanoid 17:9397ea3ea7e9 3738 // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3739 if (Datalogger_action_table_enabled) {
whismanoid 17:9397ea3ea7e9 3740 cmdLine.serial().printf("Action table enabled; L@! to pause");
whismanoid 17:9397ea3ea7e9 3741 }
whismanoid 17:9397ea3ea7e9 3742 else {
whismanoid 17:9397ea3ea7e9 3743 cmdLine.serial().printf("Action table paused; L@@ to enable");
whismanoid 17:9397ea3ea7e9 3744 }
whismanoid 17:9397ea3ea7e9 3745 //~ cmdLine.serial().printf("\r\n Datalogger_action_table_row_count=%d", Datalogger_action_table_row_count);
whismanoid 17:9397ea3ea7e9 3746 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 3747 {
whismanoid 17:9397ea3ea7e9 3748 cmdLine.serial().printf("\r\n L@%d", i);
whismanoid 17:9397ea3ea7e9 3749 cmdLine.serial().printf(" act=%d", Datalogger_action_table[i].action);
whismanoid 17:9397ea3ea7e9 3750 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 3751 {
whismanoid 17:9397ea3ea7e9 3752 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 3753 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 3754 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 3755 break;
whismanoid 17:9397ea3ea7e9 3756 default:
whismanoid 17:9397ea3ea7e9 3757 case action_noop:
whismanoid 17:9397ea3ea7e9 3758 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 3759 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 3760 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 3761 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 3762 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 3763 break;
whismanoid 17:9397ea3ea7e9 3764 }
whismanoid 17:9397ea3ea7e9 3765 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 3766 {
whismanoid 17:9397ea3ea7e9 3767 case condition_always:
whismanoid 17:9397ea3ea7e9 3768 break;
whismanoid 17:9397ea3ea7e9 3769 default:
whismanoid 17:9397ea3ea7e9 3770 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 3771 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 3772 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 3773 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 3774 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 3775 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 3776 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 3777 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 3778 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 3779 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 3780 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 3781 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 3782 cmdLine.serial().printf(" if=%d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 3783 cmdLine.serial().printf(" ch=%d", Datalogger_action_table[i].condition_channel);
whismanoid 17:9397ea3ea7e9 3784 cmdLine.serial().printf(" x=%f", Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3785 break;
whismanoid 17:9397ea3ea7e9 3786 }
whismanoid 17:9397ea3ea7e9 3787 cmdLine.serial().printf(" -- ");
whismanoid 17:9397ea3ea7e9 3788 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 3789 {
whismanoid 17:9397ea3ea7e9 3790 case action_noop:
whismanoid 17:9397ea3ea7e9 3791 cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 3792 break;
whismanoid 17:9397ea3ea7e9 3793 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 3794 cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 3795 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 3796 break;
whismanoid 17:9397ea3ea7e9 3797 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 3798 cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 3799 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 3800 break;
whismanoid 17:9397ea3ea7e9 3801 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 3802 cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 3803 break;
whismanoid 17:9397ea3ea7e9 3804 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 3805 cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 3806 break;
whismanoid 17:9397ea3ea7e9 3807 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 3808 cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 3809 // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 3810 cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 3811 break;
whismanoid 17:9397ea3ea7e9 3812 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 3813 cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 3814 // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3815 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 3816 break;
whismanoid 17:9397ea3ea7e9 3817 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 3818 cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 3819 // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3820 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 3821 break;
whismanoid 17:9397ea3ea7e9 3822 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 3823 //~ cmdLine.serial().printf(" condition %d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 3824 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 3825 {
whismanoid 17:9397ea3ea7e9 3826 case condition_always:
whismanoid 17:9397ea3ea7e9 3827 cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 3828 break;
whismanoid 17:9397ea3ea7e9 3829 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 3830 cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3831 break;
whismanoid 17:9397ea3ea7e9 3832 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 3833 cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3834 break;
whismanoid 17:9397ea3ea7e9 3835 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 3836 cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 3837 break;
whismanoid 17:9397ea3ea7e9 3838 case condition_if_An_ge_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_le_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_ne_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_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 3848 cmdLine.serial().printf(" if AIN%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_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 3851 cmdLine.serial().printf(" if AIN%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_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 3854 cmdLine.serial().printf(" if AIN%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_ge_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_le_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_ne_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 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 3866 } // for ...Datalogger_action_table_row_count // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3867 cmdLine.serial().printf("\r\nAction table editing commands:");
whismanoid 17:9397ea3ea7e9 3868 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 3869 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 3870 cmdLine.serial().printf("\r\n L@+ act=4 if=1 ch=5 x=12345 -- add new entry at end of table");
whismanoid 17:9397ea3ea7e9 3871 }
whismanoid 17:9397ea3ea7e9 3872 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 3873 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 3874 cmdLine.serial().printf("\r\n L@%d act=4 if=1 ch=5 x=12345 -- edit row %d",
whismanoid 17:9397ea3ea7e9 3875 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 3876 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 3877 cmdLine.serial().printf("\r\n L@-%d -- delete row %d",
whismanoid 17:9397ea3ea7e9 3878 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 3879 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 3880 cmdLine.serial().printf("\r\n L@-~~~ -- delete all rows");
whismanoid 17:9397ea3ea7e9 3881 cmdLine.serial().printf("\r\n L@! -- pause entire action table");
whismanoid 17:9397ea3ea7e9 3882 cmdLine.serial().printf("\r\n L@@ -- enable action table");
whismanoid 17:9397ea3ea7e9 3883 }
whismanoid 17:9397ea3ea7e9 3884 //
whismanoid 17:9397ea3ea7e9 3885 } // case L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 3886 break;
whismanoid 17:9397ea3ea7e9 3887 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 3888 // LR -- Datalog free run as fast as possible
whismanoid 4:d9b05924ad4c 3889 case 'R': case 'r':
whismanoid 4:d9b05924ad4c 3890 // free run as fast as possible
whismanoid 8:dffee7509bfb 3891 Datalogger_Trigger = trigger_FreeRun;
whismanoid 8:dffee7509bfb 3892 Datalogger_Need_PrintHeader = true;
whismanoid 4:d9b05924ad4c 3893 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 9:45f98573eb6d 3894 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3895 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 3896 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3897 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3898 case 'S': case 's':
whismanoid 9:45f98573eb6d 3899 {
whismanoid 9:45f98573eb6d 3900 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 3901 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 3902 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 3903 )
whismanoid 9:45f98573eb6d 3904 {
whismanoid 9:45f98573eb6d 3905 // it's me
whismanoid 9:45f98573eb6d 3906 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 3907 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 3908 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 3909 {
whismanoid 9:45f98573eb6d 3910 case 'D': case 'd':
whismanoid 9:45f98573eb6d 3911 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Disable;
whismanoid 9:45f98573eb6d 3912 break;
whismanoid 9:45f98573eb6d 3913 case 'L': case 'l':
whismanoid 9:45f98573eb6d 3914 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 3915 break;
whismanoid 9:45f98573eb6d 3916 case 'V': case 'v':
whismanoid 9:45f98573eb6d 3917 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 3918 break;
whismanoid 9:45f98573eb6d 3919 //
whismanoid 9:45f98573eb6d 3920 //
whismanoid 9:45f98573eb6d 3921 // TODO: MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3922 case 'C': case 'c':
whismanoid 9:45f98573eb6d 3923 {
whismanoid 9:45f98573eb6d 3924 uint8_t hexValue = 0;
whismanoid 9:45f98573eb6d 3925 hexValue = hexValueOfChar(cmdLine[5]) * 0x10 + hexValueOfChar(cmdLine[6]);
whismanoid 9:45f98573eb6d 3926 switch (cmdLine[4])
whismanoid 9:45f98573eb6d 3927 {
whismanoid 9:45f98573eb6d 3928 //
whismanoid 9:45f98573eb6d 3929 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 3930 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34"));
whismanoid 9:45f98573eb6d 3931 case 'F': case 'f':
whismanoid 9:45f98573eb6d 3932 SPI_AIN_Cfg_v_filter_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 3933 break;
whismanoid 9:45f98573eb6d 3934 //
whismanoid 9:45f98573eb6d 3935 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3936 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 3937 case 'C': case 'c':
whismanoid 9:45f98573eb6d 3938 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 3939 break;
whismanoid 9:45f98573eb6d 3940 //
whismanoid 9:45f98573eb6d 3941 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 3942 // cmdLine.serial().print(F("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00"));
whismanoid 9:45f98573eb6d 3943 case 'P': case 'p':
whismanoid 9:45f98573eb6d 3944 SPI_AIN_Cfg_v_pga_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 3945 break;
whismanoid 9:45f98573eb6d 3946 //
whismanoid 9:45f98573eb6d 3947 // cmdLine.serial().print(F("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar"));
whismanoid 9:45f98573eb6d 3948 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3949 case 'U': case 'u':
whismanoid 9:45f98573eb6d 3950 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] | 0x40;
whismanoid 9:45f98573eb6d 3951 break;
whismanoid 9:45f98573eb6d 3952 //
whismanoid 9:45f98573eb6d 3953 // cmdLine.serial().print(F("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar"));
whismanoid 9:45f98573eb6d 3954 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3955 case 'B': case 'b':
whismanoid 9:45f98573eb6d 3956 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] &~ 0x40;
whismanoid 9:45f98573eb6d 3957 break;
whismanoid 9:45f98573eb6d 3958 }
whismanoid 9:45f98573eb6d 3959 break;
whismanoid 9:45f98573eb6d 3960 }
whismanoid 9:45f98573eb6d 3961 //
whismanoid 9:45f98573eb6d 3962 //
whismanoid 9:45f98573eb6d 3963 }
whismanoid 9:45f98573eb6d 3964 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 3965 } // end for channel_index
whismanoid 9:45f98573eb6d 3966 Datalogger_PrintHeader();
whismanoid 9:45f98573eb6d 3967 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 3968 }
whismanoid 9:45f98573eb6d 3969 break;
whismanoid 9:45f98573eb6d 3970 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3971 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 3972 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 3973 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3974 // verb: D for disable, V for Voltage, L for LSB
whismanoid 8:dffee7509bfb 3975 case 'A': case 'a':
whismanoid 9:45f98573eb6d 3976 {
whismanoid 9:45f98573eb6d 3977 // all-channel: loop through all valid channel_index, test cmdLine[2] 'is it me'?
whismanoid 9:45f98573eb6d 3978 // for channel_index loop through 0..NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 9:45f98573eb6d 3979 // if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 3980 // || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 3981 // ) {
whismanoid 9:45f98573eb6d 3982 // // it's me
whismanoid 9:45f98573eb6d 3983 // // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 3984 // // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 3985 // } end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 3986 // } end for channel_index
whismanoid 9:45f98573eb6d 3987 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
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 {
whismanoid 9:45f98573eb6d 3992 // it's me
whismanoid 9:45f98573eb6d 3993 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 3994 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 3995 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 3996 {
whismanoid 9:45f98573eb6d 3997 case 'D': case 'd':
whismanoid 9:45f98573eb6d 3998 Platform_Enable_ch[channel_index] = Platform_AIN_Disable;
whismanoid 9:45f98573eb6d 3999 break;
whismanoid 9:45f98573eb6d 4000 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4001 case 'L': case 'l':
whismanoid 9:45f98573eb6d 4002 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 4003 break;
whismanoid 9:45f98573eb6d 4004 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4005 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 4006 case 'V': case 'v':
whismanoid 9:45f98573eb6d 4007 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 4008 break;
whismanoid 9:45f98573eb6d 4009 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 4010 }
whismanoid 9:45f98573eb6d 4011 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 4012 } // end for channel_index
whismanoid 10:04022a61b527 4013 // Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 4014 if (Datalogger_enable_serial) {
whismanoid 9:45f98573eb6d 4015 Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 4016 }
whismanoid 9:45f98573eb6d 4017 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4018 if (Datalogger_enable_AUXserial) {
whismanoid 9:45f98573eb6d 4019 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 9:45f98573eb6d 4020 }
whismanoid 9:45f98573eb6d 4021 # endif // HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4022 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4023 if (Datalogger_enable_DAPLINKserial) {
whismanoid 9:45f98573eb6d 4024 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 9:45f98573eb6d 4025 }
whismanoid 9:45f98573eb6d 4026 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4027 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4028 }
whismanoid 8:dffee7509bfb 4029 break;
whismanoid 9:45f98573eb6d 4030 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 4031 case '>':
whismanoid 9:45f98573eb6d 4032 // L>A -- Datalogger_enable_AUXserial
whismanoid 9:45f98573eb6d 4033 // L>D -- Datalogger_enable_DAPLINKserial
whismanoid 9:45f98573eb6d 4034 // L>S -- Datalogger_enable_serial
whismanoid 9:45f98573eb6d 4035 switch (cmdLine[2])
whismanoid 9:45f98573eb6d 4036 {
whismanoid 9:45f98573eb6d 4037 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4038 case 'A': case 'a':
whismanoid 9:45f98573eb6d 4039 Datalogger_enable_AUXserial = !Datalogger_enable_AUXserial;
whismanoid 9:45f98573eb6d 4040 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4041 break;
whismanoid 8:dffee7509bfb 4042 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4043 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4044 case 'D': case 'd':
whismanoid 9:45f98573eb6d 4045 Datalogger_enable_DAPLINKserial = !Datalogger_enable_DAPLINKserial;
whismanoid 9:45f98573eb6d 4046 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4047 break;
whismanoid 8:dffee7509bfb 4048 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4049 case 'S': case 's':
whismanoid 9:45f98573eb6d 4050 Datalogger_enable_serial = !Datalogger_enable_serial;
whismanoid 9:45f98573eb6d 4051 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4052 break;
whismanoid 9:45f98573eb6d 4053 }
whismanoid 9:45f98573eb6d 4054 break; // case '>' L>S serial enable toggle
whismanoid 17:9397ea3ea7e9 4055 } // switch (cmdLine[1]) inside case 'L'
whismanoid 4:d9b05924ad4c 4056 }
whismanoid 4:d9b05924ad4c 4057 break; // case 'L'
whismanoid 4:d9b05924ad4c 4058 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 4059 //
whismanoid 4:d9b05924ad4c 4060 // Application-specific commands here
whismanoid 4:d9b05924ad4c 4061 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 4062 //
whismanoid 4:d9b05924ad4c 4063 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4064 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4065
whismanoid 4:d9b05924ad4c 4066 //
whismanoid 4:d9b05924ad4c 4067 // TODO1: add new commands here
whismanoid 4:d9b05924ad4c 4068 //
whismanoid 4:d9b05924ad4c 4069 default:
whismanoid 4:d9b05924ad4c 4070 #if APPLICATION_MAX5715 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4071 extern bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5715.cpp
whismanoid 4:d9b05924ad4c 4072 if (!MAX5715_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4073 #elif APPLICATION_MAX11131 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4074 extern bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11131.cpp
whismanoid 4:d9b05924ad4c 4075 if (!MAX11131_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4076 #elif APPLICATION_MAX5171 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4077 extern bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5171.cpp
whismanoid 4:d9b05924ad4c 4078 if (!MAX5171_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4079 #elif APPLICATION_MAX11410 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4080 extern bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp
whismanoid 4:d9b05924ad4c 4081 if (!MAX11410_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4082 #elif APPLICATION_MAX12345 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4083 extern bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX12345.cpp
whismanoid 4:d9b05924ad4c 4084 if (!MAX12345_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4085 #else
whismanoid 4:d9b05924ad4c 4086 if (0) // not_handled_by_device_submenu
whismanoid 4:d9b05924ad4c 4087 #endif
whismanoid 4:d9b05924ad4c 4088 {
whismanoid 4:d9b05924ad4c 4089 cmdLine.serial().printf("\r\n unknown command ");
whismanoid 4:d9b05924ad4c 4090 //~ cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 4091 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4092 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n",
whismanoid 4:d9b05924ad4c 4093 cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 4094 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4095 }
whismanoid 4:d9b05924ad4c 4096 } // switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 4097 //
whismanoid 4:d9b05924ad4c 4098 // print command prompt
whismanoid 8:dffee7509bfb 4099 // print_command_prompt();
whismanoid 8:dffee7509bfb 4100 cmdLine.serial().printf("\r\n> ");
whismanoid 4:d9b05924ad4c 4101 }
whismanoid 4:d9b05924ad4c 4102 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 4103
whismanoid 4:d9b05924ad4c 4104 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 4105 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 4106 void Datalogger_PrintHeader(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 4107 {
whismanoid 4:d9b05924ad4c 4108 // column header banner for csv data columns
whismanoid 4:d9b05924ad4c 4109 int field_index = 0;
whismanoid 4:d9b05924ad4c 4110 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4111 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 4112 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 4:d9b05924ad4c 4113 continue;
whismanoid 4:d9b05924ad4c 4114 }
whismanoid 4:d9b05924ad4c 4115 // comma between fields
whismanoid 4:d9b05924ad4c 4116 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 4117 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 4118 }
whismanoid 10:04022a61b527 4119 field_index++;
whismanoid 4:d9b05924ad4c 4120 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 4121 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 4122 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 4:d9b05924ad4c 4123 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 4:d9b05924ad4c 4124 cmdLine.serial().printf("\"AIN%d-%d_BIP", channel_index, channel_index+1);
whismanoid 4:d9b05924ad4c 4125 }
whismanoid 4:d9b05924ad4c 4126 else {
whismanoid 4:d9b05924ad4c 4127 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 4128 }
whismanoid 4:d9b05924ad4c 4129 #else // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 4130 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 4131 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 4132 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_LSB) {
whismanoid 4:d9b05924ad4c 4133 // _LSB column header suffix
whismanoid 13:184a08909405 4134 cmdLine.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 4135 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4136 cmdLine_DAPLINKserial.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 4137 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4138 }
whismanoid 10:04022a61b527 4139 else if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_Volt) {
whismanoid 4:d9b05924ad4c 4140 // _V column header suffix
whismanoid 13:184a08909405 4141 cmdLine.serial().printf("_V");
whismanoid 4:d9b05924ad4c 4142 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4143 cmdLine_DAPLINKserial.serial().printf("_V");
whismanoid 4:d9b05924ad4c 4144 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4145 }
whismanoid 13:184a08909405 4146 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4147 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4148 if (SPI_AIN_customChannelHeader_ch[channel_index] && SPI_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 4149 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 4150 cmdLine.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4151 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4152 cmdLine_DAPLINKserial.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4153 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4154 } else {
whismanoid 13:184a08909405 4155 // no custom channel name for this channel
whismanoid 13:184a08909405 4156 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 4157 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4158 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 4159 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4160 }
whismanoid 13:184a08909405 4161 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 4162 // close quote
whismanoid 13:184a08909405 4163 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 4164 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4165 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 4166 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4167 }
whismanoid 4:d9b05924ad4c 4168
whismanoid 4:d9b05924ad4c 4169 #if VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 4170 // PART_ID field: Device ID Validation
whismanoid 4:d9b05924ad4c 4171 cmdLine.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 4172 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4173 cmdLine_DAPLINKserial.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 4174 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4175 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 4176 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 4177 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 4178 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 4179 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 4180 continue;
whismanoid 9:45f98573eb6d 4181 }
whismanoid 4:d9b05924ad4c 4182 // comma between fields
whismanoid 4:d9b05924ad4c 4183 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 4184 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 4185 }
whismanoid 9:45f98573eb6d 4186 field_index++;
whismanoid 4:d9b05924ad4c 4187 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 4188 cmdLine.serial().printf("\"A%d", channel_index);
whismanoid 9:45f98573eb6d 4189 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 9:45f98573eb6d 4190 // _LSB column header suffix
whismanoid 13:184a08909405 4191 cmdLine.serial().printf("_LSB");
whismanoid 9:45f98573eb6d 4192 }
whismanoid 9:45f98573eb6d 4193 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 4194 // _V column header suffix
whismanoid 13:184a08909405 4195 cmdLine.serial().printf("_V");
whismanoid 9:45f98573eb6d 4196 }
whismanoid 13:184a08909405 4197 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4198 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 4199 if (Platform_AIN_customChannelHeader_ch[channel_index] && Platform_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 4200 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 4201 cmdLine.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4202 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4203 cmdLine_DAPLINKserial.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 4204 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4205 } else {
whismanoid 13:184a08909405 4206 // no custom channel name for this channel
whismanoid 13:184a08909405 4207 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 4208 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4209 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 4210 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4211 }
whismanoid 13:184a08909405 4212 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 4213 // close quote
whismanoid 13:184a08909405 4214 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 4215 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 4216 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 4217 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4218 }
whismanoid 4:d9b05924ad4c 4219 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 4:d9b05924ad4c 4220 // end of column header line
whismanoid 4:d9b05924ad4c 4221 cmdLine.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 4222 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4223 cmdLine_DAPLINKserial.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 4224 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 4225 } // void Datalogger_PrintHeader()
whismanoid 4:d9b05924ad4c 4226
whismanoid 5:aaf8b5f5fda1 4227 //--------------------------------------------------
whismanoid 5:aaf8b5f5fda1 4228 void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 4229 {
whismanoid 5:aaf8b5f5fda1 4230 // CODE GENERATOR: example code: has no member function ScanStandardExternalClock
whismanoid 5:aaf8b5f5fda1 4231 // CODE GENERATOR: example code: has no member function ReadAINcode
whismanoid 5:aaf8b5f5fda1 4232 // CODE GENERATOR: example code: member function Read_All_Voltages
whismanoid 5:aaf8b5f5fda1 4233 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4234 // Measure ADC channels in sequence from AIN0 to channelNumber_0_9.
whismanoid 5:aaf8b5f5fda1 4235 // @param[in] g_MAX11410_device.channelNumber_0_15: AIN Channel Number
whismanoid 5:aaf8b5f5fda1 4236 // @param[in] g_MAX11410_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 5:aaf8b5f5fda1 4237 // @param[in] g_MAX11410_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 10:04022a61b527 4238 //~ int channelId_0_9 = NUM_DUT_ANALOG_IN_CHANNELS-1+1;
whismanoid 5:aaf8b5f5fda1 4239 //g_MAX11410_device.channelNumber_0_15 = channelId_0_9;
whismanoid 5:aaf8b5f5fda1 4240 //g_MAX11410_device.PowerManagement_0_2 = 0;
whismanoid 5:aaf8b5f5fda1 4241 //g_MAX11410_device.chan_id_0_1 = 1;
whismanoid 5:aaf8b5f5fda1 4242 //----------------------------------------
whismanoid 5:aaf8b5f5fda1 4243 // scan AIN0..AIN9
whismanoid 5:aaf8b5f5fda1 4244 //
whismanoid 10:04022a61b527 4245 #if 1
whismanoid 10:04022a61b527 4246 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 4247 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 4248 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 4249 //
whismanoid 10:04022a61b527 4250 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4251 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc3); // GP1 = 0
whismanoid 10:04022a61b527 4252 //
whismanoid 10:04022a61b527 4253 int field_index = 0;
whismanoid 10:04022a61b527 4254 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 4255 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 10:04022a61b527 4256 continue;
whismanoid 10:04022a61b527 4257 }
whismanoid 10:04022a61b527 4258 field_index++;
whismanoid 10:04022a61b527 4259 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[channel_index];
whismanoid 10:04022a61b527 4260 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[channel_index];
whismanoid 10:04022a61b527 4261 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[channel_index];
whismanoid 10:04022a61b527 4262 //
whismanoid 10:04022a61b527 4263 // WIP SampleRate_of_FILTER_CONV_START() MAX11410EMC-FW slow ODR 10Sps #262
whismanoid 10:04022a61b527 4264 // adjust the MAX11410.loop_limit value if the sample rate is set to a value slower than 20sps
whismanoid 10:04022a61b527 4265 // SampleRate_of_FILTER_CONV_START(uint8_t FILTER_RegValue, uint8_t CONV_START_RegValue)
whismanoid 10:04022a61b527 4266 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 4267 if (SampleRate < 20.0) {
whismanoid 10:04022a61b527 4268 g_MAX11410_device.loop_limit = 32767; // TODO: is this timeout long enough for the slow output data rates?
whismanoid 10:04022a61b527 4269 }
whismanoid 10:04022a61b527 4270 //
whismanoid 10:04022a61b527 4271 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4272 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc3); // GP0 = 0
whismanoid 10:04022a61b527 4273 //
whismanoid 10:04022a61b527 4274 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 4275 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 10:04022a61b527 4276 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 10:04022a61b527 4277 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 4278 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = (MAX11410::MAX11410_AINN_SEL_enum_t)(channel_index^1);
whismanoid 10:04022a61b527 4279 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 4280 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 4281 }
whismanoid 10:04022a61b527 4282 else {
whismanoid 10:04022a61b527 4283 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 4284 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = MAX11410::AINN_SEL_1010_GND;
whismanoid 10:04022a61b527 4285 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 4286 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 4287 }
whismanoid 10:04022a61b527 4288 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 4289 //
whismanoid 10:04022a61b527 4290 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4291 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc4); // GP0 = 1
whismanoid 10:04022a61b527 4292 //
whismanoid 10:04022a61b527 4293 }
whismanoid 10:04022a61b527 4294 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 4295 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc4); // GP1 = 1
whismanoid 10:04022a61b527 4296 #else
whismanoid 5:aaf8b5f5fda1 4297 g_MAX11410_device.Read_All_Voltages();
whismanoid 10:04022a61b527 4298 #endif
whismanoid 10:04022a61b527 4299 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4300 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 4301 // mbed
whismanoid 5:aaf8b5f5fda1 4302 // Platform board uses simple analog inputs
whismanoid 5:aaf8b5f5fda1 4303 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 5:aaf8b5f5fda1 4304 Platform_LSB[0] = analogIn0.read();
whismanoid 5:aaf8b5f5fda1 4305 Platform_LSB[1] = analogIn1.read();
whismanoid 5:aaf8b5f5fda1 4306 Platform_LSB[2] = analogIn2.read();
whismanoid 5:aaf8b5f5fda1 4307 Platform_LSB[3] = analogIn3.read();
whismanoid 5:aaf8b5f5fda1 4308 Platform_LSB[4] = analogIn4.read();
whismanoid 5:aaf8b5f5fda1 4309 Platform_LSB[5] = analogIn5.read();
whismanoid 10:04022a61b527 4310 #endif
whismanoid 10:04022a61b527 4311 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 5:aaf8b5f5fda1 4312 Platform_Voltage[0] = analogIn0.read() * adc_full_scale_voltage[0];
whismanoid 5:aaf8b5f5fda1 4313 Platform_Voltage[1] = analogIn1.read() * adc_full_scale_voltage[1];
whismanoid 5:aaf8b5f5fda1 4314 Platform_Voltage[2] = analogIn2.read() * adc_full_scale_voltage[2];
whismanoid 5:aaf8b5f5fda1 4315 Platform_Voltage[3] = analogIn3.read() * adc_full_scale_voltage[3];
whismanoid 5:aaf8b5f5fda1 4316 Platform_Voltage[4] = analogIn4.read() * adc_full_scale_voltage[4];
whismanoid 5:aaf8b5f5fda1 4317 Platform_Voltage[5] = analogIn5.read() * adc_full_scale_voltage[5];
whismanoid 5:aaf8b5f5fda1 4318 #endif
whismanoid 5:aaf8b5f5fda1 4319 #endif // defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 4320
whismanoid 5:aaf8b5f5fda1 4321 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4322 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 4323 const uint32_t part_id_expect = 0x000F02;
whismanoid 5:aaf8b5f5fda1 4324 uint32_t part_id_readback;
whismanoid 5:aaf8b5f5fda1 4325 g_MAX11410_device.RegRead(MAX11410::CMD_r001_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xddd_PART_ID, &part_id_readback);
whismanoid 5:aaf8b5f5fda1 4326 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4327 } // void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 4328
whismanoid 17:9397ea3ea7e9 4329 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4330 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 4331 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 4332 void Datalogger_RunActionTable()
whismanoid 17:9397ea3ea7e9 4333 {
whismanoid 17:9397ea3ea7e9 4334 if (Datalogger_action_table_enabled == false) {
whismanoid 17:9397ea3ea7e9 4335 return;
whismanoid 17:9397ea3ea7e9 4336 }
whismanoid 17:9397ea3ea7e9 4337 // TODO: verbose Datalogger_RunActionTable() emit a csv column ,"Action"
whismanoid 17:9397ea3ea7e9 4338 // TODO: assert Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX
whismanoid 17:9397ea3ea7e9 4339 // for Datalogger_action_table[0..Datalogger_action_table_row_count]
whismanoid 17:9397ea3ea7e9 4340 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 4341 {
whismanoid 17:9397ea3ea7e9 4342 // skip if Datalogger_action_table[i].action == action_noop
whismanoid 17:9397ea3ea7e9 4343 if (Datalogger_action_table[i].action == action_noop) {
whismanoid 17:9397ea3ea7e9 4344 continue;
whismanoid 17:9397ea3ea7e9 4345 }
whismanoid 17:9397ea3ea7e9 4346 // TODO: test Datalogger_action_table[i].condition "if="
whismanoid 17:9397ea3ea7e9 4347 // TODO: Could the .condition field also distinguish Platform ADC from SPI ADC?
whismanoid 17:9397ea3ea7e9 4348 // That way we keep both sets of ADC channels in separate lists
whismanoid 17:9397ea3ea7e9 4349 // if=0 -- always
whismanoid 17:9397ea3ea7e9 4350 // if=1,2,3,4,5,6 -- Platform_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 4351 // if=7,8,9,10,11,12 -- SPI_AIN_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 4352 // also, are we comparing code or voltage?
whismanoid 17:9397ea3ea7e9 4353 // TODO: selected Datalogger_action_table[i].condition_channel
whismanoid 17:9397ea3ea7e9 4354 // Datalogger could have both platform ADC and external SPI ADC channels
whismanoid 17:9397ea3ea7e9 4355 // if SPI_ADC_DeviceName
whismanoid 17:9397ea3ea7e9 4356 // NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 4357 // SPI_AIN_Enable_ch[]
whismanoid 17:9397ea3ea7e9 4358 // SPI_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 4359 // SPI_AIN_Voltage[]
whismanoid 17:9397ea3ea7e9 4360 // if LOG_PLATFORM_AIN
whismanoid 17:9397ea3ea7e9 4361 // NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 4362 // analogInPin_fullScaleVoltage[]
whismanoid 17:9397ea3ea7e9 4363 // Platform_Enable_ch[]
whismanoid 17:9397ea3ea7e9 4364 // Platform_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 4365 // Platform_Voltage[]
whismanoid 17:9397ea3ea7e9 4366 // TODO: selected Datalogger_action_table[i].condition_threshold
whismanoid 17:9397ea3ea7e9 4367 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 4368 {
whismanoid 17:9397ea3ea7e9 4369 case condition_always:
whismanoid 17:9397ea3ea7e9 4370 //~ cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 4371 break;
whismanoid 17:9397ea3ea7e9 4372 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 4373 //~ cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4374 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4375 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4376 continue;
whismanoid 17:9397ea3ea7e9 4377 }
whismanoid 17:9397ea3ea7e9 4378 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4379 break;
whismanoid 17:9397ea3ea7e9 4380 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 4381 //~ cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4382 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4383 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4384 continue;
whismanoid 17:9397ea3ea7e9 4385 }
whismanoid 17:9397ea3ea7e9 4386 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4387 break;
whismanoid 17:9397ea3ea7e9 4388 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 4389 //~ cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4390 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4391 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4392 continue;
whismanoid 17:9397ea3ea7e9 4393 }
whismanoid 17:9397ea3ea7e9 4394 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4395 break;
whismanoid 17:9397ea3ea7e9 4396 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 4397 //~ cmdLine.serial().printf(" if A%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4398 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4399 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4400 continue;
whismanoid 17:9397ea3ea7e9 4401 }
whismanoid 17:9397ea3ea7e9 4402 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4403 break;
whismanoid 17:9397ea3ea7e9 4404 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 4405 //~ cmdLine.serial().printf(" if A%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4406 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4407 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4408 continue;
whismanoid 17:9397ea3ea7e9 4409 }
whismanoid 17:9397ea3ea7e9 4410 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 4411 break;
whismanoid 17:9397ea3ea7e9 4412 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 4413 //~ cmdLine.serial().printf(" if A%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4414 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 4415 #endif // defined(LOG_PLATFORM_AIN)
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 break;
whismanoid 17:9397ea3ea7e9 4420 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 4421 //~ cmdLine.serial().printf(" if AIN%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4422 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4423 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4424 continue;
whismanoid 17:9397ea3ea7e9 4425 }
whismanoid 17:9397ea3ea7e9 4426 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4427 break;
whismanoid 17:9397ea3ea7e9 4428 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 4429 //~ cmdLine.serial().printf(" if AIN%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4430 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4431 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4432 continue;
whismanoid 17:9397ea3ea7e9 4433 }
whismanoid 17:9397ea3ea7e9 4434 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4435 break;
whismanoid 17:9397ea3ea7e9 4436 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 4437 //~ cmdLine.serial().printf(" if AIN%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4438 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4439 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4440 continue;
whismanoid 17:9397ea3ea7e9 4441 }
whismanoid 17:9397ea3ea7e9 4442 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4443 break;
whismanoid 17:9397ea3ea7e9 4444 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 4445 //~ cmdLine.serial().printf(" if AIN%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4446 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4447 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4448 continue;
whismanoid 17:9397ea3ea7e9 4449 }
whismanoid 17:9397ea3ea7e9 4450 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4451 break;
whismanoid 17:9397ea3ea7e9 4452 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 4453 //~ cmdLine.serial().printf(" if AIN%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4454 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4455 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4456 continue;
whismanoid 17:9397ea3ea7e9 4457 }
whismanoid 17:9397ea3ea7e9 4458 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4459 break;
whismanoid 17:9397ea3ea7e9 4460 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 4461 //~ cmdLine.serial().printf(" if AIN%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4462 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4463 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 4464 continue;
whismanoid 17:9397ea3ea7e9 4465 }
whismanoid 17:9397ea3ea7e9 4466 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 4467 break;
whismanoid 17:9397ea3ea7e9 4468 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 4469 // selected Datalogger_action_table[i].digitalOutPin
whismanoid 17:9397ea3ea7e9 4470 // perform selected Datalogger_action_table[i].action
whismanoid 17:9397ea3ea7e9 4471 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 4472 {
whismanoid 17:9397ea3ea7e9 4473 case action_noop:
whismanoid 17:9397ea3ea7e9 4474 //~ cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 4475 break;
whismanoid 17:9397ea3ea7e9 4476 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 4477 {
whismanoid 17:9397ea3ea7e9 4478 //~ cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 4479 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 4480 // perform action digitalOutLow
whismanoid 17:9397ea3ea7e9 4481 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 4482 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 4483 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4484 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4485 #else
whismanoid 17:9397ea3ea7e9 4486 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 4487 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 4488 digitalInOutPin.write(0);
whismanoid 17:9397ea3ea7e9 4489 #endif
whismanoid 17:9397ea3ea7e9 4490 }
whismanoid 17:9397ea3ea7e9 4491 break;
whismanoid 17:9397ea3ea7e9 4492 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 4493 {
whismanoid 17:9397ea3ea7e9 4494 //~ cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 4495 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 4496 // perform action digitalOutHigh
whismanoid 17:9397ea3ea7e9 4497 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 4498 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 4499 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4500 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 4501 #else
whismanoid 17:9397ea3ea7e9 4502 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 4503 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 4504 digitalInOutPin.write(1);
whismanoid 17:9397ea3ea7e9 4505 #endif
whismanoid 17:9397ea3ea7e9 4506 }
whismanoid 17:9397ea3ea7e9 4507 break;
whismanoid 17:9397ea3ea7e9 4508 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 4509 //~ cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 4510 // perform action trigger_Halt
whismanoid 17:9397ea3ea7e9 4511 Datalogger_Trigger = trigger_Halt;
whismanoid 17:9397ea3ea7e9 4512 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4513 break;
whismanoid 17:9397ea3ea7e9 4514 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 4515 //~ cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 4516 // perform action trigger_FreeRun
whismanoid 17:9397ea3ea7e9 4517 Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 4518 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4519 break;
whismanoid 17:9397ea3ea7e9 4520 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 4521 //~ cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 4522 //~ // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 4523 //~ cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 4524 // perform action trigger_Timer
whismanoid 17:9397ea3ea7e9 4525 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 4526 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4527 break;
whismanoid 17:9397ea3ea7e9 4528 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 4529 //~ cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 4530 //~ // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 4531 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 4532 // TODO: perform action action_trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 4533 Datalogger_Trigger = trigger_PlatformDigitalInput;
whismanoid 17:9397ea3ea7e9 4534 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4535 break;
whismanoid 17:9397ea3ea7e9 4536 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 4537 //~ cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 4538 //~ // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 4539 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 4540 // TODO: perform action action_trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 4541 Datalogger_Trigger = trigger_SPIDeviceRegRead;
whismanoid 17:9397ea3ea7e9 4542 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4543 break;
whismanoid 17:9397ea3ea7e9 4544 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 4545 // consider next row of action table
whismanoid 17:9397ea3ea7e9 4546 } // for ...Datalogger_action_table_row_count
whismanoid 17:9397ea3ea7e9 4547 }
whismanoid 17:9397ea3ea7e9 4548 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4549
whismanoid 5:aaf8b5f5fda1 4550 //--------------------------------------------------
whismanoid 8:dffee7509bfb 4551 void Datalogger_PrintRow(CmdLine& cmdLine)
whismanoid 5:aaf8b5f5fda1 4552 {
whismanoid 5:aaf8b5f5fda1 4553 int field_index = 0;
whismanoid 5:aaf8b5f5fda1 4554 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4555 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 4556 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 5:aaf8b5f5fda1 4557 continue;
whismanoid 5:aaf8b5f5fda1 4558 }
whismanoid 5:aaf8b5f5fda1 4559 // comma between fields
whismanoid 5:aaf8b5f5fda1 4560 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 4561 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 4562 }
whismanoid 10:04022a61b527 4563 field_index++;
whismanoid 10:04022a61b527 4564 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 10:04022a61b527 4565 cmdLine.serial().printf("%d", g_MAX11410_device.AINcode[channel_index]);
whismanoid 10:04022a61b527 4566 }
whismanoid 10:04022a61b527 4567 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 10:04022a61b527 4568 // TODO: report Voltage instead of LSB
whismanoid 10:04022a61b527 4569 // Serial.print(SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 4570 static char strOutLineBuffer[16];
whismanoid 10:04022a61b527 4571 cmdLine.serial().printf("%6.6f", SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 4572 }
whismanoid 5:aaf8b5f5fda1 4573 }
whismanoid 5:aaf8b5f5fda1 4574 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4575 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 4576 if (part_id_readback != part_id_expect) {
whismanoid 5:aaf8b5f5fda1 4577 cmdLine.serial().printf(",\"FAIL\"");
whismanoid 9:45f98573eb6d 4578 need_reinit = true;
whismanoid 5:aaf8b5f5fda1 4579 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4580 g_MAX11410_device.Init();
whismanoid 5:aaf8b5f5fda1 4581 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 5:aaf8b5f5fda1 4582 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 5:aaf8b5f5fda1 4583 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 5:aaf8b5f5fda1 4584 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4585 }
whismanoid 5:aaf8b5f5fda1 4586 else {
whismanoid 5:aaf8b5f5fda1 4587 cmdLine.serial().printf(",\"OK\"");
whismanoid 5:aaf8b5f5fda1 4588 }
whismanoid 5:aaf8b5f5fda1 4589 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 4590 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 4591 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 4592 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 4593 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 4594 continue;
whismanoid 9:45f98573eb6d 4595 }
whismanoid 5:aaf8b5f5fda1 4596 // comma between fields
whismanoid 5:aaf8b5f5fda1 4597 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 4598 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 4599 }
whismanoid 9:45f98573eb6d 4600 field_index++;
whismanoid 9:45f98573eb6d 4601 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 5:aaf8b5f5fda1 4602 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4603 cmdLine.serial().printf("%u", Platform_LSB[channel_index]);
whismanoid 9:45f98573eb6d 4604 #endif
whismanoid 9:45f98573eb6d 4605 }
whismanoid 9:45f98573eb6d 4606 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 4607 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 11:2b8adc78618a 4608 // Datalog Volts omit V suffix from numbers #275
whismanoid 11:2b8adc78618a 4609 // because Excel graphs can't handle numbers that have a suffix.
whismanoid 11:2b8adc78618a 4610 cmdLine.serial().printf("%6.6f", Platform_Voltage[channel_index]);
whismanoid 9:45f98573eb6d 4611 #endif
whismanoid 9:45f98573eb6d 4612 }
whismanoid 5:aaf8b5f5fda1 4613 }
whismanoid 5:aaf8b5f5fda1 4614 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 4615 if (need_reinit) {
whismanoid 9:45f98573eb6d 4616 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4617 if (g_MAX11410_device.Init() == 0) {
whismanoid 9:45f98573eb6d 4618 //~ cmdLine.serial().printf(",\"Init() failed\"");
whismanoid 9:45f98573eb6d 4619 } else {
whismanoid 9:45f98573eb6d 4620 //~ cmdLine.serial().printf(",\"Init() success\"");
whismanoid 9:45f98573eb6d 4621 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 4622 // in Datalogger_PrintRow(), when part_id test fails,
whismanoid 9:45f98573eb6d 4623 // apply list of custom register writes after re-init
whismanoid 9:45f98573eb6d 4624 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 4625 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 9:45f98573eb6d 4626 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 9:45f98573eb6d 4627 uint32_t regData = custom_reg_init_data[index];
whismanoid 9:45f98573eb6d 4628 cmdLine.serial().printf("*%s=0x%06.6x", g_MAX11410_device.RegName(regAddress), regData);
whismanoid 9:45f98573eb6d 4629 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 9:45f98573eb6d 4630 }
whismanoid 9:45f98573eb6d 4631 #endif // USE_CUSTOM_REG_INIT
whismanoid 9:45f98573eb6d 4632 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 9:45f98573eb6d 4633 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 9:45f98573eb6d 4634 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 9:45f98573eb6d 4635 need_reinit = false;
whismanoid 9:45f98573eb6d 4636 }
whismanoid 9:45f98573eb6d 4637 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4638 need_reinit = false;
whismanoid 9:45f98573eb6d 4639 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4640 }
whismanoid 5:aaf8b5f5fda1 4641 cmdLine.serial().printf("\r\n");
whismanoid 9:45f98573eb6d 4642 if (need_reinit) {
whismanoid 9:45f98573eb6d 4643 //~ delay(500); // platform_delay_ms 500ms timing delay function
whismanoid 9:45f98573eb6d 4644 }
whismanoid 5:aaf8b5f5fda1 4645 } // void Datalogger_PrintRow()
whismanoid 5:aaf8b5f5fda1 4646
whismanoid 0:cb44e2e9ec4c 4647 // example code main function
whismanoid 0:cb44e2e9ec4c 4648 int main()
whismanoid 0:cb44e2e9ec4c 4649 {
whismanoid 0:cb44e2e9ec4c 4650 // setup: put your setup code here, to run once
whismanoid 4:d9b05924ad4c 4651 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 4652 // Configure serial ports
whismanoid 4:d9b05924ad4c 4653 cmdLine.clear();
whismanoid 4:d9b05924ad4c 4654 //~ cmdLine.serial().printf("\r\n cmdLine.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 4655 cmdLine.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 4656 //~ cmdLine.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 4:d9b05924ad4c 4657 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 4:d9b05924ad4c 4658 //~ cmdLine.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 4659 //~ cmdLine.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 4660 //~ cmdLine.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 4661 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4662 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4663 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 4664 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 4665 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 4666 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 4667 # else
whismanoid 10:04022a61b527 4668 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 4669 DAPLINKserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 4670 # endif
whismanoid 10:04022a61b527 4671 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 4672 cmdLine_DAPLINKserial.clear();
whismanoid 4:d9b05924ad4c 4673 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 4674 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 4675 //~ cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 4676 //~ cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 4677 //~ cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 4678 # endif
whismanoid 6:f6d16658342b 4679 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4680 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 10:04022a61b527 4681 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4682 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 4683 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 4684 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 4685 AUXserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 4686 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 6:f6d16658342b 4687 cmdLine_AUXserial.clear();
whismanoid 6:f6d16658342b 4688 //~ cmdLine_AUXserial.serial().printf("\r\n cmdLine_AUXserial.serial().printf test\r\n");
whismanoid 6:f6d16658342b 4689 cmdLine_AUXserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 6:f6d16658342b 4690 //~ cmdLine_AUXserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 6:f6d16658342b 4691 //~ cmdLine_AUXserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 6:f6d16658342b 4692 //~ cmdLine_AUXserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 6:f6d16658342b 4693 # endif // HAS_AUX_SERIAL
whismanoid 4:d9b05924ad4c 4694 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 0:cb44e2e9ec4c 4695
whismanoid 0:cb44e2e9ec4c 4696 // example code: serial port banner message
whismanoid 0:cb44e2e9ec4c 4697 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 4698 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4699 cmdLine.serial().printf("\r\nDataLogger_MAX11410\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 4700 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4701 cmdLine.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 4702 # if HAS_DAPLINK_SERIAL
whismanoid 3:9055e17e181a 4703 cmdLine_DAPLINKserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 4704 # endif // HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 4705 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4706 cmdLine_AUXserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 6:f6d16658342b 4707 # endif // HAS_AUX_SERIAL
whismanoid 3:9055e17e181a 4708 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4709
whismanoid 1:747f1602abfc 4710 // CODE GENERATOR: get spi properties from device
whismanoid 3:9055e17e181a 4711 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4712 if (g_SPI_SCLK_Hz > g_MAX11410_device.get_spi_frequency())
whismanoid 3:9055e17e181a 4713 { // Device limits SPI SCLK frequency
whismanoid 3:9055e17e181a 4714 g_SPI_SCLK_Hz = g_MAX11410_device.get_spi_frequency();
whismanoid 3:9055e17e181a 4715 cmdLine.serial().printf("\r\nMAX11410 limits SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 4716
whismanoid 3:9055e17e181a 4717 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 4718 }
whismanoid 3:9055e17e181a 4719 if (g_MAX11410_device.get_spi_frequency() > g_SPI_SCLK_Hz)
whismanoid 3:9055e17e181a 4720 { // Platform limits SPI SCLK frequency
whismanoid 3:9055e17e181a 4721 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 4722 cmdLine.serial().printf("\r\nPlatform limits MAX11410 SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 4723
whismanoid 3:9055e17e181a 4724 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 4725 }
whismanoid 0:cb44e2e9ec4c 4726 // g_SPI_dataMode = g_MAX11410_device.get_spi_dataMode();
whismanoid 3:9055e17e181a 4727 while (g_MAX11410_device.Init() == 0)
whismanoid 3:9055e17e181a 4728 {
whismanoid 3:9055e17e181a 4729 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 4730 cmdLine.serial().printf("\r\nMAX11410 Init failed; retry...\r\n");
whismanoid 3:9055e17e181a 4731
whismanoid 3:9055e17e181a 4732 }
whismanoid 0:cb44e2e9ec4c 4733
whismanoid 0:cb44e2e9ec4c 4734 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 3:9055e17e181a 4735 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4736 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 3:9055e17e181a 4737 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 3:9055e17e181a 4738 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 3:9055e17e181a 4739 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4740 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 3:9055e17e181a 4741 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4742 // CODE GENERATOR: example code: has no member function REF
whismanoid 0:cb44e2e9ec4c 4743 // CODE GENERATOR: example code for ADC: repeat-forever convert and print conversion result, one record per line
whismanoid 0:cb44e2e9ec4c 4744 // CODE GENERATOR: ResolutionBits = 24
whismanoid 0:cb44e2e9ec4c 4745 // CODE GENERATOR: FScode = 0xffffff
whismanoid 0:cb44e2e9ec4c 4746 // CODE GENERATOR: NumChannels = 10
whismanoid 0:cb44e2e9ec4c 4747 // CODE GENERATOR: banner before DataLogHelloCppCodeList while(1)
whismanoid 3:9055e17e181a 4748 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 4749 cmdLine.serial().printf("v_filter = 0x%2.2x\r\n", g_MAX11410_device.v_filter);
whismanoid 0:cb44e2e9ec4c 4750
whismanoid 3:9055e17e181a 4751 cmdLine.serial().printf("v_pga = 0x%2.2x\r\n", g_MAX11410_device.v_pga);
whismanoid 0:cb44e2e9ec4c 4752
whismanoid 3:9055e17e181a 4753 cmdLine.serial().printf("v_ctrl = 0x%2.2x\r\n", g_MAX11410_device.v_ctrl);
whismanoid 3:9055e17e181a 4754
whismanoid 3:9055e17e181a 4755 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 4756
whismanoid 3:9055e17e181a 4757 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 4758 Datalogger_Need_PrintHeader = true;
whismanoid 10:04022a61b527 4759
whismanoid 12:2dfc1f2009e0 4760 #if USE_LEDS
whismanoid 12:2dfc1f2009e0 4761 #if defined(TARGET_MAX32630)
whismanoid 12:2dfc1f2009e0 4762 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 4763 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4764 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 4765 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4766 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 4767 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4768 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 4769 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4770 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 4771 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4772 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 4773 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4774 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 4775 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4776 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 4777 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 19:5ff09c8e9daf 4778 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 12:2dfc1f2009e0 4779 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 4780 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4781 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 4782 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4783 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 4784 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4785 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 4786 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4787 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 4788 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4789 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 4790 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4791 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 4792 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4793 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 4794 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 4795 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 12:2dfc1f2009e0 4796 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 4797 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4798 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4799 led4 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4800 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4801 //led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 4802 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 4803 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4804 led1 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4805 //led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 4806 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 4807 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4808 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4809 //led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 4810 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 4811 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 4812 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 4813 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 4814 //
whismanoid 12:2dfc1f2009e0 4815 #endif // target definition
whismanoid 12:2dfc1f2009e0 4816 #endif
whismanoid 12:2dfc1f2009e0 4817
whismanoid 12:2dfc1f2009e0 4818 if (led1.is_connected()) {
whismanoid 12:2dfc1f2009e0 4819 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 4820 }
whismanoid 12:2dfc1f2009e0 4821 if (led2.is_connected()) {
whismanoid 12:2dfc1f2009e0 4822 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 4823 }
whismanoid 12:2dfc1f2009e0 4824 if (led3.is_connected()) {
whismanoid 12:2dfc1f2009e0 4825 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 4826 }
whismanoid 12:2dfc1f2009e0 4827
whismanoid 4:d9b05924ad4c 4828 while(1) { // this code repeats forever
whismanoid 4:d9b05924ad4c 4829 // this code repeats forever
whismanoid 4:d9b05924ad4c 4830
whismanoid 4:d9b05924ad4c 4831 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 4832 // TODO support CmdLine command menus (like on Serial_Tester); help and usual boilerplate
whismanoid 10:04022a61b527 4833 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4834 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 4835 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 4836 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4837 // Accept commands from Auxiliary serial port
whismanoid 6:f6d16658342b 4838 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4839 if (AUXserial.readable()) {
whismanoid 6:f6d16658342b 4840 cmdLine_AUXserial.append(AUXserial.getc());
whismanoid 6:f6d16658342b 4841 }
whismanoid 6:f6d16658342b 4842 # endif // HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 4843 # if HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 4844 if (DAPLINKserial.readable()) {
whismanoid 6:f6d16658342b 4845 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 6:f6d16658342b 4846 }
whismanoid 6:f6d16658342b 4847 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4848 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 4849 if (serial.readable()) {
whismanoid 4:d9b05924ad4c 4850 int c = serial.getc(); // instead of getc() or fgetc()
whismanoid 4:d9b05924ad4c 4851 cmdLine.append(c);
whismanoid 4:d9b05924ad4c 4852 // cmdLine.onEOLcommandParser handler implements menus
whismanoid 4:d9b05924ad4c 4853 } // if (Serial.available())
whismanoid 4:d9b05924ad4c 4854 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 4855
whismanoid 4:d9b05924ad4c 4856 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 4857 // TODO Datalog trigger
whismanoid 4:d9b05924ad4c 4858 if (Datalogger_Trigger == trigger_Halt) {
whismanoid 4:d9b05924ad4c 4859 // halt the datalogger; continue accepting commands
whismanoid 3:9055e17e181a 4860 continue;
whismanoid 3:9055e17e181a 4861 }
whismanoid 4:d9b05924ad4c 4862 if (Datalogger_Trigger == trigger_FreeRun) {
whismanoid 4:d9b05924ad4c 4863 // free run as fast as possible
whismanoid 3:9055e17e181a 4864 }
whismanoid 4:d9b05924ad4c 4865 if (Datalogger_Trigger == trigger_Timer) {
whismanoid 4:d9b05924ad4c 4866 // timer (configure interval)
whismanoid 17:9397ea3ea7e9 4867 // TODO: if Datalogger_Trigger == trigger_Timer sleep(g_timer_interval_msec)
whismanoid 17:9397ea3ea7e9 4868 // sleep(g_timer_interval_msec); // error: too many arguments to function 'void sleep()'
whismanoid 17:9397ea3ea7e9 4869 wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 17:9397ea3ea7e9 4870 if (g_timer_interval_counter > 0) {
whismanoid 17:9397ea3ea7e9 4871 g_timer_interval_counter--;
whismanoid 17:9397ea3ea7e9 4872 continue;
whismanoid 17:9397ea3ea7e9 4873 }
whismanoid 17:9397ea3ea7e9 4874 // if time interval not yet reached, continue (continue accepting commands)
whismanoid 17:9397ea3ea7e9 4875 g_timer_interval_counter = g_timer_interval_count;
whismanoid 3:9055e17e181a 4876 }
whismanoid 4:d9b05924ad4c 4877 if (Datalogger_Trigger == trigger_PlatformDigitalInput) {
whismanoid 4:d9b05924ad4c 4878 // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 4879 // TODO: read selected input pin, test value
whismanoid 17:9397ea3ea7e9 4880 // TODO: if no match, continue (continue accepting commands)
whismanoid 3:9055e17e181a 4881 }
whismanoid 4:d9b05924ad4c 4882 if (Datalogger_Trigger == trigger_SPIDeviceRegRead) {
whismanoid 4:d9b05924ad4c 4883 // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 4884 // TODO: SPI transfer regAddr
whismanoid 17:9397ea3ea7e9 4885 // TODO: apply dataMask, compare with testValue
whismanoid 17:9397ea3ea7e9 4886 // TODO: if no match, continue (continue accepting commands)
whismanoid 4:d9b05924ad4c 4887 }
whismanoid 4:d9b05924ad4c 4888 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 0:cb44e2e9ec4c 4889
whismanoid 8:dffee7509bfb 4890 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 4891 if (Datalogger_Need_PrintHeader) {
whismanoid 8:dffee7509bfb 4892 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 4893 Datalogger_PrintHeader(cmdLine);
whismanoid 8:dffee7509bfb 4894 }
whismanoid 8:dffee7509bfb 4895 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4896 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 4897 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 4898 }
whismanoid 8:dffee7509bfb 4899 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4900 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4901 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 4902 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 4903 }
whismanoid 8:dffee7509bfb 4904 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4905 Datalogger_Need_PrintHeader = false;
whismanoid 8:dffee7509bfb 4906 }
whismanoid 5:aaf8b5f5fda1 4907 Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 4908 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4909 // Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 4910 Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 4911 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 0:cb44e2e9ec4c 4912 // wait(3.0);
whismanoid 0:cb44e2e9ec4c 4913 // CODE GENERATOR: print conversion result
whismanoid 0:cb44e2e9ec4c 4914 // Use Arduino Serial Plotter to view output: Tools | Serial Plotter
whismanoid 8:dffee7509bfb 4915 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 4916 Datalogger_PrintRow(cmdLine);
whismanoid 8:dffee7509bfb 4917 }
whismanoid 8:dffee7509bfb 4918 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4919 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 4920 Datalogger_PrintRow(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 4921 }
whismanoid 8:dffee7509bfb 4922 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4923 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 4924 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 4925 Datalogger_PrintRow(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 4926 }
whismanoid 8:dffee7509bfb 4927 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:cb44e2e9ec4c 4928
whismanoid 0:cb44e2e9ec4c 4929 } // this code repeats forever
whismanoid 0:cb44e2e9ec4c 4930 }
whismanoid 0:cb44e2e9ec4c 4931 //---------- CODE GENERATOR: end DataLogHelloCppCodeList