Mark Underwood / Mbed OS Internal_DataLogger_NoUSB_MAX32625PICO

Dependencies:   max32625pico CmdLine

Committer:
whismanoid
Date:
Mon Apr 26 21:39:21 2021 -0700
Revision:
29:6a9edb6e973b
Parent:
28:a9a3a9db592b
Child:
30:07197a430869
button1-9, action_button, WIP Datalog comment field from #remarks in button handler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:cb44e2e9ec4c 1 // /*******************************************************************************
whismanoid 28:a9a3a9db592b 2 // * Copyright (C) 2021 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 21:ac062a97a71d 556 //--------------------------------------------------
whismanoid 21:ac062a97a71d 557 // use BUTTON1 trigger some action
whismanoid 21:ac062a97a71d 558 #if defined(TARGET_MAX32630)
whismanoid 21:ac062a97a71d 559 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 560 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 561 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 562 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 25:8a61cb34191d 563 // #warning "TARGET_MAX32625PICO not previously tested; need to define buttons..."
whismanoid 21:ac062a97a71d 564 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 24:032f3683cb2a 565 #if MAX40108_DEMO
whismanoid 25:8a61cb34191d 566 #if HAS_I2C
whismanoid 25:8a61cb34191d 567 // MAX40108DEMOP2U9 HAS_I2C: J91.1=1V8 J91.2=P1_6(SDA) J91.3=P1_7(SCL) J91.4=GND
whismanoid 25:8a61cb34191d 568 // MAX40108DEMOP2U9 HAS_I2C: move button2/button3 to inaccessible pins P3_6 and P3_7 if we need J91 for I2C
whismanoid 24:032f3683cb2a 569 #define BUTTON2 P3_7
whismanoid 25:8a61cb34191d 570 #else // HAS_I2C
whismanoid 25:8a61cb34191d 571 // MAX40108DEMOP2U9 no HAS_I2C: option using J91 for button2 and button3 instead of I2C
whismanoid 25:8a61cb34191d 572 // MAX40108DEMOP2U9 no HAS_I2C: header J91.1=1V8 J91.2=P1_6(button3/'%B3!') J91.3=P1_7(button2/'%B2!') J91.4=GND
whismanoid 25:8a61cb34191d 573 // MAX40108DEMOP2U9 no HAS_I2C: avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 574 #define BUTTON2 P1_7
whismanoid 25:8a61cb34191d 575 #endif // HAS_I2C
whismanoid 24:032f3683cb2a 576 #define HAS_BUTTON2_DEMO 0
whismanoid 24:032f3683cb2a 577 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 25:8a61cb34191d 578 #if HAS_I2C
whismanoid 25:8a61cb34191d 579 // MAX40108DEMOP2U9 HAS_I2C: J91.1=1V8 J91.2=P1_6(SDA) J91.3=P1_7(SCL) J91.4=GND
whismanoid 25:8a61cb34191d 580 // MAX40108DEMOP2U9 HAS_I2C: move button2/button3 to inaccessible pins P3_6 and P3_7 if we need J91 for I2C
whismanoid 24:032f3683cb2a 581 #define BUTTON3 P3_6
whismanoid 25:8a61cb34191d 582 #else // HAS_I2C
whismanoid 25:8a61cb34191d 583 // MAX40108DEMOP2U9 no HAS_I2C: option using J91 for button2 and button3 instead of I2C
whismanoid 25:8a61cb34191d 584 // MAX40108DEMOP2U9 no HAS_I2C: header J91.1=1V8 J91.2=P1_6(button3/'%B3!') J91.3=P1_7(button2/'%B2!') J91.4=GND
whismanoid 25:8a61cb34191d 585 // MAX40108DEMOP2U9 no HAS_I2C: avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 586 #define BUTTON3 P1_6
whismanoid 25:8a61cb34191d 587 #endif // HAS_I2C
whismanoid 24:032f3683cb2a 588 #define HAS_BUTTON3_DEMO 0
whismanoid 24:032f3683cb2a 589 #define HAS_BUTTON3_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 590 // additional buttons are assigned to unused/unaccessible pins to avoid conflicts
whismanoid 29:6a9edb6e973b 591 // activate using %B4! or action_button pin=4
whismanoid 29:6a9edb6e973b 592 #define BUTTON4 P1_5
whismanoid 29:6a9edb6e973b 593 #define HAS_BUTTON4_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 594 #define BUTTON5 P1_4
whismanoid 29:6a9edb6e973b 595 #define HAS_BUTTON5_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 596 #define BUTTON6 P1_3
whismanoid 29:6a9edb6e973b 597 #define HAS_BUTTON6_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 598 #define BUTTON7 P1_2
whismanoid 29:6a9edb6e973b 599 #define HAS_BUTTON7_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 600 #define BUTTON8 P1_1
whismanoid 29:6a9edb6e973b 601 #define HAS_BUTTON8_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 602 #define BUTTON9 P1_0
whismanoid 29:6a9edb6e973b 603 #define HAS_BUTTON9_DEMO_INTERRUPT 1
whismanoid 24:032f3683cb2a 604 #else // MAX40108_DEMO
whismanoid 21:ac062a97a71d 605 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 606 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 29:6a9edb6e973b 607 #endif // MAX40108_DEMO ---------------------------------
whismanoid 21:ac062a97a71d 608 #elif defined(TARGET_MAX32625)
whismanoid 21:ac062a97a71d 609 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 610 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 611 #elif defined(TARGET_MAX32620FTHR)
whismanoid 21:ac062a97a71d 612 #warning "TARGET_MAX32620FTHR not previously tested; need to define buttons..."
whismanoid 21:ac062a97a71d 613 #define BUTTON1 SW1
whismanoid 21:ac062a97a71d 614 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 615 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 616 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 617 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 21:ac062a97a71d 618 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 619 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 620 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 21:ac062a97a71d 621 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 622 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 623 #else
whismanoid 21:ac062a97a71d 624 #warning "target not previously tested; need to define buttons..."
whismanoid 21:ac062a97a71d 625 #endif
whismanoid 21:ac062a97a71d 626 //
whismanoid 21:ac062a97a71d 627 #ifndef HAS_BUTTON1_DEMO
whismanoid 21:ac062a97a71d 628 #define HAS_BUTTON1_DEMO 0
whismanoid 21:ac062a97a71d 629 #endif
whismanoid 21:ac062a97a71d 630 #ifndef HAS_BUTTON2_DEMO
whismanoid 21:ac062a97a71d 631 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 632 #endif
whismanoid 24:032f3683cb2a 633 #ifndef HAS_BUTTON3_DEMO
whismanoid 24:032f3683cb2a 634 #define HAS_BUTTON3_DEMO 0
whismanoid 24:032f3683cb2a 635 #endif
whismanoid 21:ac062a97a71d 636 //
whismanoid 21:ac062a97a71d 637 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 638 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 639 #ifndef HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 640 #define HAS_BUTTON1_DEMO_INTERRUPT_POLLING 1
whismanoid 21:ac062a97a71d 641 #endif
whismanoid 21:ac062a97a71d 642 //
whismanoid 21:ac062a97a71d 643 #ifndef HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 644 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 645 #endif
whismanoid 21:ac062a97a71d 646 #ifndef HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 647 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 648 #endif
whismanoid 21:ac062a97a71d 649 //
whismanoid 21:ac062a97a71d 650 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 651 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 652 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 653 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 654 DigitalIn button1(BUTTON1);
whismanoid 21:ac062a97a71d 655 # else
whismanoid 21:ac062a97a71d 656 InterruptIn button1(BUTTON1);
whismanoid 21:ac062a97a71d 657 # endif
whismanoid 21:ac062a97a71d 658 #elif HAS_BUTTON1_DEMO
whismanoid 21:ac062a97a71d 659 DigitalIn button1(BUTTON1);
whismanoid 21:ac062a97a71d 660 #endif
whismanoid 21:ac062a97a71d 661 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 662 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 663 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 664 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 665 DigitalIn button2(BUTTON2);
whismanoid 21:ac062a97a71d 666 # else
whismanoid 21:ac062a97a71d 667 InterruptIn button2(BUTTON2);
whismanoid 21:ac062a97a71d 668 # endif
whismanoid 21:ac062a97a71d 669 #elif HAS_BUTTON2_DEMO
whismanoid 21:ac062a97a71d 670 DigitalIn button2(BUTTON2);
whismanoid 21:ac062a97a71d 671 #endif
whismanoid 24:032f3683cb2a 672 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 673 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 24:032f3683cb2a 674 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 24:032f3683cb2a 675 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 24:032f3683cb2a 676 DigitalIn button3(BUTTON3);
whismanoid 24:032f3683cb2a 677 # else
whismanoid 24:032f3683cb2a 678 InterruptIn button3(BUTTON3);
whismanoid 24:032f3683cb2a 679 # endif
whismanoid 24:032f3683cb2a 680 #elif HAS_BUTTON3_DEMO
whismanoid 24:032f3683cb2a 681 DigitalIn button3(BUTTON3);
whismanoid 24:032f3683cb2a 682 #endif
whismanoid 21:ac062a97a71d 683
whismanoid 0:cb44e2e9ec4c 684 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:cb44e2e9ec4c 685 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 686 // Declare the DigitalInOut GPIO pins
whismanoid 0:cb44e2e9ec4c 687 // Optional digitalInOut support. If there is only one it should be digitalInOut1.
whismanoid 0:cb44e2e9ec4c 688 // D) Digital High/Low/Input Pin
whismanoid 0:cb44e2e9ec4c 689 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 690 // +-------------[microUSB]-------------+
whismanoid 0:cb44e2e9ec4c 691 // | J1 MAX32630FTHR J2 |
whismanoid 0:cb44e2e9ec4c 692 // | [ ] RST GND [ ] |
whismanoid 0:cb44e2e9ec4c 693 // | [ ] 3V3 BAT+[ ] |
whismanoid 0:cb44e2e9ec4c 694 // | [ ] 1V8 reset SW1 |
whismanoid 0:cb44e2e9ec4c 695 // | [ ] GND J4 J3 |
whismanoid 0:cb44e2e9ec4c 696 // | [ ] AIN_0 1.2Vfs (bat) SYS [ ] |
whismanoid 0:cb44e2e9ec4c 697 // | [ ] AIN_1 1.2Vfs PWR [ ] |
whismanoid 0:cb44e2e9ec4c 698 // | [ ] AIN_2 1.2Vfs +5V VBUS [ ] |
whismanoid 0:cb44e2e9ec4c 699 // | [ ] AIN_3 1.2Vfs 1-WIRE P4_0 [ ] | dig9
whismanoid 0:cb44e2e9ec4c 700 // dig10 | [x] P5_7 SDA2 SRN P5_6 [ ] | dig8
whismanoid 0:cb44e2e9ec4c 701 // dig11 | [x] P6_0 SCL2 SDIO3 P5_5 [ ] | dig7
whismanoid 0:cb44e2e9ec4c 702 // dig12 | [x] P5_0 SCLK SDIO2 P5_4 [ ] | dig6
whismanoid 0:cb44e2e9ec4c 703 // dig13 | [x] P5_1 MOSI SSEL P5_3 [x] | dig5
whismanoid 0:cb44e2e9ec4c 704 // dig14 | [ ] P5_2 MISO RTS P3_3 [ ] | dig4
whismanoid 0:cb44e2e9ec4c 705 // dig15 | [ ] P3_0 RX CTS P3_2 [ ] | dig3
whismanoid 0:cb44e2e9ec4c 706 // dig0 | [ ] P3_1 TX SCL P3_5 [x] | dig2
whismanoid 0:cb44e2e9ec4c 707 // | [ ] GND SDA P3_4 [x] | dig1
whismanoid 0:cb44e2e9ec4c 708 // +------------------------------------+
whismanoid 0:cb44e2e9ec4c 709 #define HAS_digitalInOut0 1 // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:cb44e2e9ec4c 710 #define HAS_digitalInOut1 1 // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:cb44e2e9ec4c 711 #define HAS_digitalInOut2 1 // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:cb44e2e9ec4c 712 #define HAS_digitalInOut3 1 // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:cb44e2e9ec4c 713 #define HAS_digitalInOut4 1 // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:cb44e2e9ec4c 714 #define HAS_digitalInOut5 1 // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:cb44e2e9ec4c 715 #define HAS_digitalInOut6 1 // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:cb44e2e9ec4c 716 #define HAS_digitalInOut7 1 // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:cb44e2e9ec4c 717 #define HAS_digitalInOut8 1 // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:cb44e2e9ec4c 718 #define HAS_digitalInOut9 1 // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:cb44e2e9ec4c 719 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 720 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 721 #define HAS_digitalInOut10 0 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 722 #define HAS_digitalInOut11 0 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 723 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 724 #define HAS_digitalInOut10 1 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 725 #define HAS_digitalInOut11 1 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 726 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 727 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 728 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 729 #define HAS_digitalInOut12 0 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 730 #define HAS_digitalInOut13 0 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 731 #define HAS_digitalInOut14 0 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 732 #define HAS_digitalInOut15 0 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 733 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 734 #define HAS_digitalInOut12 1 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 735 #define HAS_digitalInOut13 1 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 736 #define HAS_digitalInOut14 1 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 737 #define HAS_digitalInOut15 1 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 738 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 739 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 740 DigitalInOut digitalInOut0(P3_1, PIN_INPUT, PullUp, 1); // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:cb44e2e9ec4c 741 #endif
whismanoid 0:cb44e2e9ec4c 742 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 743 DigitalInOut digitalInOut1(P3_4, PIN_INPUT, PullUp, 1); // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:cb44e2e9ec4c 744 #endif
whismanoid 0:cb44e2e9ec4c 745 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 746 DigitalInOut digitalInOut2(P3_5, PIN_INPUT, PullUp, 1); // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:cb44e2e9ec4c 747 #endif
whismanoid 0:cb44e2e9ec4c 748 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 749 DigitalInOut digitalInOut3(P3_2, PIN_INPUT, PullUp, 1); // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:cb44e2e9ec4c 750 #endif
whismanoid 0:cb44e2e9ec4c 751 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 752 DigitalInOut digitalInOut4(P3_3, PIN_INPUT, PullUp, 1); // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:cb44e2e9ec4c 753 #endif
whismanoid 0:cb44e2e9ec4c 754 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 755 DigitalInOut digitalInOut5(P5_3, PIN_INPUT, PullUp, 1); // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:cb44e2e9ec4c 756 #endif
whismanoid 0:cb44e2e9ec4c 757 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 758 DigitalInOut digitalInOut6(P5_4, PIN_INPUT, PullUp, 1); // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:cb44e2e9ec4c 759 #endif
whismanoid 0:cb44e2e9ec4c 760 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 761 DigitalInOut digitalInOut7(P5_5, PIN_INPUT, PullUp, 1); // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:cb44e2e9ec4c 762 #endif
whismanoid 0:cb44e2e9ec4c 763 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 764 DigitalInOut digitalInOut8(P5_6, PIN_INPUT, PullUp, 1); // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:cb44e2e9ec4c 765 #endif
whismanoid 0:cb44e2e9ec4c 766 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 767 DigitalInOut digitalInOut9(P4_0, PIN_INPUT, PullUp, 1); // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:cb44e2e9ec4c 768 #endif
whismanoid 0:cb44e2e9ec4c 769 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 770 DigitalInOut digitalInOut10(P5_7, PIN_INPUT, PullUp, 1); // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 771 #endif
whismanoid 0:cb44e2e9ec4c 772 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 773 DigitalInOut digitalInOut11(P6_0, PIN_INPUT, PullUp, 1); // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 774 #endif
whismanoid 0:cb44e2e9ec4c 775 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 776 DigitalInOut digitalInOut12(P5_0, PIN_INPUT, PullUp, 1); // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 777 #endif
whismanoid 0:cb44e2e9ec4c 778 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 779 DigitalInOut digitalInOut13(P5_1, PIN_INPUT, PullUp, 1); // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 780 #endif
whismanoid 0:cb44e2e9ec4c 781 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 782 DigitalInOut digitalInOut14(P5_2, PIN_INPUT, PullUp, 1); // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 783 #endif
whismanoid 0:cb44e2e9ec4c 784 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 785 DigitalInOut digitalInOut15(P3_0, PIN_INPUT, PullUp, 1); // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 786 #endif
whismanoid 0:cb44e2e9ec4c 787 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 788 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 789 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 790 // +-------------------------------------+
whismanoid 0:cb44e2e9ec4c 791 // | MAX32625MBED Arduino UNO header |
whismanoid 0:cb44e2e9ec4c 792 // | |
whismanoid 0:cb44e2e9ec4c 793 // | A5/SCL[ ] | P1_7 dig15
whismanoid 0:cb44e2e9ec4c 794 // | A4/SDA[ ] | P1_6 dig14
whismanoid 0:cb44e2e9ec4c 795 // | AREF=N/C[ ] |
whismanoid 0:cb44e2e9ec4c 796 // | GND[ ] |
whismanoid 0:cb44e2e9ec4c 797 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 0:cb44e2e9ec4c 798 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 0:cb44e2e9ec4c 799 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 0:cb44e2e9ec4c 800 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 0:cb44e2e9ec4c 801 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 0:cb44e2e9ec4c 802 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 0:cb44e2e9ec4c 803 // | [ ]GND |
whismanoid 0:cb44e2e9ec4c 804 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 0:cb44e2e9ec4c 805 // | 6[ ]~| P0_6 dig6
whismanoid 0:cb44e2e9ec4c 806 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 0:cb44e2e9ec4c 807 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 0:cb44e2e9ec4c 808 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 0:cb44e2e9ec4c 809 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 0:cb44e2e9ec4c 810 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 0:cb44e2e9ec4c 811 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 0:cb44e2e9ec4c 812 // | [ ] [ ] [ ] |
whismanoid 0:cb44e2e9ec4c 813 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 0:cb44e2e9ec4c 814 // \_______________________/
whismanoid 0:cb44e2e9ec4c 815 //
whismanoid 0:cb44e2e9ec4c 816 #define HAS_digitalInOut0 1 // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:cb44e2e9ec4c 817 #define HAS_digitalInOut1 1 // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:cb44e2e9ec4c 818 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 819 #define HAS_digitalInOut2 0 // P0_2 TARGET_MAX32625MBED D2 -- MAX11131 EOC DigitalIn
whismanoid 0:cb44e2e9ec4c 820 #else
whismanoid 0:cb44e2e9ec4c 821 #define HAS_digitalInOut2 1 // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:cb44e2e9ec4c 822 #endif
whismanoid 0:cb44e2e9ec4c 823 #define HAS_digitalInOut3 1 // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:cb44e2e9ec4c 824 #define HAS_digitalInOut4 1 // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:cb44e2e9ec4c 825 #define HAS_digitalInOut5 1 // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:cb44e2e9ec4c 826 #define HAS_digitalInOut6 1 // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:cb44e2e9ec4c 827 #define HAS_digitalInOut7 1 // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:cb44e2e9ec4c 828 #define HAS_digitalInOut8 1 // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:cb44e2e9ec4c 829 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 830 #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:cb44e2e9ec4c 831 #else
whismanoid 0:cb44e2e9ec4c 832 #define HAS_digitalInOut9 1 // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:cb44e2e9ec4c 833 #endif
whismanoid 0:cb44e2e9ec4c 834 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 835 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 836 #define HAS_digitalInOut10 0 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 837 #define HAS_digitalInOut11 0 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 838 #define HAS_digitalInOut12 0 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 839 #define HAS_digitalInOut13 0 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 840 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 841 #define HAS_digitalInOut10 1 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 842 #define HAS_digitalInOut11 1 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 843 #define HAS_digitalInOut12 1 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 844 #define HAS_digitalInOut13 1 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 845 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 846 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 847 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 848 #define HAS_digitalInOut14 0 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 849 #define HAS_digitalInOut15 0 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 850 #define HAS_digitalInOut16 0 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 851 #define HAS_digitalInOut17 0 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 852 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 853 #define HAS_digitalInOut14 1 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 854 #define HAS_digitalInOut15 1 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 855 #define HAS_digitalInOut16 1 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 856 #define HAS_digitalInOut17 1 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 857 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 858 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 859 DigitalInOut digitalInOut0(P0_0, PIN_INPUT, PullUp, 1); // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:cb44e2e9ec4c 860 #endif
whismanoid 0:cb44e2e9ec4c 861 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 862 DigitalInOut digitalInOut1(P0_1, PIN_INPUT, PullUp, 1); // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:cb44e2e9ec4c 863 #endif
whismanoid 0:cb44e2e9ec4c 864 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 865 DigitalInOut digitalInOut2(P0_2, PIN_INPUT, PullUp, 1); // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:cb44e2e9ec4c 866 #endif
whismanoid 0:cb44e2e9ec4c 867 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 868 DigitalInOut digitalInOut3(P0_3, PIN_INPUT, PullUp, 1); // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:cb44e2e9ec4c 869 #endif
whismanoid 0:cb44e2e9ec4c 870 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 871 DigitalInOut digitalInOut4(P0_4, PIN_INPUT, PullUp, 1); // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:cb44e2e9ec4c 872 #endif
whismanoid 0:cb44e2e9ec4c 873 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 874 DigitalInOut digitalInOut5(P0_5, PIN_INPUT, PullUp, 1); // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:cb44e2e9ec4c 875 #endif
whismanoid 0:cb44e2e9ec4c 876 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 877 DigitalInOut digitalInOut6(P0_6, PIN_INPUT, PullUp, 1); // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:cb44e2e9ec4c 878 #endif
whismanoid 0:cb44e2e9ec4c 879 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 880 DigitalInOut digitalInOut7(P0_7, PIN_INPUT, PullUp, 1); // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:cb44e2e9ec4c 881 #endif
whismanoid 0:cb44e2e9ec4c 882 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 883 DigitalInOut digitalInOut8(P1_4, PIN_INPUT, PullUp, 1); // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:cb44e2e9ec4c 884 #endif
whismanoid 0:cb44e2e9ec4c 885 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 886 DigitalInOut digitalInOut9(P1_5, PIN_INPUT, PullUp, 1); // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:cb44e2e9ec4c 887 #endif
whismanoid 0:cb44e2e9ec4c 888 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 889 DigitalInOut digitalInOut10(P1_3, PIN_INPUT, PullUp, 1); // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 890 #endif
whismanoid 0:cb44e2e9ec4c 891 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 892 DigitalInOut digitalInOut11(P1_1, PIN_INPUT, PullUp, 1); // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 893 #endif
whismanoid 0:cb44e2e9ec4c 894 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 895 DigitalInOut digitalInOut12(P1_2, PIN_INPUT, PullUp, 1); // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 896 #endif
whismanoid 0:cb44e2e9ec4c 897 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 898 DigitalInOut digitalInOut13(P1_0, PIN_INPUT, PullUp, 1); // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 899 #endif
whismanoid 0:cb44e2e9ec4c 900 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 901 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 902 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:cb44e2e9ec4c 903 DigitalInOut digitalInOut14(P1_6, PIN_INPUT, OpenDrain, 1); // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 904 #endif
whismanoid 0:cb44e2e9ec4c 905 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 906 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 907 DigitalInOut digitalInOut15(P1_7, PIN_INPUT, OpenDrain, 1); // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 908 #endif
whismanoid 0:cb44e2e9ec4c 909 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 910 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 911 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:cb44e2e9ec4c 912 // PullUp-->3.4V, PullDown-->1.7V, PullNone-->3.5V, OpenDrain-->0.00V
whismanoid 0:cb44e2e9ec4c 913 DigitalInOut digitalInOut16(P3_4, PIN_INPUT, OpenDrain, 0); // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 914 #endif
whismanoid 0:cb44e2e9ec4c 915 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 916 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 917 DigitalInOut digitalInOut17(P3_5, PIN_INPUT, OpenDrain, 0); // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 918 #endif
whismanoid 0:cb44e2e9ec4c 919 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 920 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 15:37c83ec50ea0 921 // TARGET=MAX32625PICO ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 15:37c83ec50ea0 922 // +-------------[microUSB]-------------+
whismanoid 15:37c83ec50ea0 923 // | [27]D+ D-[26] |
whismanoid 15:37c83ec50ea0 924 // | |
whismanoid 15:37c83ec50ea0 925 // | [BUTTON P2_7] |
whismanoid 15:37c83ec50ea0 926 // | P2_4 LED_R P2_5 LED_G P2_6 LED_B |
whismanoid 15:37c83ec50ea0 927 // | |
whismanoid 15:37c83ec50ea0 928 // 1V8 | [11] 1.8V MAX32625PICO GND [10] | GND
whismanoid 15:37c83ec50ea0 929 // 3V3 | [12] 3.3V +5V [09] | 5V0
whismanoid 15:37c83ec50ea0 930 // SPI CS D7 | [13] P0_7 CS s-ssel P4_7 [08] | D15
whismanoid 15:37c83ec50ea0 931 // SPI MISO D6 | [14] P0_6 MISO s-miso P4_6 [07] | D14
whismanoid 15:37c83ec50ea0 932 // SPI MOSI D5 | [15] P0_5 MOSI s-mosi P4_5 [06] | D13
whismanoid 15:37c83ec50ea0 933 // SPI SCLK D4 | [16] P0_4 SCLK s-sclk P4_4 [05] | D12
whismanoid 15:37c83ec50ea0 934 // D3 | [17] P0_3 RTS SCL P1_7 [04] | SCL/D17
whismanoid 15:37c83ec50ea0 935 // D2 | [18] P0_2 CTS SDA P1_6 [03] | SDA/D16
whismanoid 15:37c83ec50ea0 936 // TX/D1 | [19] P0_1 TX0 AIN_2 [02] | A2
whismanoid 15:37c83ec50ea0 937 // RX/D0 | [20] P0_0 RX0 AIN_0 [01] | A0/A4
whismanoid 15:37c83ec50ea0 938 // | |
whismanoid 15:37c83ec50ea0 939 // | DAPLINK |
whismanoid 15:37c83ec50ea0 940 // | J3 p3_3 p3_2 p3_0 p3_1 p3_7 |
whismanoid 15:37c83ec50ea0 941 // | DAP [ ] [ ] [RX2][TX2][ ] |
whismanoid 15:37c83ec50ea0 942 // | TOP [ ] [ ] [ ] [ ] [ ] |
whismanoid 15:37c83ec50ea0 943 // | AIN1/A5 gnd gnd nc AIN3 |
whismanoid 15:37c83ec50ea0 944 // | IOH 1-wire |
whismanoid 15:37c83ec50ea0 945 // | |
whismanoid 15:37c83ec50ea0 946 // |NO USE RST P2_0 P2_1 |
whismanoid 15:37c83ec50ea0 947 // |BOTTOM [ ] [ ] [RX1][ ] [TX1] |
whismanoid 15:37c83ec50ea0 948 // | RST SWC GND SWD 1V8 |
whismanoid 15:37c83ec50ea0 949 // |BOTTOM [21] [22] [23] [24] [25] |
whismanoid 15:37c83ec50ea0 950 // +------------------------------------+
whismanoid 15:37c83ec50ea0 951 #if MAX40108_DEMO
whismanoid 15:37c83ec50ea0 952 // MAX40108 demo p2: D0..D7 = P0_0..P0_7; D8..15 = P4_0..P4_7; D16/D17=I2C
whismanoid 15:37c83ec50ea0 953 #endif
whismanoid 15:37c83ec50ea0 954 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 955 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 956 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 957 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 958 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 959 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 960 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 961 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 15:37c83ec50ea0 962 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 15:37c83ec50ea0 963 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 15:37c83ec50ea0 964 // AIN_10 = x undefined?
whismanoid 15:37c83ec50ea0 965 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 966 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 967 //
whismanoid 15:37c83ec50ea0 968 #if MAX40108_DEMO
whismanoid 15:37c83ec50ea0 969 // avoid resource conflict D0,D1 alternate function as RX/TX
whismanoid 15:37c83ec50ea0 970 #define HAS_digitalInOut0 0
whismanoid 15:37c83ec50ea0 971 #define HAS_digitalInOut1 0
whismanoid 15:37c83ec50ea0 972 #else
whismanoid 15:37c83ec50ea0 973 #define HAS_digitalInOut0 1
whismanoid 19:5ff09c8e9daf 974 #define HAS_digitalInOut1 1
whismanoid 19:5ff09c8e9daf 975 // P0_1 TARGET_MAX32625PICO D1
whismanoid 15:37c83ec50ea0 976 #endif
whismanoid 15:37c83ec50ea0 977 #if APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 978 // avoid resource conflict D2 alternate function as interrupt input
whismanoid 15:37c83ec50ea0 979 #define HAS_digitalInOut2 0
whismanoid 15:37c83ec50ea0 980 #else
whismanoid 15:37c83ec50ea0 981 #define HAS_digitalInOut2 1
whismanoid 15:37c83ec50ea0 982 #endif
whismanoid 15:37c83ec50ea0 983 #define HAS_digitalInOut3 1
whismanoid 15:37c83ec50ea0 984 #define HAS_digitalInOut4 1
whismanoid 15:37c83ec50ea0 985 #define HAS_digitalInOut5 1
whismanoid 15:37c83ec50ea0 986 #define HAS_digitalInOut6 1
whismanoid 15:37c83ec50ea0 987 #define HAS_digitalInOut7 1
whismanoid 15:37c83ec50ea0 988 //
whismanoid 15:37c83ec50ea0 989 #define HAS_digitalInOut8 1
whismanoid 15:37c83ec50ea0 990 #define HAS_digitalInOut9 1
whismanoid 15:37c83ec50ea0 991 #define HAS_digitalInOut10 1
whismanoid 15:37c83ec50ea0 992 #define HAS_digitalInOut11 1
whismanoid 15:37c83ec50ea0 993 #define HAS_digitalInOut12 1
whismanoid 15:37c83ec50ea0 994 #define HAS_digitalInOut13 1
whismanoid 15:37c83ec50ea0 995 #define HAS_digitalInOut14 1
whismanoid 15:37c83ec50ea0 996 #define HAS_digitalInOut15 1
whismanoid 15:37c83ec50ea0 997 #if HAS_I2C
whismanoid 25:8a61cb34191d 998 // MAX40108DEMOP2U9 HAS_I2C: J91.1=1V8 J91.2=P1_6(SDA) J91.3=P1_7(SCL) J91.4=GND
whismanoid 25:8a61cb34191d 999 // MAX40108DEMOP2U9 HAS_I2C: move button2/button3 to inaccessible pins P3_6 and P3_7 if we need J91 for I2C
whismanoid 25:8a61cb34191d 1000 // #define BUTTON2 P3_7
whismanoid 25:8a61cb34191d 1001 // avoid resource conflict between I2C and DigitalInOut
whismanoid 25:8a61cb34191d 1002 #define HAS_digitalInOut16 0 // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 25:8a61cb34191d 1003 #define HAS_digitalInOut17 0 // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 15:37c83ec50ea0 1004 #else // HAS_I2C
whismanoid 25:8a61cb34191d 1005 // MAX40108DEMOP2U9 no HAS_I2C: option using J91 for button2 and button3 instead of I2C
whismanoid 25:8a61cb34191d 1006 // MAX40108DEMOP2U9 no HAS_I2C: header J91.1=1V8 J91.2=P1_6(button3/'%B3!') J91.3=P1_7(button2/'%B2!') J91.4=GND
whismanoid 25:8a61cb34191d 1007 // MAX40108DEMOP2U9 no HAS_I2C: avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 1008 // #define BUTTON2 P1_7
whismanoid 25:8a61cb34191d 1009 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1010 // MAX40108DEMOP2U9 avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 1011 #define HAS_digitalInOut16 0 // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 25:8a61cb34191d 1012 #else // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1013 #define HAS_digitalInOut16 1 // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 25:8a61cb34191d 1014 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1015 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1016 // MAX40108DEMOP2U9 avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 1017 #define HAS_digitalInOut17 0 // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 25:8a61cb34191d 1018 #else // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1019 #define HAS_digitalInOut17 1 // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 25:8a61cb34191d 1020 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 15:37c83ec50ea0 1021 #endif // HAS_I2C
whismanoid 15:37c83ec50ea0 1022 #if HAS_digitalInOut0
whismanoid 25:8a61cb34191d 1023 DigitalInOut digitalInOut0(P0_0, PIN_INPUT, PullUp, 1); // P0_0 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D0
whismanoid 15:37c83ec50ea0 1024 #endif
whismanoid 15:37c83ec50ea0 1025 #if HAS_digitalInOut1
whismanoid 25:8a61cb34191d 1026 DigitalInOut digitalInOut1(P0_1, PIN_INPUT, PullUp, 1); // P0_1 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D1
whismanoid 15:37c83ec50ea0 1027 #endif
whismanoid 15:37c83ec50ea0 1028 #if HAS_digitalInOut2
whismanoid 25:8a61cb34191d 1029 DigitalInOut digitalInOut2(P0_2, PIN_INPUT, PullUp, 1); // P0_2 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D2
whismanoid 15:37c83ec50ea0 1030 #endif
whismanoid 15:37c83ec50ea0 1031 #if HAS_digitalInOut3
whismanoid 25:8a61cb34191d 1032 DigitalInOut digitalInOut3(P0_3, PIN_INPUT, PullUp, 1); // P0_3 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D3
whismanoid 15:37c83ec50ea0 1033 #endif
whismanoid 15:37c83ec50ea0 1034 #if HAS_digitalInOut4
whismanoid 25:8a61cb34191d 1035 DigitalInOut digitalInOut4(P0_4, PIN_INPUT, PullUp, 1); // P0_4 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D4
whismanoid 15:37c83ec50ea0 1036 #endif
whismanoid 15:37c83ec50ea0 1037 #if HAS_digitalInOut5
whismanoid 25:8a61cb34191d 1038 DigitalInOut digitalInOut5(P0_5, PIN_INPUT, PullUp, 1); // P0_5 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D5
whismanoid 15:37c83ec50ea0 1039 #endif
whismanoid 15:37c83ec50ea0 1040 #if HAS_digitalInOut6
whismanoid 25:8a61cb34191d 1041 DigitalInOut digitalInOut6(P0_6, PIN_INPUT, PullUp, 1); // P0_6 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D6
whismanoid 15:37c83ec50ea0 1042 #endif
whismanoid 15:37c83ec50ea0 1043 #if HAS_digitalInOut7
whismanoid 25:8a61cb34191d 1044 DigitalInOut digitalInOut7(P0_7, PIN_INPUT, PullUp, 1); // P0_7 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D7
whismanoid 15:37c83ec50ea0 1045 #endif
whismanoid 15:37c83ec50ea0 1046 #if HAS_digitalInOut8
whismanoid 25:8a61cb34191d 1047 DigitalInOut digitalInOut8(P4_0, PIN_INPUT, PullUp, 1); // P4_0 TARGET_MAX40108DEMOP2U9 D8
whismanoid 15:37c83ec50ea0 1048 #endif
whismanoid 15:37c83ec50ea0 1049 #if HAS_digitalInOut9
whismanoid 25:8a61cb34191d 1050 DigitalInOut digitalInOut9(P4_1, PIN_INPUT, PullUp, 1); // P4_1 TARGET_MAX40108DEMOP2U9 D9
whismanoid 15:37c83ec50ea0 1051 #endif
whismanoid 15:37c83ec50ea0 1052 #if HAS_digitalInOut10
whismanoid 25:8a61cb34191d 1053 DigitalInOut digitalInOut10(P4_2, PIN_INPUT, PullUp, 1); // P4_2 TARGET_MAX40108DEMOP2U9 D10
whismanoid 15:37c83ec50ea0 1054 #endif
whismanoid 15:37c83ec50ea0 1055 #if HAS_digitalInOut11
whismanoid 25:8a61cb34191d 1056 DigitalInOut digitalInOut11(P4_3, PIN_INPUT, PullUp, 1); // P4_3 TARGET_MAX40108DEMOP2U9 D11
whismanoid 15:37c83ec50ea0 1057 #endif
whismanoid 15:37c83ec50ea0 1058 #if HAS_digitalInOut12
whismanoid 25:8a61cb34191d 1059 DigitalInOut digitalInOut12(P4_4, PIN_INPUT, PullUp, 1); // P4_4 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D12
whismanoid 15:37c83ec50ea0 1060 #endif
whismanoid 15:37c83ec50ea0 1061 #if HAS_digitalInOut13
whismanoid 25:8a61cb34191d 1062 DigitalInOut digitalInOut13(P4_5, PIN_INPUT, PullUp, 1); // P4_5 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D13
whismanoid 15:37c83ec50ea0 1063 #endif
whismanoid 15:37c83ec50ea0 1064 #if HAS_digitalInOut14
whismanoid 25:8a61cb34191d 1065 DigitalInOut digitalInOut14(P4_6, PIN_INPUT, PullUp, 1); // P4_6 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D14
whismanoid 15:37c83ec50ea0 1066 #endif
whismanoid 15:37c83ec50ea0 1067 #if HAS_digitalInOut15
whismanoid 25:8a61cb34191d 1068 DigitalInOut digitalInOut15(P4_7, PIN_INPUT, PullUp, 1); // P4_7 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D15
whismanoid 15:37c83ec50ea0 1069 #endif
whismanoid 15:37c83ec50ea0 1070 #if HAS_digitalInOut16
whismanoid 15:37c83ec50ea0 1071 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 15:37c83ec50ea0 1072 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 25:8a61cb34191d 1073 DigitalInOut digitalInOut16(P1_6, PIN_INPUT, OpenDrain, 1); // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 15:37c83ec50ea0 1074 #endif
whismanoid 15:37c83ec50ea0 1075 #if HAS_digitalInOut17
whismanoid 15:37c83ec50ea0 1076 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 25:8a61cb34191d 1077 DigitalInOut digitalInOut17(P1_7, PIN_INPUT, OpenDrain, 1); // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 15:37c83ec50ea0 1078 #endif
whismanoid 15:37c83ec50ea0 1079 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1080 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1081 #define HAS_digitalInOut0 0
whismanoid 0:cb44e2e9ec4c 1082 #define HAS_digitalInOut1 0
whismanoid 0:cb44e2e9ec4c 1083 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 1084 // D2 -- MAX11131 EOC DigitalIn
whismanoid 0:cb44e2e9ec4c 1085 #define HAS_digitalInOut2 0
whismanoid 0:cb44e2e9ec4c 1086 #else
whismanoid 0:cb44e2e9ec4c 1087 #define HAS_digitalInOut2 1
whismanoid 0:cb44e2e9ec4c 1088 #endif
whismanoid 0:cb44e2e9ec4c 1089 #define HAS_digitalInOut3 1
whismanoid 0:cb44e2e9ec4c 1090 #define HAS_digitalInOut4 1
whismanoid 0:cb44e2e9ec4c 1091 #define HAS_digitalInOut5 1
whismanoid 0:cb44e2e9ec4c 1092 #define HAS_digitalInOut6 1
whismanoid 0:cb44e2e9ec4c 1093 #define HAS_digitalInOut7 1
whismanoid 0:cb44e2e9ec4c 1094 #if APPLICATION_MAX5715
whismanoid 0:cb44e2e9ec4c 1095 // D8 -- MAX5715 CLRb DigitalOut
whismanoid 0:cb44e2e9ec4c 1096 #define HAS_digitalInOut8 0
whismanoid 0:cb44e2e9ec4c 1097 #else
whismanoid 0:cb44e2e9ec4c 1098 #define HAS_digitalInOut8 1
whismanoid 0:cb44e2e9ec4c 1099 #endif
whismanoid 0:cb44e2e9ec4c 1100 #if APPLICATION_MAX5715
whismanoid 0:cb44e2e9ec4c 1101 // D9 -- MAX5715 LDACb DigitalOut
whismanoid 0:cb44e2e9ec4c 1102 #define HAS_digitalInOut9 0
whismanoid 0:cb44e2e9ec4c 1103 #elif APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 1104 // D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:cb44e2e9ec4c 1105 #define HAS_digitalInOut9 0
whismanoid 0:cb44e2e9ec4c 1106 #else
whismanoid 0:cb44e2e9ec4c 1107 #define HAS_digitalInOut9 1
whismanoid 0:cb44e2e9ec4c 1108 #endif
whismanoid 0:cb44e2e9ec4c 1109 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 1110 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 1111 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:cb44e2e9ec4c 1112 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:cb44e2e9ec4c 1113 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:cb44e2e9ec4c 1114 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:cb44e2e9ec4c 1115 #define HAS_digitalInOut10 0
whismanoid 0:cb44e2e9ec4c 1116 #define HAS_digitalInOut11 0
whismanoid 0:cb44e2e9ec4c 1117 #define HAS_digitalInOut12 0
whismanoid 0:cb44e2e9ec4c 1118 #define HAS_digitalInOut13 0
whismanoid 0:cb44e2e9ec4c 1119 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 1120 #define HAS_digitalInOut10 1
whismanoid 0:cb44e2e9ec4c 1121 #define HAS_digitalInOut11 1
whismanoid 0:cb44e2e9ec4c 1122 #define HAS_digitalInOut12 1
whismanoid 0:cb44e2e9ec4c 1123 #define HAS_digitalInOut13 1
whismanoid 0:cb44e2e9ec4c 1124 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 1125 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 1126 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 1127 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1128 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1129 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1130 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1131 #define HAS_digitalInOut14 0
whismanoid 0:cb44e2e9ec4c 1132 #define HAS_digitalInOut15 0
whismanoid 0:cb44e2e9ec4c 1133 #define HAS_digitalInOut16 0
whismanoid 0:cb44e2e9ec4c 1134 #define HAS_digitalInOut17 0
whismanoid 0:cb44e2e9ec4c 1135 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 1136 #define HAS_digitalInOut14 1
whismanoid 0:cb44e2e9ec4c 1137 #define HAS_digitalInOut15 1
whismanoid 0:cb44e2e9ec4c 1138 #define HAS_digitalInOut16 0
whismanoid 0:cb44e2e9ec4c 1139 #define HAS_digitalInOut17 0
whismanoid 0:cb44e2e9ec4c 1140 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 1141 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1142 DigitalInOut digitalInOut0(D0, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1143 #endif
whismanoid 0:cb44e2e9ec4c 1144 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1145 DigitalInOut digitalInOut1(D1, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1146 #endif
whismanoid 0:cb44e2e9ec4c 1147 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1148 DigitalInOut digitalInOut2(D2, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1149 #endif
whismanoid 0:cb44e2e9ec4c 1150 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1151 DigitalInOut digitalInOut3(D3, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1152 #endif
whismanoid 0:cb44e2e9ec4c 1153 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1154 DigitalInOut digitalInOut4(D4, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1155 #endif
whismanoid 0:cb44e2e9ec4c 1156 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1157 DigitalInOut digitalInOut5(D5, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1158 #endif
whismanoid 0:cb44e2e9ec4c 1159 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1160 DigitalInOut digitalInOut6(D6, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1161 #endif
whismanoid 0:cb44e2e9ec4c 1162 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1163 DigitalInOut digitalInOut7(D7, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1164 #endif
whismanoid 0:cb44e2e9ec4c 1165 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1166 DigitalInOut digitalInOut8(D8, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1167 #endif
whismanoid 0:cb44e2e9ec4c 1168 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1169 DigitalInOut digitalInOut9(D9, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1170 #endif
whismanoid 0:cb44e2e9ec4c 1171 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1172 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:cb44e2e9ec4c 1173 DigitalInOut digitalInOut10(D10, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1174 #endif
whismanoid 0:cb44e2e9ec4c 1175 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1176 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:cb44e2e9ec4c 1177 DigitalInOut digitalInOut11(D11, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1178 #endif
whismanoid 0:cb44e2e9ec4c 1179 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1180 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:cb44e2e9ec4c 1181 DigitalInOut digitalInOut12(D12, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1182 #endif
whismanoid 0:cb44e2e9ec4c 1183 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1184 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:cb44e2e9ec4c 1185 DigitalInOut digitalInOut13(D13, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1186 #endif
whismanoid 0:cb44e2e9ec4c 1187 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1188 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1189 DigitalInOut digitalInOut14(D14, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1190 #endif
whismanoid 0:cb44e2e9ec4c 1191 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1192 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1193 DigitalInOut digitalInOut15(D15, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1194 #endif
whismanoid 0:cb44e2e9ec4c 1195 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1196 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1197 DigitalInOut digitalInOut16(D16, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1198 #endif
whismanoid 0:cb44e2e9ec4c 1199 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1200 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1201 DigitalInOut digitalInOut17(D17, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1202 #endif
whismanoid 0:cb44e2e9ec4c 1203 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1204 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1205 #define HAS_digitalInOut0 1
whismanoid 0:cb44e2e9ec4c 1206 #define HAS_digitalInOut1 1
whismanoid 0:cb44e2e9ec4c 1207 #define HAS_digitalInOut2 1
whismanoid 0:cb44e2e9ec4c 1208 #define HAS_digitalInOut3 1
whismanoid 0:cb44e2e9ec4c 1209 #define HAS_digitalInOut4 1
whismanoid 0:cb44e2e9ec4c 1210 #define HAS_digitalInOut5 1
whismanoid 0:cb44e2e9ec4c 1211 #define HAS_digitalInOut6 1
whismanoid 0:cb44e2e9ec4c 1212 #define HAS_digitalInOut7 1
whismanoid 0:cb44e2e9ec4c 1213 #define HAS_digitalInOut8 1
whismanoid 0:cb44e2e9ec4c 1214 #define HAS_digitalInOut9 1
whismanoid 0:cb44e2e9ec4c 1215 // #define HAS_digitalInOut10 1
whismanoid 0:cb44e2e9ec4c 1216 // #define HAS_digitalInOut11 1
whismanoid 0:cb44e2e9ec4c 1217 // #define HAS_digitalInOut12 1
whismanoid 0:cb44e2e9ec4c 1218 // #define HAS_digitalInOut13 1
whismanoid 0:cb44e2e9ec4c 1219 // #define HAS_digitalInOut14 1
whismanoid 0:cb44e2e9ec4c 1220 // #define HAS_digitalInOut15 1
whismanoid 0:cb44e2e9ec4c 1221 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1222 DigitalInOut digitalInOut0(p5, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.9/I2STX_SDA/MOSI1/MAT2.3
whismanoid 0:cb44e2e9ec4c 1223 #endif
whismanoid 0:cb44e2e9ec4c 1224 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1225 DigitalInOut digitalInOut1(p6, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.8/I2STX_WS/MISO1/MAT2.2
whismanoid 0:cb44e2e9ec4c 1226 #endif
whismanoid 0:cb44e2e9ec4c 1227 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1228 DigitalInOut digitalInOut2(p7, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.7/I2STX_CLK/SCK1/MAT2.1
whismanoid 0:cb44e2e9ec4c 1229 #endif
whismanoid 0:cb44e2e9ec4c 1230 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1231 DigitalInOut digitalInOut3(p8, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.6/I2SRX_SDA/SSEL1/MAT2.0
whismanoid 0:cb44e2e9ec4c 1232 #endif
whismanoid 0:cb44e2e9ec4c 1233 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1234 DigitalInOut digitalInOut4(p9, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.0/CAN_RX1/TXD3/SDA1
whismanoid 0:cb44e2e9ec4c 1235 #endif
whismanoid 0:cb44e2e9ec4c 1236 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1237 DigitalInOut digitalInOut5(p10, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.1/CAN_TX1/RXD3/SCL1
whismanoid 0:cb44e2e9ec4c 1238 #endif
whismanoid 0:cb44e2e9ec4c 1239 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1240 DigitalInOut digitalInOut6(p11, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.18/DCD1/MOSI0/MOSI1
whismanoid 0:cb44e2e9ec4c 1241 #endif
whismanoid 0:cb44e2e9ec4c 1242 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1243 DigitalInOut digitalInOut7(p12, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.17/CTS1/MISO0/MISO
whismanoid 0:cb44e2e9ec4c 1244 #endif
whismanoid 0:cb44e2e9ec4c 1245 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1246 DigitalInOut digitalInOut8(p13, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.15/TXD1/SCK0/SCK
whismanoid 0:cb44e2e9ec4c 1247 #endif
whismanoid 0:cb44e2e9ec4c 1248 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1249 DigitalInOut digitalInOut9(p14, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.16/RXD1/SSEL0/SSEL
whismanoid 0:cb44e2e9ec4c 1250 #endif
whismanoid 0:cb44e2e9ec4c 1251 //
whismanoid 0:cb44e2e9ec4c 1252 // these pins support analog input analogIn0 .. analogIn5
whismanoid 0:cb44e2e9ec4c 1253 //DigitalInOut digitalInOut_(p15, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:cb44e2e9ec4c 1254 //DigitalInOut digitalInOut_(p16, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:cb44e2e9ec4c 1255 //DigitalInOut digitalInOut_(p17, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:cb44e2e9ec4c 1256 //DigitalInOut digitalInOut_(p18, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:cb44e2e9ec4c 1257 //DigitalInOut digitalInOut_(p19, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:cb44e2e9ec4c 1258 //DigitalInOut digitalInOut_(p20, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:cb44e2e9ec4c 1259 //
whismanoid 0:cb44e2e9ec4c 1260 // these pins support PWM pwmDriver1 .. pwmDriver6
whismanoid 0:cb44e2e9ec4c 1261 //DigitalInOut digitalInOut_(p21, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.5/PWM1.6/DTR1/TRACEDATA0
whismanoid 0:cb44e2e9ec4c 1262 //DigitalInOut digitalInOut_(p22, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.4/PWM1.5/DSR1/TRACEDATA1
whismanoid 0:cb44e2e9ec4c 1263 //DigitalInOut digitalInOut_(p23, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.3/PWM1.4/DCD1/TRACEDATA2
whismanoid 0:cb44e2e9ec4c 1264 //DigitalInOut digitalInOut_(p24, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.2/PWM1.3/CTS1/TRACEDATA3
whismanoid 0:cb44e2e9ec4c 1265 //DigitalInOut digitalInOut_(p25, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.1/PWM1.2/RXD1
whismanoid 0:cb44e2e9ec4c 1266 //DigitalInOut digitalInOut_(p26, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.0/PWM1.1/TXD1/TRACECLK
whismanoid 0:cb44e2e9ec4c 1267 //
whismanoid 0:cb44e2e9ec4c 1268 // these could be additional digitalInOut pins
whismanoid 0:cb44e2e9ec4c 1269 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1270 DigitalInOut digitalInOut10(p27, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.11/RXD2/SCL2/MAT3.1
whismanoid 0:cb44e2e9ec4c 1271 #endif
whismanoid 0:cb44e2e9ec4c 1272 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1273 DigitalInOut digitalInOut11(p28, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.10/TXD2/SDA2/MAT3.0
whismanoid 0:cb44e2e9ec4c 1274 #endif
whismanoid 0:cb44e2e9ec4c 1275 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1276 DigitalInOut digitalInOut12(p29, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.5/I2SRX_WS/CAN_TX2/CAP2.1
whismanoid 0:cb44e2e9ec4c 1277 #endif
whismanoid 0:cb44e2e9ec4c 1278 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1279 DigitalInOut digitalInOut13(p30, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.4/I2SRX_CLK/CAN_RX2/CAP2.0
whismanoid 0:cb44e2e9ec4c 1280 #endif
whismanoid 0:cb44e2e9ec4c 1281 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1282 DigitalInOut digitalInOut14(___, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1283 #endif
whismanoid 0:cb44e2e9ec4c 1284 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1285 DigitalInOut digitalInOut15(___, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1286 #endif
whismanoid 0:cb44e2e9ec4c 1287 #else
whismanoid 0:cb44e2e9ec4c 1288 // unknown target
whismanoid 0:cb44e2e9ec4c 1289 #endif
whismanoid 0:cb44e2e9ec4c 1290 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:cb44e2e9ec4c 1291 #if HAS_digitalInOut0 || HAS_digitalInOut1 \
whismanoid 0:cb44e2e9ec4c 1292 || HAS_digitalInOut2 || HAS_digitalInOut3 \
whismanoid 0:cb44e2e9ec4c 1293 || HAS_digitalInOut4 || HAS_digitalInOut5 \
whismanoid 0:cb44e2e9ec4c 1294 || HAS_digitalInOut6 || HAS_digitalInOut7 \
whismanoid 0:cb44e2e9ec4c 1295 || HAS_digitalInOut8 || HAS_digitalInOut9 \
whismanoid 0:cb44e2e9ec4c 1296 || HAS_digitalInOut10 || HAS_digitalInOut11 \
whismanoid 0:cb44e2e9ec4c 1297 || HAS_digitalInOut12 || HAS_digitalInOut13 \
whismanoid 0:cb44e2e9ec4c 1298 || HAS_digitalInOut14 || HAS_digitalInOut15 \
whismanoid 0:cb44e2e9ec4c 1299 || HAS_digitalInOut16 || HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1300 #define HAS_digitalInOuts 1
whismanoid 0:cb44e2e9ec4c 1301 #else
whismanoid 0:cb44e2e9ec4c 1302 #warning "Note: There are no digitalInOut resources defined"
whismanoid 0:cb44e2e9ec4c 1303 #endif
whismanoid 0:cb44e2e9ec4c 1304
whismanoid 0:cb44e2e9ec4c 1305 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:cb44e2e9ec4c 1306 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1307 // Declare the AnalogIn driver
whismanoid 0:cb44e2e9ec4c 1308 // Optional analogIn support. If there is only one it should be analogIn1.
whismanoid 0:cb44e2e9ec4c 1309 // A) analog input
whismanoid 0:cb44e2e9ec4c 1310 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 1311 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1312 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1313 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1314 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1315 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1316 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1317 #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1318 #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1319 #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1320 #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1321 // #define HAS_analogIn10 0
whismanoid 0:cb44e2e9ec4c 1322 // #define HAS_analogIn11 0
whismanoid 0:cb44e2e9ec4c 1323 // #define HAS_analogIn12 0
whismanoid 0:cb44e2e9ec4c 1324 // #define HAS_analogIn13 0
whismanoid 0:cb44e2e9ec4c 1325 // #define HAS_analogIn14 0
whismanoid 0:cb44e2e9ec4c 1326 // #define HAS_analogIn15 0
whismanoid 0:cb44e2e9ec4c 1327 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1328 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1329 #endif
whismanoid 0:cb44e2e9ec4c 1330 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1331 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1332 #endif
whismanoid 0:cb44e2e9ec4c 1333 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1334 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1335 #endif
whismanoid 0:cb44e2e9ec4c 1336 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1337 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1338 #endif
whismanoid 0:cb44e2e9ec4c 1339 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1340 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1341 #endif
whismanoid 0:cb44e2e9ec4c 1342 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1343 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1344 #endif
whismanoid 0:cb44e2e9ec4c 1345 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1346 AnalogIn analogIn6(AIN_6); // TARGET_MAX32630 AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1347 #endif
whismanoid 0:cb44e2e9ec4c 1348 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1349 AnalogIn analogIn7(AIN_7); // TARGET_MAX32630 AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1350 #endif
whismanoid 0:cb44e2e9ec4c 1351 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1352 AnalogIn analogIn8(AIN_8); // TARGET_MAX32630 AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1353 #endif
whismanoid 0:cb44e2e9ec4c 1354 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1355 AnalogIn analogIn9(AIN_9); // TARGET_MAX32630 AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1356 #endif
whismanoid 0:cb44e2e9ec4c 1357 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1358 AnalogIn analogIn10(____); // TARGET_MAX32630 AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1359 #endif
whismanoid 0:cb44e2e9ec4c 1360 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1361 AnalogIn analogIn11(____); // TARGET_MAX32630 AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1362 #endif
whismanoid 0:cb44e2e9ec4c 1363 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1364 AnalogIn analogIn12(____); // TARGET_MAX32630 AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1365 #endif
whismanoid 0:cb44e2e9ec4c 1366 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1367 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1368 #endif
whismanoid 0:cb44e2e9ec4c 1369 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1370 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1371 #endif
whismanoid 0:cb44e2e9ec4c 1372 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1373 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1374 #endif
whismanoid 0:cb44e2e9ec4c 1375 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1376 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 1377 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1378 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1379 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1380 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1381 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1382 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1383 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1384 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1385 #endif
whismanoid 0:cb44e2e9ec4c 1386 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1387 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1388 #endif
whismanoid 0:cb44e2e9ec4c 1389 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1390 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1391 #endif
whismanoid 0:cb44e2e9ec4c 1392 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1393 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1394 #endif
whismanoid 0:cb44e2e9ec4c 1395 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1396 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1397 #endif
whismanoid 0:cb44e2e9ec4c 1398 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1399 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1400 #endif
whismanoid 0:cb44e2e9ec4c 1401 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1402 #elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 1403 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1404 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1405 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1406 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1407 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1408 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1409 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1410 #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1411 #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1412 #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1413 #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1414 // #define HAS_analogIn10 0
whismanoid 0:cb44e2e9ec4c 1415 // #define HAS_analogIn11 0
whismanoid 0:cb44e2e9ec4c 1416 // #define HAS_analogIn12 0
whismanoid 0:cb44e2e9ec4c 1417 // #define HAS_analogIn13 0
whismanoid 0:cb44e2e9ec4c 1418 // #define HAS_analogIn14 0
whismanoid 0:cb44e2e9ec4c 1419 // #define HAS_analogIn15 0
whismanoid 0:cb44e2e9ec4c 1420 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1421 AnalogIn analogIn0(AIN_0); // TARGET_MAX32620FTHR J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1422 #endif
whismanoid 0:cb44e2e9ec4c 1423 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1424 AnalogIn analogIn1(AIN_1); // TARGET_MAX32620FTHR J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1425 #endif
whismanoid 0:cb44e2e9ec4c 1426 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1427 AnalogIn analogIn2(AIN_2); // TARGET_MAX32620FTHR J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1428 #endif
whismanoid 0:cb44e2e9ec4c 1429 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1430 AnalogIn analogIn3(AIN_3); // TARGET_MAX32620FTHR J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1431 #endif
whismanoid 0:cb44e2e9ec4c 1432 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1433 AnalogIn analogIn4(AIN_4); // TARGET_MAX32620FTHR J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1434 #endif
whismanoid 0:cb44e2e9ec4c 1435 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1436 AnalogIn analogIn5(AIN_5); // TARGET_MAX32620FTHR J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1437 #endif
whismanoid 0:cb44e2e9ec4c 1438 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1439 AnalogIn analogIn6(AIN_6); // TARGET_MAX32620FTHR AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1440 #endif
whismanoid 0:cb44e2e9ec4c 1441 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1442 AnalogIn analogIn7(AIN_7); // TARGET_MAX32620FTHR AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1443 #endif
whismanoid 0:cb44e2e9ec4c 1444 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1445 AnalogIn analogIn8(AIN_8); // TARGET_MAX32620FTHR AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1446 #endif
whismanoid 0:cb44e2e9ec4c 1447 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1448 AnalogIn analogIn9(AIN_9); // TARGET_MAX32620FTHR AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1449 #endif
whismanoid 0:cb44e2e9ec4c 1450 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1451 AnalogIn analogIn10(____); // TARGET_MAX32620FTHR AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1452 #endif
whismanoid 0:cb44e2e9ec4c 1453 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1454 AnalogIn analogIn11(____); // TARGET_MAX32620FTHR AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1455 #endif
whismanoid 0:cb44e2e9ec4c 1456 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1457 AnalogIn analogIn12(____); // TARGET_MAX32620FTHR AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1458 #endif
whismanoid 0:cb44e2e9ec4c 1459 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1460 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1461 #endif
whismanoid 0:cb44e2e9ec4c 1462 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1463 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1464 #endif
whismanoid 0:cb44e2e9ec4c 1465 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1466 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1467 #endif
whismanoid 0:cb44e2e9ec4c 1468 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 1469 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 1470 #warning "TARGET_MAX32625PICO not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1471 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1472 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1473 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1474 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1475 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1476 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1477 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1478 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1479 #endif
whismanoid 0:cb44e2e9ec4c 1480 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1481 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1482 #endif
whismanoid 0:cb44e2e9ec4c 1483 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1484 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1485 #endif
whismanoid 0:cb44e2e9ec4c 1486 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1487 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1488 #endif
whismanoid 0:cb44e2e9ec4c 1489 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1490 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1491 #endif
whismanoid 0:cb44e2e9ec4c 1492 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1493 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1494 #endif
whismanoid 0:cb44e2e9ec4c 1495 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1496 #elif defined(TARGET_MAX32600)
whismanoid 0:cb44e2e9ec4c 1497 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1498 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1499 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1500 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1501 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1502 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1503 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1504 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1505 #endif
whismanoid 0:cb44e2e9ec4c 1506 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1507 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1508 #endif
whismanoid 0:cb44e2e9ec4c 1509 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1510 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1511 #endif
whismanoid 0:cb44e2e9ec4c 1512 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1513 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1514 #endif
whismanoid 0:cb44e2e9ec4c 1515 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1516 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1517 #endif
whismanoid 0:cb44e2e9ec4c 1518 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1519 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1520 #endif
whismanoid 0:cb44e2e9ec4c 1521 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1522 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 1523 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1524 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1525 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1526 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1527 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1528 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1529 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1530 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1531 #endif
whismanoid 0:cb44e2e9ec4c 1532 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1533 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1534 #endif
whismanoid 0:cb44e2e9ec4c 1535 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1536 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1537 #endif
whismanoid 0:cb44e2e9ec4c 1538 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1539 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1540 #endif
whismanoid 0:cb44e2e9ec4c 1541 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1542 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1543 #endif
whismanoid 0:cb44e2e9ec4c 1544 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1545 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1546 #endif
whismanoid 0:cb44e2e9ec4c 1547 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1548 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1549 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1550 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1551 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1552 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1553 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1554 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1555 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1556 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1557 #endif
whismanoid 0:cb44e2e9ec4c 1558 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1559 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1560 #endif
whismanoid 0:cb44e2e9ec4c 1561 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1562 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1563 #endif
whismanoid 0:cb44e2e9ec4c 1564 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1565 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1566 #endif
whismanoid 0:cb44e2e9ec4c 1567 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1568 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1569 #endif
whismanoid 0:cb44e2e9ec4c 1570 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1571 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1572 #endif
whismanoid 0:cb44e2e9ec4c 1573 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1574 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 1575 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1576 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1577 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1578 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1579 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1580 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1581 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1582 // #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1583 // #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1584 // #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1585 // #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1586 // #define HAS_analogIn10 1
whismanoid 0:cb44e2e9ec4c 1587 // #define HAS_analogIn11 1
whismanoid 0:cb44e2e9ec4c 1588 // #define HAS_analogIn12 1
whismanoid 0:cb44e2e9ec4c 1589 // #define HAS_analogIn13 1
whismanoid 0:cb44e2e9ec4c 1590 // #define HAS_analogIn14 1
whismanoid 0:cb44e2e9ec4c 1591 // #define HAS_analogIn15 1
whismanoid 0:cb44e2e9ec4c 1592 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1593 AnalogIn analogIn0(p15); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:cb44e2e9ec4c 1594 #endif
whismanoid 0:cb44e2e9ec4c 1595 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1596 AnalogIn analogIn1(p16); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:cb44e2e9ec4c 1597 #endif
whismanoid 0:cb44e2e9ec4c 1598 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1599 AnalogIn analogIn2(p17); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:cb44e2e9ec4c 1600 #endif
whismanoid 0:cb44e2e9ec4c 1601 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1602 AnalogIn analogIn3(p18); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:cb44e2e9ec4c 1603 #endif
whismanoid 0:cb44e2e9ec4c 1604 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1605 AnalogIn analogIn4(p19); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:cb44e2e9ec4c 1606 #endif
whismanoid 0:cb44e2e9ec4c 1607 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1608 AnalogIn analogIn5(p20); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:cb44e2e9ec4c 1609 #endif
whismanoid 0:cb44e2e9ec4c 1610 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1611 AnalogIn analogIn6(____);
whismanoid 0:cb44e2e9ec4c 1612 #endif
whismanoid 0:cb44e2e9ec4c 1613 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1614 AnalogIn analogIn7(____);
whismanoid 0:cb44e2e9ec4c 1615 #endif
whismanoid 0:cb44e2e9ec4c 1616 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1617 AnalogIn analogIn8(____);
whismanoid 0:cb44e2e9ec4c 1618 #endif
whismanoid 0:cb44e2e9ec4c 1619 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1620 AnalogIn analogIn9(____);
whismanoid 0:cb44e2e9ec4c 1621 #endif
whismanoid 0:cb44e2e9ec4c 1622 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1623 AnalogIn analogIn10(____);
whismanoid 0:cb44e2e9ec4c 1624 #endif
whismanoid 0:cb44e2e9ec4c 1625 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1626 AnalogIn analogIn11(____);
whismanoid 0:cb44e2e9ec4c 1627 #endif
whismanoid 0:cb44e2e9ec4c 1628 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1629 AnalogIn analogIn12(____);
whismanoid 0:cb44e2e9ec4c 1630 #endif
whismanoid 0:cb44e2e9ec4c 1631 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1632 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1633 #endif
whismanoid 0:cb44e2e9ec4c 1634 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1635 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1636 #endif
whismanoid 0:cb44e2e9ec4c 1637 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1638 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1639 #endif
whismanoid 0:cb44e2e9ec4c 1640 #else
whismanoid 0:cb44e2e9ec4c 1641 // unknown target
whismanoid 0:cb44e2e9ec4c 1642 #endif
whismanoid 0:cb44e2e9ec4c 1643 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:cb44e2e9ec4c 1644 #if HAS_analogIn0 || HAS_analogIn1 \
whismanoid 0:cb44e2e9ec4c 1645 || HAS_analogIn2 || HAS_analogIn3 \
whismanoid 0:cb44e2e9ec4c 1646 || HAS_analogIn4 || HAS_analogIn5 \
whismanoid 0:cb44e2e9ec4c 1647 || HAS_analogIn6 || HAS_analogIn7 \
whismanoid 0:cb44e2e9ec4c 1648 || HAS_analogIn8 || HAS_analogIn9 \
whismanoid 0:cb44e2e9ec4c 1649 || HAS_analogIn10 || HAS_analogIn11 \
whismanoid 0:cb44e2e9ec4c 1650 || HAS_analogIn12 || HAS_analogIn13 \
whismanoid 0:cb44e2e9ec4c 1651 || HAS_analogIn14 || HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1652 #define HAS_analogIns 1
whismanoid 0:cb44e2e9ec4c 1653 #else
whismanoid 0:cb44e2e9ec4c 1654 #warning "Note: There are no analogIn resources defined"
whismanoid 0:cb44e2e9ec4c 1655 #endif
whismanoid 0:cb44e2e9ec4c 1656
whismanoid 0:cb44e2e9ec4c 1657 // DigitalInOut pin resource: print the pin index names to serial
whismanoid 0:cb44e2e9ec4c 1658 #if HAS_digitalInOuts
whismanoid 0:cb44e2e9ec4c 1659 void list_digitalInOutPins(Stream& serialStream)
whismanoid 0:cb44e2e9ec4c 1660 {
whismanoid 0:cb44e2e9ec4c 1661 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1662 serialStream.printf(" 0");
whismanoid 0:cb44e2e9ec4c 1663 #endif
whismanoid 0:cb44e2e9ec4c 1664 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1665 serialStream.printf(" 1");
whismanoid 0:cb44e2e9ec4c 1666 #endif
whismanoid 0:cb44e2e9ec4c 1667 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1668 serialStream.printf(" 2");
whismanoid 0:cb44e2e9ec4c 1669 #endif
whismanoid 0:cb44e2e9ec4c 1670 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1671 serialStream.printf(" 3");
whismanoid 0:cb44e2e9ec4c 1672 #endif
whismanoid 0:cb44e2e9ec4c 1673 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1674 serialStream.printf(" 4");
whismanoid 0:cb44e2e9ec4c 1675 #endif
whismanoid 0:cb44e2e9ec4c 1676 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1677 serialStream.printf(" 5");
whismanoid 0:cb44e2e9ec4c 1678 #endif
whismanoid 0:cb44e2e9ec4c 1679 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1680 serialStream.printf(" 6");
whismanoid 0:cb44e2e9ec4c 1681 #endif
whismanoid 0:cb44e2e9ec4c 1682 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1683 serialStream.printf(" 7");
whismanoid 0:cb44e2e9ec4c 1684 #endif
whismanoid 0:cb44e2e9ec4c 1685 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1686 serialStream.printf(" 8");
whismanoid 0:cb44e2e9ec4c 1687 #endif
whismanoid 0:cb44e2e9ec4c 1688 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1689 serialStream.printf(" 9");
whismanoid 0:cb44e2e9ec4c 1690 #endif
whismanoid 0:cb44e2e9ec4c 1691 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1692 serialStream.printf(" 10");
whismanoid 0:cb44e2e9ec4c 1693 #endif
whismanoid 0:cb44e2e9ec4c 1694 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1695 serialStream.printf(" 11");
whismanoid 0:cb44e2e9ec4c 1696 #endif
whismanoid 0:cb44e2e9ec4c 1697 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1698 serialStream.printf(" 12");
whismanoid 0:cb44e2e9ec4c 1699 #endif
whismanoid 0:cb44e2e9ec4c 1700 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1701 serialStream.printf(" 13");
whismanoid 0:cb44e2e9ec4c 1702 #endif
whismanoid 0:cb44e2e9ec4c 1703 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1704 serialStream.printf(" 14");
whismanoid 0:cb44e2e9ec4c 1705 #endif
whismanoid 0:cb44e2e9ec4c 1706 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1707 serialStream.printf(" 15");
whismanoid 0:cb44e2e9ec4c 1708 #endif
whismanoid 0:cb44e2e9ec4c 1709 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1710 serialStream.printf(" 16");
whismanoid 0:cb44e2e9ec4c 1711 #endif
whismanoid 0:cb44e2e9ec4c 1712 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1713 serialStream.printf(" 17");
whismanoid 0:cb44e2e9ec4c 1714 #endif
whismanoid 18:1235c17b451e 1715 #if USE_LEDS
whismanoid 18:1235c17b451e 1716 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 1717 // support list_digitalInOutPins() listing buttons and leds as pin numbers 90/91/92/93
whismanoid 18:1235c17b451e 1718 // TODO: support find_digitalInOutPin(90) return DigitalInOut of switch SW1/BUTTON1
whismanoid 18:1235c17b451e 1719 //~ serialStream.printf(" 90");
whismanoid 18:1235c17b451e 1720 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 1721 serialStream.printf(" 91");
whismanoid 18:1235c17b451e 1722 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 1723 serialStream.printf(" 92");
whismanoid 18:1235c17b451e 1724 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 1725 serialStream.printf(" 93");
whismanoid 18:1235c17b451e 1726 #else // USE_LEDS
whismanoid 18:1235c17b451e 1727 #endif // USE_LEDS
whismanoid 0:cb44e2e9ec4c 1728 }
whismanoid 0:cb44e2e9ec4c 1729 #endif
whismanoid 0:cb44e2e9ec4c 1730
whismanoid 0:cb44e2e9ec4c 1731
whismanoid 0:cb44e2e9ec4c 1732 // DigitalInOut pin resource: search index
whismanoid 0:cb44e2e9ec4c 1733 #if HAS_digitalInOuts
whismanoid 0:cb44e2e9ec4c 1734 DigitalInOut& find_digitalInOutPin(int cPinIndex)
whismanoid 0:cb44e2e9ec4c 1735 {
whismanoid 0:cb44e2e9ec4c 1736 switch (cPinIndex)
whismanoid 0:cb44e2e9ec4c 1737 {
whismanoid 0:cb44e2e9ec4c 1738 default: // default to the first defined digitalInOut pin
whismanoid 0:cb44e2e9ec4c 1739 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1740 case '0': case 0x00: return digitalInOut0;
whismanoid 0:cb44e2e9ec4c 1741 #endif
whismanoid 0:cb44e2e9ec4c 1742 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1743 case '1': case 0x01: return digitalInOut1;
whismanoid 0:cb44e2e9ec4c 1744 #endif
whismanoid 0:cb44e2e9ec4c 1745 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1746 case '2': case 0x02: return digitalInOut2;
whismanoid 0:cb44e2e9ec4c 1747 #endif
whismanoid 0:cb44e2e9ec4c 1748 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1749 case '3': case 0x03: return digitalInOut3;
whismanoid 0:cb44e2e9ec4c 1750 #endif
whismanoid 0:cb44e2e9ec4c 1751 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1752 case '4': case 0x04: return digitalInOut4;
whismanoid 0:cb44e2e9ec4c 1753 #endif
whismanoid 0:cb44e2e9ec4c 1754 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1755 case '5': case 0x05: return digitalInOut5;
whismanoid 0:cb44e2e9ec4c 1756 #endif
whismanoid 0:cb44e2e9ec4c 1757 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1758 case '6': case 0x06: return digitalInOut6;
whismanoid 0:cb44e2e9ec4c 1759 #endif
whismanoid 0:cb44e2e9ec4c 1760 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1761 case '7': case 0x07: return digitalInOut7;
whismanoid 0:cb44e2e9ec4c 1762 #endif
whismanoid 0:cb44e2e9ec4c 1763 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1764 case '8': case 0x08: return digitalInOut8;
whismanoid 0:cb44e2e9ec4c 1765 #endif
whismanoid 0:cb44e2e9ec4c 1766 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1767 case '9': case 0x09: return digitalInOut9;
whismanoid 0:cb44e2e9ec4c 1768 #endif
whismanoid 0:cb44e2e9ec4c 1769 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1770 case 'a': case 0x0a: return digitalInOut10;
whismanoid 0:cb44e2e9ec4c 1771 #endif
whismanoid 0:cb44e2e9ec4c 1772 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1773 case 'b': case 0x0b: return digitalInOut11;
whismanoid 0:cb44e2e9ec4c 1774 #endif
whismanoid 0:cb44e2e9ec4c 1775 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1776 case 'c': case 0x0c: return digitalInOut12;
whismanoid 0:cb44e2e9ec4c 1777 #endif
whismanoid 0:cb44e2e9ec4c 1778 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1779 case 'd': case 0x0d: return digitalInOut13;
whismanoid 0:cb44e2e9ec4c 1780 #endif
whismanoid 0:cb44e2e9ec4c 1781 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1782 case 'e': case 0x0e: return digitalInOut14;
whismanoid 0:cb44e2e9ec4c 1783 #endif
whismanoid 0:cb44e2e9ec4c 1784 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1785 case 'f': case 0x0f: return digitalInOut15;
whismanoid 0:cb44e2e9ec4c 1786 #endif
whismanoid 0:cb44e2e9ec4c 1787 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1788 case 'g': case 0x10: return digitalInOut16;
whismanoid 0:cb44e2e9ec4c 1789 #endif
whismanoid 0:cb44e2e9ec4c 1790 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1791 case 'h': case 0x11: return digitalInOut17;
whismanoid 0:cb44e2e9ec4c 1792 #endif
whismanoid 18:1235c17b451e 1793 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 1794 // TODO: support find_digitalInOutPin(90) return DigitalInOut of switch SW1/BUTTON1
whismanoid 18:1235c17b451e 1795 //~ case 90: return button1;
whismanoid 18:1235c17b451e 1796 #if USE_LEDS
whismanoid 18:1235c17b451e 1797 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 1798 case 91: return led1_RFailLED;
whismanoid 18:1235c17b451e 1799 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 1800 case 92: return led2_GPassLED;
whismanoid 18:1235c17b451e 1801 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 1802 case 93: return led3_BBusyLED;
whismanoid 18:1235c17b451e 1803 #else // USE_LEDS
whismanoid 18:1235c17b451e 1804 #endif // USE_LEDS
whismanoid 0:cb44e2e9ec4c 1805 }
whismanoid 0:cb44e2e9ec4c 1806 }
whismanoid 0:cb44e2e9ec4c 1807 #endif
whismanoid 0:cb44e2e9ec4c 1808
whismanoid 0:cb44e2e9ec4c 1809
whismanoid 0:cb44e2e9ec4c 1810 // AnalogIn pin resource: search index
whismanoid 0:cb44e2e9ec4c 1811 #if HAS_analogIns
whismanoid 0:cb44e2e9ec4c 1812 AnalogIn& find_analogInPin(int cPinIndex)
whismanoid 0:cb44e2e9ec4c 1813 {
whismanoid 0:cb44e2e9ec4c 1814 switch (cPinIndex)
whismanoid 0:cb44e2e9ec4c 1815 {
whismanoid 0:cb44e2e9ec4c 1816 default: // default to the first defined analogIn pin
whismanoid 0:cb44e2e9ec4c 1817 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1818 case '0': case 0x00: return analogIn0;
whismanoid 0:cb44e2e9ec4c 1819 #endif
whismanoid 0:cb44e2e9ec4c 1820 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1821 case '1': case 0x01: return analogIn1;
whismanoid 0:cb44e2e9ec4c 1822 #endif
whismanoid 0:cb44e2e9ec4c 1823 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1824 case '2': case 0x02: return analogIn2;
whismanoid 0:cb44e2e9ec4c 1825 #endif
whismanoid 0:cb44e2e9ec4c 1826 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1827 case '3': case 0x03: return analogIn3;
whismanoid 0:cb44e2e9ec4c 1828 #endif
whismanoid 0:cb44e2e9ec4c 1829 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1830 case '4': case 0x04: return analogIn4;
whismanoid 0:cb44e2e9ec4c 1831 #endif
whismanoid 0:cb44e2e9ec4c 1832 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1833 case '5': case 0x05: return analogIn5;
whismanoid 0:cb44e2e9ec4c 1834 #endif
whismanoid 0:cb44e2e9ec4c 1835 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1836 case '6': case 0x06: return analogIn6;
whismanoid 0:cb44e2e9ec4c 1837 #endif
whismanoid 0:cb44e2e9ec4c 1838 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1839 case '7': case 0x07: return analogIn7;
whismanoid 0:cb44e2e9ec4c 1840 #endif
whismanoid 0:cb44e2e9ec4c 1841 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1842 case '8': case 0x08: return analogIn8;
whismanoid 0:cb44e2e9ec4c 1843 #endif
whismanoid 0:cb44e2e9ec4c 1844 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1845 case '9': case 0x09: return analogIn9;
whismanoid 0:cb44e2e9ec4c 1846 #endif
whismanoid 0:cb44e2e9ec4c 1847 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1848 case 'a': case 0x0a: return analogIn10;
whismanoid 0:cb44e2e9ec4c 1849 #endif
whismanoid 0:cb44e2e9ec4c 1850 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1851 case 'b': case 0x0b: return analogIn11;
whismanoid 0:cb44e2e9ec4c 1852 #endif
whismanoid 0:cb44e2e9ec4c 1853 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1854 case 'c': case 0x0c: return analogIn12;
whismanoid 0:cb44e2e9ec4c 1855 #endif
whismanoid 0:cb44e2e9ec4c 1856 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1857 case 'd': case 0x0d: return analogIn13;
whismanoid 0:cb44e2e9ec4c 1858 #endif
whismanoid 0:cb44e2e9ec4c 1859 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1860 case 'e': case 0x0e: return analogIn14;
whismanoid 0:cb44e2e9ec4c 1861 #endif
whismanoid 0:cb44e2e9ec4c 1862 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1863 case 'f': case 0x0f: return analogIn15;
whismanoid 0:cb44e2e9ec4c 1864 #endif
whismanoid 0:cb44e2e9ec4c 1865 }
whismanoid 0:cb44e2e9ec4c 1866 }
whismanoid 0:cb44e2e9ec4c 1867 #endif
whismanoid 0:cb44e2e9ec4c 1868
whismanoid 0:cb44e2e9ec4c 1869 #if HAS_analogIns
whismanoid 0:cb44e2e9ec4c 1870 const float analogInPin_fullScaleVoltage[] = {
whismanoid 0:cb44e2e9ec4c 1871 # if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 1872 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1873 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1874 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1875 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1876 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1877 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1878 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1879 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1880 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1881 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1882 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1883 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1884 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1885 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1886 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1887 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1888 # elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 1889 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1890 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1891 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1892 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1893 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1894 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1895 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1896 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1897 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1898 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1899 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1900 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1901 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1902 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1903 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1904 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1905 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 19:5ff09c8e9daf 1906 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 1907 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn0 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1908 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn1 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1909 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn2 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1910 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn3 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1911 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1912 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1913 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1914 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1915 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1916 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1917 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1918 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1919 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1920 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1921 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1922 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1923 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 1924 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1925 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1926 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1927 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1928 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1929 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1930 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1931 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1932 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1933 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1934 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1935 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1936 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1937 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1938 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1939 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1940 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1941 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1942 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1943 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1944 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1945 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1946 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1947 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1948 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1949 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1950 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1951 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1952 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1953 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1954 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1955 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1956 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1957 //#elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1958 #else
whismanoid 0:cb44e2e9ec4c 1959 // unknown target
whismanoid 0:cb44e2e9ec4c 1960 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1961 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1962 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1963 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1964 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1965 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1966 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1967 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1968 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1969 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1970 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1971 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1972 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1973 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1974 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1975 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1976 # endif
whismanoid 0:cb44e2e9ec4c 1977 };
whismanoid 0:cb44e2e9ec4c 1978 #endif
whismanoid 0:cb44e2e9ec4c 1979
whismanoid 0:cb44e2e9ec4c 1980
whismanoid 0:cb44e2e9ec4c 1981
whismanoid 0:cb44e2e9ec4c 1982
whismanoid 0:cb44e2e9ec4c 1983 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 1984 // TODO support CmdLine command menus (like on Serial_Tester)
whismanoid 4:d9b05924ad4c 1985 #ifndef USE_CMDLINE_MENUS
whismanoid 4:d9b05924ad4c 1986 #define USE_CMDLINE_MENUS 1
whismanoid 4:d9b05924ad4c 1987 //~ #undef USE_CMDLINE_MENUS
whismanoid 4:d9b05924ad4c 1988 #endif
whismanoid 4:d9b05924ad4c 1989 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 1990 #include "CmdLine.h"
whismanoid 4:d9b05924ad4c 1991 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 1992 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 1993 extern CmdLine cmdLine; // declared later
whismanoid 4:d9b05924ad4c 1994 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 1995
whismanoid 4:d9b05924ad4c 1996 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 1997 // Datalog trigger types
whismanoid 4:d9b05924ad4c 1998 #ifndef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 1999 #define USE_DATALOGGER_TRIGGER 1
whismanoid 4:d9b05924ad4c 2000 //~ #undef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 2001 #endif
whismanoid 4:d9b05924ad4c 2002 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 2003 typedef enum Datalogger_Trigger_enum_t {
whismanoid 4:d9b05924ad4c 2004 trigger_Halt = 0, //!< halt
whismanoid 4:d9b05924ad4c 2005 trigger_FreeRun = 1, //!< free run as fast as possible
whismanoid 4:d9b05924ad4c 2006 trigger_Timer = 2, //!< timer (configure interval)
whismanoid 4:d9b05924ad4c 2007 trigger_PlatformDigitalInput, //!< platform digital input (configure digital input pin reference)
whismanoid 4:d9b05924ad4c 2008 trigger_SPIDeviceRegRead, //!< SPI device register read (configure regaddr, mask value, match value)
whismanoid 4:d9b05924ad4c 2009 } Datalogger_Trigger_enum_t;
whismanoid 4:d9b05924ad4c 2010 Datalogger_Trigger_enum_t Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 2011 //
whismanoid 17:9397ea3ea7e9 2012 // configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 2013 int g_timer_interval_msec = 500; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2014 int g_timer_interval_count = 10; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2015 int g_timer_interval_counter = 0; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2016 //
whismanoid 17:9397ea3ea7e9 2017 // TODO: configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 2018 //
whismanoid 17:9397ea3ea7e9 2019 // TODO: configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2020 //
whismanoid 4:d9b05924ad4c 2021 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 2022
whismanoid 4:d9b05924ad4c 2023 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 2024 // support trigger_SPIDeviceRegRead: Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 2025 #ifndef USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2026 #define USE_DATALOGGER_SPIDeviceRegRead 0
whismanoid 17:9397ea3ea7e9 2027 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2028 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2029 // TODO: uint16_t regAddr;
whismanoid 17:9397ea3ea7e9 2030 // TODO: uint16_t regDataMask;
whismanoid 17:9397ea3ea7e9 2031 // TODO: uint16_t regDataTest;
whismanoid 17:9397ea3ea7e9 2032 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2033
whismanoid 17:9397ea3ea7e9 2034 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 2035 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2036 #ifndef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 2037 #define USE_DATALOGGER_ActionTable 1
whismanoid 17:9397ea3ea7e9 2038 //~ #undef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 2039 #endif
whismanoid 17:9397ea3ea7e9 2040 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2041 //
whismanoid 17:9397ea3ea7e9 2042 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2043 typedef enum action_type_enum_t {
whismanoid 17:9397ea3ea7e9 2044 action_noop = 0, // no operation
whismanoid 17:9397ea3ea7e9 2045 action_digitalOutLow, // pin = low if condition
whismanoid 17:9397ea3ea7e9 2046 action_digitalOutHigh, // pin = low if condition
whismanoid 29:6a9edb6e973b 2047 action_button, // pin = button index 1, 2, 3
whismanoid 17:9397ea3ea7e9 2048 action_trigger_Halt,
whismanoid 17:9397ea3ea7e9 2049 action_trigger_FreeRun,
whismanoid 17:9397ea3ea7e9 2050 action_trigger_Timer,
whismanoid 17:9397ea3ea7e9 2051 action_trigger_PlatformDigitalInput,
whismanoid 17:9397ea3ea7e9 2052 action_trigger_SPIDeviceRegRead,
whismanoid 17:9397ea3ea7e9 2053 } action_type_enum_t;
whismanoid 17:9397ea3ea7e9 2054 //
whismanoid 17:9397ea3ea7e9 2055 // Datalogger_RunActionTable() supported conditions
whismanoid 17:9397ea3ea7e9 2056 typedef enum action_condition_enum_t {
whismanoid 17:9397ea3ea7e9 2057 condition_always = 0, // ( true )
whismanoid 17:9397ea3ea7e9 2058 condition_if_An_gt_threshold, // (Platform_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 2059 condition_if_An_lt_threshold, // (Platform_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 2060 condition_if_An_eq_threshold, // (Platform_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 2061 condition_if_An_ge_threshold, // (Platform_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 2062 condition_if_An_le_threshold, // (Platform_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 2063 condition_if_An_ne_threshold, // (Platform_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 2064 condition_if_AINn_gt_threshold, // (SPI_AIN_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 2065 condition_if_AINn_lt_threshold, // (SPI_AIN_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 2066 condition_if_AINn_eq_threshold, // (SPI_AIN_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 2067 condition_if_AINn_ge_threshold, // (SPI_AIN_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 2068 condition_if_AINn_le_threshold, // (SPI_AIN_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 2069 condition_if_AINn_ne_threshold, // (SPI_AIN_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 2070 } condition_enum_t;
whismanoid 17:9397ea3ea7e9 2071 //
whismanoid 17:9397ea3ea7e9 2072 // Datalogger_RunActionTable() structure
whismanoid 17:9397ea3ea7e9 2073 typedef struct action_table_row_t {
whismanoid 17:9397ea3ea7e9 2074 action_type_enum_t action;
whismanoid 17:9397ea3ea7e9 2075 int digitalOutPin;
whismanoid 17:9397ea3ea7e9 2076 action_condition_enum_t condition;
whismanoid 17:9397ea3ea7e9 2077 int condition_channel;
whismanoid 17:9397ea3ea7e9 2078 double condition_threshold;
whismanoid 17:9397ea3ea7e9 2079 } action_table_row_t;
whismanoid 17:9397ea3ea7e9 2080 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2081 const int channel_WE = 2;
whismanoid 17:9397ea3ea7e9 2082 const double threshold_WE_0V5 = 0.5;
whismanoid 17:9397ea3ea7e9 2083 const double threshold_WE_0V6 = 0.6;
whismanoid 17:9397ea3ea7e9 2084 const double threshold_WE_0V7 = 0.7;
whismanoid 18:1235c17b451e 2085 const int pin_LED_1 = 91; // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 2086 const int pin_LED_2 = 92; // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 2087 const int pin_LED_3 = 93; // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 17:9397ea3ea7e9 2088 #endif
whismanoid 17:9397ea3ea7e9 2089 const int ACTION_TABLE_ROW_MAX = 20;
whismanoid 17:9397ea3ea7e9 2090 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2091 bool Datalogger_action_table_enabled = true;
whismanoid 18:1235c17b451e 2092 int Datalogger_action_table_row_count = 6; // assert (Datalogger_action_table_row_count <= ACTION_TABLE_ROW_MAX)
whismanoid 17:9397ea3ea7e9 2093 #else // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2094 int Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 2095 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2096 action_table_row_t Datalogger_action_table[ACTION_TABLE_ROW_MAX] = {
whismanoid 17:9397ea3ea7e9 2097 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2098 // LED indicator show (WE > 0.5V)
whismanoid 18:1235c17b451e 2099 // L@0 act=1 pin=92 if=1 ch=2 x=0.500000 -- digitalOutLow D92 if A2 > 0.500000
whismanoid 18:1235c17b451e 2100 {action_digitalOutLow, pin_LED_2, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V5},
whismanoid 17:9397ea3ea7e9 2101 //
whismanoid 17:9397ea3ea7e9 2102 // LED indicator show (WE > 0.6V)
whismanoid 18:1235c17b451e 2103 // L@1 act=1 pin=93 if=1 ch=2 x=0.600000 -- digitalOutLow D93 if A2 > 0.600000
whismanoid 18:1235c17b451e 2104 {action_digitalOutLow, pin_LED_3, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 17:9397ea3ea7e9 2105 //
whismanoid 17:9397ea3ea7e9 2106 // switch to always-on mode `trigger_FreeRun` if (WE > 0.7V)
whismanoid 29:6a9edb6e973b 2107 // L@2 act=5 if=1 ch=2 x=0.700000 -- trigger_FreeRun if A2 > 0.700000
whismanoid 17:9397ea3ea7e9 2108 {action_trigger_FreeRun, 0, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 17:9397ea3ea7e9 2109 //
whismanoid 17:9397ea3ea7e9 2110 // switch to intermittent-sleep-mode `trigger_Timer` if (WE < 0.6V)
whismanoid 29:6a9edb6e973b 2111 // L@3 act=6 if=2 ch=2 x=0.600000 -- trigger_Timer(10 x 500msec) if A2 < 0.600000
whismanoid 17:9397ea3ea7e9 2112 {action_trigger_Timer, 0, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 2113 //
whismanoid 18:1235c17b451e 2114 // LED indicator show (`Datalogger_Trigger` == `trigger_FreeRun`)
whismanoid 18:1235c17b451e 2115 // {action_noop, 0, condition_always, 0, 0},
whismanoid 18:1235c17b451e 2116 // L@4 act=1 pin=91 if=1 ch=2 x=0.700000 -- digitalOutLow D91 if A2 > 0.700000
whismanoid 18:1235c17b451e 2117 {action_digitalOutLow, pin_LED_1, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 18:1235c17b451e 2118 //
whismanoid 18:1235c17b451e 2119 // L@5 act=2 pin=91 if=2 ch=2 x=0.600000 -- digitalOutHigh D91 if A2 < 0.600000
whismanoid 18:1235c17b451e 2120 {action_digitalOutHigh, pin_LED_1, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 2121 //
whismanoid 29:6a9edb6e973b 2122 // L@6 act=3 pin=2 if=2 ch=2 x=0.700000 -- button 2 if A2 < 0.700000
whismanoid 29:6a9edb6e973b 2123 {action_button, 2, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 29:6a9edb6e973b 2124 //
whismanoid 29:6a9edb6e973b 2125 // L@7 act=3 pin=3 if=2 ch=2 x=0.600000 -- button 3 if A2 < 0.600000
whismanoid 29:6a9edb6e973b 2126 {action_button, 3, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 29:6a9edb6e973b 2127 //
whismanoid 17:9397ea3ea7e9 2128 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2129 //
whismanoid 17:9397ea3ea7e9 2130 {action_noop, 0, condition_always, 0, 0},
whismanoid 17:9397ea3ea7e9 2131 };
whismanoid 17:9397ea3ea7e9 2132 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2133
whismanoid 17:9397ea3ea7e9 2134 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2135 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 2136 uint8_t Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 2137 uint8_t need_reinit = true;
whismanoid 8:dffee7509bfb 2138 void Datalogger_PrintHeader(CmdLine& cmdLine);
whismanoid 5:aaf8b5f5fda1 2139 void Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 2140 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2141 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 2142 void Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 2143 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 8:dffee7509bfb 2144 void Datalogger_PrintRow(CmdLine& cmdLine);
whismanoid 4:d9b05924ad4c 2145
whismanoid 4:d9b05924ad4c 2146 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 2147 // Option to validate SPI link by reading PART_ID register
whismanoid 0:cb44e2e9ec4c 2148 #ifndef VERIFY_PART_ID_IN_LOOP
whismanoid 3:9055e17e181a 2149 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2150 #define VERIFY_PART_ID_IN_LOOP 1
whismanoid 3:9055e17e181a 2151 #else
whismanoid 0:cb44e2e9ec4c 2152 #define VERIFY_PART_ID_IN_LOOP 0
whismanoid 3:9055e17e181a 2153 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2154 #endif
whismanoid 0:cb44e2e9ec4c 2155
whismanoid 3:9055e17e181a 2156 //--------------------------------------------------
whismanoid 3:9055e17e181a 2157 #define NUM_DUT_ANALOG_IN_CHANNELS 10
whismanoid 3:9055e17e181a 2158
whismanoid 3:9055e17e181a 2159 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2160 // MAX11410 individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 3:9055e17e181a 2161 typedef enum SPI_AIN_Enable_t {
whismanoid 10:04022a61b527 2162 SPI_AIN_Disable = 0,
whismanoid 10:04022a61b527 2163 SPI_AIN_Enable_LSB = 1,
whismanoid 10:04022a61b527 2164 SPI_AIN_Enable_Volt = 2,
whismanoid 3:9055e17e181a 2165 } SPI_AIN_Enable_t;
whismanoid 3:9055e17e181a 2166 uint8_t SPI_AIN_Enable_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2167 SPI_AIN_Enable_LSB, // AIN0 1=LSB
whismanoid 10:04022a61b527 2168 SPI_AIN_Enable_LSB, // AIN1 1=LSB
whismanoid 10:04022a61b527 2169 SPI_AIN_Enable_LSB, // AIN2 1=LSB
whismanoid 10:04022a61b527 2170 SPI_AIN_Enable_LSB, // AIN3 1=LSB
whismanoid 10:04022a61b527 2171 SPI_AIN_Enable_LSB, // AIN4 1=LSB
whismanoid 10:04022a61b527 2172 SPI_AIN_Enable_LSB, // AIN5 1=LSB
whismanoid 10:04022a61b527 2173 SPI_AIN_Enable_LSB, // AIN6 1=LSB
whismanoid 10:04022a61b527 2174 SPI_AIN_Enable_LSB, // AIN7 1=LSB
whismanoid 10:04022a61b527 2175 SPI_AIN_Enable_LSB, // AIN8 1=LSB
whismanoid 10:04022a61b527 2176 SPI_AIN_Enable_LSB, // AIN9 1=LSB
whismanoid 3:9055e17e181a 2177 };
whismanoid 3:9055e17e181a 2178 //
whismanoid 10:04022a61b527 2179 double SPI_AIN_Voltage[NUM_DUT_ANALOG_IN_CHANNELS];
whismanoid 13:184a08909405 2180 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2181 #ifndef HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 2182 #define HAS_SPI_AIN_customChannelHeader 0
whismanoid 13:184a08909405 2183 #endif
whismanoid 13:184a08909405 2184 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2185 const char* const SPI_AIN_customChannelHeader_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2186 "", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2187 "", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2188 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2189 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2190 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2191 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2192 };
whismanoid 13:184a08909405 2193 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 3:9055e17e181a 2194 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2195 // ---------- Measure_Voltage_custom_props in Measure_Voltage @pre and in class properties ----------
whismanoid 3:9055e17e181a 2196 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 2197 // MAX11410 specific per-channel config register v_filter
whismanoid 3:9055e17e181a 2198 uint8_t SPI_AIN_Cfg_v_filter_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2199 0x34, // AIN0 @ v_filter=0x34
whismanoid 3:9055e17e181a 2200 0x34, // AIN1 @ v_filter=0x34
whismanoid 3:9055e17e181a 2201 0x34, // AIN2 @ v_filter=0x34
whismanoid 3:9055e17e181a 2202 0x34, // AIN3 @ v_filter=0x34
whismanoid 3:9055e17e181a 2203 0x34, // AIN4 @ v_filter=0x34
whismanoid 3:9055e17e181a 2204 0x34, // AIN5 @ v_filter=0x34
whismanoid 3:9055e17e181a 2205 0x34, // AIN6 @ v_filter=0x34
whismanoid 3:9055e17e181a 2206 0x34, // AIN7 @ v_filter=0x34
whismanoid 3:9055e17e181a 2207 0x34, // AIN8 @ v_filter=0x34
whismanoid 3:9055e17e181a 2208 0x34, // AIN9 @ v_filter=0x34
whismanoid 3:9055e17e181a 2209 };
whismanoid 3:9055e17e181a 2210 //
whismanoid 4:d9b05924ad4c 2211 // MAX11410 specific per-channel config register v_ctrl
whismanoid 3:9055e17e181a 2212 uint8_t SPI_AIN_Cfg_v_ctrl_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2213 0x42, // AIN0 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2214 0x42, // AIN1 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2215 0x42, // AIN2 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2216 0x42, // AIN3 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2217 0x42, // AIN4 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2218 0x42, // AIN5 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2219 0x42, // AIN6 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2220 0x42, // AIN7 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2221 0x42, // AIN8 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2222 0x42, // AIN9 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2223 };
whismanoid 3:9055e17e181a 2224 //
whismanoid 4:d9b05924ad4c 2225 // MAX11410 specific per-channel config register v_pga
whismanoid 3:9055e17e181a 2226 uint8_t SPI_AIN_Cfg_v_pga_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2227 0x00, // AIN0 @ v_pga=0x00
whismanoid 3:9055e17e181a 2228 0x00, // AIN1 @ v_pga=0x00
whismanoid 3:9055e17e181a 2229 0x00, // AIN2 @ v_pga=0x00
whismanoid 3:9055e17e181a 2230 0x00, // AIN3 @ v_pga=0x00
whismanoid 3:9055e17e181a 2231 0x00, // AIN4 @ v_pga=0x00
whismanoid 3:9055e17e181a 2232 0x00, // AIN5 @ v_pga=0x00
whismanoid 3:9055e17e181a 2233 0x00, // AIN6 @ v_pga=0x00
whismanoid 3:9055e17e181a 2234 0x00, // AIN7 @ v_pga=0x00
whismanoid 3:9055e17e181a 2235 0x00, // AIN8 @ v_pga=0x00
whismanoid 3:9055e17e181a 2236 0x00, // AIN9 @ v_pga=0x00
whismanoid 3:9055e17e181a 2237 };
whismanoid 3:9055e17e181a 2238 //
whismanoid 3:9055e17e181a 2239 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2240 // ---------- Measure_Voltage_custom_props ----------
whismanoid 0:cb44e2e9ec4c 2241 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2242 // filter register configuration in Measure_Voltage and Read_All_Voltages CONV_TYPE_01_Continuous
whismanoid 0:cb44e2e9ec4c 2243 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2244 //~ const uint8_t custom_v_filter = 0x00; // @ v_filter=0x00 -- LINEF_00_50Hz_60Hz_FIR RATE_0000 | 1.1SPS
whismanoid 0:cb44e2e9ec4c 2245 //~ const uint8_t custom_v_filter = 0x01; // @ v_filter=0x01 -- LINEF_00_50Hz_60Hz_FIR RATE_0001 | 2.1SPS
whismanoid 0:cb44e2e9ec4c 2246 //~ const uint8_t custom_v_filter = 0x02; // @ v_filter=0x02 -- LINEF_00_50Hz_60Hz_FIR RATE_0010 | 4.2SPS
whismanoid 0:cb44e2e9ec4c 2247 //~ const uint8_t custom_v_filter = 0x03; // @ v_filter=0x03 -- LINEF_00_50Hz_60Hz_FIR RATE_0011 | 8.4SPS
whismanoid 0:cb44e2e9ec4c 2248 //~ const uint8_t custom_v_filter = 0x04; // @ v_filter=0x04 -- LINEF_00_50Hz_60Hz_FIR RATE_0100 | 16.8SPS
whismanoid 0:cb44e2e9ec4c 2249 //~ const uint8_t custom_v_filter = 0x10; // @ v_filter=0x10 -- LINEF_01_50Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2250 //~ const uint8_t custom_v_filter = 0x11; // @ v_filter=0x11 -- LINEF_01_50Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2251 //~ const uint8_t custom_v_filter = 0x12; // @ v_filter=0x12 -- LINEF_01_50Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2252 //~ const uint8_t custom_v_filter = 0x13; // @ v_filter=0x13 -- LINEF_01_50Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2253 //~ const uint8_t custom_v_filter = 0x14; // @ v_filter=0x14 -- LINEF_01_50Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2254 //~ const uint8_t custom_v_filter = 0x15; // @ v_filter=0x15 -- LINEF_01_50Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2255 //~ const uint8_t custom_v_filter = 0x20; // @ v_filter=0x20 -- LINEF_10_60Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2256 //~ const uint8_t custom_v_filter = 0x21; // @ v_filter=0x21 -- LINEF_10_60Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2257 //~ const uint8_t custom_v_filter = 0x22; // @ v_filter=0x22 -- LINEF_10_60Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2258 //~ const uint8_t custom_v_filter = 0x23; // @ v_filter=0x23 -- LINEF_10_60Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2259 //~ const uint8_t custom_v_filter = 0x24; // @ v_filter=0x24 -- LINEF_10_60Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2260 //~ const uint8_t custom_v_filter = 0x25; // @ v_filter=0x25 -- LINEF_10_60Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2261 //~ const uint8_t custom_v_filter = 0x30; // @ v_filter=0x30 -- LINEF_11_SINC4 RATE_0000 | 4SPS
whismanoid 0:cb44e2e9ec4c 2262 //~ const uint8_t custom_v_filter = 0x31; // @ v_filter=0x31 -- LINEF_11_SINC4 RATE_0001 | 10SPS
whismanoid 0:cb44e2e9ec4c 2263 //~ const uint8_t custom_v_filter = 0x32; // @ v_filter=0x32 -- LINEF_11_SINC4 RATE_0010 | 20SPS
whismanoid 0:cb44e2e9ec4c 2264 //~ const uint8_t custom_v_filter = 0x33; // @ v_filter=0x33 -- LINEF_11_SINC4 RATE_0011 | 40SPS
whismanoid 0:cb44e2e9ec4c 2265 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2266 //~ const uint8_t custom_v_filter = 0x35; // @ v_filter=0x35 -- LINEF_11_SINC4 RATE_0101 | 120SPS
whismanoid 0:cb44e2e9ec4c 2267 //~ const uint8_t custom_v_filter = 0x36; // @ v_filter=0x36 -- LINEF_11_SINC4 RATE_0110 | 240SPS
whismanoid 0:cb44e2e9ec4c 2268 //~ const uint8_t custom_v_filter = 0x37; // @ v_filter=0x37 -- LINEF_11_SINC4 RATE_0111 | 480SPS
whismanoid 0:cb44e2e9ec4c 2269 //~ const uint8_t custom_v_filter = 0x38; // @ v_filter=0x38 -- LINEF_11_SINC4 RATE_1000 | 960SPS
whismanoid 0:cb44e2e9ec4c 2270 //~ const uint8_t custom_v_filter = 0x39; // @ v_filter=0x39 -- LINEF_11_SINC4 RATE_1001 | 1920SPS
whismanoid 0:cb44e2e9ec4c 2271 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2272 //
whismanoid 0:cb44e2e9ec4c 2273 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2274 // pga register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 0:cb44e2e9ec4c 2275 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2276 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2277 //~ const uint8_t custom_v_pga = 0x10; // @ v_pga=0x10 -- 0x10 SIG_PATH_01_BYPASS
whismanoid 0:cb44e2e9ec4c 2278 //~ const uint8_t custom_v_pga = 0x20; // @ v_pga=0x20 -- 0x20 SIG_PATH_10_PGA GAIN_000_1
whismanoid 0:cb44e2e9ec4c 2279 //~ const uint8_t custom_v_pga = 0x21; // @ v_pga=0x21 --*0x21 SIG_PATH_10_PGA GAIN_001_2
whismanoid 0:cb44e2e9ec4c 2280 //~ const uint8_t custom_v_pga = 0x22; // @ v_pga=0x22 -- 0x22 SIG_PATH_10_PGA GAIN_010_4
whismanoid 0:cb44e2e9ec4c 2281 //~ const uint8_t custom_v_pga = 0x23; // @ v_pga=0x23 -- 0x23 SIG_PATH_10_PGA GAIN_011_8
whismanoid 0:cb44e2e9ec4c 2282 //~ const uint8_t custom_v_pga = 0x24; // @ v_pga=0x24 -- 0x24 SIG_PATH_10_PGA GAIN_100_16
whismanoid 0:cb44e2e9ec4c 2283 //~ const uint8_t custom_v_pga = 0x25; // @ v_pga=0x25 -- 0x25 SIG_PATH_10_PGA GAIN_101_32
whismanoid 0:cb44e2e9ec4c 2284 //~ const uint8_t custom_v_pga = 0x26; // @ v_pga=0x26 -- 0x26 SIG_PATH_10_PGA GAIN_110_64
whismanoid 0:cb44e2e9ec4c 2285 //~ const uint8_t custom_v_pga = 0x27; // @ v_pga=0x27 -- 0x27 SIG_PATH_10_PGA GAIN_111_128
whismanoid 0:cb44e2e9ec4c 2286 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2287 //
whismanoid 0:cb44e2e9ec4c 2288 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2289 // ctrl register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 3:9055e17e181a 2290 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2291 //~ const uint8_t custom_v_ctrl = 0x40; // @ v_ctrl=0x40 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1
whismanoid 0:cb44e2e9ec4c 2292 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2293 //~ const uint8_t custom_v_ctrl = 0x58; // @ v_ctrl=0x58 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2294 //
whismanoid 0:cb44e2e9ec4c 2295 //~ const uint8_t custom_v_ctrl = 0x41; // @ v_ctrl=0x41 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N
whismanoid 0:cb44e2e9ec4c 2296 //~ const uint8_t custom_v_ctrl = 0x45; // @ v_ctrl=0x45 -- 0x40 unipolar, 0x05 REF_SEL_101_REF1P_AGND
whismanoid 0:cb44e2e9ec4c 2297 //~ const uint8_t custom_v_ctrl = 0x59; // @ v_ctrl=0x59 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2298 //
whismanoid 0:cb44e2e9ec4c 2299 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2300 //~ const uint8_t custom_v_ctrl = 0x46; // @ v_ctrl=0x46 -- 0x40 unipolar, 0x06 REF_SEL_110_REF2P_AGND
whismanoid 0:cb44e2e9ec4c 2301 //~ const uint8_t custom_v_ctrl = 0x22; // @ v_ctrl=0x22 -- 0x20 bipolar offset binary, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2302 //~ const uint8_t custom_v_ctrl = 0x02; // @ v_ctrl=0x02 -- 0x00 bipolar 2's complement, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2303 //
whismanoid 0:cb44e2e9ec4c 2304 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2305 //~ const uint8_t custom_v_ctrl = 0x47; // @ v_ctrl=0x47 -- 0x40 unipolar, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2306 //~ const uint8_t custom_v_ctrl = 0x27; // @ v_ctrl=0x27 -- 0x20 bipolar offset binary, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2307 //~ const uint8_t custom_v_ctrl = 0x07; // @ v_ctrl=0x07 -- 0x00 bipolar 2's complement, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2308 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2309
whismanoid 3:9055e17e181a 2310 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2311 // example code declare SPI interface (GPIO controlled CS)
whismanoid 0:cb44e2e9ec4c 2312 #if defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 2313 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 2314 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 19:5ff09c8e9daf 2315 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 2316 #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 2317 SPI spi(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625PICO: pin P0_5 P0_6 P0_4
whismanoid 0:cb44e2e9ec4c 2318 DigitalOut spi_cs(SPI0_SS); // TARGET_MAX32625PICO: pin P0_7
whismanoid 0:cb44e2e9ec4c 2319 #elif defined(TARGET_MAX32600MBED)
whismanoid 0:cb44e2e9ec4c 2320 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:cb44e2e9ec4c 2321 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2322 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 2323 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 2324 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:cb44e2e9ec4c 2325 //
whismanoid 0:cb44e2e9ec4c 2326 // TODO1: NUCLEO_F446RE SPI not working; CS and MOSI data looks OK but no SCLK clock pulses.
whismanoid 0:cb44e2e9ec4c 2327 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 2328 DigitalOut spi_cs(SPI_CS); // TARGET_NUCLEO_F446RE: PB_6 Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2329 //
whismanoid 0:cb44e2e9ec4c 2330 #else
whismanoid 3:9055e17e181a 2331 SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 3:9055e17e181a 2332 DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2333 #endif
whismanoid 0:cb44e2e9ec4c 2334
whismanoid 0:cb44e2e9ec4c 2335 // example code declare GPIO interface pins
whismanoid 0:cb44e2e9ec4c 2336 // example code declare device instance
whismanoid 3:9055e17e181a 2337 MAX11410 g_MAX11410_device(spi, spi_cs, MAX11410::MAX11410_IC);
whismanoid 3:9055e17e181a 2338 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2339
whismanoid 1:747f1602abfc 2340 //--------------------------------------------------
whismanoid 3:9055e17e181a 2341 // Option to Datalog Arduino platform analog inputs
whismanoid 3:9055e17e181a 2342 #ifndef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2343 #define LOG_PLATFORM_AIN 6
whismanoid 3:9055e17e181a 2344 //~ #undef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2345 #endif
whismanoid 3:9055e17e181a 2346 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 1:747f1602abfc 2347 //#ifndef NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 1:747f1602abfc 2348 //#define NUM_PLATFORM_ANALOG_IN_CHANNELS 6
whismanoid 1:747f1602abfc 2349 //#endif
whismanoid 1:747f1602abfc 2350 const int NUM_PLATFORM_ANALOG_IN_CHANNELS = 6;
whismanoid 1:747f1602abfc 2351 const double adc_full_scale_voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2352 analogInPin_fullScaleVoltage[0], // 1.2,
whismanoid 10:04022a61b527 2353 analogInPin_fullScaleVoltage[1], // 1.2,
whismanoid 10:04022a61b527 2354 analogInPin_fullScaleVoltage[2], // 1.2,
whismanoid 10:04022a61b527 2355 analogInPin_fullScaleVoltage[3], // 1.2,
whismanoid 10:04022a61b527 2356 analogInPin_fullScaleVoltage[4], // 6.0
whismanoid 10:04022a61b527 2357 analogInPin_fullScaleVoltage[5], // 6.0
whismanoid 0:cb44e2e9ec4c 2358 };
whismanoid 9:45f98573eb6d 2359 // Platform ADC individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 9:45f98573eb6d 2360 typedef enum Platform_AIN_Enable_t {
whismanoid 9:45f98573eb6d 2361 Platform_AIN_Disable = 0,
whismanoid 9:45f98573eb6d 2362 Platform_AIN_Enable_LSB = 1,
whismanoid 9:45f98573eb6d 2363 Platform_AIN_Enable_Volt = 2,
whismanoid 9:45f98573eb6d 2364 } Platform_AIN_Enable_t;
whismanoid 13:184a08909405 2365 uint8_t Platform_Enable_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 9:45f98573eb6d 2366 Platform_AIN_Enable_Volt, // AIN0 2=Volt
whismanoid 9:45f98573eb6d 2367 Platform_AIN_Enable_Volt, // AIN1 2=Volt
whismanoid 9:45f98573eb6d 2368 Platform_AIN_Enable_Volt, // AIN2 2=Volt
whismanoid 9:45f98573eb6d 2369 Platform_AIN_Enable_Volt, // AIN3 2=Volt
whismanoid 9:45f98573eb6d 2370 Platform_AIN_Enable_Volt, // AIN4 2=Volt
whismanoid 9:45f98573eb6d 2371 Platform_AIN_Enable_Volt, // AIN5 2=Volt
whismanoid 9:45f98573eb6d 2372 };
whismanoid 13:184a08909405 2373 #ifndef HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 2374 #define HAS_Platform_AIN_customChannelHeader 1
whismanoid 13:184a08909405 2375 #endif
whismanoid 13:184a08909405 2376 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2377 const char* const Platform_AIN_customChannelHeader_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2378 "=AIN4", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2379 "=AIN5", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2380 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2381 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2382 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2383 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2384 };
whismanoid 13:184a08909405 2385 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 1:747f1602abfc 2386 //--------------------------------------------------
whismanoid 1:747f1602abfc 2387 // Option to log platform analog inputs as raw LSB code
whismanoid 1:747f1602abfc 2388 #ifndef LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2389 #define LOG_PLATFORM_ANALOG_IN_LSB 0
whismanoid 1:747f1602abfc 2390 #endif
whismanoid 1:747f1602abfc 2391 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2392 int Platform_LSB[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2393 #endif
whismanoid 1:747f1602abfc 2394
whismanoid 1:747f1602abfc 2395 //--------------------------------------------------
whismanoid 1:747f1602abfc 2396 // Option to use platform analog inputs as Voltage
whismanoid 1:747f1602abfc 2397 #ifndef LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2398 #define LOG_PLATFORM_ANALOG_IN_VOLTS 1
whismanoid 1:747f1602abfc 2399 #endif
whismanoid 1:747f1602abfc 2400 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2401 double Platform_Voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2402 #endif
whismanoid 3:9055e17e181a 2403 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 0:cb44e2e9ec4c 2404
whismanoid 10:04022a61b527 2405 //--------------------------------------------------
whismanoid 10:04022a61b527 2406 // Option to use Command forwarding to Auxiliary serial port
whismanoid 10:04022a61b527 2407 // Command forwarding to Auxiliary serial port TX/RX
whismanoid 10:04022a61b527 2408 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial
whismanoid 10:04022a61b527 2409 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial
whismanoid 10:04022a61b527 2410 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2411 #ifndef USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2412 #define USE_AUX_SERIAL_CMD_FORWARDING 1
whismanoid 10:04022a61b527 2413 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2414 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2415 // Command forwarding to Auxiliary serial port TX/RX #257 -- global parameters
whismanoid 10:04022a61b527 2416 const size_t RX_STRING_BUF_SIZE = 1000;
whismanoid 10:04022a61b527 2417 int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 2418 // transmit command string by AUX TX
whismanoid 10:04022a61b527 2419 #if 0
whismanoid 10:04022a61b527 2420 int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 2421 int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 2422 int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 2423 #endif
whismanoid 10:04022a61b527 2424 // capture received string from AUX RX
whismanoid 10:04022a61b527 2425 Timer g_auxSerialCom_Timer;
whismanoid 10:04022a61b527 2426 int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 2427 int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 2428 int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 2429 int g_auxSerialCom_rx_idle_ms = 500; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 2430 int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 2431 const int aux_serial_cmd_forwarding_rx_eot_not_used = 'x';
whismanoid 10:04022a61b527 2432 int g_auxSerialCom_rx_eot = aux_serial_cmd_forwarding_rx_eot_not_used; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 2433 //~ int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text string?
whismanoid 10:04022a61b527 2434 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2435 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2436 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257
whismanoid 10:04022a61b527 2437 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2438 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2439 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2440 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2441 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2442 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2443 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 2444 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2445 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2446 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2447 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2448 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2449 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2450 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2451 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2452
whismanoid 8:dffee7509bfb 2453 // CODE GENERATOR: example code for ADC: serial port declaration
whismanoid 8:dffee7509bfb 2454 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2455 // Declare the Serial driver
whismanoid 8:dffee7509bfb 2456 // default baud rate settings are 9600 8N1
whismanoid 8:dffee7509bfb 2457 // install device driver from http://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe
whismanoid 8:dffee7509bfb 2458 // see docs https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/getting_started/what_need/
whismanoid 8:dffee7509bfb 2459 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2460 #if defined(TARGET_MAX32630)
whismanoid 8:dffee7509bfb 2461 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2462 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2463 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2464 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2465 //
whismanoid 8:dffee7509bfb 2466 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2467 Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2468 //Serial J3AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2469 //Serial BTAUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2470 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2471 //
whismanoid 8:dffee7509bfb 2472 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2473 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2474 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2475 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2476 //
whismanoid 8:dffee7509bfb 2477 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2478 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2479 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2480 USBSerial serial;
whismanoid 8:dffee7509bfb 2481 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2482 #elif defined(TARGET_MAX32625MBED)
whismanoid 8:dffee7509bfb 2483 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625MBED: P0_1,P0_0 (Arduino D1,D0)
whismanoid 8:dffee7509bfb 2484 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2485 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625MBED: P3_1,P3_0 (J15-LEDgreen,LEDred)
whismanoid 8:dffee7509bfb 2486 //
whismanoid 8:dffee7509bfb 2487 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2488 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2489 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2490 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2491 //
whismanoid 8:dffee7509bfb 2492 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2493 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2494 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2495 USBSerial serial;
whismanoid 8:dffee7509bfb 2496 //--------------------------------------------------
whismanoid 22:d6dc8a85f435 2497 #elif defined(TARGET_MAX32625PICO)
whismanoid 8:dffee7509bfb 2498 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2499 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625PICO: P2_1,P2_0 (underside?)
whismanoid 8:dffee7509bfb 2500 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2501 //
whismanoid 8:dffee7509bfb 2502 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2503 Serial AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2504 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2505 //
whismanoid 8:dffee7509bfb 2506 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2507 Serial DAPLINKserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2508 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2509 //
whismanoid 8:dffee7509bfb 2510 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2511 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2512 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2513 USBSerial serial;
whismanoid 22:d6dc8a85f435 2514 //--------------------------------------------------
whismanoid 22:d6dc8a85f435 2515 #elif defined(TARGET_MAX40108DEMOP2U9)
whismanoid 22:d6dc8a85f435 2516 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX40108DEMOP2U9: P0_1,P0_0 (J90.1/J90.0 to console)
whismanoid 22:d6dc8a85f435 2517 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK)
whismanoid 22:d6dc8a85f435 2518 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX40108DEMOP2U9: P3_1,P3_0 (unavailable)
whismanoid 22:d6dc8a85f435 2519 //
whismanoid 22:d6dc8a85f435 2520 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial is used as main serial port in MAX40108 Demo board
whismanoid 22:d6dc8a85f435 2521 Serial serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX40108DEMOP2U9: P0_1,P0_0 (J90.1/J90.0 to console)
whismanoid 22:d6dc8a85f435 2522 // #define HAS_AUX_SERIAL 1
whismanoid 22:d6dc8a85f435 2523 //
whismanoid 22:d6dc8a85f435 2524 // Hardware serial port over DAPLink
whismanoid 22:d6dc8a85f435 2525 // connection to external MAX32625PICO(DAPLINK) needed TX/RX swap in firmware.
whismanoid 22:d6dc8a85f435 2526 // MAX32625PICO(DAPLINK) drives DAPLINK.8, listens on DAPLINK.6.
whismanoid 22:d6dc8a85f435 2527 // See AN6350 MAX32625 Users Guide 7.5.2.3.1 TX and RX Pin Mapping for UART 1 -- Mapping Option B
whismanoid 22:d6dc8a85f435 2528 //Serial DAPLINKserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option A (normal)
whismanoid 22:d6dc8a85f435 2529 Serial DAPLINKserial(UART1_RX,UART1_TX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option B (TX/RX-swap)
whismanoid 22:d6dc8a85f435 2530 #define HAS_DAPLINK_SERIAL 1
whismanoid 22:d6dc8a85f435 2531 //
whismanoid 22:d6dc8a85f435 2532 // Serial AUXserial(UART1_TX,UART1_RX); // tx,rx UART2 MAX40108DEMOP2U9: P3_1,P3_0 (unavailable)
whismanoid 22:d6dc8a85f435 2533 // #define HAS_AUX_SERIAL 1
whismanoid 22:d6dc8a85f435 2534 //
whismanoid 22:d6dc8a85f435 2535 // Virtual serial port over USB
whismanoid 22:d6dc8a85f435 2536 // #include "USBSerial.h"
whismanoid 22:d6dc8a85f435 2537 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 22:d6dc8a85f435 2538 //USBSerial serial;
whismanoid 8:dffee7509bfb 2539 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2540 #elif defined(TARGET_MAX32620FTHR)
whismanoid 8:dffee7509bfb 2541 #warning "TARGET_MAX32620FTHR not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2542 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2543 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32620FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2544 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2545 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2546 //
whismanoid 8:dffee7509bfb 2547 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2548 Serial serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2549 //Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2550 Serial AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2551 //Serial PMOD0AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2552 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2553 //
whismanoid 8:dffee7509bfb 2554 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2555 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2556 Serial DAPLINKserial(USBTX, USBRX); // tx,rx MAX32620FTHR: P2_1,P2_0
whismanoid 8:dffee7509bfb 2557 //Serial DAPLINKserial(STDIO_UART_TX, STDIO_UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2558 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2559 //
whismanoid 8:dffee7509bfb 2560 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2561 // #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2562 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2563 //USBSerial serial; // MAX32620FTHR: USBSerial crash??
whismanoid 8:dffee7509bfb 2564 #warning "TARGET_MAX32620FTHR not previously tested; USBSerial crash?"
whismanoid 8:dffee7509bfb 2565 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2566 #elif defined(TARGET_MAX32600)
whismanoid 8:dffee7509bfb 2567 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2568 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART2 MAX32625MBED: P1_3,P1_2 (Arduino D3,D2)
whismanoid 8:dffee7509bfb 2569 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART1 MAX32625MBED: P7_3,P7_2 ( ?? )
whismanoid 8:dffee7509bfb 2570 //
whismanoid 8:dffee7509bfb 2571 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2572 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2573 Serial DAPLINKserial(P1_1,P1_0); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2574 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2575 //
whismanoid 8:dffee7509bfb 2576 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2577 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2578 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2579 USBSerial serial;
whismanoid 8:dffee7509bfb 2580 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2581 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 8:dffee7509bfb 2582 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2583 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2584 #else
whismanoid 8:dffee7509bfb 2585 #if defined(SERIAL_TX)
whismanoid 8:dffee7509bfb 2586 #warning "target not previously tested; guess serial pins are SERIAL_TX, SERIAL_RX..."
whismanoid 8:dffee7509bfb 2587 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2588 #elif defined(USBTX)
whismanoid 8:dffee7509bfb 2589 #warning "target not previously tested; guess serial pins are USBTX, USBRX..."
whismanoid 8:dffee7509bfb 2590 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 8:dffee7509bfb 2591 #elif defined(UART_TX)
whismanoid 8:dffee7509bfb 2592 #warning "target not previously tested; guess serial pins are UART_TX, UART_RX..."
whismanoid 8:dffee7509bfb 2593 Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2594 #else
whismanoid 8:dffee7509bfb 2595 #warning "target not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2596 #endif
whismanoid 8:dffee7509bfb 2597 #endif
whismanoid 8:dffee7509bfb 2598 //
whismanoid 8:dffee7509bfb 2599 #include "CmdLine.h"
whismanoid 8:dffee7509bfb 2600
whismanoid 8:dffee7509bfb 2601 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2602 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2603 CmdLine cmdLine_AUXserial(AUXserial, "AUXserial");
whismanoid 10:04022a61b527 2604 uint8_t Datalogger_enable_AUXserial = {
whismanoid 10:04022a61b527 2605 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2606 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 2607 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 2608 false
whismanoid 10:04022a61b527 2609 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2610 true
whismanoid 10:04022a61b527 2611 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2612 };
whismanoid 8:dffee7509bfb 2613 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2614 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2615 CmdLine cmdLine_DAPLINKserial(DAPLINKserial, "DAPLINK");
whismanoid 8:dffee7509bfb 2616 uint8_t Datalogger_enable_DAPLINKserial = true;
whismanoid 8:dffee7509bfb 2617 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2618 CmdLine cmdLine(serial, "serial");
whismanoid 8:dffee7509bfb 2619 uint8_t Datalogger_enable_serial = true;
whismanoid 8:dffee7509bfb 2620 // CODE GENERATOR: example code for ADC: serial port declaration (end)
whismanoid 8:dffee7509bfb 2621
whismanoid 21:ac062a97a71d 2622
whismanoid 21:ac062a97a71d 2623 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 2624 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 2625 #ifndef USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2626 #define USE_DATALOGGER_CommandTable 1
whismanoid 23:c6c652bef4b9 2627 //~ #undef USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2628 #endif
whismanoid 23:c6c652bef4b9 2629 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 2630 const int COMMAND_TABLE_ROW_MAX = 10;
whismanoid 23:c6c652bef4b9 2631 const int COMMAND_TABLE_COL_MAX = 40;
whismanoid 23:c6c652bef4b9 2632 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2633 //
whismanoid 23:c6c652bef4b9 2634 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 2635 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2636 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2637 char onButton1_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button1 event";
whismanoid 23:c6c652bef4b9 2638 char onButton1_command_table_01[COMMAND_TABLE_COL_MAX] = "%L91";
whismanoid 23:c6c652bef4b9 2639 char onButton1_command_table_02[COMMAND_TABLE_COL_MAX] = "%H92";
whismanoid 23:c6c652bef4b9 2640 char onButton1_command_table_03[COMMAND_TABLE_COL_MAX] = "%L93";
whismanoid 23:c6c652bef4b9 2641 char onButton1_command_table_04[COMMAND_TABLE_COL_MAX] = "%H91";
whismanoid 23:c6c652bef4b9 2642 char onButton1_command_table_05[COMMAND_TABLE_COL_MAX] = "%L92";
whismanoid 23:c6c652bef4b9 2643 char onButton1_command_table_06[COMMAND_TABLE_COL_MAX] = "%H93";
whismanoid 23:c6c652bef4b9 2644 char onButton1_command_table_07[COMMAND_TABLE_COL_MAX] = "LR";
whismanoid 23:c6c652bef4b9 2645 char onButton1_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2646 char onButton1_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2647 static char* onButton1_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 23:c6c652bef4b9 2648 onButton1_command_table_00,
whismanoid 23:c6c652bef4b9 2649 onButton1_command_table_01,
whismanoid 23:c6c652bef4b9 2650 onButton1_command_table_02,
whismanoid 23:c6c652bef4b9 2651 onButton1_command_table_03,
whismanoid 23:c6c652bef4b9 2652 onButton1_command_table_04,
whismanoid 23:c6c652bef4b9 2653 onButton1_command_table_05,
whismanoid 23:c6c652bef4b9 2654 onButton1_command_table_06,
whismanoid 23:c6c652bef4b9 2655 onButton1_command_table_07,
whismanoid 23:c6c652bef4b9 2656 onButton1_command_table_08,
whismanoid 23:c6c652bef4b9 2657 onButton1_command_table_09,
whismanoid 23:c6c652bef4b9 2658 };
whismanoid 23:c6c652bef4b9 2659 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2660 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2661 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2662 char onButton2_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button2 event";
whismanoid 23:c6c652bef4b9 2663 char onButton2_command_table_01[COMMAND_TABLE_COL_MAX] = "%H91";
whismanoid 23:c6c652bef4b9 2664 char onButton2_command_table_02[COMMAND_TABLE_COL_MAX] = "%H92";
whismanoid 23:c6c652bef4b9 2665 char onButton2_command_table_03[COMMAND_TABLE_COL_MAX] = "%L93";
whismanoid 23:c6c652bef4b9 2666 char onButton2_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2667 char onButton2_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2668 char onButton2_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2669 char onButton2_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2670 char onButton2_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2671 char onButton2_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2672 static char* onButton2_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 23:c6c652bef4b9 2673 onButton2_command_table_00,
whismanoid 23:c6c652bef4b9 2674 onButton2_command_table_01,
whismanoid 23:c6c652bef4b9 2675 onButton2_command_table_02,
whismanoid 23:c6c652bef4b9 2676 onButton2_command_table_03,
whismanoid 23:c6c652bef4b9 2677 onButton2_command_table_04,
whismanoid 23:c6c652bef4b9 2678 onButton2_command_table_05,
whismanoid 23:c6c652bef4b9 2679 onButton2_command_table_06,
whismanoid 23:c6c652bef4b9 2680 onButton2_command_table_07,
whismanoid 23:c6c652bef4b9 2681 onButton2_command_table_08,
whismanoid 23:c6c652bef4b9 2682 onButton2_command_table_09,
whismanoid 23:c6c652bef4b9 2683 };
whismanoid 23:c6c652bef4b9 2684 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2685 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2686 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2687 char onButton3_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button3 event";
whismanoid 24:032f3683cb2a 2688 char onButton3_command_table_01[COMMAND_TABLE_COL_MAX] = "%L91";
whismanoid 24:032f3683cb2a 2689 char onButton3_command_table_02[COMMAND_TABLE_COL_MAX] = "%L92";
whismanoid 24:032f3683cb2a 2690 char onButton3_command_table_03[COMMAND_TABLE_COL_MAX] = "%H93";
whismanoid 24:032f3683cb2a 2691 char onButton3_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2692 char onButton3_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2693 char onButton3_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2694 char onButton3_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2695 char onButton3_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2696 char onButton3_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2697 static char* onButton3_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 24:032f3683cb2a 2698 onButton3_command_table_00,
whismanoid 24:032f3683cb2a 2699 onButton3_command_table_01,
whismanoid 24:032f3683cb2a 2700 onButton3_command_table_02,
whismanoid 24:032f3683cb2a 2701 onButton3_command_table_03,
whismanoid 24:032f3683cb2a 2702 onButton3_command_table_04,
whismanoid 24:032f3683cb2a 2703 onButton3_command_table_05,
whismanoid 24:032f3683cb2a 2704 onButton3_command_table_06,
whismanoid 24:032f3683cb2a 2705 onButton3_command_table_07,
whismanoid 24:032f3683cb2a 2706 onButton3_command_table_08,
whismanoid 24:032f3683cb2a 2707 onButton3_command_table_09,
whismanoid 24:032f3683cb2a 2708 };
whismanoid 24:032f3683cb2a 2709 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2710 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2711 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2712 char onButton4_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button4 event";
whismanoid 29:6a9edb6e973b 2713 char onButton4_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2714 char onButton4_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2715 char onButton4_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2716 char onButton4_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2717 char onButton4_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2718 char onButton4_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2719 char onButton4_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2720 char onButton4_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2721 char onButton4_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2722 static char* onButton4_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2723 onButton4_command_table_00,
whismanoid 29:6a9edb6e973b 2724 onButton4_command_table_01,
whismanoid 29:6a9edb6e973b 2725 onButton4_command_table_02,
whismanoid 29:6a9edb6e973b 2726 onButton4_command_table_03,
whismanoid 29:6a9edb6e973b 2727 onButton4_command_table_04,
whismanoid 29:6a9edb6e973b 2728 onButton4_command_table_05,
whismanoid 29:6a9edb6e973b 2729 onButton4_command_table_06,
whismanoid 29:6a9edb6e973b 2730 onButton4_command_table_07,
whismanoid 29:6a9edb6e973b 2731 onButton4_command_table_08,
whismanoid 29:6a9edb6e973b 2732 onButton4_command_table_09,
whismanoid 29:6a9edb6e973b 2733 };
whismanoid 29:6a9edb6e973b 2734 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2735 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2736 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2737 char onButton5_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button5 event";
whismanoid 29:6a9edb6e973b 2738 char onButton5_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2739 char onButton5_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2740 char onButton5_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2741 char onButton5_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2742 char onButton5_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2743 char onButton5_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2744 char onButton5_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2745 char onButton5_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2746 char onButton5_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2747 static char* onButton5_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2748 onButton5_command_table_00,
whismanoid 29:6a9edb6e973b 2749 onButton5_command_table_01,
whismanoid 29:6a9edb6e973b 2750 onButton5_command_table_02,
whismanoid 29:6a9edb6e973b 2751 onButton5_command_table_03,
whismanoid 29:6a9edb6e973b 2752 onButton5_command_table_04,
whismanoid 29:6a9edb6e973b 2753 onButton5_command_table_05,
whismanoid 29:6a9edb6e973b 2754 onButton5_command_table_06,
whismanoid 29:6a9edb6e973b 2755 onButton5_command_table_07,
whismanoid 29:6a9edb6e973b 2756 onButton5_command_table_08,
whismanoid 29:6a9edb6e973b 2757 onButton5_command_table_09,
whismanoid 29:6a9edb6e973b 2758 };
whismanoid 29:6a9edb6e973b 2759 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2760 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2761 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2762 char onButton6_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button6 event";
whismanoid 29:6a9edb6e973b 2763 char onButton6_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2764 char onButton6_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2765 char onButton6_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2766 char onButton6_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2767 char onButton6_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2768 char onButton6_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2769 char onButton6_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2770 char onButton6_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2771 char onButton6_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2772 static char* onButton6_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2773 onButton6_command_table_00,
whismanoid 29:6a9edb6e973b 2774 onButton6_command_table_01,
whismanoid 29:6a9edb6e973b 2775 onButton6_command_table_02,
whismanoid 29:6a9edb6e973b 2776 onButton6_command_table_03,
whismanoid 29:6a9edb6e973b 2777 onButton6_command_table_04,
whismanoid 29:6a9edb6e973b 2778 onButton6_command_table_05,
whismanoid 29:6a9edb6e973b 2779 onButton6_command_table_06,
whismanoid 29:6a9edb6e973b 2780 onButton6_command_table_07,
whismanoid 29:6a9edb6e973b 2781 onButton6_command_table_08,
whismanoid 29:6a9edb6e973b 2782 onButton6_command_table_09,
whismanoid 29:6a9edb6e973b 2783 };
whismanoid 29:6a9edb6e973b 2784 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2785 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2786 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2787 char onButton7_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button7 event";
whismanoid 29:6a9edb6e973b 2788 char onButton7_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2789 char onButton7_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2790 char onButton7_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2791 char onButton7_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2792 char onButton7_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2793 char onButton7_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2794 char onButton7_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2795 char onButton7_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2796 char onButton7_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2797 static char* onButton7_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2798 onButton7_command_table_00,
whismanoid 29:6a9edb6e973b 2799 onButton7_command_table_01,
whismanoid 29:6a9edb6e973b 2800 onButton7_command_table_02,
whismanoid 29:6a9edb6e973b 2801 onButton7_command_table_03,
whismanoid 29:6a9edb6e973b 2802 onButton7_command_table_04,
whismanoid 29:6a9edb6e973b 2803 onButton7_command_table_05,
whismanoid 29:6a9edb6e973b 2804 onButton7_command_table_06,
whismanoid 29:6a9edb6e973b 2805 onButton7_command_table_07,
whismanoid 29:6a9edb6e973b 2806 onButton7_command_table_08,
whismanoid 29:6a9edb6e973b 2807 onButton7_command_table_09,
whismanoid 29:6a9edb6e973b 2808 };
whismanoid 29:6a9edb6e973b 2809 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2810 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2811 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2812 char onButton8_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button8 event";
whismanoid 29:6a9edb6e973b 2813 char onButton8_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2814 char onButton8_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2815 char onButton8_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2816 char onButton8_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2817 char onButton8_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2818 char onButton8_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2819 char onButton8_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2820 char onButton8_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2821 char onButton8_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2822 static char* onButton8_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2823 onButton8_command_table_00,
whismanoid 29:6a9edb6e973b 2824 onButton8_command_table_01,
whismanoid 29:6a9edb6e973b 2825 onButton8_command_table_02,
whismanoid 29:6a9edb6e973b 2826 onButton8_command_table_03,
whismanoid 29:6a9edb6e973b 2827 onButton8_command_table_04,
whismanoid 29:6a9edb6e973b 2828 onButton8_command_table_05,
whismanoid 29:6a9edb6e973b 2829 onButton8_command_table_06,
whismanoid 29:6a9edb6e973b 2830 onButton8_command_table_07,
whismanoid 29:6a9edb6e973b 2831 onButton8_command_table_08,
whismanoid 29:6a9edb6e973b 2832 onButton8_command_table_09,
whismanoid 29:6a9edb6e973b 2833 };
whismanoid 29:6a9edb6e973b 2834 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2835 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2836 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2837 char onButton9_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button9 event";
whismanoid 29:6a9edb6e973b 2838 char onButton9_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2839 char onButton9_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2840 char onButton9_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2841 char onButton9_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2842 char onButton9_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2843 char onButton9_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2844 char onButton9_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2845 char onButton9_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2846 char onButton9_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2847 static char* onButton9_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2848 onButton9_command_table_00,
whismanoid 29:6a9edb6e973b 2849 onButton9_command_table_01,
whismanoid 29:6a9edb6e973b 2850 onButton9_command_table_02,
whismanoid 29:6a9edb6e973b 2851 onButton9_command_table_03,
whismanoid 29:6a9edb6e973b 2852 onButton9_command_table_04,
whismanoid 29:6a9edb6e973b 2853 onButton9_command_table_05,
whismanoid 29:6a9edb6e973b 2854 onButton9_command_table_06,
whismanoid 29:6a9edb6e973b 2855 onButton9_command_table_07,
whismanoid 29:6a9edb6e973b 2856 onButton9_command_table_08,
whismanoid 29:6a9edb6e973b 2857 onButton9_command_table_09,
whismanoid 29:6a9edb6e973b 2858 };
whismanoid 29:6a9edb6e973b 2859 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2860 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2861 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 2862 #if USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2863 void Run_command_table(char* command_table[])
whismanoid 23:c6c652bef4b9 2864 {
whismanoid 23:c6c652bef4b9 2865 // command_table: perform list of commands
whismanoid 23:c6c652bef4b9 2866 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 2867 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 2868 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 23:c6c652bef4b9 2869 cmdLine.clear();
whismanoid 23:c6c652bef4b9 2870 //~ char* strIndex = command_table[lineIndex];
whismanoid 23:c6c652bef4b9 2871 for (char* strIndex = command_table[lineIndex]; *strIndex != '\0'; strIndex++)
whismanoid 23:c6c652bef4b9 2872 {
whismanoid 23:c6c652bef4b9 2873 cmdLine.append(*strIndex);
whismanoid 23:c6c652bef4b9 2874 }
whismanoid 23:c6c652bef4b9 2875 cmdLine.append('\r'); // append \r invokes onEOLcommandParser to handle command
whismanoid 23:c6c652bef4b9 2876 }
whismanoid 23:c6c652bef4b9 2877 }
whismanoid 23:c6c652bef4b9 2878 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2879 //--------------------------------------------------
whismanoid 21:ac062a97a71d 2880 // When user presses button BUTTON1, perform actions
whismanoid 21:ac062a97a71d 2881 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 2882 void onButton1FallingEdge(void)
whismanoid 21:ac062a97a71d 2883 {
whismanoid 21:ac062a97a71d 2884 //~ void SelfTest(CmdLine & cmdLine);
whismanoid 21:ac062a97a71d 2885 //~ SelfTest(cmdLine_serial);
whismanoid 22:d6dc8a85f435 2886 //
whismanoid 23:c6c652bef4b9 2887 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 22:d6dc8a85f435 2888 // command_table: list of commands to perform on button press
whismanoid 22:d6dc8a85f435 2889 // command_table: perform list of commands
whismanoid 23:c6c652bef4b9 2890 Run_command_table(onButton1_command_table);
whismanoid 23:c6c652bef4b9 2891 #endif // USE_DATALOGGER_CommandTable
whismanoid 21:ac062a97a71d 2892 }
whismanoid 21:ac062a97a71d 2893 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 2894
whismanoid 21:ac062a97a71d 2895 //--------------------------------------------------
whismanoid 21:ac062a97a71d 2896 // When user presses button BUTTON2, perform actions
whismanoid 21:ac062a97a71d 2897 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 2898 void onButton2FallingEdge(void)
whismanoid 21:ac062a97a71d 2899 {
whismanoid 21:ac062a97a71d 2900 // TBD demo configuration
whismanoid 21:ac062a97a71d 2901 // TODO diagnostic LED
whismanoid 21:ac062a97a71d 2902 // led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 22:d6dc8a85f435 2903 //
whismanoid 23:c6c652bef4b9 2904 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 22:d6dc8a85f435 2905 // command_table: list of commands to perform on button press
whismanoid 22:d6dc8a85f435 2906 // command_table: perform list of commands
whismanoid 23:c6c652bef4b9 2907 Run_command_table(onButton2_command_table);
whismanoid 23:c6c652bef4b9 2908 #endif // USE_DATALOGGER_CommandTable
whismanoid 21:ac062a97a71d 2909 }
whismanoid 21:ac062a97a71d 2910 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 2911
whismanoid 24:032f3683cb2a 2912 //--------------------------------------------------
whismanoid 29:6a9edb6e973b 2913 // When user presses button BUTTON3, perform actions
whismanoid 24:032f3683cb2a 2914 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2915 void onButton3FallingEdge(void)
whismanoid 24:032f3683cb2a 2916 {
whismanoid 24:032f3683cb2a 2917 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 24:032f3683cb2a 2918 // command_table: list of commands to perform on button press
whismanoid 24:032f3683cb2a 2919 // command_table: perform list of commands
whismanoid 24:032f3683cb2a 2920 Run_command_table(onButton3_command_table);
whismanoid 24:032f3683cb2a 2921 #endif // USE_DATALOGGER_CommandTable
whismanoid 24:032f3683cb2a 2922 }
whismanoid 24:032f3683cb2a 2923 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2924 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2925 void onButton4FallingEdge(void)
whismanoid 29:6a9edb6e973b 2926 {
whismanoid 29:6a9edb6e973b 2927 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2928 Run_command_table(onButton4_command_table);
whismanoid 29:6a9edb6e973b 2929 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2930 }
whismanoid 29:6a9edb6e973b 2931 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2932 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2933 void onButton5FallingEdge(void)
whismanoid 29:6a9edb6e973b 2934 {
whismanoid 29:6a9edb6e973b 2935 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2936 Run_command_table(onButton5_command_table);
whismanoid 29:6a9edb6e973b 2937 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2938 }
whismanoid 29:6a9edb6e973b 2939 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2940 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2941 void onButton6FallingEdge(void)
whismanoid 29:6a9edb6e973b 2942 {
whismanoid 29:6a9edb6e973b 2943 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2944 Run_command_table(onButton6_command_table);
whismanoid 29:6a9edb6e973b 2945 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2946 }
whismanoid 29:6a9edb6e973b 2947 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2948 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2949 void onButton7FallingEdge(void)
whismanoid 29:6a9edb6e973b 2950 {
whismanoid 29:6a9edb6e973b 2951 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2952 Run_command_table(onButton7_command_table);
whismanoid 29:6a9edb6e973b 2953 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2954 }
whismanoid 29:6a9edb6e973b 2955 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2956 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2957 void onButton8FallingEdge(void)
whismanoid 29:6a9edb6e973b 2958 {
whismanoid 29:6a9edb6e973b 2959 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2960 Run_command_table(onButton8_command_table);
whismanoid 29:6a9edb6e973b 2961 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2962 }
whismanoid 29:6a9edb6e973b 2963 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2964 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2965 void onButton9FallingEdge(void)
whismanoid 29:6a9edb6e973b 2966 {
whismanoid 29:6a9edb6e973b 2967 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2968 Run_command_table(onButton9_command_table);
whismanoid 29:6a9edb6e973b 2969 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 2970 }
whismanoid 29:6a9edb6e973b 2971 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2972
whismanoid 4:d9b05924ad4c 2973 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 2974 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2975 inline void print_command_prompt()
whismanoid 4:d9b05924ad4c 2976 {
whismanoid 4:d9b05924ad4c 2977 //~ Serial.println(F(">"));
whismanoid 4:d9b05924ad4c 2978 cmdLine.serial().printf("\r\n> ");
whismanoid 4:d9b05924ad4c 2979 }
whismanoid 4:d9b05924ad4c 2980 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 2981
whismanoid 4:d9b05924ad4c 2982 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 2983 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2984 void main_menu_status(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 2985 {
whismanoid 4:d9b05924ad4c 2986 cmdLine.serial().printf("\r\nMain menu");
whismanoid 4:d9b05924ad4c 2987 #if APPLICATION_MAX5715 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2988 cmdLine.serial().printf(" MAX5715 12-bit 4-ch SPI VOUT DAC");
whismanoid 4:d9b05924ad4c 2989 #elif APPLICATION_MAX11131 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2990 cmdLine.serial().printf(" MAX11131 12-bit 3MSps 16-ch ADC");
whismanoid 4:d9b05924ad4c 2991 #elif APPLICATION_MAX5171 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2992 cmdLine.serial().printf(" MAX5171 14-bit Force/Sense VOUT DAC");
whismanoid 4:d9b05924ad4c 2993 #elif APPLICATION_MAX11410 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2994 cmdLine.serial().printf(" MAX11410 24-bit 1.9ksps Delta-Sigma ADC");
whismanoid 4:d9b05924ad4c 2995 #elif APPLICATION_MAX12345 // main_menu_status banner
whismanoid 4:d9b05924ad4c 2996 cmdLine.serial().printf(" MAX12345");
whismanoid 16:819c5aaf5271 2997 #elif MAX40108_DEMO // main_menu_status banner
whismanoid 17:9397ea3ea7e9 2998 cmdLine.serial().printf(" MAX40108_U%d", MAX40108_DEMO);
whismanoid 4:d9b05924ad4c 2999 #else
whismanoid 4:d9b05924ad4c 3000 //cmdLine.serial().printf(" ");
whismanoid 4:d9b05924ad4c 3001 #endif
whismanoid 4:d9b05924ad4c 3002 //cmdLine.serial().printf(" %s", TARGET_NAME);
whismanoid 4:d9b05924ad4c 3003 if (cmdLine.nameStr())
whismanoid 4:d9b05924ad4c 3004 {
whismanoid 4:d9b05924ad4c 3005 cmdLine.serial().printf(" [%s]", cmdLine.nameStr());
whismanoid 4:d9b05924ad4c 3006 }
whismanoid 4:d9b05924ad4c 3007 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3008 cmdLine.serial().printf(" [Button1");
whismanoid 4:d9b05924ad4c 3009 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3010 cmdLine.serial().printf("2");
whismanoid 24:032f3683cb2a 3011 #endif
whismanoid 24:032f3683cb2a 3012 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3013 cmdLine.serial().printf("3");
whismanoid 29:6a9edb6e973b 3014 #endif
whismanoid 29:6a9edb6e973b 3015 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3016 cmdLine.serial().printf("4");
whismanoid 29:6a9edb6e973b 3017 #endif
whismanoid 29:6a9edb6e973b 3018 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3019 cmdLine.serial().printf("5");
whismanoid 29:6a9edb6e973b 3020 #endif
whismanoid 29:6a9edb6e973b 3021 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3022 cmdLine.serial().printf("6");
whismanoid 29:6a9edb6e973b 3023 #endif
whismanoid 29:6a9edb6e973b 3024 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3025 cmdLine.serial().printf("7");
whismanoid 29:6a9edb6e973b 3026 #endif
whismanoid 29:6a9edb6e973b 3027 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3028 cmdLine.serial().printf("8");
whismanoid 29:6a9edb6e973b 3029 #endif
whismanoid 29:6a9edb6e973b 3030 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3031 cmdLine.serial().printf("9");
whismanoid 29:6a9edb6e973b 3032 #endif
whismanoid 29:6a9edb6e973b 3033 cmdLine.serial().printf("]");
whismanoid 29:6a9edb6e973b 3034 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 4:d9b05924ad4c 3035 #if HAS_BUTTON1_DEMO
whismanoid 4:d9b05924ad4c 3036 // print BUTTON1 status
whismanoid 4:d9b05924ad4c 3037 cmdLine.serial().printf("\r\n BUTTON1 = %d", button1.read());
whismanoid 4:d9b05924ad4c 3038 #endif
whismanoid 4:d9b05924ad4c 3039 #if HAS_BUTTON2_DEMO
whismanoid 24:032f3683cb2a 3040 // print BUTTON2 status
whismanoid 4:d9b05924ad4c 3041 cmdLine.serial().printf("\r\n BUTTON2 = %d", button2.read());
whismanoid 4:d9b05924ad4c 3042 #endif
whismanoid 24:032f3683cb2a 3043 #if HAS_BUTTON3_DEMO
whismanoid 24:032f3683cb2a 3044 // print BUTTON3 status
whismanoid 24:032f3683cb2a 3045 cmdLine.serial().printf("\r\n BUTTON3 = %d", button3.read());
whismanoid 24:032f3683cb2a 3046 #endif
whismanoid 4:d9b05924ad4c 3047 cmdLine.serial().printf("\r\n ? -- help");
whismanoid 4:d9b05924ad4c 3048 }
whismanoid 4:d9b05924ad4c 3049 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3050
whismanoid 28:a9a3a9db592b 3051 //--------------------------------------------------
whismanoid 28:a9a3a9db592b 3052 #ifndef USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3053 #define USE_DATALOGGER_TRIGGER_HELP_BRIEF 1
whismanoid 28:a9a3a9db592b 3054 //~ #undef USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3055 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3056
whismanoid 4:d9b05924ad4c 3057 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3058 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3059 void main_menu_help(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 3060 {
whismanoid 4:d9b05924ad4c 3061 // ? -- help
whismanoid 4:d9b05924ad4c 3062 //~ cmdLine.serial().printf("\r\nMenu:");
whismanoid 10:04022a61b527 3063 //
whismanoid 4:d9b05924ad4c 3064 cmdLine.serial().printf("\r\n # -- lines beginning with # are comments");
whismanoid 10:04022a61b527 3065 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 3066 cmdLine.serial().printf("\r\n ! -- Init");
whismanoid 10:04022a61b527 3067 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 3068 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 3069 cmdLine.serial().printf("\r\n . -- SelfTest");
whismanoid 4:d9b05924ad4c 3070 #endif // USE_SELFTEST
whismanoid 9:45f98573eb6d 3071 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 9:45f98573eb6d 3072 // CODE GENERATOR: help menu if has_register_write_command: *regname? -- read register; *regname=regvalue -- write register
whismanoid 9:45f98573eb6d 3073 cmdLine.serial().printf("\r\n * -- read core registers\r\n *regname? -- read register\r\n *regname=regvalue -- write register");
whismanoid 9:45f98573eb6d 3074 // cmdLine.serial().printf("\r\n 01 23 45 67 89 ab cd ef -- write and read raw hex codes");
whismanoid 10:04022a61b527 3075 #endif // USE_STAR_REG_READWRITE
whismanoid 10:04022a61b527 3076 //
whismanoid 10:04022a61b527 3077 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3078 // Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_help
whismanoid 10:04022a61b527 3079 //~ cmdLine.serial().printf("\r\n > -- auxiliary UART port");
whismanoid 10:04022a61b527 3080 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 3081 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3082 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3083 if (cmdLine_AUXserial.nameStr())
whismanoid 10:04022a61b527 3084 {
whismanoid 10:04022a61b527 3085 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_AUXserial.nameStr());
whismanoid 10:04022a61b527 3086 }
whismanoid 10:04022a61b527 3087 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3088 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 3089 if (cmdLine_DAPLINKserial.nameStr())
whismanoid 10:04022a61b527 3090 {
whismanoid 10:04022a61b527 3091 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_DAPLINKserial.nameStr());
whismanoid 10:04022a61b527 3092 }
whismanoid 10:04022a61b527 3093 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3094 # if HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3095 // WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3096 cmdLine.serial().printf("\r\n >xyzzy -- Forward command/data 'xyzzy' to aux TX/RX");
whismanoid 10:04022a61b527 3097 cmdLine.serial().printf("\r\n >>xyzzy -- Forward 'xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 3098 cmdLine.serial().printf("\r\n >>>xyzzy -- Forward '>xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 3099 #if 0
whismanoid 10:04022a61b527 3100 cmdLine.serial().printf("\r\n >tx_wait_echo=%d -- configure TX wait for each character echo", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 3101 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 3102 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 3103 #endif
whismanoid 20:78ef670955d4 3104 #if 1 // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 3105 cmdLine.serial().printf("\r\n >baud=%d message_ms=%d rx_idle_ms=%d rx_max_count=%d rx_eot=%d",
whismanoid 20:78ef670955d4 3106 g_auxSerialCom_baud,
whismanoid 20:78ef670955d4 3107 g_auxSerialCom_message_ms,
whismanoid 20:78ef670955d4 3108 g_auxSerialCom_rx_idle_ms,
whismanoid 20:78ef670955d4 3109 g_auxSerialCom_rx_max_count,
whismanoid 20:78ef670955d4 3110 g_auxSerialCom_rx_eot);
whismanoid 20:78ef670955d4 3111 #else // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 3112 cmdLine.serial().printf("\r\n >baud=%d -- configure aux TX/RX port", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3113 cmdLine.serial().printf("\r\n >message_ms=%d -- maximum RX message total response time", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3114 cmdLine.serial().printf("\r\n >rx_idle_ms=%d -- maximum RX message idle time between characters", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3115 cmdLine.serial().printf("\r\n >rx_max_count=%d -- maximum RX message total length", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3116 cmdLine.serial().printf("\r\n >rx_eot=%d -- capture RX until match end of text char (unless %d)", g_auxSerialCom_rx_eot, aux_serial_cmd_forwarding_rx_eot_not_used);
whismanoid 20:78ef670955d4 3117 #endif // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 10:04022a61b527 3118 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3119 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3120 //
whismanoid 4:d9b05924ad4c 3121 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 28:a9a3a9db592b 3122 #if USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3123 // Datalog trigger menu
whismanoid 28:a9a3a9db592b 3124 // brief toplevel heading for datalog help L
whismanoid 28:a9a3a9db592b 3125 // L -- detailed help for datalog commands
whismanoid 28:a9a3a9db592b 3126 cmdLine.serial().printf("\r\n L -- halt the datalogger; show more commands");
whismanoid 28:a9a3a9db592b 3127 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 28:a9a3a9db592b 3128 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 28:a9a3a9db592b 3129 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 28:a9a3a9db592b 3130 //
whismanoid 28:a9a3a9db592b 3131 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 28:a9a3a9db592b 3132 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 28:a9a3a9db592b 3133 //
whismanoid 28:a9a3a9db592b 3134 cmdLine.serial().printf("\r\n LT count=%d base=%dms -- Datalog timer", g_timer_interval_count, g_timer_interval_msec); // trigger_Timer
whismanoid 28:a9a3a9db592b 3135 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3136 //~ cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 28:a9a3a9db592b 3137 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3138 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 4:d9b05924ad4c 3139 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 3140 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 3141 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 9:45f98573eb6d 3142 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 9:45f98573eb6d 3143 //
whismanoid 17:9397ea3ea7e9 3144 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 4:d9b05924ad4c 3145 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 9:45f98573eb6d 3146 //
whismanoid 17:9397ea3ea7e9 3147 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 3148 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 17:9397ea3ea7e9 3149 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 3150 //
whismanoid 9:45f98573eb6d 3151 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 3152 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3153 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3154 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 9:45f98573eb6d 3155 //
whismanoid 17:9397ea3ea7e9 3156 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 9:45f98573eb6d 3157 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 3158 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 27:b4ac095b83b3 3159 cmdLine.serial().printf("\r\n L$ count=10 base=500ms addr=xxx data=xxx mask=xxx -- Datalog when SPI read of address matches mask"); // trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3160 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3161 //
whismanoid 17:9397ea3ea7e9 3162 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3163 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 17:9397ea3ea7e9 3164 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 9:45f98573eb6d 3165 //
whismanoid 9:45f98573eb6d 3166 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3167 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 3168 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3169 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3170 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 9:45f98573eb6d 3171 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 9:45f98573eb6d 3172 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 9:45f98573eb6d 3173 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 9:45f98573eb6d 3174 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 9:45f98573eb6d 3175 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 9:45f98573eb6d 3176 //
whismanoid 9:45f98573eb6d 3177 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 3178 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 9:45f98573eb6d 3179 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 9:45f98573eb6d 3180 //
whismanoid 9:45f98573eb6d 3181 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3182 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 3183 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 9:45f98573eb6d 3184 //
whismanoid 9:45f98573eb6d 3185 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3186 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 9:45f98573eb6d 3187 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3188 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 9:45f98573eb6d 3189 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3190 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 9:45f98573eb6d 3191 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3192 //
whismanoid 9:45f98573eb6d 3193 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 3194 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 9:45f98573eb6d 3195 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 9:45f98573eb6d 3196 //
whismanoid 9:45f98573eb6d 3197 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3198 //
whismanoid 9:45f98573eb6d 3199 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 3200 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 3201 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3202 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3203 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 9:45f98573eb6d 3204 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3205 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 9:45f98573eb6d 3206 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3207 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3208 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 9:45f98573eb6d 3209 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3210 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 9:45f98573eb6d 3211 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3212 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 9:45f98573eb6d 3213 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3214 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3215 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 9:45f98573eb6d 3216 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3217 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 28:a9a3a9db592b 3218 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 4:d9b05924ad4c 3219 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 28:a9a3a9db592b 3220 #if USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3221 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 8:dffee7509bfb 3222 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 3223 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 3224 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 3225 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 3226 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 3227 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 3228 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 3229 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 8:dffee7509bfb 3230 //
whismanoid 4:d9b05924ad4c 3231 //cmdLine.serial().print(F("\r\n ! -- Initial Configuration"));
whismanoid 4:d9b05924ad4c 3232 //
whismanoid 4:d9b05924ad4c 3233 // % standardize diagnostic commands
whismanoid 4:d9b05924ad4c 3234 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 3235 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 3236 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 3237 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 3238 // %Ppin df=xx -- pwm output
whismanoid 4:d9b05924ad4c 3239 // %Wpin -- measure high pulsewidth input in usec
whismanoid 4:d9b05924ad4c 3240 // %wpin -- measure low pulsewidth input in usec
whismanoid 4:d9b05924ad4c 3241 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 3242 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 3243 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 3244 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 4:d9b05924ad4c 3245 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 3246 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3247 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 3248 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 3249 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 3250 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 3251 // A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 3252 //
whismanoid 23:c6c652bef4b9 3253 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3254 #if USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3255 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 3256 // TODO: %B1 submenu for Button1
whismanoid 23:c6c652bef4b9 3257 // TODO: future: %B2 submenu for Button2
whismanoid 23:c6c652bef4b9 3258 // TODO: future: %B3 submenu for Button3
whismanoid 23:c6c652bef4b9 3259 // TODO: %B1@ view command table, similar to L@ for action table
whismanoid 23:c6c652bef4b9 3260 // TODO: %B1@+ command add new row (if there is room to add) (ignore one space before command)
whismanoid 23:c6c652bef4b9 3261 // TODO: %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 23:c6c652bef4b9 3262 // TODO: %B1@-~~~ clear entire command table
whismanoid 23:c6c652bef4b9 3263 // TODO: %B1@nnn command replace row number nnn (ignore one space before command)
whismanoid 23:c6c652bef4b9 3264 // TODO: %B1@! disable button response but keep command table contents
whismanoid 23:c6c652bef4b9 3265 // TODO: %B1@@ enable button response
whismanoid 23:c6c652bef4b9 3266 // TODO: %B1! trigger onButton1FallingEdge() immediately (for test development)
whismanoid 23:c6c652bef4b9 3267 cmdLine.serial().printf("\r\n %%B1! trigger Button1; %%B1@ -- view/edit command table");
whismanoid 23:c6c652bef4b9 3268 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3269 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3270 #if HAS_digitalInOuts
whismanoid 4:d9b05924ad4c 3271 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 3272 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 3273 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 3274 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 4:d9b05924ad4c 3275 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3276 cmdLine.serial().printf("} -- High Output");
whismanoid 4:d9b05924ad4c 3277 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 4:d9b05924ad4c 3278 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3279 cmdLine.serial().printf("} -- Low Output");
whismanoid 4:d9b05924ad4c 3280 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 4:d9b05924ad4c 3281 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3282 cmdLine.serial().printf("} -- Input");
whismanoid 4:d9b05924ad4c 3283 #endif
whismanoid 4:d9b05924ad4c 3284
whismanoid 4:d9b05924ad4c 3285 #if HAS_analogIns
whismanoid 4:d9b05924ad4c 3286 // Menu A) analogRead A0..7
whismanoid 4:d9b05924ad4c 3287 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 3288 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 4:d9b05924ad4c 3289 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 4:d9b05924ad4c 3290 #endif
whismanoid 4:d9b05924ad4c 3291
whismanoid 4:d9b05924ad4c 3292 #if HAS_SPI2_MAX541
whismanoid 4:d9b05924ad4c 3293 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 4:d9b05924ad4c 3294 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 4:d9b05924ad4c 3295 #endif
whismanoid 4:d9b05924ad4c 3296
whismanoid 4:d9b05924ad4c 3297 #if HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3298 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3299 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3300 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 4:d9b05924ad4c 3301 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 3302 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 3303 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 3304 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 4:d9b05924ad4c 3305 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 3306 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3307 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 4:d9b05924ad4c 3308 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 4:d9b05924ad4c 3309 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 4:d9b05924ad4c 3310 (g_I2C_SCL_Hz / 1000.));
whismanoid 4:d9b05924ad4c 3311 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 4:d9b05924ad4c 3312 g_I2C_deviceAddress7);
whismanoid 4:d9b05924ad4c 3313 //
whismanoid 4:d9b05924ad4c 3314 #if SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3315 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3316 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 4:d9b05924ad4c 3317 // test low-level I2C i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3318 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3319 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 4:d9b05924ad4c 3320 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 4:d9b05924ad4c 3321 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 4:d9b05924ad4c 3322 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3323
whismanoid 4:d9b05924ad4c 3324 #if HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3325 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3326 // SPI test command S (mosiData)+
whismanoid 4:d9b05924ad4c 3327 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 3328 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 3329 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 3330 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 3331 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 4:d9b05924ad4c 3332 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 4:d9b05924ad4c 3333 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 4:d9b05924ad4c 3334 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 4:d9b05924ad4c 3335 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 4:d9b05924ad4c 3336 // mode | POL PHA
whismanoid 4:d9b05924ad4c 3337 // -----+--------
whismanoid 4:d9b05924ad4c 3338 // 0 | 0 0
whismanoid 4:d9b05924ad4c 3339 // 1 | 0 1
whismanoid 4:d9b05924ad4c 3340 // 2 | 1 0
whismanoid 4:d9b05924ad4c 3341 // 3 | 1 1
whismanoid 4:d9b05924ad4c 3342 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 4:d9b05924ad4c 3343 // 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 3344 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 4:d9b05924ad4c 3345 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 4:d9b05924ad4c 3346 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 4:d9b05924ad4c 3347 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 4:d9b05924ad4c 3348 cmdLine.serial().printf("\r\n %%SD -- SPI diagnostic messages ");
whismanoid 4:d9b05924ad4c 3349 if (g_MAX11410_device.onSPIprint) {
whismanoid 4:d9b05924ad4c 3350 cmdLine.serial().printf("hide");
whismanoid 4:d9b05924ad4c 3351 }
whismanoid 4:d9b05924ad4c 3352 else {
whismanoid 4:d9b05924ad4c 3353 cmdLine.serial().printf("show");
whismanoid 4:d9b05924ad4c 3354 }
whismanoid 4:d9b05924ad4c 3355 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 4:d9b05924ad4c 3356 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 4:d9b05924ad4c 3357 #endif // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3358 //
whismanoid 4:d9b05924ad4c 3359 // Application-specific commands (help text) here
whismanoid 4:d9b05924ad4c 3360 //
whismanoid 4:d9b05924ad4c 3361 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3362 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3363 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3364 //
whismanoid 4:d9b05924ad4c 3365
whismanoid 4:d9b05924ad4c 3366 //~ extern void MAX11410_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp\n
whismanoid 4:d9b05924ad4c 3367 //~ MAX11410_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 3368 }
whismanoid 4:d9b05924ad4c 3369 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3370
whismanoid 4:d9b05924ad4c 3371 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 15:37c83ec50ea0 3372
whismanoid 15:37c83ec50ea0 3373 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 3374 void pinsMonitor_submenu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 15:37c83ec50ea0 3375 {
whismanoid 15:37c83ec50ea0 3376 // % diagnostic commands submenu
whismanoid 15:37c83ec50ea0 3377 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 3378 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 3379 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 3380 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 3381 // %Ppin df=xx -- pwm output
whismanoid 15:37c83ec50ea0 3382 // %Wpin -- measure high pulsewidth input in usec
whismanoid 15:37c83ec50ea0 3383 // %wpin -- measure low pulsewidth input in usec
whismanoid 15:37c83ec50ea0 3384 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 3385 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3386 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3387 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3388 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3389 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3390 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3391 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3392 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3393 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3394 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 3395 //
whismanoid 15:37c83ec50ea0 3396 char strPinIndex[3];
whismanoid 15:37c83ec50ea0 3397 strPinIndex[0] = cmdLine[2];
whismanoid 15:37c83ec50ea0 3398 strPinIndex[1] = cmdLine[3];
whismanoid 15:37c83ec50ea0 3399 strPinIndex[2] = '\0';
whismanoid 15:37c83ec50ea0 3400 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 15:37c83ec50ea0 3401 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 15:37c83ec50ea0 3402 //
whismanoid 15:37c83ec50ea0 3403 // get next character
whismanoid 15:37c83ec50ea0 3404 switch (cmdLine[1])
whismanoid 15:37c83ec50ea0 3405 {
whismanoid 23:c6c652bef4b9 3406 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3407 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 3408 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 3409 case 'B': case 'b':
whismanoid 23:c6c652bef4b9 3410 {
whismanoid 24:032f3683cb2a 3411 int command_table_button_index = 1;
whismanoid 23:c6c652bef4b9 3412 // %B1 submenu for Button1
whismanoid 23:c6c652bef4b9 3413 // future: %B2 submenu for Button2
whismanoid 23:c6c652bef4b9 3414 // future: %B3 submenu for Button3
whismanoid 23:c6c652bef4b9 3415 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 3416 // cmdLine[2] == '1' selects onButton1_command_table
whismanoid 23:c6c652bef4b9 3417 char** command_table = onButton1_command_table;
whismanoid 23:c6c652bef4b9 3418 #endif
whismanoid 24:032f3683cb2a 3419 switch(cmdLine[2])
whismanoid 24:032f3683cb2a 3420 {
whismanoid 24:032f3683cb2a 3421 default:
whismanoid 24:032f3683cb2a 3422 case '1': case 'A': case 'a': case '!':
whismanoid 24:032f3683cb2a 3423 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3424 command_table_button_index = 1;
whismanoid 24:032f3683cb2a 3425 command_table = onButton1_command_table;
whismanoid 24:032f3683cb2a 3426 #endif
whismanoid 24:032f3683cb2a 3427 break;
whismanoid 24:032f3683cb2a 3428 case '2': case 'B': case 'b': case '@':
whismanoid 23:c6c652bef4b9 3429 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3430 command_table_button_index = 2;
whismanoid 24:032f3683cb2a 3431 command_table = onButton2_command_table;
whismanoid 24:032f3683cb2a 3432 #endif
whismanoid 24:032f3683cb2a 3433 break;
whismanoid 24:032f3683cb2a 3434 case '3': case 'C': case 'c': case '#':
whismanoid 23:c6c652bef4b9 3435 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3436 command_table_button_index = 3;
whismanoid 24:032f3683cb2a 3437 command_table = onButton3_command_table;
whismanoid 24:032f3683cb2a 3438 #endif
whismanoid 24:032f3683cb2a 3439 break;
whismanoid 29:6a9edb6e973b 3440 case '4':
whismanoid 29:6a9edb6e973b 3441 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3442 command_table_button_index = 4;
whismanoid 29:6a9edb6e973b 3443 command_table = onButton4_command_table;
whismanoid 29:6a9edb6e973b 3444 #endif
whismanoid 29:6a9edb6e973b 3445 break;
whismanoid 29:6a9edb6e973b 3446 case '5':
whismanoid 29:6a9edb6e973b 3447 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3448 command_table_button_index = 5;
whismanoid 29:6a9edb6e973b 3449 command_table = onButton5_command_table;
whismanoid 29:6a9edb6e973b 3450 #endif
whismanoid 29:6a9edb6e973b 3451 break;
whismanoid 29:6a9edb6e973b 3452 case '6':
whismanoid 29:6a9edb6e973b 3453 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3454 command_table_button_index = 6;
whismanoid 29:6a9edb6e973b 3455 command_table = onButton6_command_table;
whismanoid 29:6a9edb6e973b 3456 #endif
whismanoid 29:6a9edb6e973b 3457 break;
whismanoid 29:6a9edb6e973b 3458 case '7':
whismanoid 29:6a9edb6e973b 3459 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3460 command_table_button_index = 7;
whismanoid 29:6a9edb6e973b 3461 command_table = onButton7_command_table;
whismanoid 29:6a9edb6e973b 3462 #endif
whismanoid 29:6a9edb6e973b 3463 break;
whismanoid 29:6a9edb6e973b 3464 case '8':
whismanoid 29:6a9edb6e973b 3465 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3466 command_table_button_index = 8;
whismanoid 29:6a9edb6e973b 3467 command_table = onButton8_command_table;
whismanoid 29:6a9edb6e973b 3468 #endif
whismanoid 29:6a9edb6e973b 3469 break;
whismanoid 29:6a9edb6e973b 3470 case '9':
whismanoid 29:6a9edb6e973b 3471 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3472 command_table_button_index = 9;
whismanoid 29:6a9edb6e973b 3473 command_table = onButton9_command_table;
whismanoid 29:6a9edb6e973b 3474 #endif
whismanoid 29:6a9edb6e973b 3475 break;
whismanoid 24:032f3683cb2a 3476 }
whismanoid 24:032f3683cb2a 3477 //
whismanoid 23:c6c652bef4b9 3478 switch(cmdLine[3])
whismanoid 23:c6c652bef4b9 3479 {
whismanoid 23:c6c652bef4b9 3480 case '@':
whismanoid 23:c6c652bef4b9 3481 {
whismanoid 23:c6c652bef4b9 3482 // %B1@ view/edit command table, similar to L@ for action table
whismanoid 23:c6c652bef4b9 3483 int editRowIndex = 0;
whismanoid 23:c6c652bef4b9 3484 int command_table_row_count = 0;
whismanoid 23:c6c652bef4b9 3485 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3486 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3487 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 24:032f3683cb2a 3488 command_table_row_count = lineIndex+1;
whismanoid 24:032f3683cb2a 3489 }
whismanoid 24:032f3683cb2a 3490 //
whismanoid 24:032f3683cb2a 3491 // ignore extra spaces before the command
whismanoid 24:032f3683cb2a 3492 // find argIndex such that cmdLine[argIndex] is the start of the second word
whismanoid 24:032f3683cb2a 3493 int argIndex;
whismanoid 24:032f3683cb2a 3494 for (argIndex = 5; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 24:032f3683cb2a 3495 {
whismanoid 24:032f3683cb2a 3496 if (cmdLine[argIndex] == ' ') break;
whismanoid 24:032f3683cb2a 3497 }
whismanoid 24:032f3683cb2a 3498 for (; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 24:032f3683cb2a 3499 {
whismanoid 24:032f3683cb2a 3500 if (cmdLine[argIndex] != ' ') break;
whismanoid 23:c6c652bef4b9 3501 }
whismanoid 23:c6c652bef4b9 3502 //
whismanoid 23:c6c652bef4b9 3503 // Edit the contents of command_table
whismanoid 23:c6c652bef4b9 3504 switch (cmdLine[4]) // %B1@... -- Edit the contents of command_table
whismanoid 23:c6c652bef4b9 3505 {
whismanoid 23:c6c652bef4b9 3506 case '0': case '1': case '2': case '3': case '4':
whismanoid 23:c6c652bef4b9 3507 case '5': case '6': case '7': case '8': case '9':
whismanoid 24:032f3683cb2a 3508 // %B1@nnn command replace row number nnn
whismanoid 23:c6c652bef4b9 3509 // edit row data
whismanoid 23:c6c652bef4b9 3510 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3511 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 23:c6c652bef4b9 3512 // get row number to edit from cmdLine[4]
whismanoid 23:c6c652bef4b9 3513 editRowIndex = atoi(cmdLine.str()+4);
whismanoid 24:032f3683cb2a 3514 if ((editRowIndex >= 0) && (editRowIndex < command_table_row_count)) {
whismanoid 28:a9a3a9db592b 3515 // avoid replacing with null because that would truncate the table
whismanoid 28:a9a3a9db592b 3516 if (*(cmdLine.str()+argIndex)=='\0') {
whismanoid 28:a9a3a9db592b 3517 cmdLine.serial().printf("\r\n cannot replace row %d with nothing",
whismanoid 28:a9a3a9db592b 3518 editRowIndex);
whismanoid 28:a9a3a9db592b 3519 }
whismanoid 28:a9a3a9db592b 3520 else
whismanoid 28:a9a3a9db592b 3521 {
whismanoid 28:a9a3a9db592b 3522 // update row
whismanoid 28:a9a3a9db592b 3523 cmdLine.serial().printf("\r\n replace row %d with \"%s\"",
whismanoid 28:a9a3a9db592b 3524 editRowIndex, cmdLine.str()+argIndex);
whismanoid 28:a9a3a9db592b 3525 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3526 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 28:a9a3a9db592b 3527 }
whismanoid 24:032f3683cb2a 3528 }
whismanoid 23:c6c652bef4b9 3529 }
whismanoid 23:c6c652bef4b9 3530 break;
whismanoid 23:c6c652bef4b9 3531 case '+':
whismanoid 24:032f3683cb2a 3532 // %B1@+ command add new row (if there is room to add)
whismanoid 23:c6c652bef4b9 3533 // add a new row at end of table
whismanoid 23:c6c652bef4b9 3534 if (command_table_row_count < COMMAND_TABLE_ROW_MAX) {
whismanoid 23:c6c652bef4b9 3535 // if command_table_row_count => COMMAND_TABLE_ROW_MAX then the table is full
whismanoid 23:c6c652bef4b9 3536 editRowIndex = command_table_row_count;
whismanoid 28:a9a3a9db592b 3537 // avoid replacing with null because that would truncate the table
whismanoid 28:a9a3a9db592b 3538 if (*(cmdLine.str()+argIndex)=='\0') {
whismanoid 28:a9a3a9db592b 3539 cmdLine.serial().printf("\r\n cannot add new row %d containing nothing",
whismanoid 28:a9a3a9db592b 3540 editRowIndex);
whismanoid 28:a9a3a9db592b 3541 }
whismanoid 28:a9a3a9db592b 3542 else
whismanoid 28:a9a3a9db592b 3543 {
whismanoid 28:a9a3a9db592b 3544 command_table_row_count++;
whismanoid 28:a9a3a9db592b 3545 cmdLine.serial().printf("\r\n add new row %d containing \"%s\"",
whismanoid 28:a9a3a9db592b 3546 editRowIndex, cmdLine.str()+argIndex);
whismanoid 28:a9a3a9db592b 3547 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3548 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 28:a9a3a9db592b 3549 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 28:a9a3a9db592b 3550 }
whismanoid 23:c6c652bef4b9 3551 }
whismanoid 23:c6c652bef4b9 3552 break;
whismanoid 23:c6c652bef4b9 3553 case '-':
whismanoid 24:032f3683cb2a 3554 // %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 23:c6c652bef4b9 3555 // delete row from table
whismanoid 23:c6c652bef4b9 3556 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3557 // if command_table_row_count == 0 then the table is empty
whismanoid 23:c6c652bef4b9 3558 if ((cmdLine[5] == '~') && (cmdLine[6] == '~') && (cmdLine[7] == '~')) {
whismanoid 23:c6c652bef4b9 3559 // %B1@-~~~ clear entire command table
whismanoid 24:032f3683cb2a 3560 cmdLine.serial().printf("\r\n clear entire command table");
whismanoid 23:c6c652bef4b9 3561 command_table_row_count = 0;
whismanoid 28:a9a3a9db592b 3562 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 23:c6c652bef4b9 3563 break;
whismanoid 23:c6c652bef4b9 3564 }
whismanoid 24:032f3683cb2a 3565 else
whismanoid 23:c6c652bef4b9 3566 {
whismanoid 24:032f3683cb2a 3567 // %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 24:032f3683cb2a 3568 editRowIndex = atoi(cmdLine.str()+5);
whismanoid 24:032f3683cb2a 3569 if ((editRowIndex >= 0) && (editRowIndex < command_table_row_count)) {
whismanoid 24:032f3683cb2a 3570 cmdLine.serial().printf("\r\n delete row %d", editRowIndex);
whismanoid 24:032f3683cb2a 3571 // delete row editRowIndex from Datalogger_action_table
whismanoid 24:032f3683cb2a 3572 for (int i = editRowIndex; i < (command_table_row_count-1); i++)
whismanoid 24:032f3683cb2a 3573 {
whismanoid 24:032f3683cb2a 3574 // copy row i+1 into row i
whismanoid 24:032f3683cb2a 3575 cmdLine.serial().printf("\r\n copy row %d into row %d: \"%s\"",
whismanoid 24:032f3683cb2a 3576 i+1, i, command_table[i+1]);
whismanoid 24:032f3683cb2a 3577 strncpy(command_table[i], command_table[i+1], COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3578 command_table[i][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 24:032f3683cb2a 3579 }
whismanoid 24:032f3683cb2a 3580 command_table_row_count--;
whismanoid 28:a9a3a9db592b 3581 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 24:032f3683cb2a 3582 }
whismanoid 23:c6c652bef4b9 3583 }
whismanoid 23:c6c652bef4b9 3584 }
whismanoid 23:c6c652bef4b9 3585 break;
whismanoid 23:c6c652bef4b9 3586 case '!':
whismanoid 23:c6c652bef4b9 3587 // pause the entire action table
whismanoid 23:c6c652bef4b9 3588 // TODO: %B1@! disable button response but keep command table contents
whismanoid 23:c6c652bef4b9 3589 //~ Datalogger_action_table_enabled = false;
whismanoid 23:c6c652bef4b9 3590 break;
whismanoid 23:c6c652bef4b9 3591 case '@':
whismanoid 23:c6c652bef4b9 3592 // enable the entire action table
whismanoid 23:c6c652bef4b9 3593 // TODO: %B1@@ enable button response
whismanoid 23:c6c652bef4b9 3594 //~ Datalogger_action_table_enabled = true;
whismanoid 23:c6c652bef4b9 3595 break;
whismanoid 23:c6c652bef4b9 3596 }
whismanoid 23:c6c652bef4b9 3597 //
whismanoid 23:c6c652bef4b9 3598 // Print the contents of command_table
whismanoid 23:c6c652bef4b9 3599 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3600 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3601 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 24:032f3683cb2a 3602 command_table_row_count = lineIndex+1;
whismanoid 24:032f3683cb2a 3603 cmdLine.serial().printf("\r\n %%B%1d@%d %s",
whismanoid 24:032f3683cb2a 3604 command_table_button_index,
whismanoid 24:032f3683cb2a 3605 lineIndex,
whismanoid 24:032f3683cb2a 3606 command_table[lineIndex]);
whismanoid 23:c6c652bef4b9 3607 }
whismanoid 24:032f3683cb2a 3608 cmdLine.serial().printf("\r\n command_table_row_count = %d",
whismanoid 24:032f3683cb2a 3609 command_table_row_count);
whismanoid 23:c6c652bef4b9 3610 cmdLine.serial().printf("\r\nCommand table editing commands:");
whismanoid 23:c6c652bef4b9 3611 if (command_table_row_count < COMMAND_TABLE_ROW_MAX) {
whismanoid 23:c6c652bef4b9 3612 // if command_table_row_count => COMMAND_TABLE_ROW_MAX then the table is full
whismanoid 24:032f3683cb2a 3613 cmdLine.serial().printf("\r\n %%B%1d@+ command -- add new row %d at end of table",
whismanoid 24:032f3683cb2a 3614 command_table_button_index,
whismanoid 24:032f3683cb2a 3615 command_table_row_count);
whismanoid 23:c6c652bef4b9 3616 }
whismanoid 23:c6c652bef4b9 3617 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3618 // if command_table_row_count == 0 then the table is empty
whismanoid 24:032f3683cb2a 3619 cmdLine.serial().printf("\r\n %%B%1d@%d command -- replace row %d",
whismanoid 24:032f3683cb2a 3620 command_table_button_index,
whismanoid 23:c6c652bef4b9 3621 command_table_row_count-1,
whismanoid 23:c6c652bef4b9 3622 command_table_row_count-1);
whismanoid 24:032f3683cb2a 3623 cmdLine.serial().printf("\r\n %%B%1d@-%d -- delete row %d",
whismanoid 24:032f3683cb2a 3624 command_table_button_index,
whismanoid 24:032f3683cb2a 3625 command_table_row_count-1,
whismanoid 24:032f3683cb2a 3626 command_table_row_count-1);
whismanoid 24:032f3683cb2a 3627 cmdLine.serial().printf("\r\n %%B%1d@-~~~ -- delete all rows",
whismanoid 24:032f3683cb2a 3628 command_table_button_index);
whismanoid 24:032f3683cb2a 3629 cmdLine.serial().printf("\r\n %%B%1d@! -- pause entire command table",
whismanoid 24:032f3683cb2a 3630 command_table_button_index);
whismanoid 24:032f3683cb2a 3631 cmdLine.serial().printf("\r\n %%B%1d@@ -- enable command table",
whismanoid 24:032f3683cb2a 3632 command_table_button_index);
whismanoid 23:c6c652bef4b9 3633 }
whismanoid 23:c6c652bef4b9 3634 //
whismanoid 23:c6c652bef4b9 3635 } // case '@' -- %B1@ view/edit command table
whismanoid 23:c6c652bef4b9 3636 break;
whismanoid 23:c6c652bef4b9 3637 case '!':
whismanoid 23:c6c652bef4b9 3638 // TODO: %B1! trigger onButton1FallingEdge() immediately (for test development)
whismanoid 23:c6c652bef4b9 3639 Run_command_table(command_table);
whismanoid 23:c6c652bef4b9 3640 break;
whismanoid 23:c6c652bef4b9 3641 }
whismanoid 23:c6c652bef4b9 3642 }
whismanoid 23:c6c652bef4b9 3643 break;
whismanoid 23:c6c652bef4b9 3644 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3645 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 3646 #if HAS_digitalInOuts
whismanoid 15:37c83ec50ea0 3647 case 'H': case 'h':
whismanoid 15:37c83ec50ea0 3648 {
whismanoid 15:37c83ec50ea0 3649 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 3650 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3651 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3652 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3653 #else
whismanoid 15:37c83ec50ea0 3654 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3655 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 3656 digitalInOutPin.write(1);
whismanoid 15:37c83ec50ea0 3657 #endif
whismanoid 15:37c83ec50ea0 3658 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 15:37c83ec50ea0 3659 }
whismanoid 15:37c83ec50ea0 3660 break;
whismanoid 15:37c83ec50ea0 3661 case 'L': case 'l':
whismanoid 15:37c83ec50ea0 3662 {
whismanoid 15:37c83ec50ea0 3663 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 3664 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3665 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3666 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3667 #else
whismanoid 15:37c83ec50ea0 3668 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3669 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 3670 digitalInOutPin.write(0);
whismanoid 15:37c83ec50ea0 3671 #endif
whismanoid 15:37c83ec50ea0 3672 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 15:37c83ec50ea0 3673 }
whismanoid 15:37c83ec50ea0 3674 break;
whismanoid 15:37c83ec50ea0 3675 case '?':
whismanoid 15:37c83ec50ea0 3676 {
whismanoid 15:37c83ec50ea0 3677 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 3678 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3679 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3680 #else
whismanoid 15:37c83ec50ea0 3681 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3682 digitalInOutPin.input();
whismanoid 15:37c83ec50ea0 3683 #endif
whismanoid 15:37c83ec50ea0 3684 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 15:37c83ec50ea0 3685 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3686 int value = digitalRead(pinIndex);
whismanoid 15:37c83ec50ea0 3687 #else
whismanoid 15:37c83ec50ea0 3688 int value = digitalInOutPin.read();
whismanoid 15:37c83ec50ea0 3689 #endif
whismanoid 15:37c83ec50ea0 3690 cmdLine.serial().printf("%d ", value);
whismanoid 15:37c83ec50ea0 3691 }
whismanoid 15:37c83ec50ea0 3692 break;
whismanoid 15:37c83ec50ea0 3693 #endif
whismanoid 15:37c83ec50ea0 3694 //
whismanoid 15:37c83ec50ea0 3695 #if HAS_analogIns
whismanoid 15:37c83ec50ea0 3696 case 'A': case 'a':
whismanoid 15:37c83ec50ea0 3697 {
whismanoid 15:37c83ec50ea0 3698 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 3699 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 3700 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 15:37c83ec50ea0 3701 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 15:37c83ec50ea0 3702 {
whismanoid 15:37c83ec50ea0 3703 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 3704 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 3705 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 3706 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 3707 //
whismanoid 15:37c83ec50ea0 3708 int pinIndexH = pinIndex + 4;
whismanoid 15:37c83ec50ea0 3709 int cPinIndexH = '0' + pinIndexH;
whismanoid 15:37c83ec50ea0 3710 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 15:37c83ec50ea0 3711 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 15:37c83ec50ea0 3712 float normValueH_0_1 = analogInPinH.read();
whismanoid 15:37c83ec50ea0 3713 //
whismanoid 15:37c83ec50ea0 3714 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV AIN%c = %7.3f%% = %1.3fV \r\n",
whismanoid 15:37c83ec50ea0 3715 cPinIndex,
whismanoid 15:37c83ec50ea0 3716 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 3717 normValue_0_1 * adc_full_scale_voltage,
whismanoid 15:37c83ec50ea0 3718 cPinIndexH,
whismanoid 15:37c83ec50ea0 3719 normValueH_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 3720 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 15:37c83ec50ea0 3721 );
whismanoid 15:37c83ec50ea0 3722 }
whismanoid 15:37c83ec50ea0 3723 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 15:37c83ec50ea0 3724 {
whismanoid 15:37c83ec50ea0 3725 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 3726 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 3727 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 3728 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 3729 //
whismanoid 15:37c83ec50ea0 3730 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 3731 cPinIndex,
whismanoid 15:37c83ec50ea0 3732 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 3733 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 3734 );
whismanoid 15:37c83ec50ea0 3735 }
whismanoid 15:37c83ec50ea0 3736 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 3737 // Platform board uses simple analog inputs
whismanoid 15:37c83ec50ea0 3738 // assume standard Arduino analog inputs A0-A5
whismanoid 15:37c83ec50ea0 3739 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 15:37c83ec50ea0 3740 {
whismanoid 15:37c83ec50ea0 3741 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 3742 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 3743 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 15:37c83ec50ea0 3744 float normValue_0_1 = analogInPin.read();
whismanoid 15:37c83ec50ea0 3745 //
whismanoid 15:37c83ec50ea0 3746 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 3747 cPinIndex,
whismanoid 15:37c83ec50ea0 3748 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 3749 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 3750 );
whismanoid 15:37c83ec50ea0 3751 }
whismanoid 15:37c83ec50ea0 3752 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 3753 }
whismanoid 15:37c83ec50ea0 3754 break;
whismanoid 15:37c83ec50ea0 3755 #endif
whismanoid 15:37c83ec50ea0 3756 //
whismanoid 15:37c83ec50ea0 3757 #if HAS_SPI2_MAX541
whismanoid 15:37c83ec50ea0 3758 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 3759 {
whismanoid 15:37c83ec50ea0 3760 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 15:37c83ec50ea0 3761 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 15:37c83ec50ea0 3762 float voltageV = max541.Get_Voltage();
whismanoid 15:37c83ec50ea0 3763 // if (cmdLine[2] == '+') {
whismanoid 15:37c83ec50ea0 3764 // // %D+
whismanoid 15:37c83ec50ea0 3765 // voltageV = voltageV * 1.25f;
whismanoid 15:37c83ec50ea0 3766 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 15:37c83ec50ea0 3767 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 3768 // }
whismanoid 15:37c83ec50ea0 3769 // else if (cmdLine[2] == '-') {
whismanoid 15:37c83ec50ea0 3770 // // %D-
whismanoid 15:37c83ec50ea0 3771 // voltageV = voltageV * 0.75f;
whismanoid 15:37c83ec50ea0 3772 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 15:37c83ec50ea0 3773 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 3774 // }
whismanoid 15:37c83ec50ea0 3775 if (cmdLine.parse_float("V", voltageV))
whismanoid 15:37c83ec50ea0 3776 {
whismanoid 15:37c83ec50ea0 3777 // %D V=1.234 -- set voltage
whismanoid 15:37c83ec50ea0 3778 max541.Set_Voltage(voltageV);
whismanoid 15:37c83ec50ea0 3779 }
whismanoid 15:37c83ec50ea0 3780 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 15:37c83ec50ea0 3781 {
whismanoid 15:37c83ec50ea0 3782 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 15:37c83ec50ea0 3783 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 3784 }
whismanoid 15:37c83ec50ea0 3785 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 15:37c83ec50ea0 3786 {
whismanoid 15:37c83ec50ea0 3787 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 15:37c83ec50ea0 3788
whismanoid 15:37c83ec50ea0 3789 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 15:37c83ec50ea0 3790 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 3791 const int average_count = 100;
whismanoid 15:37c83ec50ea0 3792 const double average_K = 0.25;
whismanoid 15:37c83ec50ea0 3793 for (int count = 0; count < average_count; count++) {
whismanoid 15:37c83ec50ea0 3794 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 3795 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 15:37c83ec50ea0 3796 }
whismanoid 15:37c83ec50ea0 3797 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 15:37c83ec50ea0 3798 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3799 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 15:37c83ec50ea0 3800 max541_midscale_V, max541.VRef);
whismanoid 15:37c83ec50ea0 3801 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 15:37c83ec50ea0 3802 voltageV = 1.0f;
whismanoid 15:37c83ec50ea0 3803 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 3804 }
whismanoid 15:37c83ec50ea0 3805 else {
whismanoid 15:37c83ec50ea0 3806 // %D -- print MAX541 DAC status
whismanoid 15:37c83ec50ea0 3807 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 15:37c83ec50ea0 3808 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 15:37c83ec50ea0 3809 }
whismanoid 15:37c83ec50ea0 3810 }
whismanoid 15:37c83ec50ea0 3811 break;
whismanoid 15:37c83ec50ea0 3812 #endif
whismanoid 15:37c83ec50ea0 3813
whismanoid 15:37c83ec50ea0 3814 //
whismanoid 15:37c83ec50ea0 3815 #if HAS_I2C // SUPPORT_I2C
whismanoid 15:37c83ec50ea0 3816 case 'I': case 'i':
whismanoid 15:37c83ec50ea0 3817 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 3818 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3819 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3820 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3821 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3822 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3823 // get next character
whismanoid 15:37c83ec50ea0 3824 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 15:37c83ec50ea0 3825 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 15:37c83ec50ea0 3826 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 15:37c83ec50ea0 3827 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 15:37c83ec50ea0 3828 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 15:37c83ec50ea0 3829 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 15:37c83ec50ea0 3830 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 15:37c83ec50ea0 3831 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 3832 {
whismanoid 15:37c83ec50ea0 3833 case 'P': case 'p':
whismanoid 15:37c83ec50ea0 3834 {
whismanoid 15:37c83ec50ea0 3835 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3836 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 15:37c83ec50ea0 3837 }
whismanoid 15:37c83ec50ea0 3838 break;
whismanoid 15:37c83ec50ea0 3839 case 'C': case 'c':
whismanoid 15:37c83ec50ea0 3840 {
whismanoid 15:37c83ec50ea0 3841 bool isUpdatedI2CConfig = false;
whismanoid 15:37c83ec50ea0 3842 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3843 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 15:37c83ec50ea0 3844 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 15:37c83ec50ea0 3845 {
whismanoid 15:37c83ec50ea0 3846 isUpdatedI2CConfig = true;
whismanoid 15:37c83ec50ea0 3847 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 3848 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 3849 {
whismanoid 15:37c83ec50ea0 3850 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 3851 }
whismanoid 15:37c83ec50ea0 3852 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 3853 {
whismanoid 15:37c83ec50ea0 3854 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 3855 }
whismanoid 15:37c83ec50ea0 3856 }
whismanoid 15:37c83ec50ea0 3857 if (isUpdatedI2CConfig)
whismanoid 15:37c83ec50ea0 3858 {
whismanoid 15:37c83ec50ea0 3859 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3860 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3861 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3862 i2cMaster.start();
whismanoid 15:37c83ec50ea0 3863 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 3864 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3865 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3866 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 15:37c83ec50ea0 3867 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 15:37c83ec50ea0 3868 (g_I2C_SCL_Hz / 1000.));
whismanoid 15:37c83ec50ea0 3869 i2cMaster.start();
whismanoid 15:37c83ec50ea0 3870 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 3871 }
whismanoid 15:37c83ec50ea0 3872 }
whismanoid 15:37c83ec50ea0 3873 break;
whismanoid 15:37c83ec50ea0 3874 case 'W': case 'w':
whismanoid 15:37c83ec50ea0 3875 {
whismanoid 15:37c83ec50ea0 3876 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3877 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3878 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3879 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3880 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3881 #define MAX_I2C_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 3882 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 3883 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3884 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 3885 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 3886 MAX_I2C_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 3887 {
whismanoid 15:37c83ec50ea0 3888 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3889 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 3890 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 15:37c83ec50ea0 3891 g_I2C_deviceAddress7,
whismanoid 15:37c83ec50ea0 3892 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 15:37c83ec50ea0 3893 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 3894 {
whismanoid 15:37c83ec50ea0 3895 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 3896 }
whismanoid 15:37c83ec50ea0 3897 //
whismanoid 15:37c83ec50ea0 3898 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3899 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3900 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3901 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3902 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3903 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3904 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3905 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3906 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3907 // /* 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 3908 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3909 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3910 unsigned int misoLength = 0;
whismanoid 15:37c83ec50ea0 3911 bool repeated = (g_I2C_read_count > 0);
whismanoid 15:37c83ec50ea0 3912 //
whismanoid 15:37c83ec50ea0 3913 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 15:37c83ec50ea0 3914 switch (writeStatus)
whismanoid 15:37c83ec50ea0 3915 {
whismanoid 15:37c83ec50ea0 3916 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 3917 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 3918 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 3919 writeStatus);
whismanoid 15:37c83ec50ea0 3920 }
whismanoid 15:37c83ec50ea0 3921 if (repeated)
whismanoid 15:37c83ec50ea0 3922 {
whismanoid 15:37c83ec50ea0 3923 int readStatus =
whismanoid 15:37c83ec50ea0 3924 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 15:37c83ec50ea0 3925 switch (readStatus)
whismanoid 15:37c83ec50ea0 3926 {
whismanoid 15:37c83ec50ea0 3927 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 3928 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 3929 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 3930 readStatus);
whismanoid 15:37c83ec50ea0 3931 }
whismanoid 15:37c83ec50ea0 3932 }
whismanoid 15:37c83ec50ea0 3933 //
whismanoid 15:37c83ec50ea0 3934 if (misoLength > 0)
whismanoid 15:37c83ec50ea0 3935 {
whismanoid 15:37c83ec50ea0 3936 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 3937 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 3938 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 15:37c83ec50ea0 3939 byteIndex++)
whismanoid 15:37c83ec50ea0 3940 {
whismanoid 15:37c83ec50ea0 3941 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 3942 }
whismanoid 15:37c83ec50ea0 3943 }
whismanoid 15:37c83ec50ea0 3944 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 3945 }
whismanoid 15:37c83ec50ea0 3946 }
whismanoid 15:37c83ec50ea0 3947 break;
whismanoid 15:37c83ec50ea0 3948 case 'R': case 'r':
whismanoid 15:37c83ec50ea0 3949 {
whismanoid 15:37c83ec50ea0 3950 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3951 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3952 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3953 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3954 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3955 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3956 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3957 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3958 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3959 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3960 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3961 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3962 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3963 // /* 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 3964 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3965 }
whismanoid 15:37c83ec50ea0 3966 break;
whismanoid 15:37c83ec50ea0 3967 case '^':
whismanoid 15:37c83ec50ea0 3968 {
whismanoid 15:37c83ec50ea0 3969 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 3970 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 3971 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 3972 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3973 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 3974 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 3975 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 3976 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 3977 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 3978 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 3979 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 3980 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3981 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 3982 // /* 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 3983 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 3984 }
whismanoid 15:37c83ec50ea0 3985 break;
whismanoid 15:37c83ec50ea0 3986 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 3987 break;
whismanoid 15:37c83ec50ea0 3988 #endif
whismanoid 15:37c83ec50ea0 3989 //
whismanoid 15:37c83ec50ea0 3990 #if HAS_SPI // SUPPORT_SPI
whismanoid 15:37c83ec50ea0 3991 case 'S': case 's':
whismanoid 15:37c83ec50ea0 3992 {
whismanoid 15:37c83ec50ea0 3993 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3994 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3995 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3996 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3997 //
whismanoid 15:37c83ec50ea0 3998 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 15:37c83ec50ea0 3999 bool isUpdatedSPIConfig = false;
whismanoid 15:37c83ec50ea0 4000 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 15:37c83ec50ea0 4001 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 15:37c83ec50ea0 4002 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 15:37c83ec50ea0 4003 {
whismanoid 15:37c83ec50ea0 4004 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4005 }
whismanoid 15:37c83ec50ea0 4006 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 15:37c83ec50ea0 4007 {
whismanoid 15:37c83ec50ea0 4008 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4009 }
whismanoid 15:37c83ec50ea0 4010 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 15:37c83ec50ea0 4011 {
whismanoid 15:37c83ec50ea0 4012 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4013 }
whismanoid 15:37c83ec50ea0 4014 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 15:37c83ec50ea0 4015 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 15:37c83ec50ea0 4016 {
whismanoid 15:37c83ec50ea0 4017 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4018 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 4019 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 4020 {
whismanoid 15:37c83ec50ea0 4021 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4022 }
whismanoid 15:37c83ec50ea0 4023 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 4024 {
whismanoid 15:37c83ec50ea0 4025 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4026 }
whismanoid 15:37c83ec50ea0 4027 }
whismanoid 15:37c83ec50ea0 4028 // Update SPI configuration
whismanoid 15:37c83ec50ea0 4029 if (isUpdatedSPIConfig)
whismanoid 15:37c83ec50ea0 4030 {
whismanoid 15:37c83ec50ea0 4031 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4032 spi_cs = g_SPI_cs_state;
whismanoid 15:37c83ec50ea0 4033 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 15:37c83ec50ea0 4034 #if APPLICATION_MAX5715
whismanoid 15:37c83ec50ea0 4035 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4036 #elif APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 4037 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4038 #elif APPLICATION_MAX5171
whismanoid 15:37c83ec50ea0 4039 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4040 #elif APPLICATION_MAX11410
whismanoid 15:37c83ec50ea0 4041 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4042 #elif APPLICATION_MAX12345
whismanoid 15:37c83ec50ea0 4043 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4044 #else
whismanoid 15:37c83ec50ea0 4045 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 15:37c83ec50ea0 4046 #endif
whismanoid 15:37c83ec50ea0 4047 //
whismanoid 15:37c83ec50ea0 4048 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4049 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 15:37c83ec50ea0 4050 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 15:37c83ec50ea0 4051 //
whismanoid 15:37c83ec50ea0 4052 // 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 4053 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4054 "\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 4055 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 15:37c83ec50ea0 4056 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 15:37c83ec50ea0 4057 g_SPI_cs_state,
whismanoid 15:37c83ec50ea0 4058 g_SPI_SCLK_Hz,
whismanoid 15:37c83ec50ea0 4059 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 15:37c83ec50ea0 4060 ((double)(SystemCoreClock / 1000000.)),
whismanoid 15:37c83ec50ea0 4061 ideal_divisor,
whismanoid 15:37c83ec50ea0 4062 (actual_SCLK_Hz / 1000000.)
whismanoid 15:37c83ec50ea0 4063 );
whismanoid 15:37c83ec50ea0 4064 }
whismanoid 15:37c83ec50ea0 4065 // get next character
whismanoid 15:37c83ec50ea0 4066 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 4067 {
whismanoid 15:37c83ec50ea0 4068 case 'C': case 's':
whismanoid 15:37c83ec50ea0 4069 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4070 break;
whismanoid 15:37c83ec50ea0 4071 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 4072 // %SD -- SPI diagnostic messages enable
whismanoid 15:37c83ec50ea0 4073 if (g_MAX5719_device.onSPIprint) {
whismanoid 15:37c83ec50ea0 4074 g_MAX5719_device.onSPIprint = NULL;
whismanoid 15:37c83ec50ea0 4075 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') != None is false
whismanoid 15:37c83ec50ea0 4076 }
whismanoid 15:37c83ec50ea0 4077 else {
whismanoid 15:37c83ec50ea0 4078 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[]);
whismanoid 15:37c83ec50ea0 4079 g_MAX5719_device.onSPIprint = onSPIprint_handler;
whismanoid 15:37c83ec50ea0 4080 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') is false
whismanoid 15:37c83ec50ea0 4081 }
whismanoid 15:37c83ec50ea0 4082 break;
whismanoid 15:37c83ec50ea0 4083 case 'W': case 'R': case 'w': case 'r':
whismanoid 15:37c83ec50ea0 4084 {
whismanoid 15:37c83ec50ea0 4085 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 4086 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 4087 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4088 #define MAX_SPI_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 4089 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 4090 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4091 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4092 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 4093 MAX_SPI_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 4094 {
whismanoid 15:37c83ec50ea0 4095 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4096 cmdLine.serial().printf("\r\nSPI");
whismanoid 15:37c83ec50ea0 4097 if (byteCount > 7) {
whismanoid 15:37c83ec50ea0 4098 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 15:37c83ec50ea0 4099 }
whismanoid 15:37c83ec50ea0 4100 cmdLine.serial().printf(" MOSI->");
whismanoid 15:37c83ec50ea0 4101 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 4102 {
whismanoid 15:37c83ec50ea0 4103 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 4104 }
whismanoid 15:37c83ec50ea0 4105 spi_cs = 0;
whismanoid 15:37c83ec50ea0 4106 unsigned int numBytesTransferred =
whismanoid 15:37c83ec50ea0 4107 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 15:37c83ec50ea0 4108 spi_cs = 1;
whismanoid 15:37c83ec50ea0 4109 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4110 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 4111 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 15:37c83ec50ea0 4112 byteIndex++)
whismanoid 15:37c83ec50ea0 4113 {
whismanoid 15:37c83ec50ea0 4114 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 4115 }
whismanoid 15:37c83ec50ea0 4116 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 4117 }
whismanoid 15:37c83ec50ea0 4118 }
whismanoid 15:37c83ec50ea0 4119 break;
whismanoid 15:37c83ec50ea0 4120 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 4121 } // case 'S': // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 4122 break;
whismanoid 15:37c83ec50ea0 4123 #endif
whismanoid 15:37c83ec50ea0 4124 //
whismanoid 15:37c83ec50ea0 4125 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 4126 } // switch(cmdLine[1])
whismanoid 15:37c83ec50ea0 4127 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 15:37c83ec50ea0 4128 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 15:37c83ec50ea0 4129
whismanoid 15:37c83ec50ea0 4130 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 4131 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 4132 void main_menu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 4133 {
whismanoid 9:45f98573eb6d 4134 // process command line
whismanoid 9:45f98573eb6d 4135 cmdLine.serial().printf("\r\nCmdLine buf:\"%s\"\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 4136
whismanoid 4:d9b05924ad4c 4137 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 4138 // If datalog is free running, halt on any possible received command
whismanoid 17:9397ea3ea7e9 4139 if (Datalogger_Trigger != trigger_Halt) {
whismanoid 4:d9b05924ad4c 4140 Datalogger_Trigger = trigger_Halt;
whismanoid 9:45f98573eb6d 4141 cmdLine.serial().printf("Datalog stopped by USB command input\r\n");
whismanoid 9:45f98573eb6d 4142 cmdLine.serial().printf("Restart datalog by sending LR\r\n");
whismanoid 4:d9b05924ad4c 4143 }
whismanoid 4:d9b05924ad4c 4144 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 4145
whismanoid 4:d9b05924ad4c 4146 // DIAGNOSTIC: print line buffer
whismanoid 4:d9b05924ad4c 4147 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 4148 //
whismanoid 4:d9b05924ad4c 4149 switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 4150 {
whismanoid 4:d9b05924ad4c 4151 case '?':
whismanoid 4:d9b05924ad4c 4152 main_menu_status(cmdLine);
whismanoid 4:d9b05924ad4c 4153 main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 4154 // print command prompt
whismanoid 4:d9b05924ad4c 4155 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 4156 break;
whismanoid 4:d9b05924ad4c 4157 case '\r': case '\n': // ignore blank line
whismanoid 4:d9b05924ad4c 4158 case '\0': // ignore empty line
whismanoid 4:d9b05924ad4c 4159 case '#': // ignore comment line
whismanoid 4:d9b05924ad4c 4160 // # -- lines beginning with # are comments
whismanoid 4:d9b05924ad4c 4161 main_menu_status(cmdLine);
whismanoid 4:d9b05924ad4c 4162 //~ main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 4163 // print command prompt
whismanoid 4:d9b05924ad4c 4164 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 4165 break;
whismanoid 4:d9b05924ad4c 4166 #if ECHO_EOF_ON_EOL
whismanoid 4:d9b05924ad4c 4167 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 4:d9b05924ad4c 4168 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 4169 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 4170 break;
whismanoid 4:d9b05924ad4c 4171 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 4:d9b05924ad4c 4172 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 4173 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 4174 break;
whismanoid 4:d9b05924ad4c 4175 #endif
whismanoid 10:04022a61b527 4176 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4177 case '!': // device init
whismanoid 10:04022a61b527 4178 {
whismanoid 10:04022a61b527 4179 cmdLine.serial().printf("Init");
whismanoid 10:04022a61b527 4180 // call function Init
whismanoid 10:04022a61b527 4181 uint8_t result = g_MAX11410_device.Init();
whismanoid 10:04022a61b527 4182 // cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 4183 cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 4184 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 4185 // in command '!' device init, apply list of custom register writes after init
whismanoid 10:04022a61b527 4186 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 4187 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 10:04022a61b527 4188 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 10:04022a61b527 4189 uint32_t regData = custom_reg_init_data[index];
whismanoid 10:04022a61b527 4190 cmdLine.serial().printf("*%s=0x%06.6x",
whismanoid 10:04022a61b527 4191 g_MAX11410_device.RegName((MAX11410::MAX11410_CMD_enum_t)regAddress),
whismanoid 10:04022a61b527 4192 regData
whismanoid 10:04022a61b527 4193 );
whismanoid 10:04022a61b527 4194 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 10:04022a61b527 4195 }
whismanoid 10:04022a61b527 4196 #endif // USE_CUSTOM_REG_INIT
whismanoid 10:04022a61b527 4197 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 4198 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 4199 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 4200 }
whismanoid 10:04022a61b527 4201 break;
whismanoid 10:04022a61b527 4202 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 4203 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 4204 case '.':
whismanoid 4:d9b05924ad4c 4205 {
whismanoid 4:d9b05924ad4c 4206 // . -- SelfTest
whismanoid 4:d9b05924ad4c 4207 cmdLine.serial().printf("SelfTest()");
whismanoid 4:d9b05924ad4c 4208 SelfTest(cmdLine);
whismanoid 4:d9b05924ad4c 4209 }
whismanoid 4:d9b05924ad4c 4210 break;
whismanoid 4:d9b05924ad4c 4211 #endif // USE_SELFTEST
whismanoid 15:37c83ec50ea0 4212 #if 1 // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4213 case '%':
whismanoid 4:d9b05924ad4c 4214 {
whismanoid 4:d9b05924ad4c 4215 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 4:d9b05924ad4c 4216 }
whismanoid 4:d9b05924ad4c 4217 break; // case '%'
whismanoid 4:d9b05924ad4c 4218 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 9:45f98573eb6d 4219 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4220 // reuse the Serial_Tester command *regName=regValue
whismanoid 10:04022a61b527 4221 // CODE GENERATOR: generate * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4222 case '*':
whismanoid 10:04022a61b527 4223 {
whismanoid 10:04022a61b527 4224 // if buffer starts with a regName:
whismanoid 10:04022a61b527 4225 // for each reg value (0..n) if(cmdLine.has_keyword(device.regName(r))):
whismanoid 10:04022a61b527 4226 // cmdLine.serial().printf(" scan RegName...\r\n");
whismanoid 10:04022a61b527 4227 }
whismanoid 10:04022a61b527 4228 break;
whismanoid 9:45f98573eb6d 4229 #endif // USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4230 //
whismanoid 10:04022a61b527 4231 #if 1 // USE_AUX_SERIAL_CMD_FORWARDING && (HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL)
whismanoid 10:04022a61b527 4232 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_onEOLcommandParser
whismanoid 10:04022a61b527 4233 case '>':
whismanoid 10:04022a61b527 4234 {
whismanoid 10:04022a61b527 4235 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 4236 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 4237 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 4238 CmdLine& cmdLine_AuxSerial = cmdLine_AUXserial;
whismanoid 10:04022a61b527 4239 Serial& AuxSerial = AUXserial;
whismanoid 10:04022a61b527 4240 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4241 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 4242 CmdLine& cmdLine_AuxSerial = cmdLine_DAPLINKserial;
whismanoid 10:04022a61b527 4243 Serial& AuxSerial = DAPLINKserial;
whismanoid 10:04022a61b527 4244 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4245 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 4246 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4247 //
whismanoid 10:04022a61b527 4248 // >> suppress key=value parsing
whismanoid 10:04022a61b527 4249 bool suppress_parsing = (cmdLine[1] == '>');
whismanoid 10:04022a61b527 4250 if (suppress_parsing == false) {
whismanoid 10:04022a61b527 4251 // int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 4252 if (cmdLine.parse_int_dec("baud", g_auxSerialCom_baud))
whismanoid 10:04022a61b527 4253 {
whismanoid 10:04022a61b527 4254 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- baud rate
whismanoid 10:04022a61b527 4255 cmdLine_AuxSerial.serial().printf("\r\n*** New Baud Rate %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 4256 AuxSerial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 4257 cmdLine_AuxSerial.serial().printf("\r\n*** Baud Rate was set to %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 4258 }
whismanoid 10:04022a61b527 4259 #if 0
whismanoid 10:04022a61b527 4260 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 4261 if (cmdLine.parse_int_dec("tx_wait_echo", g_auxSerialCom_tx_wait_echo))
whismanoid 10:04022a61b527 4262 {
whismanoid 10:04022a61b527 4263 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_wait_echo
whismanoid 10:04022a61b527 4264 //~ cmdLine_AuxSerial.serial().printf("\r\n*** tx_wait_echo was set to %d ***\r\n", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 4265 cmdLine.serial().printf("\r\n tx_wait_echo=%d", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 4266 }
whismanoid 10:04022a61b527 4267 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 4268 if (cmdLine.parse_int_dec("tx_char_delay_ms", g_auxSerialCom_tx_char_delay_ms))
whismanoid 10:04022a61b527 4269 {
whismanoid 10:04022a61b527 4270 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_char_delay_ms
whismanoid 10:04022a61b527 4271 //~ 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 4272 cmdLine.serial().printf("\r\n tx_char_delay_ms=%dms", g_auxSerialCom_tx_char_delay_ms);
whismanoid 10:04022a61b527 4273 }
whismanoid 10:04022a61b527 4274 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 4275 if (cmdLine.parse_int_dec("tx_line_delay_ms", g_auxSerialCom_tx_line_delay_ms))
whismanoid 10:04022a61b527 4276 {
whismanoid 10:04022a61b527 4277 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_line_delay_ms
whismanoid 10:04022a61b527 4278 //~ 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 4279 cmdLine.serial().printf("\r\n tx_line_delay_ms=%dms", g_auxSerialCom_tx_line_delay_ms);
whismanoid 10:04022a61b527 4280 }
whismanoid 10:04022a61b527 4281 #endif
whismanoid 10:04022a61b527 4282 // int g_auxSerialCom_message_ms = 0; //!< capture RX until response timeout?
whismanoid 10:04022a61b527 4283 if (cmdLine.parse_int_dec("message_ms", g_auxSerialCom_message_ms))
whismanoid 10:04022a61b527 4284 {
whismanoid 10:04022a61b527 4285 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 10:04022a61b527 4286 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 4287 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 4288 }
whismanoid 10:04022a61b527 4289 // int g_auxSerialCom_rx_idle_ms = 0; //!< capture RX until idle timeout?
whismanoid 10:04022a61b527 4290 if (cmdLine.parse_int_dec("rx_idle_ms", g_auxSerialCom_rx_idle_ms))
whismanoid 10:04022a61b527 4291 {
whismanoid 10:04022a61b527 4292 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_idle_ms
whismanoid 10:04022a61b527 4293 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_idle_ms was set to %d ***\r\n", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 4294 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 4295 }
whismanoid 10:04022a61b527 4296 // int g_auxSerialCom_rx_max_count = 0; //!< capture RX until max character count?
whismanoid 10:04022a61b527 4297 if (cmdLine.parse_int_dec("rx_max_count", g_auxSerialCom_rx_max_count))
whismanoid 10:04022a61b527 4298 {
whismanoid 10:04022a61b527 4299 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_max_count
whismanoid 10:04022a61b527 4300 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_max_count was set to %d ***\r\n", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 4301 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 4302 }
whismanoid 10:04022a61b527 4303 // int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text char?
whismanoid 10:04022a61b527 4304 if (cmdLine.parse_int_dec("rx_eot", g_auxSerialCom_rx_eot))
whismanoid 10:04022a61b527 4305 {
whismanoid 10:04022a61b527 4306 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_eot
whismanoid 10:04022a61b527 4307 //~ cmdLine_AUXserial.serial().printf("\r\n*** rx_eot was set to %d ***\r\n", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 4308 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 4309 }
whismanoid 10:04022a61b527 4310 }
whismanoid 10:04022a61b527 4311 // Command forwarding to AUX serial TX/RX cmdLine_AuxSerial #257 -- send outgoing_string
whismanoid 10:04022a61b527 4312 char* outgoing_string = (char*)cmdLine.str();
whismanoid 10:04022a61b527 4313 // > use key=value parsing
whismanoid 10:04022a61b527 4314 // >> suppress key=value parsing
whismanoid 10:04022a61b527 4315 if (suppress_parsing) {
whismanoid 10:04022a61b527 4316 cmdLine.serial().printf("\r\n suppress_parsing outgoing_string=\"%s\"", outgoing_string);
whismanoid 10:04022a61b527 4317 outgoing_string++; // skip the first '>'
whismanoid 10:04022a61b527 4318 outgoing_string++; // skip the second '>'
whismanoid 10:04022a61b527 4319 } else {
whismanoid 10:04022a61b527 4320 // TODO: after parsing, key=value pairs should be deleted, but outgoing_string=">xyzzy abc=def"
whismanoid 10:04022a61b527 4321 cmdLine.serial().printf("\r\n after parsing, outgoing_string=\"%s\"", outgoing_string);
whismanoid 10:04022a61b527 4322 outgoing_string++; // skip the first '>'
whismanoid 10:04022a61b527 4323 }
whismanoid 10:04022a61b527 4324 static char rx_string_buf[RX_STRING_BUF_SIZE];
whismanoid 10:04022a61b527 4325 unsigned int rx_string_length = 0;
whismanoid 10:04022a61b527 4326 cmdLine.serial().printf("\r\n >%s\r\n <", outgoing_string);
whismanoid 10:04022a61b527 4327 rx_string_buf[0] = '\0';
whismanoid 10:04022a61b527 4328 rx_string_length = 0;
whismanoid 10:04022a61b527 4329 //
whismanoid 10:04022a61b527 4330 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 4331 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 4332 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 4333 //
whismanoid 10:04022a61b527 4334 // int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 4335 // int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 4336 // int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 4337 // int g_auxSerialCom_rx_idle_ms = 2000; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 4338 // int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 4339 // int g_auxSerialCom_rx_eot = '\r'; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 4340 //~ cmdLine_AuxSerial.serial().printf("\r\n*** TODO forward %s ***\r\n", outgoing_string);
whismanoid 10:04022a61b527 4341 //
whismanoid 10:04022a61b527 4342 // TODO: send whole string or send character-by-character?
whismanoid 10:04022a61b527 4343 cmdLine_AuxSerial.serial().printf("%s", outgoing_string);
whismanoid 10:04022a61b527 4344 cmdLine_AuxSerial.serial().printf("\r\n");
whismanoid 10:04022a61b527 4345 g_auxSerialCom_Timer.start();
whismanoid 10:04022a61b527 4346 g_auxSerialCom_Timer_begin_message_ms = g_auxSerialCom_Timer.read_ms(); // start of message
whismanoid 10:04022a61b527 4347 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 4348 while (rx_string_length < (RX_STRING_BUF_SIZE-1)) {
whismanoid 10:04022a61b527 4349 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_message_ms) > g_auxSerialCom_message_ms) {
whismanoid 10:04022a61b527 4350 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 4351 break;
whismanoid 10:04022a61b527 4352 }
whismanoid 10:04022a61b527 4353 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_rx_idle_ms) > g_auxSerialCom_rx_idle_ms) {
whismanoid 10:04022a61b527 4354 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 4355 break;
whismanoid 10:04022a61b527 4356 }
whismanoid 10:04022a61b527 4357 if (rx_string_length >= g_auxSerialCom_rx_max_count) {
whismanoid 10:04022a61b527 4358 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 4359 break;
whismanoid 10:04022a61b527 4360 }
whismanoid 10:04022a61b527 4361 if (AuxSerial.readable()) {
whismanoid 10:04022a61b527 4362 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 4363 char ch = AuxSerial.getc();
whismanoid 10:04022a61b527 4364 rx_string_buf[rx_string_length++] = ch;
whismanoid 10:04022a61b527 4365 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 10:04022a61b527 4366 cmdLine.serial().printf("%s", &(rx_string_buf[rx_string_length-1]) ); // immediate character echo
whismanoid 10:04022a61b527 4367 if (g_auxSerialCom_rx_eot != aux_serial_cmd_forwarding_rx_eot_not_used) {
whismanoid 10:04022a61b527 4368 if (ch == g_auxSerialCom_rx_eot) {
whismanoid 10:04022a61b527 4369 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 4370 break;
whismanoid 10:04022a61b527 4371 }
whismanoid 10:04022a61b527 4372 }
whismanoid 10:04022a61b527 4373 }
whismanoid 10:04022a61b527 4374 } // end while (rx_string_length < (RX_STRING_BUF_SIZE-1))
whismanoid 10:04022a61b527 4375 #if 1
whismanoid 10:04022a61b527 4376 // print summary. is this needed? we already print aux rx as it is received.
whismanoid 10:04022a61b527 4377 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 10:04022a61b527 4378 cmdLine.serial().printf("\r\n >%s", outgoing_string);
whismanoid 10:04022a61b527 4379 cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 10:04022a61b527 4380 #endif
whismanoid 10:04022a61b527 4381 //
whismanoid 10:04022a61b527 4382 }
whismanoid 10:04022a61b527 4383 break; // case '>'
whismanoid 10:04022a61b527 4384 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 4385 //
whismanoid 4:d9b05924ad4c 4386 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 4387 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 4388 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 4389 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 4390 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible
whismanoid 9:45f98573eb6d 4391 case 'L': case 'l':
whismanoid 4:d9b05924ad4c 4392 {
whismanoid 4:d9b05924ad4c 4393 // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 4394 Datalogger_Trigger = trigger_Halt;
whismanoid 4:d9b05924ad4c 4395 switch (cmdLine[1])
whismanoid 4:d9b05924ad4c 4396 {
whismanoid 17:9397ea3ea7e9 4397 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 4398 case 'T': case 't':
whismanoid 17:9397ea3ea7e9 4399 {
whismanoid 17:9397ea3ea7e9 4400 // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 4401 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 4402 Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 4403 g_timer_interval_counter = 0;
whismanoid 17:9397ea3ea7e9 4404 // TODO: get g_timer_interval_msec from cmdLine
whismanoid 17:9397ea3ea7e9 4405 // g_timer_interval_msec = 500;
whismanoid 17:9397ea3ea7e9 4406 // g_timer_interval_count = 10;
whismanoid 17:9397ea3ea7e9 4407 if (cmdLine.parse_int_dec("count", g_timer_interval_count))
whismanoid 17:9397ea3ea7e9 4408 {
whismanoid 17:9397ea3ea7e9 4409 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 4410 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 4411 cmdLine.serial().printf("\r\n g_timer_interval_count=%d", g_timer_interval_count);
whismanoid 17:9397ea3ea7e9 4412 }
whismanoid 17:9397ea3ea7e9 4413 if (cmdLine.parse_int_dec("base", g_timer_interval_msec))
whismanoid 17:9397ea3ea7e9 4414 {
whismanoid 17:9397ea3ea7e9 4415 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 4416 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 4417 cmdLine.serial().printf("\r\n g_timer_interval_msec=%d", g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 4418 }
whismanoid 17:9397ea3ea7e9 4419 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 17:9397ea3ea7e9 4420 }
whismanoid 17:9397ea3ea7e9 4421 break;
whismanoid 17:9397ea3ea7e9 4422 // LIH3 -- Datalog when input high D3
whismanoid 17:9397ea3ea7e9 4423 // LIL6 -- Datalog when input low D6
whismanoid 17:9397ea3ea7e9 4424 case 'I': case 'i':
whismanoid 17:9397ea3ea7e9 4425 {
whismanoid 17:9397ea3ea7e9 4426 // TODO: switch cmdLine[2] configure High or Low, configure input pin
whismanoid 17:9397ea3ea7e9 4427 }
whismanoid 17:9397ea3ea7e9 4428 break;
whismanoid 17:9397ea3ea7e9 4429 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 27:b4ac095b83b3 4430 // L$ count=10 base=500ms addr=xxx data=xxx mask=xxx -- Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 4431 case '$':
whismanoid 17:9397ea3ea7e9 4432 {
whismanoid 17:9397ea3ea7e9 4433 // TODO: scan cmdLine for regAddr, dataMask, testValue
whismanoid 17:9397ea3ea7e9 4434 }
whismanoid 17:9397ea3ea7e9 4435 break;
whismanoid 17:9397ea3ea7e9 4436 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 4437 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4438 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4439 case '@':
whismanoid 17:9397ea3ea7e9 4440 {
whismanoid 17:9397ea3ea7e9 4441 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4442 int editRowIndex = 0;
whismanoid 17:9397ea3ea7e9 4443 int edit_action = (int)action_noop;
whismanoid 17:9397ea3ea7e9 4444 int edit_digitalOutPin = 0;
whismanoid 17:9397ea3ea7e9 4445 int edit_condition = (int)condition_always;
whismanoid 17:9397ea3ea7e9 4446 int edit_condition_channel = 0;
whismanoid 17:9397ea3ea7e9 4447 double edit_condition_threshold = 0;
whismanoid 17:9397ea3ea7e9 4448 //
whismanoid 17:9397ea3ea7e9 4449 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 4450 {
whismanoid 17:9397ea3ea7e9 4451 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 4452 }
whismanoid 17:9397ea3ea7e9 4453 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 4454 {
whismanoid 17:9397ea3ea7e9 4455 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 4456 }
whismanoid 17:9397ea3ea7e9 4457 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 4458 {
whismanoid 17:9397ea3ea7e9 4459 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 4460 }
whismanoid 17:9397ea3ea7e9 4461 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 4462 {
whismanoid 17:9397ea3ea7e9 4463 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 4464 }
whismanoid 17:9397ea3ea7e9 4465 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 4466 {
whismanoid 17:9397ea3ea7e9 4467 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 4468 }
whismanoid 17:9397ea3ea7e9 4469 //
whismanoid 17:9397ea3ea7e9 4470 // Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4471 switch (cmdLine[2]) // L@... -- Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4472 {
whismanoid 17:9397ea3ea7e9 4473 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 4474 case '0': case '1': case '2': case '3': case '4':
whismanoid 17:9397ea3ea7e9 4475 case '5': case '6': case '7': case '8': case '9':
whismanoid 17:9397ea3ea7e9 4476 // edit row data
whismanoid 17:9397ea3ea7e9 4477 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 4478 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 4479 // get row number to edit from cmdLine[2]
whismanoid 17:9397ea3ea7e9 4480 editRowIndex = atoi(cmdLine.str()+2);
whismanoid 17:9397ea3ea7e9 4481 // default is no change
whismanoid 17:9397ea3ea7e9 4482 edit_action = Datalogger_action_table[editRowIndex].action;
whismanoid 17:9397ea3ea7e9 4483 edit_digitalOutPin = Datalogger_action_table[editRowIndex].digitalOutPin;
whismanoid 17:9397ea3ea7e9 4484 edit_condition = Datalogger_action_table[editRowIndex].condition;
whismanoid 17:9397ea3ea7e9 4485 edit_condition_channel = Datalogger_action_table[editRowIndex].condition_channel;
whismanoid 17:9397ea3ea7e9 4486 edit_condition_threshold = Datalogger_action_table[editRowIndex].condition_threshold;
whismanoid 17:9397ea3ea7e9 4487 // scan cmdLine[2] for key=value of what fields to change
whismanoid 17:9397ea3ea7e9 4488 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 4489 {
whismanoid 17:9397ea3ea7e9 4490 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 4491 }
whismanoid 17:9397ea3ea7e9 4492 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 4493 {
whismanoid 17:9397ea3ea7e9 4494 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 4495 }
whismanoid 17:9397ea3ea7e9 4496 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 4497 {
whismanoid 17:9397ea3ea7e9 4498 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 4499 }
whismanoid 17:9397ea3ea7e9 4500 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 4501 {
whismanoid 17:9397ea3ea7e9 4502 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 4503 }
whismanoid 17:9397ea3ea7e9 4504 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 4505 {
whismanoid 17:9397ea3ea7e9 4506 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 4507 }
whismanoid 17:9397ea3ea7e9 4508 // update row
whismanoid 17:9397ea3ea7e9 4509 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 4510 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 4511 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 4512 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 4513 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 4514 }
whismanoid 17:9397ea3ea7e9 4515 break;
whismanoid 17:9397ea3ea7e9 4516 case '+':
whismanoid 17:9397ea3ea7e9 4517 // add a new row at end of table
whismanoid 17:9397ea3ea7e9 4518 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 4519 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 4520 editRowIndex = Datalogger_action_table_row_count;
whismanoid 17:9397ea3ea7e9 4521 Datalogger_action_table_row_count++;
whismanoid 17:9397ea3ea7e9 4522 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 4523 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 4524 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 4525 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 4526 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 4527 }
whismanoid 17:9397ea3ea7e9 4528 break;
whismanoid 17:9397ea3ea7e9 4529 case '-':
whismanoid 17:9397ea3ea7e9 4530 // delete row from table
whismanoid 17:9397ea3ea7e9 4531 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 4532 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 4533 if ((cmdLine[3] == '~') && (cmdLine[4] == '~') && (cmdLine[5] == '~')) {
whismanoid 17:9397ea3ea7e9 4534 // L@-~~~ -- delete all rows from table
whismanoid 17:9397ea3ea7e9 4535 Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 4536 break;
whismanoid 17:9397ea3ea7e9 4537 }
whismanoid 17:9397ea3ea7e9 4538 editRowIndex = atoi(cmdLine.str()+3);
whismanoid 17:9397ea3ea7e9 4539 // delete row editRowIndex from Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4540 for (int i = editRowIndex; i < (Datalogger_action_table_row_count-1); i++)
whismanoid 17:9397ea3ea7e9 4541 {
whismanoid 17:9397ea3ea7e9 4542 // copy row i+1 into row i
whismanoid 17:9397ea3ea7e9 4543 Datalogger_action_table[i].action = Datalogger_action_table[i+1].action;
whismanoid 17:9397ea3ea7e9 4544 Datalogger_action_table[i].digitalOutPin = Datalogger_action_table[i+1].digitalOutPin;
whismanoid 17:9397ea3ea7e9 4545 Datalogger_action_table[i].condition = Datalogger_action_table[i+1].condition;
whismanoid 17:9397ea3ea7e9 4546 Datalogger_action_table[i].condition_channel = Datalogger_action_table[i+1].condition_channel;
whismanoid 17:9397ea3ea7e9 4547 Datalogger_action_table[i].condition_threshold = Datalogger_action_table[i+1].condition_threshold;
whismanoid 17:9397ea3ea7e9 4548 }
whismanoid 17:9397ea3ea7e9 4549 Datalogger_action_table_row_count--;
whismanoid 17:9397ea3ea7e9 4550 }
whismanoid 17:9397ea3ea7e9 4551 break;
whismanoid 17:9397ea3ea7e9 4552 case '!':
whismanoid 17:9397ea3ea7e9 4553 // pause the entire action table
whismanoid 17:9397ea3ea7e9 4554 Datalogger_action_table_enabled = false;
whismanoid 17:9397ea3ea7e9 4555 break;
whismanoid 17:9397ea3ea7e9 4556 case '@':
whismanoid 17:9397ea3ea7e9 4557 // enable the entire action table
whismanoid 17:9397ea3ea7e9 4558 Datalogger_action_table_enabled = true;
whismanoid 17:9397ea3ea7e9 4559 break;
whismanoid 17:9397ea3ea7e9 4560 }
whismanoid 17:9397ea3ea7e9 4561 //
whismanoid 17:9397ea3ea7e9 4562 // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4563 if (Datalogger_action_table_enabled) {
whismanoid 17:9397ea3ea7e9 4564 cmdLine.serial().printf("Action table enabled; L@! to pause");
whismanoid 17:9397ea3ea7e9 4565 }
whismanoid 17:9397ea3ea7e9 4566 else {
whismanoid 17:9397ea3ea7e9 4567 cmdLine.serial().printf("Action table paused; L@@ to enable");
whismanoid 17:9397ea3ea7e9 4568 }
whismanoid 17:9397ea3ea7e9 4569 //~ cmdLine.serial().printf("\r\n Datalogger_action_table_row_count=%d", Datalogger_action_table_row_count);
whismanoid 17:9397ea3ea7e9 4570 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 4571 {
whismanoid 17:9397ea3ea7e9 4572 cmdLine.serial().printf("\r\n L@%d", i);
whismanoid 17:9397ea3ea7e9 4573 cmdLine.serial().printf(" act=%d", Datalogger_action_table[i].action);
whismanoid 17:9397ea3ea7e9 4574 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 4575 {
whismanoid 17:9397ea3ea7e9 4576 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 4577 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 4578 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 4579 break;
whismanoid 29:6a9edb6e973b 4580 case action_button: // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 4581 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 29:6a9edb6e973b 4582 break;
whismanoid 17:9397ea3ea7e9 4583 default:
whismanoid 17:9397ea3ea7e9 4584 case action_noop:
whismanoid 17:9397ea3ea7e9 4585 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 4586 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 4587 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 4588 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 4589 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 4590 break;
whismanoid 17:9397ea3ea7e9 4591 }
whismanoid 17:9397ea3ea7e9 4592 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 4593 {
whismanoid 17:9397ea3ea7e9 4594 case condition_always:
whismanoid 17:9397ea3ea7e9 4595 break;
whismanoid 17:9397ea3ea7e9 4596 default:
whismanoid 17:9397ea3ea7e9 4597 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 4598 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 4599 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 4600 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 4601 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 4602 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 4603 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 4604 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 4605 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 4606 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 4607 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 4608 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 4609 cmdLine.serial().printf(" if=%d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 4610 cmdLine.serial().printf(" ch=%d", Datalogger_action_table[i].condition_channel);
whismanoid 17:9397ea3ea7e9 4611 cmdLine.serial().printf(" x=%f", Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4612 break;
whismanoid 17:9397ea3ea7e9 4613 }
whismanoid 17:9397ea3ea7e9 4614 cmdLine.serial().printf(" -- ");
whismanoid 17:9397ea3ea7e9 4615 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 4616 {
whismanoid 17:9397ea3ea7e9 4617 case action_noop:
whismanoid 17:9397ea3ea7e9 4618 cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 4619 break;
whismanoid 17:9397ea3ea7e9 4620 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 4621 cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 4622 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 4623 break;
whismanoid 17:9397ea3ea7e9 4624 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 4625 cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 4626 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 4627 break;
whismanoid 29:6a9edb6e973b 4628 case action_button: // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 4629 cmdLine.serial().printf("button");
whismanoid 29:6a9edb6e973b 4630 cmdLine.serial().printf(" %d", Datalogger_action_table[i].digitalOutPin);
whismanoid 29:6a9edb6e973b 4631 break;
whismanoid 17:9397ea3ea7e9 4632 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 4633 cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 4634 break;
whismanoid 17:9397ea3ea7e9 4635 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 4636 cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 4637 break;
whismanoid 17:9397ea3ea7e9 4638 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 4639 cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 4640 // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 4641 cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 4642 break;
whismanoid 17:9397ea3ea7e9 4643 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 4644 cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 4645 // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 4646 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 4647 break;
whismanoid 17:9397ea3ea7e9 4648 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 4649 cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 4650 // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 4651 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 4652 break;
whismanoid 17:9397ea3ea7e9 4653 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 4654 //~ cmdLine.serial().printf(" condition %d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 4655 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 4656 {
whismanoid 17:9397ea3ea7e9 4657 case condition_always:
whismanoid 17:9397ea3ea7e9 4658 cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 4659 break;
whismanoid 17:9397ea3ea7e9 4660 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 4661 cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4662 break;
whismanoid 17:9397ea3ea7e9 4663 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 4664 cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4665 break;
whismanoid 17:9397ea3ea7e9 4666 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 4667 cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4668 break;
whismanoid 17:9397ea3ea7e9 4669 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 4670 cmdLine.serial().printf(" if A%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4671 break;
whismanoid 17:9397ea3ea7e9 4672 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 4673 cmdLine.serial().printf(" if A%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4674 break;
whismanoid 17:9397ea3ea7e9 4675 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 4676 cmdLine.serial().printf(" if A%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4677 break;
whismanoid 17:9397ea3ea7e9 4678 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 4679 cmdLine.serial().printf(" if AIN%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4680 break;
whismanoid 17:9397ea3ea7e9 4681 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 4682 cmdLine.serial().printf(" if AIN%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4683 break;
whismanoid 17:9397ea3ea7e9 4684 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 4685 cmdLine.serial().printf(" if AIN%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4686 break;
whismanoid 17:9397ea3ea7e9 4687 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 4688 cmdLine.serial().printf(" if AIN%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4689 break;
whismanoid 17:9397ea3ea7e9 4690 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 4691 cmdLine.serial().printf(" if AIN%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4692 break;
whismanoid 17:9397ea3ea7e9 4693 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 4694 cmdLine.serial().printf(" if AIN%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 4695 break;
whismanoid 17:9397ea3ea7e9 4696 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 4697 } // for ...Datalogger_action_table_row_count // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4698 cmdLine.serial().printf("\r\nAction table editing commands:");
whismanoid 17:9397ea3ea7e9 4699 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 4700 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 4701 cmdLine.serial().printf("\r\n L@+ act=4 if=1 ch=5 x=12345 -- add new entry at end of table");
whismanoid 17:9397ea3ea7e9 4702 }
whismanoid 17:9397ea3ea7e9 4703 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 4704 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 4705 cmdLine.serial().printf("\r\n L@%d act=4 if=1 ch=5 x=12345 -- edit row %d",
whismanoid 17:9397ea3ea7e9 4706 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 4707 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 4708 cmdLine.serial().printf("\r\n L@-%d -- delete row %d",
whismanoid 17:9397ea3ea7e9 4709 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 4710 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 4711 cmdLine.serial().printf("\r\n L@-~~~ -- delete all rows");
whismanoid 17:9397ea3ea7e9 4712 cmdLine.serial().printf("\r\n L@! -- pause entire action table");
whismanoid 17:9397ea3ea7e9 4713 cmdLine.serial().printf("\r\n L@@ -- enable action table");
whismanoid 17:9397ea3ea7e9 4714 }
whismanoid 17:9397ea3ea7e9 4715 //
whismanoid 17:9397ea3ea7e9 4716 } // case L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 4717 break;
whismanoid 17:9397ea3ea7e9 4718 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 4719 // LR -- Datalog free run as fast as possible
whismanoid 4:d9b05924ad4c 4720 case 'R': case 'r':
whismanoid 4:d9b05924ad4c 4721 // free run as fast as possible
whismanoid 8:dffee7509bfb 4722 Datalogger_Trigger = trigger_FreeRun;
whismanoid 8:dffee7509bfb 4723 Datalogger_Need_PrintHeader = true;
whismanoid 4:d9b05924ad4c 4724 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 9:45f98573eb6d 4725 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4726 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 4727 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 4728 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 4729 case 'S': case 's':
whismanoid 9:45f98573eb6d 4730 {
whismanoid 9:45f98573eb6d 4731 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 4732 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 4733 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 4734 )
whismanoid 9:45f98573eb6d 4735 {
whismanoid 9:45f98573eb6d 4736 // it's me
whismanoid 9:45f98573eb6d 4737 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 4738 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 4739 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 4740 {
whismanoid 9:45f98573eb6d 4741 case 'D': case 'd':
whismanoid 9:45f98573eb6d 4742 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Disable;
whismanoid 9:45f98573eb6d 4743 break;
whismanoid 9:45f98573eb6d 4744 case 'L': case 'l':
whismanoid 9:45f98573eb6d 4745 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 4746 break;
whismanoid 9:45f98573eb6d 4747 case 'V': case 'v':
whismanoid 9:45f98573eb6d 4748 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 4749 break;
whismanoid 9:45f98573eb6d 4750 //
whismanoid 9:45f98573eb6d 4751 //
whismanoid 9:45f98573eb6d 4752 // TODO: MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 4753 case 'C': case 'c':
whismanoid 9:45f98573eb6d 4754 {
whismanoid 9:45f98573eb6d 4755 uint8_t hexValue = 0;
whismanoid 9:45f98573eb6d 4756 hexValue = hexValueOfChar(cmdLine[5]) * 0x10 + hexValueOfChar(cmdLine[6]);
whismanoid 9:45f98573eb6d 4757 switch (cmdLine[4])
whismanoid 9:45f98573eb6d 4758 {
whismanoid 9:45f98573eb6d 4759 //
whismanoid 9:45f98573eb6d 4760 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 4761 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34"));
whismanoid 9:45f98573eb6d 4762 case 'F': case 'f':
whismanoid 9:45f98573eb6d 4763 SPI_AIN_Cfg_v_filter_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 4764 break;
whismanoid 9:45f98573eb6d 4765 //
whismanoid 9:45f98573eb6d 4766 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 4767 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 4768 case 'C': case 'c':
whismanoid 9:45f98573eb6d 4769 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 4770 break;
whismanoid 9:45f98573eb6d 4771 //
whismanoid 9:45f98573eb6d 4772 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 4773 // cmdLine.serial().print(F("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00"));
whismanoid 9:45f98573eb6d 4774 case 'P': case 'p':
whismanoid 9:45f98573eb6d 4775 SPI_AIN_Cfg_v_pga_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 4776 break;
whismanoid 9:45f98573eb6d 4777 //
whismanoid 9:45f98573eb6d 4778 // cmdLine.serial().print(F("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar"));
whismanoid 9:45f98573eb6d 4779 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 4780 case 'U': case 'u':
whismanoid 9:45f98573eb6d 4781 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] | 0x40;
whismanoid 9:45f98573eb6d 4782 break;
whismanoid 9:45f98573eb6d 4783 //
whismanoid 9:45f98573eb6d 4784 // cmdLine.serial().print(F("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar"));
whismanoid 9:45f98573eb6d 4785 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 4786 case 'B': case 'b':
whismanoid 9:45f98573eb6d 4787 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] &~ 0x40;
whismanoid 9:45f98573eb6d 4788 break;
whismanoid 9:45f98573eb6d 4789 }
whismanoid 9:45f98573eb6d 4790 break;
whismanoid 9:45f98573eb6d 4791 }
whismanoid 9:45f98573eb6d 4792 //
whismanoid 9:45f98573eb6d 4793 //
whismanoid 9:45f98573eb6d 4794 }
whismanoid 9:45f98573eb6d 4795 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 4796 } // end for channel_index
whismanoid 9:45f98573eb6d 4797 Datalogger_PrintHeader();
whismanoid 9:45f98573eb6d 4798 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4799 }
whismanoid 9:45f98573eb6d 4800 break;
whismanoid 9:45f98573eb6d 4801 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 4802 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 4803 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 4804 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 4805 // verb: D for disable, V for Voltage, L for LSB
whismanoid 8:dffee7509bfb 4806 case 'A': case 'a':
whismanoid 9:45f98573eb6d 4807 {
whismanoid 9:45f98573eb6d 4808 // all-channel: loop through all valid channel_index, test cmdLine[2] 'is it me'?
whismanoid 9:45f98573eb6d 4809 // for channel_index loop through 0..NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 9:45f98573eb6d 4810 // if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 4811 // || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 4812 // ) {
whismanoid 9:45f98573eb6d 4813 // // it's me
whismanoid 9:45f98573eb6d 4814 // // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 4815 // // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 4816 // } end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 4817 // } end for channel_index
whismanoid 9:45f98573eb6d 4818 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 4819 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 4820 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 4821 )
whismanoid 9:45f98573eb6d 4822 {
whismanoid 9:45f98573eb6d 4823 // it's me
whismanoid 9:45f98573eb6d 4824 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 4825 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 4826 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 4827 {
whismanoid 9:45f98573eb6d 4828 case 'D': case 'd':
whismanoid 9:45f98573eb6d 4829 Platform_Enable_ch[channel_index] = Platform_AIN_Disable;
whismanoid 9:45f98573eb6d 4830 break;
whismanoid 9:45f98573eb6d 4831 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4832 case 'L': case 'l':
whismanoid 9:45f98573eb6d 4833 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 4834 break;
whismanoid 9:45f98573eb6d 4835 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 4836 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 4837 case 'V': case 'v':
whismanoid 9:45f98573eb6d 4838 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 4839 break;
whismanoid 9:45f98573eb6d 4840 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 4841 }
whismanoid 9:45f98573eb6d 4842 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 4843 } // end for channel_index
whismanoid 10:04022a61b527 4844 // Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 4845 if (Datalogger_enable_serial) {
whismanoid 9:45f98573eb6d 4846 Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 4847 }
whismanoid 9:45f98573eb6d 4848 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4849 if (Datalogger_enable_AUXserial) {
whismanoid 9:45f98573eb6d 4850 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 9:45f98573eb6d 4851 }
whismanoid 9:45f98573eb6d 4852 # endif // HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4853 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4854 if (Datalogger_enable_DAPLINKserial) {
whismanoid 9:45f98573eb6d 4855 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 9:45f98573eb6d 4856 }
whismanoid 9:45f98573eb6d 4857 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4858 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4859 }
whismanoid 8:dffee7509bfb 4860 break;
whismanoid 9:45f98573eb6d 4861 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 4862 case '>':
whismanoid 9:45f98573eb6d 4863 // L>A -- Datalogger_enable_AUXserial
whismanoid 9:45f98573eb6d 4864 // L>D -- Datalogger_enable_DAPLINKserial
whismanoid 9:45f98573eb6d 4865 // L>S -- Datalogger_enable_serial
whismanoid 9:45f98573eb6d 4866 switch (cmdLine[2])
whismanoid 9:45f98573eb6d 4867 {
whismanoid 9:45f98573eb6d 4868 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 4869 case 'A': case 'a':
whismanoid 9:45f98573eb6d 4870 Datalogger_enable_AUXserial = !Datalogger_enable_AUXserial;
whismanoid 9:45f98573eb6d 4871 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4872 break;
whismanoid 8:dffee7509bfb 4873 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 4874 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4875 case 'D': case 'd':
whismanoid 9:45f98573eb6d 4876 Datalogger_enable_DAPLINKserial = !Datalogger_enable_DAPLINKserial;
whismanoid 9:45f98573eb6d 4877 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4878 break;
whismanoid 8:dffee7509bfb 4879 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 4880 case 'S': case 's':
whismanoid 9:45f98573eb6d 4881 Datalogger_enable_serial = !Datalogger_enable_serial;
whismanoid 9:45f98573eb6d 4882 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 4883 break;
whismanoid 9:45f98573eb6d 4884 }
whismanoid 9:45f98573eb6d 4885 break; // case '>' L>S serial enable toggle
whismanoid 28:a9a3a9db592b 4886 default:
whismanoid 28:a9a3a9db592b 4887 // TODO: L -- detailed help for datalog commands
whismanoid 28:a9a3a9db592b 4888 //
whismanoid 28:a9a3a9db592b 4889 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 28:a9a3a9db592b 4890 #if 1 // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 4891 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 28:a9a3a9db592b 4892 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 28:a9a3a9db592b 4893 //
whismanoid 28:a9a3a9db592b 4894 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 28:a9a3a9db592b 4895 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 28:a9a3a9db592b 4896 cmdLine.serial().printf("\r\n LT count=%d base=%dms -- Datalog timer", g_timer_interval_count, g_timer_interval_msec); // trigger_Timer
whismanoid 28:a9a3a9db592b 4897 //
whismanoid 28:a9a3a9db592b 4898 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 28:a9a3a9db592b 4899 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 4900 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 4901 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 4902 //
whismanoid 28:a9a3a9db592b 4903 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 4904 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 28:a9a3a9db592b 4905 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 4906 cmdLine.serial().printf("\r\n L$ count=10 base=500ms addr=xxx data=xxx mask=xxx -- Datalog when SPI read of address matches mask"); // trigger_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 4907 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 4908 //
whismanoid 28:a9a3a9db592b 4909 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 4910 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 28:a9a3a9db592b 4911 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 4912 //
whismanoid 28:a9a3a9db592b 4913 //
whismanoid 28:a9a3a9db592b 4914 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 28:a9a3a9db592b 4915 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 28:a9a3a9db592b 4916 // channel ID: 0,1,2,... or - for all channels
whismanoid 28:a9a3a9db592b 4917 // verb: D for disable, V for Voltage, L for LSB
whismanoid 28:a9a3a9db592b 4918 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 28:a9a3a9db592b 4919 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 28:a9a3a9db592b 4920 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 28:a9a3a9db592b 4921 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 28:a9a3a9db592b 4922 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 28:a9a3a9db592b 4923 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 28:a9a3a9db592b 4924 //
whismanoid 28:a9a3a9db592b 4925 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 28:a9a3a9db592b 4926 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 28:a9a3a9db592b 4927 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 28:a9a3a9db592b 4928 //
whismanoid 28:a9a3a9db592b 4929 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 4930 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 28:a9a3a9db592b 4931 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 28:a9a3a9db592b 4932 //
whismanoid 28:a9a3a9db592b 4933 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 4934 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 28:a9a3a9db592b 4935 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 4936 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 28:a9a3a9db592b 4937 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 28:a9a3a9db592b 4938 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 28:a9a3a9db592b 4939 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 28:a9a3a9db592b 4940 //
whismanoid 28:a9a3a9db592b 4941 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 28:a9a3a9db592b 4942 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 28:a9a3a9db592b 4943 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 28:a9a3a9db592b 4944 //
whismanoid 28:a9a3a9db592b 4945 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 28:a9a3a9db592b 4946 //
whismanoid 28:a9a3a9db592b 4947 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 28:a9a3a9db592b 4948 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 28:a9a3a9db592b 4949 // channel ID: 0,1,2,... or - for all channels
whismanoid 28:a9a3a9db592b 4950 // verb: D for disable, V for Voltage, L for LSB
whismanoid 28:a9a3a9db592b 4951 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 28:a9a3a9db592b 4952 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 4953 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 28:a9a3a9db592b 4954 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 4955 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 4956 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 28:a9a3a9db592b 4957 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 4958 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 28:a9a3a9db592b 4959 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 4960 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 28:a9a3a9db592b 4961 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 4962 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 4963 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 28:a9a3a9db592b 4964 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 4965 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 28:a9a3a9db592b 4966 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 28:a9a3a9db592b 4967 # if HAS_AUX_SERIAL
whismanoid 28:a9a3a9db592b 4968 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 4969 # endif // HAS_AUX_SERIAL
whismanoid 28:a9a3a9db592b 4970 # if HAS_DAPLINK_SERIAL
whismanoid 28:a9a3a9db592b 4971 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 4972 # endif // HAS_DAPLINK_SERIAL
whismanoid 28:a9a3a9db592b 4973 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 4974 //
whismanoid 28:a9a3a9db592b 4975 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 4976 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 4977 break;
whismanoid 17:9397ea3ea7e9 4978 } // switch (cmdLine[1]) inside case 'L'
whismanoid 4:d9b05924ad4c 4979 }
whismanoid 4:d9b05924ad4c 4980 break; // case 'L'
whismanoid 4:d9b05924ad4c 4981 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 4982 //
whismanoid 4:d9b05924ad4c 4983 // Application-specific commands here
whismanoid 4:d9b05924ad4c 4984 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 4985 //
whismanoid 4:d9b05924ad4c 4986 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4987 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4988
whismanoid 4:d9b05924ad4c 4989 //
whismanoid 4:d9b05924ad4c 4990 // TODO1: add new commands here
whismanoid 4:d9b05924ad4c 4991 //
whismanoid 4:d9b05924ad4c 4992 default:
whismanoid 4:d9b05924ad4c 4993 #if APPLICATION_MAX5715 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4994 extern bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5715.cpp
whismanoid 4:d9b05924ad4c 4995 if (!MAX5715_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4996 #elif APPLICATION_MAX11131 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 4997 extern bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11131.cpp
whismanoid 4:d9b05924ad4c 4998 if (!MAX11131_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 4999 #elif APPLICATION_MAX5171 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5000 extern bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5171.cpp
whismanoid 4:d9b05924ad4c 5001 if (!MAX5171_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5002 #elif APPLICATION_MAX11410 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5003 extern bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp
whismanoid 4:d9b05924ad4c 5004 if (!MAX11410_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5005 #elif APPLICATION_MAX12345 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5006 extern bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX12345.cpp
whismanoid 4:d9b05924ad4c 5007 if (!MAX12345_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5008 #else
whismanoid 4:d9b05924ad4c 5009 if (0) // not_handled_by_device_submenu
whismanoid 4:d9b05924ad4c 5010 #endif
whismanoid 4:d9b05924ad4c 5011 {
whismanoid 4:d9b05924ad4c 5012 cmdLine.serial().printf("\r\n unknown command ");
whismanoid 4:d9b05924ad4c 5013 //~ cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 5014 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 5015 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n",
whismanoid 4:d9b05924ad4c 5016 cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 5017 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5018 }
whismanoid 4:d9b05924ad4c 5019 } // switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 5020 //
whismanoid 4:d9b05924ad4c 5021 // print command prompt
whismanoid 8:dffee7509bfb 5022 // print_command_prompt();
whismanoid 8:dffee7509bfb 5023 cmdLine.serial().printf("\r\n> ");
whismanoid 4:d9b05924ad4c 5024 }
whismanoid 4:d9b05924ad4c 5025 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 5026
whismanoid 4:d9b05924ad4c 5027 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 5028 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 5029 void Datalogger_PrintHeader(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 5030 {
whismanoid 4:d9b05924ad4c 5031 // column header banner for csv data columns
whismanoid 4:d9b05924ad4c 5032 int field_index = 0;
whismanoid 4:d9b05924ad4c 5033 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 5034 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 5035 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 4:d9b05924ad4c 5036 continue;
whismanoid 4:d9b05924ad4c 5037 }
whismanoid 4:d9b05924ad4c 5038 // comma between fields
whismanoid 4:d9b05924ad4c 5039 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 5040 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 5041 }
whismanoid 10:04022a61b527 5042 field_index++;
whismanoid 4:d9b05924ad4c 5043 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 5044 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 5045 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 4:d9b05924ad4c 5046 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 4:d9b05924ad4c 5047 cmdLine.serial().printf("\"AIN%d-%d_BIP", channel_index, channel_index+1);
whismanoid 4:d9b05924ad4c 5048 }
whismanoid 4:d9b05924ad4c 5049 else {
whismanoid 4:d9b05924ad4c 5050 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 5051 }
whismanoid 4:d9b05924ad4c 5052 #else // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 5053 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 5054 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 5055 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_LSB) {
whismanoid 4:d9b05924ad4c 5056 // _LSB column header suffix
whismanoid 13:184a08909405 5057 cmdLine.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 5058 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5059 cmdLine_DAPLINKserial.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 5060 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5061 }
whismanoid 10:04022a61b527 5062 else if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_Volt) {
whismanoid 4:d9b05924ad4c 5063 // _V column header suffix
whismanoid 13:184a08909405 5064 cmdLine.serial().printf("_V");
whismanoid 4:d9b05924ad4c 5065 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5066 cmdLine_DAPLINKserial.serial().printf("_V");
whismanoid 4:d9b05924ad4c 5067 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5068 }
whismanoid 13:184a08909405 5069 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5070 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5071 if (SPI_AIN_customChannelHeader_ch[channel_index] && SPI_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 5072 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 5073 cmdLine.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5074 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5075 cmdLine_DAPLINKserial.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5076 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5077 } else {
whismanoid 13:184a08909405 5078 // no custom channel name for this channel
whismanoid 13:184a08909405 5079 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 5080 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5081 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 5082 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5083 }
whismanoid 13:184a08909405 5084 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 5085 // close quote
whismanoid 13:184a08909405 5086 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 5087 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5088 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 5089 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5090 }
whismanoid 4:d9b05924ad4c 5091
whismanoid 4:d9b05924ad4c 5092 #if VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 5093 // PART_ID field: Device ID Validation
whismanoid 4:d9b05924ad4c 5094 cmdLine.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 5095 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5096 cmdLine_DAPLINKserial.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 5097 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5098 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 5099 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 5100 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 5101 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 5102 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 5103 continue;
whismanoid 9:45f98573eb6d 5104 }
whismanoid 4:d9b05924ad4c 5105 // comma between fields
whismanoid 4:d9b05924ad4c 5106 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 5107 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 5108 }
whismanoid 9:45f98573eb6d 5109 field_index++;
whismanoid 4:d9b05924ad4c 5110 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 5111 cmdLine.serial().printf("\"A%d", channel_index);
whismanoid 9:45f98573eb6d 5112 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 9:45f98573eb6d 5113 // _LSB column header suffix
whismanoid 13:184a08909405 5114 cmdLine.serial().printf("_LSB");
whismanoid 9:45f98573eb6d 5115 }
whismanoid 9:45f98573eb6d 5116 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 5117 // _V column header suffix
whismanoid 13:184a08909405 5118 cmdLine.serial().printf("_V");
whismanoid 9:45f98573eb6d 5119 }
whismanoid 13:184a08909405 5120 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5121 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5122 if (Platform_AIN_customChannelHeader_ch[channel_index] && Platform_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 5123 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 5124 cmdLine.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5125 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5126 cmdLine_DAPLINKserial.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5127 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5128 } else {
whismanoid 13:184a08909405 5129 // no custom channel name for this channel
whismanoid 13:184a08909405 5130 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 5131 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5132 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 5133 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5134 }
whismanoid 13:184a08909405 5135 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 5136 // close quote
whismanoid 13:184a08909405 5137 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 5138 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5139 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 5140 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5141 }
whismanoid 4:d9b05924ad4c 5142 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 4:d9b05924ad4c 5143 // end of column header line
whismanoid 4:d9b05924ad4c 5144 cmdLine.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 5145 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5146 cmdLine_DAPLINKserial.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 5147 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5148 } // void Datalogger_PrintHeader()
whismanoid 4:d9b05924ad4c 5149
whismanoid 5:aaf8b5f5fda1 5150 //--------------------------------------------------
whismanoid 5:aaf8b5f5fda1 5151 void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 5152 {
whismanoid 5:aaf8b5f5fda1 5153 // CODE GENERATOR: example code: has no member function ScanStandardExternalClock
whismanoid 5:aaf8b5f5fda1 5154 // CODE GENERATOR: example code: has no member function ReadAINcode
whismanoid 5:aaf8b5f5fda1 5155 // CODE GENERATOR: example code: member function Read_All_Voltages
whismanoid 5:aaf8b5f5fda1 5156 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 5157 // Measure ADC channels in sequence from AIN0 to channelNumber_0_9.
whismanoid 5:aaf8b5f5fda1 5158 // @param[in] g_MAX11410_device.channelNumber_0_15: AIN Channel Number
whismanoid 5:aaf8b5f5fda1 5159 // @param[in] g_MAX11410_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 5:aaf8b5f5fda1 5160 // @param[in] g_MAX11410_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 10:04022a61b527 5161 //~ int channelId_0_9 = NUM_DUT_ANALOG_IN_CHANNELS-1+1;
whismanoid 5:aaf8b5f5fda1 5162 //g_MAX11410_device.channelNumber_0_15 = channelId_0_9;
whismanoid 5:aaf8b5f5fda1 5163 //g_MAX11410_device.PowerManagement_0_2 = 0;
whismanoid 5:aaf8b5f5fda1 5164 //g_MAX11410_device.chan_id_0_1 = 1;
whismanoid 5:aaf8b5f5fda1 5165 //----------------------------------------
whismanoid 5:aaf8b5f5fda1 5166 // scan AIN0..AIN9
whismanoid 5:aaf8b5f5fda1 5167 //
whismanoid 10:04022a61b527 5168 #if 1
whismanoid 10:04022a61b527 5169 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 5170 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 5171 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 5172 //
whismanoid 10:04022a61b527 5173 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 5174 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc3); // GP1 = 0
whismanoid 10:04022a61b527 5175 //
whismanoid 10:04022a61b527 5176 int field_index = 0;
whismanoid 10:04022a61b527 5177 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 5178 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 10:04022a61b527 5179 continue;
whismanoid 10:04022a61b527 5180 }
whismanoid 10:04022a61b527 5181 field_index++;
whismanoid 10:04022a61b527 5182 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[channel_index];
whismanoid 10:04022a61b527 5183 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[channel_index];
whismanoid 10:04022a61b527 5184 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[channel_index];
whismanoid 10:04022a61b527 5185 //
whismanoid 10:04022a61b527 5186 // WIP SampleRate_of_FILTER_CONV_START() MAX11410EMC-FW slow ODR 10Sps #262
whismanoid 10:04022a61b527 5187 // adjust the MAX11410.loop_limit value if the sample rate is set to a value slower than 20sps
whismanoid 10:04022a61b527 5188 // SampleRate_of_FILTER_CONV_START(uint8_t FILTER_RegValue, uint8_t CONV_START_RegValue)
whismanoid 10:04022a61b527 5189 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 5190 if (SampleRate < 20.0) {
whismanoid 10:04022a61b527 5191 g_MAX11410_device.loop_limit = 32767; // TODO: is this timeout long enough for the slow output data rates?
whismanoid 10:04022a61b527 5192 }
whismanoid 10:04022a61b527 5193 //
whismanoid 10:04022a61b527 5194 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 5195 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc3); // GP0 = 0
whismanoid 10:04022a61b527 5196 //
whismanoid 10:04022a61b527 5197 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 5198 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 10:04022a61b527 5199 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 10:04022a61b527 5200 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 5201 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = (MAX11410::MAX11410_AINN_SEL_enum_t)(channel_index^1);
whismanoid 10:04022a61b527 5202 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 5203 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 5204 }
whismanoid 10:04022a61b527 5205 else {
whismanoid 10:04022a61b527 5206 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 5207 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = MAX11410::AINN_SEL_1010_GND;
whismanoid 10:04022a61b527 5208 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 5209 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 5210 }
whismanoid 10:04022a61b527 5211 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 5212 //
whismanoid 10:04022a61b527 5213 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 5214 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc4); // GP0 = 1
whismanoid 10:04022a61b527 5215 //
whismanoid 10:04022a61b527 5216 }
whismanoid 10:04022a61b527 5217 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 5218 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc4); // GP1 = 1
whismanoid 10:04022a61b527 5219 #else
whismanoid 5:aaf8b5f5fda1 5220 g_MAX11410_device.Read_All_Voltages();
whismanoid 10:04022a61b527 5221 #endif
whismanoid 10:04022a61b527 5222 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 5223 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 5224 // mbed
whismanoid 5:aaf8b5f5fda1 5225 // Platform board uses simple analog inputs
whismanoid 5:aaf8b5f5fda1 5226 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 5:aaf8b5f5fda1 5227 Platform_LSB[0] = analogIn0.read();
whismanoid 5:aaf8b5f5fda1 5228 Platform_LSB[1] = analogIn1.read();
whismanoid 5:aaf8b5f5fda1 5229 Platform_LSB[2] = analogIn2.read();
whismanoid 5:aaf8b5f5fda1 5230 Platform_LSB[3] = analogIn3.read();
whismanoid 5:aaf8b5f5fda1 5231 Platform_LSB[4] = analogIn4.read();
whismanoid 5:aaf8b5f5fda1 5232 Platform_LSB[5] = analogIn5.read();
whismanoid 10:04022a61b527 5233 #endif
whismanoid 10:04022a61b527 5234 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 5:aaf8b5f5fda1 5235 Platform_Voltage[0] = analogIn0.read() * adc_full_scale_voltage[0];
whismanoid 5:aaf8b5f5fda1 5236 Platform_Voltage[1] = analogIn1.read() * adc_full_scale_voltage[1];
whismanoid 5:aaf8b5f5fda1 5237 Platform_Voltage[2] = analogIn2.read() * adc_full_scale_voltage[2];
whismanoid 5:aaf8b5f5fda1 5238 Platform_Voltage[3] = analogIn3.read() * adc_full_scale_voltage[3];
whismanoid 5:aaf8b5f5fda1 5239 Platform_Voltage[4] = analogIn4.read() * adc_full_scale_voltage[4];
whismanoid 5:aaf8b5f5fda1 5240 Platform_Voltage[5] = analogIn5.read() * adc_full_scale_voltage[5];
whismanoid 5:aaf8b5f5fda1 5241 #endif
whismanoid 5:aaf8b5f5fda1 5242 #endif // defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 5243
whismanoid 5:aaf8b5f5fda1 5244 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 5245 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 5246 const uint32_t part_id_expect = 0x000F02;
whismanoid 5:aaf8b5f5fda1 5247 uint32_t part_id_readback;
whismanoid 5:aaf8b5f5fda1 5248 g_MAX11410_device.RegRead(MAX11410::CMD_r001_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xddd_PART_ID, &part_id_readback);
whismanoid 5:aaf8b5f5fda1 5249 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 5250 } // void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 5251
whismanoid 17:9397ea3ea7e9 5252 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 5253 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 5254 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 5255 void Datalogger_RunActionTable()
whismanoid 17:9397ea3ea7e9 5256 {
whismanoid 17:9397ea3ea7e9 5257 if (Datalogger_action_table_enabled == false) {
whismanoid 17:9397ea3ea7e9 5258 return;
whismanoid 17:9397ea3ea7e9 5259 }
whismanoid 17:9397ea3ea7e9 5260 // TODO: verbose Datalogger_RunActionTable() emit a csv column ,"Action"
whismanoid 17:9397ea3ea7e9 5261 // TODO: assert Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX
whismanoid 17:9397ea3ea7e9 5262 // for Datalogger_action_table[0..Datalogger_action_table_row_count]
whismanoid 17:9397ea3ea7e9 5263 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 5264 {
whismanoid 17:9397ea3ea7e9 5265 // skip if Datalogger_action_table[i].action == action_noop
whismanoid 17:9397ea3ea7e9 5266 if (Datalogger_action_table[i].action == action_noop) {
whismanoid 17:9397ea3ea7e9 5267 continue;
whismanoid 17:9397ea3ea7e9 5268 }
whismanoid 17:9397ea3ea7e9 5269 // TODO: test Datalogger_action_table[i].condition "if="
whismanoid 17:9397ea3ea7e9 5270 // TODO: Could the .condition field also distinguish Platform ADC from SPI ADC?
whismanoid 17:9397ea3ea7e9 5271 // That way we keep both sets of ADC channels in separate lists
whismanoid 17:9397ea3ea7e9 5272 // if=0 -- always
whismanoid 17:9397ea3ea7e9 5273 // if=1,2,3,4,5,6 -- Platform_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 5274 // if=7,8,9,10,11,12 -- SPI_AIN_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 5275 // also, are we comparing code or voltage?
whismanoid 17:9397ea3ea7e9 5276 // TODO: selected Datalogger_action_table[i].condition_channel
whismanoid 17:9397ea3ea7e9 5277 // Datalogger could have both platform ADC and external SPI ADC channels
whismanoid 17:9397ea3ea7e9 5278 // if SPI_ADC_DeviceName
whismanoid 17:9397ea3ea7e9 5279 // NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 5280 // SPI_AIN_Enable_ch[]
whismanoid 17:9397ea3ea7e9 5281 // SPI_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 5282 // SPI_AIN_Voltage[]
whismanoid 17:9397ea3ea7e9 5283 // if LOG_PLATFORM_AIN
whismanoid 17:9397ea3ea7e9 5284 // NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 5285 // analogInPin_fullScaleVoltage[]
whismanoid 17:9397ea3ea7e9 5286 // Platform_Enable_ch[]
whismanoid 17:9397ea3ea7e9 5287 // Platform_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 5288 // Platform_Voltage[]
whismanoid 17:9397ea3ea7e9 5289 // TODO: selected Datalogger_action_table[i].condition_threshold
whismanoid 17:9397ea3ea7e9 5290 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5291 {
whismanoid 17:9397ea3ea7e9 5292 case condition_always:
whismanoid 17:9397ea3ea7e9 5293 //~ cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 5294 break;
whismanoid 17:9397ea3ea7e9 5295 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 5296 //~ cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5297 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 5298 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5299 continue;
whismanoid 17:9397ea3ea7e9 5300 }
whismanoid 17:9397ea3ea7e9 5301 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 5302 break;
whismanoid 17:9397ea3ea7e9 5303 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 5304 //~ cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5305 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 5306 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5307 continue;
whismanoid 17:9397ea3ea7e9 5308 }
whismanoid 17:9397ea3ea7e9 5309 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 5310 break;
whismanoid 17:9397ea3ea7e9 5311 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 5312 //~ cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5313 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 5314 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5315 continue;
whismanoid 17:9397ea3ea7e9 5316 }
whismanoid 17:9397ea3ea7e9 5317 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 5318 break;
whismanoid 17:9397ea3ea7e9 5319 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 5320 //~ cmdLine.serial().printf(" if A%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5321 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 5322 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5323 continue;
whismanoid 17:9397ea3ea7e9 5324 }
whismanoid 17:9397ea3ea7e9 5325 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 5326 break;
whismanoid 17:9397ea3ea7e9 5327 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 5328 //~ cmdLine.serial().printf(" if A%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5329 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 5330 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5331 continue;
whismanoid 17:9397ea3ea7e9 5332 }
whismanoid 17:9397ea3ea7e9 5333 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 5334 break;
whismanoid 17:9397ea3ea7e9 5335 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 5336 //~ cmdLine.serial().printf(" if A%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5337 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 5338 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 5339 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5340 continue;
whismanoid 17:9397ea3ea7e9 5341 }
whismanoid 17:9397ea3ea7e9 5342 break;
whismanoid 17:9397ea3ea7e9 5343 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 5344 //~ cmdLine.serial().printf(" if AIN%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5345 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5346 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5347 continue;
whismanoid 17:9397ea3ea7e9 5348 }
whismanoid 17:9397ea3ea7e9 5349 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5350 break;
whismanoid 17:9397ea3ea7e9 5351 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 5352 //~ cmdLine.serial().printf(" if AIN%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5353 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5354 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5355 continue;
whismanoid 17:9397ea3ea7e9 5356 }
whismanoid 17:9397ea3ea7e9 5357 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5358 break;
whismanoid 17:9397ea3ea7e9 5359 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 5360 //~ cmdLine.serial().printf(" if AIN%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5361 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5362 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5363 continue;
whismanoid 17:9397ea3ea7e9 5364 }
whismanoid 17:9397ea3ea7e9 5365 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5366 break;
whismanoid 17:9397ea3ea7e9 5367 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 5368 //~ cmdLine.serial().printf(" if AIN%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5369 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5370 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5371 continue;
whismanoid 17:9397ea3ea7e9 5372 }
whismanoid 17:9397ea3ea7e9 5373 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5374 break;
whismanoid 17:9397ea3ea7e9 5375 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 5376 //~ cmdLine.serial().printf(" if AIN%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5377 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5378 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5379 continue;
whismanoid 17:9397ea3ea7e9 5380 }
whismanoid 17:9397ea3ea7e9 5381 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5382 break;
whismanoid 17:9397ea3ea7e9 5383 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 5384 //~ cmdLine.serial().printf(" if AIN%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5385 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5386 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 5387 continue;
whismanoid 17:9397ea3ea7e9 5388 }
whismanoid 17:9397ea3ea7e9 5389 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 5390 break;
whismanoid 17:9397ea3ea7e9 5391 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5392 // selected Datalogger_action_table[i].digitalOutPin
whismanoid 17:9397ea3ea7e9 5393 // perform selected Datalogger_action_table[i].action
whismanoid 17:9397ea3ea7e9 5394 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5395 {
whismanoid 17:9397ea3ea7e9 5396 case action_noop:
whismanoid 17:9397ea3ea7e9 5397 //~ cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 5398 break;
whismanoid 17:9397ea3ea7e9 5399 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 5400 {
whismanoid 17:9397ea3ea7e9 5401 //~ cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 5402 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5403 // perform action digitalOutLow
whismanoid 17:9397ea3ea7e9 5404 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 5405 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 5406 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 5407 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 5408 #else
whismanoid 17:9397ea3ea7e9 5409 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 5410 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 5411 digitalInOutPin.write(0);
whismanoid 17:9397ea3ea7e9 5412 #endif
whismanoid 17:9397ea3ea7e9 5413 }
whismanoid 17:9397ea3ea7e9 5414 break;
whismanoid 17:9397ea3ea7e9 5415 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 5416 {
whismanoid 17:9397ea3ea7e9 5417 //~ cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 5418 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5419 // perform action digitalOutHigh
whismanoid 17:9397ea3ea7e9 5420 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 5421 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 5422 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 5423 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 5424 #else
whismanoid 17:9397ea3ea7e9 5425 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 5426 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 5427 digitalInOutPin.write(1);
whismanoid 17:9397ea3ea7e9 5428 #endif
whismanoid 17:9397ea3ea7e9 5429 }
whismanoid 17:9397ea3ea7e9 5430 break;
whismanoid 29:6a9edb6e973b 5431 case action_button: // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 5432 {
whismanoid 29:6a9edb6e973b 5433 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5434 switch (Datalogger_action_table[i].digitalOutPin) // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 5435 {
whismanoid 29:6a9edb6e973b 5436 case 1:
whismanoid 29:6a9edb6e973b 5437 onButton1FallingEdge();
whismanoid 29:6a9edb6e973b 5438 break;
whismanoid 29:6a9edb6e973b 5439 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5440 case 2:
whismanoid 29:6a9edb6e973b 5441 onButton2FallingEdge();
whismanoid 29:6a9edb6e973b 5442 break;
whismanoid 29:6a9edb6e973b 5443 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5444 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5445 case 3:
whismanoid 29:6a9edb6e973b 5446 onButton3FallingEdge();
whismanoid 29:6a9edb6e973b 5447 break;
whismanoid 29:6a9edb6e973b 5448 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5449 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5450 case 4:
whismanoid 29:6a9edb6e973b 5451 onButton4FallingEdge();
whismanoid 29:6a9edb6e973b 5452 break;
whismanoid 29:6a9edb6e973b 5453 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5454 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5455 case 5:
whismanoid 29:6a9edb6e973b 5456 onButton5FallingEdge();
whismanoid 29:6a9edb6e973b 5457 break;
whismanoid 29:6a9edb6e973b 5458 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5459 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5460 case 6:
whismanoid 29:6a9edb6e973b 5461 onButton6FallingEdge();
whismanoid 29:6a9edb6e973b 5462 break;
whismanoid 29:6a9edb6e973b 5463 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5464 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5465 case 7:
whismanoid 29:6a9edb6e973b 5466 onButton7FallingEdge();
whismanoid 29:6a9edb6e973b 5467 break;
whismanoid 29:6a9edb6e973b 5468 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5469 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5470 case 8:
whismanoid 29:6a9edb6e973b 5471 onButton8FallingEdge();
whismanoid 29:6a9edb6e973b 5472 break;
whismanoid 29:6a9edb6e973b 5473 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5474 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5475 case 9:
whismanoid 29:6a9edb6e973b 5476 onButton9FallingEdge();
whismanoid 29:6a9edb6e973b 5477 break;
whismanoid 29:6a9edb6e973b 5478 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5479 } // switch (Datalogger_action_table[i].digitalOutPin) // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 5480 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 5481 } // case action_button
whismanoid 29:6a9edb6e973b 5482 break;
whismanoid 17:9397ea3ea7e9 5483 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 5484 //~ cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 5485 // perform action trigger_Halt
whismanoid 17:9397ea3ea7e9 5486 Datalogger_Trigger = trigger_Halt;
whismanoid 17:9397ea3ea7e9 5487 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 5488 break;
whismanoid 17:9397ea3ea7e9 5489 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 5490 //~ cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 5491 // perform action trigger_FreeRun
whismanoid 17:9397ea3ea7e9 5492 Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 5493 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 5494 break;
whismanoid 17:9397ea3ea7e9 5495 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 5496 //~ cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 5497 //~ // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 5498 //~ cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 5499 // perform action trigger_Timer
whismanoid 17:9397ea3ea7e9 5500 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 5501 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 5502 break;
whismanoid 17:9397ea3ea7e9 5503 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 5504 //~ cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 5505 //~ // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 5506 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 5507 // TODO: perform action action_trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 5508 Datalogger_Trigger = trigger_PlatformDigitalInput;
whismanoid 17:9397ea3ea7e9 5509 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 5510 break;
whismanoid 17:9397ea3ea7e9 5511 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 5512 //~ cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 5513 //~ // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 5514 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 5515 // TODO: perform action action_trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 5516 Datalogger_Trigger = trigger_SPIDeviceRegRead;
whismanoid 17:9397ea3ea7e9 5517 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 5518 break;
whismanoid 17:9397ea3ea7e9 5519 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5520 // consider next row of action table
whismanoid 17:9397ea3ea7e9 5521 } // for ...Datalogger_action_table_row_count
whismanoid 17:9397ea3ea7e9 5522 }
whismanoid 17:9397ea3ea7e9 5523 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 5524
whismanoid 5:aaf8b5f5fda1 5525 //--------------------------------------------------
whismanoid 8:dffee7509bfb 5526 void Datalogger_PrintRow(CmdLine& cmdLine)
whismanoid 5:aaf8b5f5fda1 5527 {
whismanoid 5:aaf8b5f5fda1 5528 int field_index = 0;
whismanoid 5:aaf8b5f5fda1 5529 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 5530 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 5531 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 5:aaf8b5f5fda1 5532 continue;
whismanoid 5:aaf8b5f5fda1 5533 }
whismanoid 5:aaf8b5f5fda1 5534 // comma between fields
whismanoid 5:aaf8b5f5fda1 5535 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 5536 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 5537 }
whismanoid 10:04022a61b527 5538 field_index++;
whismanoid 10:04022a61b527 5539 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 10:04022a61b527 5540 cmdLine.serial().printf("%d", g_MAX11410_device.AINcode[channel_index]);
whismanoid 10:04022a61b527 5541 }
whismanoid 10:04022a61b527 5542 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 10:04022a61b527 5543 // TODO: report Voltage instead of LSB
whismanoid 10:04022a61b527 5544 // Serial.print(SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 5545 static char strOutLineBuffer[16];
whismanoid 10:04022a61b527 5546 cmdLine.serial().printf("%6.6f", SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 5547 }
whismanoid 5:aaf8b5f5fda1 5548 }
whismanoid 5:aaf8b5f5fda1 5549 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 5550 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 5551 if (part_id_readback != part_id_expect) {
whismanoid 5:aaf8b5f5fda1 5552 cmdLine.serial().printf(",\"FAIL\"");
whismanoid 9:45f98573eb6d 5553 need_reinit = true;
whismanoid 5:aaf8b5f5fda1 5554 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 5555 g_MAX11410_device.Init();
whismanoid 5:aaf8b5f5fda1 5556 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 5:aaf8b5f5fda1 5557 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 5:aaf8b5f5fda1 5558 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 5:aaf8b5f5fda1 5559 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 5560 }
whismanoid 5:aaf8b5f5fda1 5561 else {
whismanoid 5:aaf8b5f5fda1 5562 cmdLine.serial().printf(",\"OK\"");
whismanoid 5:aaf8b5f5fda1 5563 }
whismanoid 5:aaf8b5f5fda1 5564 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 5565 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 5566 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 5567 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 5568 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 5569 continue;
whismanoid 9:45f98573eb6d 5570 }
whismanoid 5:aaf8b5f5fda1 5571 // comma between fields
whismanoid 5:aaf8b5f5fda1 5572 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 5573 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 5574 }
whismanoid 9:45f98573eb6d 5575 field_index++;
whismanoid 9:45f98573eb6d 5576 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 5:aaf8b5f5fda1 5577 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 5578 cmdLine.serial().printf("%u", Platform_LSB[channel_index]);
whismanoid 9:45f98573eb6d 5579 #endif
whismanoid 9:45f98573eb6d 5580 }
whismanoid 9:45f98573eb6d 5581 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 5582 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 11:2b8adc78618a 5583 // Datalog Volts omit V suffix from numbers #275
whismanoid 11:2b8adc78618a 5584 // because Excel graphs can't handle numbers that have a suffix.
whismanoid 11:2b8adc78618a 5585 cmdLine.serial().printf("%6.6f", Platform_Voltage[channel_index]);
whismanoid 9:45f98573eb6d 5586 #endif
whismanoid 9:45f98573eb6d 5587 }
whismanoid 5:aaf8b5f5fda1 5588 }
whismanoid 5:aaf8b5f5fda1 5589 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 5590 if (need_reinit) {
whismanoid 9:45f98573eb6d 5591 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 5592 if (g_MAX11410_device.Init() == 0) {
whismanoid 9:45f98573eb6d 5593 //~ cmdLine.serial().printf(",\"Init() failed\"");
whismanoid 9:45f98573eb6d 5594 } else {
whismanoid 9:45f98573eb6d 5595 //~ cmdLine.serial().printf(",\"Init() success\"");
whismanoid 9:45f98573eb6d 5596 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 5597 // in Datalogger_PrintRow(), when part_id test fails,
whismanoid 9:45f98573eb6d 5598 // apply list of custom register writes after re-init
whismanoid 9:45f98573eb6d 5599 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 5600 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 9:45f98573eb6d 5601 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 9:45f98573eb6d 5602 uint32_t regData = custom_reg_init_data[index];
whismanoid 9:45f98573eb6d 5603 cmdLine.serial().printf("*%s=0x%06.6x", g_MAX11410_device.RegName(regAddress), regData);
whismanoid 9:45f98573eb6d 5604 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 9:45f98573eb6d 5605 }
whismanoid 9:45f98573eb6d 5606 #endif // USE_CUSTOM_REG_INIT
whismanoid 9:45f98573eb6d 5607 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 9:45f98573eb6d 5608 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 9:45f98573eb6d 5609 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 9:45f98573eb6d 5610 need_reinit = false;
whismanoid 9:45f98573eb6d 5611 }
whismanoid 9:45f98573eb6d 5612 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 5613 need_reinit = false;
whismanoid 9:45f98573eb6d 5614 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 5615 }
whismanoid 5:aaf8b5f5fda1 5616 cmdLine.serial().printf("\r\n");
whismanoid 9:45f98573eb6d 5617 if (need_reinit) {
whismanoid 9:45f98573eb6d 5618 //~ delay(500); // platform_delay_ms 500ms timing delay function
whismanoid 9:45f98573eb6d 5619 }
whismanoid 5:aaf8b5f5fda1 5620 } // void Datalogger_PrintRow()
whismanoid 5:aaf8b5f5fda1 5621
whismanoid 0:cb44e2e9ec4c 5622 // example code main function
whismanoid 0:cb44e2e9ec4c 5623 int main()
whismanoid 0:cb44e2e9ec4c 5624 {
whismanoid 0:cb44e2e9ec4c 5625 // setup: put your setup code here, to run once
whismanoid 4:d9b05924ad4c 5626 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 5627 // Configure serial ports
whismanoid 4:d9b05924ad4c 5628 cmdLine.clear();
whismanoid 4:d9b05924ad4c 5629 //~ cmdLine.serial().printf("\r\n cmdLine.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 5630 cmdLine.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 5631 //~ cmdLine.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 4:d9b05924ad4c 5632 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 4:d9b05924ad4c 5633 //~ cmdLine.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 5634 //~ cmdLine.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 5635 //~ cmdLine.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 5636 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 5637 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 5638 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 5639 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 5640 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 5641 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 5642 # else
whismanoid 10:04022a61b527 5643 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 5644 DAPLINKserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5645 # endif
whismanoid 10:04022a61b527 5646 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 5647 cmdLine_DAPLINKserial.clear();
whismanoid 4:d9b05924ad4c 5648 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 5649 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 5650 //~ cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 5651 //~ cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 5652 //~ cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 5653 # endif
whismanoid 6:f6d16658342b 5654 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 5655 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 10:04022a61b527 5656 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 5657 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 5658 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 5659 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 5660 AUXserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5661 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 6:f6d16658342b 5662 cmdLine_AUXserial.clear();
whismanoid 6:f6d16658342b 5663 //~ cmdLine_AUXserial.serial().printf("\r\n cmdLine_AUXserial.serial().printf test\r\n");
whismanoid 6:f6d16658342b 5664 cmdLine_AUXserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 6:f6d16658342b 5665 //~ cmdLine_AUXserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 6:f6d16658342b 5666 //~ cmdLine_AUXserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 6:f6d16658342b 5667 //~ cmdLine_AUXserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 6:f6d16658342b 5668 # endif // HAS_AUX_SERIAL
whismanoid 4:d9b05924ad4c 5669 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 0:cb44e2e9ec4c 5670
whismanoid 0:cb44e2e9ec4c 5671 // example code: serial port banner message
whismanoid 0:cb44e2e9ec4c 5672 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 5673 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 5674 cmdLine.serial().printf("\r\nDataLogger_MAX11410\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 5675 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 5676 cmdLine.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 5677 # if HAS_DAPLINK_SERIAL
whismanoid 3:9055e17e181a 5678 cmdLine_DAPLINKserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 5679 # endif // HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 5680 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 5681 cmdLine_AUXserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 6:f6d16658342b 5682 # endif // HAS_AUX_SERIAL
whismanoid 3:9055e17e181a 5683 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 5684
whismanoid 1:747f1602abfc 5685 // CODE GENERATOR: get spi properties from device
whismanoid 3:9055e17e181a 5686 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 5687 if (g_SPI_SCLK_Hz > g_MAX11410_device.get_spi_frequency())
whismanoid 3:9055e17e181a 5688 { // Device limits SPI SCLK frequency
whismanoid 3:9055e17e181a 5689 g_SPI_SCLK_Hz = g_MAX11410_device.get_spi_frequency();
whismanoid 3:9055e17e181a 5690 cmdLine.serial().printf("\r\nMAX11410 limits SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 5691
whismanoid 3:9055e17e181a 5692 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 5693 }
whismanoid 3:9055e17e181a 5694 if (g_MAX11410_device.get_spi_frequency() > g_SPI_SCLK_Hz)
whismanoid 3:9055e17e181a 5695 { // Platform limits SPI SCLK frequency
whismanoid 3:9055e17e181a 5696 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 5697 cmdLine.serial().printf("\r\nPlatform limits MAX11410 SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 5698
whismanoid 3:9055e17e181a 5699 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 5700 }
whismanoid 0:cb44e2e9ec4c 5701 // g_SPI_dataMode = g_MAX11410_device.get_spi_dataMode();
whismanoid 3:9055e17e181a 5702 while (g_MAX11410_device.Init() == 0)
whismanoid 3:9055e17e181a 5703 {
whismanoid 3:9055e17e181a 5704 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 5705 cmdLine.serial().printf("\r\nMAX11410 Init failed; retry...\r\n");
whismanoid 3:9055e17e181a 5706
whismanoid 3:9055e17e181a 5707 }
whismanoid 0:cb44e2e9ec4c 5708
whismanoid 0:cb44e2e9ec4c 5709 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 3:9055e17e181a 5710 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 5711 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 3:9055e17e181a 5712 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 3:9055e17e181a 5713 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 3:9055e17e181a 5714 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 5715 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 3:9055e17e181a 5716 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 5717 // CODE GENERATOR: example code: has no member function REF
whismanoid 0:cb44e2e9ec4c 5718 // CODE GENERATOR: example code for ADC: repeat-forever convert and print conversion result, one record per line
whismanoid 0:cb44e2e9ec4c 5719 // CODE GENERATOR: ResolutionBits = 24
whismanoid 0:cb44e2e9ec4c 5720 // CODE GENERATOR: FScode = 0xffffff
whismanoid 0:cb44e2e9ec4c 5721 // CODE GENERATOR: NumChannels = 10
whismanoid 0:cb44e2e9ec4c 5722 // CODE GENERATOR: banner before DataLogHelloCppCodeList while(1)
whismanoid 3:9055e17e181a 5723 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 5724 cmdLine.serial().printf("v_filter = 0x%2.2x\r\n", g_MAX11410_device.v_filter);
whismanoid 0:cb44e2e9ec4c 5725
whismanoid 3:9055e17e181a 5726 cmdLine.serial().printf("v_pga = 0x%2.2x\r\n", g_MAX11410_device.v_pga);
whismanoid 0:cb44e2e9ec4c 5727
whismanoid 3:9055e17e181a 5728 cmdLine.serial().printf("v_ctrl = 0x%2.2x\r\n", g_MAX11410_device.v_ctrl);
whismanoid 3:9055e17e181a 5729
whismanoid 3:9055e17e181a 5730 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 5731
whismanoid 3:9055e17e181a 5732 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 5733 Datalogger_Need_PrintHeader = true;
whismanoid 10:04022a61b527 5734
whismanoid 12:2dfc1f2009e0 5735 #if USE_LEDS
whismanoid 12:2dfc1f2009e0 5736 #if defined(TARGET_MAX32630)
whismanoid 12:2dfc1f2009e0 5737 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 5738 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5739 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 5740 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5741 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 5742 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5743 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 5744 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5745 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 5746 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5747 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 5748 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5749 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 5750 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5751 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 5752 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 19:5ff09c8e9daf 5753 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 12:2dfc1f2009e0 5754 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 5755 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5756 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 5757 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5758 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 5759 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5760 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 5761 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5762 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 5763 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5764 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 5765 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5766 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 5767 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5768 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 5769 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 5770 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 12:2dfc1f2009e0 5771 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 5772 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 5773 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 5774 led4 = LED_OFF;
whismanoid 12:2dfc1f2009e0 5775 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 5776 //led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 5777 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 5778 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 5779 led1 = LED_OFF;
whismanoid 12:2dfc1f2009e0 5780 //led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 5781 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 5782 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 5783 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 5784 //led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 5785 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 5786 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 5787 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 5788 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 5789 //
whismanoid 12:2dfc1f2009e0 5790 #endif // target definition
whismanoid 12:2dfc1f2009e0 5791 #endif
whismanoid 12:2dfc1f2009e0 5792
whismanoid 12:2dfc1f2009e0 5793 if (led1.is_connected()) {
whismanoid 12:2dfc1f2009e0 5794 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 5795 }
whismanoid 12:2dfc1f2009e0 5796 if (led2.is_connected()) {
whismanoid 12:2dfc1f2009e0 5797 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 5798 }
whismanoid 12:2dfc1f2009e0 5799 if (led3.is_connected()) {
whismanoid 12:2dfc1f2009e0 5800 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 5801 }
whismanoid 12:2dfc1f2009e0 5802
whismanoid 4:d9b05924ad4c 5803 while(1) { // this code repeats forever
whismanoid 4:d9b05924ad4c 5804 // this code repeats forever
whismanoid 4:d9b05924ad4c 5805
whismanoid 21:ac062a97a71d 5806 #if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 5807 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 5808 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 5809 # if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 5810 static int button1_value_prev = 1;
whismanoid 21:ac062a97a71d 5811 static int button1_value_now = 1;
whismanoid 21:ac062a97a71d 5812 button1_value_prev = button1_value_now;
whismanoid 21:ac062a97a71d 5813 button1_value_now = button1.read();
whismanoid 21:ac062a97a71d 5814 if ((button1_value_prev - button1_value_now) == 1)
whismanoid 21:ac062a97a71d 5815 {
whismanoid 21:ac062a97a71d 5816 // on button1 falling edge (button1 press)
whismanoid 21:ac062a97a71d 5817 onButton1FallingEdge();
whismanoid 21:ac062a97a71d 5818 }
whismanoid 21:ac062a97a71d 5819 # endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 5820 # if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 5821 static int button2_value_prev = 1;
whismanoid 24:032f3683cb2a 5822 static int button2_value_now = 1;
whismanoid 24:032f3683cb2a 5823 button2_value_prev = button2_value_now;
whismanoid 24:032f3683cb2a 5824 button2_value_now = button2.read();
whismanoid 24:032f3683cb2a 5825 if ((button2_value_prev - button2_value_now) == 1)
whismanoid 24:032f3683cb2a 5826 {
whismanoid 24:032f3683cb2a 5827 // on button2 falling edge (button2 press)
whismanoid 24:032f3683cb2a 5828 onButton2FallingEdge();
whismanoid 24:032f3683cb2a 5829 }
whismanoid 24:032f3683cb2a 5830 # endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 5831 # if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 5832 static int button3_value_prev = 1;
whismanoid 24:032f3683cb2a 5833 static int button3_value_now = 1;
whismanoid 24:032f3683cb2a 5834 button3_value_prev = button3_value_now;
whismanoid 24:032f3683cb2a 5835 button3_value_now = button3.read();
whismanoid 24:032f3683cb2a 5836 if ((button3_value_prev - button3_value_now) == 1)
whismanoid 24:032f3683cb2a 5837 {
whismanoid 24:032f3683cb2a 5838 // on button3 falling edge (button3 press)
whismanoid 26:13cba69d88eb 5839 onButton3FallingEdge();
whismanoid 24:032f3683cb2a 5840 }
whismanoid 24:032f3683cb2a 5841 # endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 5842 #endif // HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 4:d9b05924ad4c 5843 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 5844 // TODO support CmdLine command menus (like on Serial_Tester); help and usual boilerplate
whismanoid 10:04022a61b527 5845 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 5846 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 5847 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 5848 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 5849 // Accept commands from Auxiliary serial port
whismanoid 6:f6d16658342b 5850 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 5851 if (AUXserial.readable()) {
whismanoid 6:f6d16658342b 5852 cmdLine_AUXserial.append(AUXserial.getc());
whismanoid 6:f6d16658342b 5853 }
whismanoid 6:f6d16658342b 5854 # endif // HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 5855 # if HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 5856 if (DAPLINKserial.readable()) {
whismanoid 6:f6d16658342b 5857 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 6:f6d16658342b 5858 }
whismanoid 6:f6d16658342b 5859 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 5860 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 5861 if (serial.readable()) {
whismanoid 4:d9b05924ad4c 5862 int c = serial.getc(); // instead of getc() or fgetc()
whismanoid 4:d9b05924ad4c 5863 cmdLine.append(c);
whismanoid 4:d9b05924ad4c 5864 // cmdLine.onEOLcommandParser handler implements menus
whismanoid 4:d9b05924ad4c 5865 } // if (Serial.available())
whismanoid 4:d9b05924ad4c 5866 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 5867
whismanoid 4:d9b05924ad4c 5868 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 5869 // TODO Datalog trigger
whismanoid 4:d9b05924ad4c 5870 if (Datalogger_Trigger == trigger_Halt) {
whismanoid 4:d9b05924ad4c 5871 // halt the datalogger; continue accepting commands
whismanoid 3:9055e17e181a 5872 continue;
whismanoid 3:9055e17e181a 5873 }
whismanoid 4:d9b05924ad4c 5874 if (Datalogger_Trigger == trigger_FreeRun) {
whismanoid 4:d9b05924ad4c 5875 // free run as fast as possible
whismanoid 3:9055e17e181a 5876 }
whismanoid 4:d9b05924ad4c 5877 if (Datalogger_Trigger == trigger_Timer) {
whismanoid 4:d9b05924ad4c 5878 // timer (configure interval)
whismanoid 17:9397ea3ea7e9 5879 // TODO: if Datalogger_Trigger == trigger_Timer sleep(g_timer_interval_msec)
whismanoid 17:9397ea3ea7e9 5880 // sleep(g_timer_interval_msec); // error: too many arguments to function 'void sleep()'
whismanoid 17:9397ea3ea7e9 5881 wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 17:9397ea3ea7e9 5882 if (g_timer_interval_counter > 0) {
whismanoid 17:9397ea3ea7e9 5883 g_timer_interval_counter--;
whismanoid 17:9397ea3ea7e9 5884 continue;
whismanoid 17:9397ea3ea7e9 5885 }
whismanoid 17:9397ea3ea7e9 5886 // if time interval not yet reached, continue (continue accepting commands)
whismanoid 17:9397ea3ea7e9 5887 g_timer_interval_counter = g_timer_interval_count;
whismanoid 3:9055e17e181a 5888 }
whismanoid 4:d9b05924ad4c 5889 if (Datalogger_Trigger == trigger_PlatformDigitalInput) {
whismanoid 4:d9b05924ad4c 5890 // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 5891 // TODO: read selected input pin, test value
whismanoid 17:9397ea3ea7e9 5892 // TODO: if no match, continue (continue accepting commands)
whismanoid 3:9055e17e181a 5893 }
whismanoid 4:d9b05924ad4c 5894 if (Datalogger_Trigger == trigger_SPIDeviceRegRead) {
whismanoid 4:d9b05924ad4c 5895 // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 5896 // TODO: SPI transfer regAddr
whismanoid 17:9397ea3ea7e9 5897 // TODO: apply dataMask, compare with testValue
whismanoid 17:9397ea3ea7e9 5898 // TODO: if no match, continue (continue accepting commands)
whismanoid 4:d9b05924ad4c 5899 }
whismanoid 4:d9b05924ad4c 5900 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 0:cb44e2e9ec4c 5901
whismanoid 8:dffee7509bfb 5902 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 5903 if (Datalogger_Need_PrintHeader) {
whismanoid 8:dffee7509bfb 5904 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 5905 Datalogger_PrintHeader(cmdLine);
whismanoid 8:dffee7509bfb 5906 }
whismanoid 8:dffee7509bfb 5907 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 5908 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 5909 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 5910 }
whismanoid 8:dffee7509bfb 5911 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 5912 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 5913 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 5914 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 5915 }
whismanoid 8:dffee7509bfb 5916 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 5917 Datalogger_Need_PrintHeader = false;
whismanoid 8:dffee7509bfb 5918 }
whismanoid 5:aaf8b5f5fda1 5919 Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 5920 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 5921 // Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 5922 Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 5923 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 0:cb44e2e9ec4c 5924 // wait(3.0);
whismanoid 0:cb44e2e9ec4c 5925 // CODE GENERATOR: print conversion result
whismanoid 0:cb44e2e9ec4c 5926 // Use Arduino Serial Plotter to view output: Tools | Serial Plotter
whismanoid 8:dffee7509bfb 5927 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 5928 Datalogger_PrintRow(cmdLine);
whismanoid 8:dffee7509bfb 5929 }
whismanoid 8:dffee7509bfb 5930 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 5931 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 5932 Datalogger_PrintRow(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 5933 }
whismanoid 8:dffee7509bfb 5934 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 5935 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 5936 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 5937 Datalogger_PrintRow(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 5938 }
whismanoid 8:dffee7509bfb 5939 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:cb44e2e9ec4c 5940
whismanoid 0:cb44e2e9ec4c 5941 } // this code repeats forever
whismanoid 0:cb44e2e9ec4c 5942 }
whismanoid 0:cb44e2e9ec4c 5943 //---------- CODE GENERATOR: end DataLogHelloCppCodeList