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

Dependencies:   max32625pico CmdLine

Committer:
whismanoid
Date:
Wed May 12 12:27:24 2021 -0700
Revision:
42:89607d5d4e6d
Parent:
41:13a6a097502c
Child:
43:4c4733760d4c
WIP-AMEND LT sleep=1 Sleep vs Deep Sleep (mbed-os-5.15); Board_Calibration_Data separate from program logic

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 42:89607d5d4e6d 82
whismanoid 42:89607d5d4e6d 83 // data unique to certain boards based on serial number
whismanoid 42:89607d5d4e6d 84 #include "Board_Calibration_Data.h"
whismanoid 42:89607d5d4e6d 85
whismanoid 36:e7aac874b8be 86 #ifdef BOARD_SERIAL_NUMBER
whismanoid 36:e7aac874b8be 87 // data unique to certain boards based on serial number
whismanoid 36:e7aac874b8be 88 # if (BOARD_SERIAL_NUMBER) == 0
whismanoid 36:e7aac874b8be 89 #warning "(BOARD_SERIAL_NUMBER) == 0"
whismanoid 36:e7aac874b8be 90 //
whismanoid 36:e7aac874b8be 91 # elif (BOARD_SERIAL_NUMBER) == 1
whismanoid 36:e7aac874b8be 92 #warning "(BOARD_SERIAL_NUMBER) == 1"
whismanoid 36:e7aac874b8be 93 //
whismanoid 36:e7aac874b8be 94 # elif (BOARD_SERIAL_NUMBER) == 2
whismanoid 36:e7aac874b8be 95 #warning "(BOARD_SERIAL_NUMBER) == 2"
whismanoid 36:e7aac874b8be 96 //
whismanoid 36:e7aac874b8be 97 # elif (BOARD_SERIAL_NUMBER) == 3
whismanoid 36:e7aac874b8be 98 #warning "(BOARD_SERIAL_NUMBER) == 3"
whismanoid 36:e7aac874b8be 99 //
whismanoid 36:e7aac874b8be 100 # elif (BOARD_SERIAL_NUMBER) == 4
whismanoid 36:e7aac874b8be 101 #warning "(BOARD_SERIAL_NUMBER) == 4"
whismanoid 36:e7aac874b8be 102 //
whismanoid 36:e7aac874b8be 103 # elif (BOARD_SERIAL_NUMBER) == 5
whismanoid 36:e7aac874b8be 104 #warning "(BOARD_SERIAL_NUMBER) == 5"
whismanoid 36:e7aac874b8be 105 //
whismanoid 36:e7aac874b8be 106 # elif (BOARD_SERIAL_NUMBER) == 6
whismanoid 36:e7aac874b8be 107 #warning "(BOARD_SERIAL_NUMBER) == 6"
whismanoid 36:e7aac874b8be 108 //
whismanoid 36:e7aac874b8be 109 # else
whismanoid 36:e7aac874b8be 110 #warning "BOARD_SERIAL_NUMBER defined but not recognized"
whismanoid 36:e7aac874b8be 111 # endif
whismanoid 36:e7aac874b8be 112 #else // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 36:e7aac874b8be 113 #warning "BOARD_SERIAL_NUMBER not defined; using default values"
whismanoid 36:e7aac874b8be 114 //
whismanoid 36:e7aac874b8be 115 #endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 0:cb44e2e9ec4c 116 //---------- CODE GENERATOR: DataLogHelloCppCodeList
whismanoid 0:cb44e2e9ec4c 117 // CODE GENERATOR: example code includes
whismanoid 0:cb44e2e9ec4c 118
whismanoid 0:cb44e2e9ec4c 119 // example code includes
whismanoid 0:cb44e2e9ec4c 120 // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 0:cb44e2e9ec4c 121 #include "mbed.h"
whismanoid 0:cb44e2e9ec4c 122 // Platforms:
whismanoid 0:cb44e2e9ec4c 123 // - MAX32625MBED
whismanoid 0:cb44e2e9ec4c 124 // - supports mbed-os-5.11, requires USBDevice library
whismanoid 0:cb44e2e9ec4c 125 // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 0:cb44e2e9ec4c 126 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 127 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 128 // - MAX32600MBED
whismanoid 7:949ec8581f5e 129 // - Please note the last supported version is Mbed OS 6.3.
whismanoid 0:cb44e2e9ec4c 130 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 131 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 132 // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 0:cb44e2e9ec4c 133 // - NUCLEO_F446RE
whismanoid 0:cb44e2e9ec4c 134 // - remove USBDevice library
whismanoid 0:cb44e2e9ec4c 135 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 136 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 137 // - NUCLEO_F401RE
whismanoid 0:cb44e2e9ec4c 138 // - remove USBDevice library
whismanoid 0:cb44e2e9ec4c 139 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 140 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 141 // - MAX32630FTHR
whismanoid 0:cb44e2e9ec4c 142 // - #include "max32630fthr.h"
whismanoid 7:949ec8581f5e 143 // - add http://developer.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 0:cb44e2e9ec4c 144 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 145 // - MAX32620FTHR
whismanoid 0:cb44e2e9ec4c 146 // - #include "MAX32620FTHR.h"
whismanoid 0:cb44e2e9ec4c 147 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 148 // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 0:cb44e2e9ec4c 149 // - not tested yet
whismanoid 0:cb44e2e9ec4c 150 // - MAX32625PICO
whismanoid 0:cb44e2e9ec4c 151 // - #include "max32625pico.h"
whismanoid 0:cb44e2e9ec4c 152 // - add https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 0:cb44e2e9ec4c 153 // - remove max32630fthr library (if present)
whismanoid 0:cb44e2e9ec4c 154 // - remove MAX32620FTHR library (if present)
whismanoid 0:cb44e2e9ec4c 155 // - not tested yet
whismanoid 0:cb44e2e9ec4c 156 // - see https://os.mbed.com/users/switches/code/max32625pico/
whismanoid 0:cb44e2e9ec4c 157 // - see https://os.mbed.com/users/switches/code/PICO_board_demo/
whismanoid 0:cb44e2e9ec4c 158 // - see https://os.mbed.com/users/switches/code/PICO_USB_I2C_SPI/
whismanoid 0:cb44e2e9ec4c 159 // - see https://os.mbed.com/users/switches/code/SerialInterface/
whismanoid 0:cb44e2e9ec4c 160 // - Note: To load the MAX32625PICO firmware, hold the button while
whismanoid 0:cb44e2e9ec4c 161 // connecting the USB cable, then copy firmware bin file
whismanoid 0:cb44e2e9ec4c 162 // to the MAINTENANCE drive.
whismanoid 0:cb44e2e9ec4c 163 // - see https://os.mbed.com/platforms/MAX32625PICO/
whismanoid 0:cb44e2e9ec4c 164 // - see https://os.mbed.com/teams/MaximIntegrated/wiki/MAX32625PICO-Firmware-Updates
whismanoid 41:13a6a097502c 165 // - update from mbed-os-5.11.5 to mbed-os-5.15 to support deep sleep
whismanoid 41:13a6a097502c 166 // - cd mbed-os ; mbed update mbed-os-5.15.7 ; cd .. ; mbed remove USBDevice ; mbed sync
whismanoid 41:13a6a097502c 167 // - (Internal_DataLogger_NoUSB_MAX32625PICO does not use USBDevice library anyway)
whismanoid 0:cb44e2e9ec4c 168 //
whismanoid 0:cb44e2e9ec4c 169 // end Platform_Include_Boilerplate
whismanoid 0:cb44e2e9ec4c 170
whismanoid 0:cb44e2e9ec4c 171 //--------------------------------------------------
whismanoid 3:9055e17e181a 172 // Option to use SPI connected ADC
whismanoid 3:9055e17e181a 173 #ifndef SPI_ADC_DeviceName
whismanoid 9:45f98573eb6d 174 #define SPI_ADC_DeviceName MAX11410
whismanoid 3:9055e17e181a 175 #undef SPI_ADC_DeviceName
whismanoid 3:9055e17e181a 176 #endif
whismanoid 3:9055e17e181a 177 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 178 #include "MAX11410.h"
whismanoid 3:9055e17e181a 179 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 180
whismanoid 0:cb44e2e9ec4c 181 #if defined(TARGET)
whismanoid 0:cb44e2e9ec4c 182 // TARGET_NAME macros from targets/TARGET_Maxim/TARGET_MAX32625/device/mxc_device.h
whismanoid 0:cb44e2e9ec4c 183 // Create a string definition for the TARGET
whismanoid 0:cb44e2e9ec4c 184 #define STRING_ARG(arg) #arg
whismanoid 0:cb44e2e9ec4c 185 #define STRING_NAME(name) STRING_ARG(name)
whismanoid 0:cb44e2e9ec4c 186 #define TARGET_NAME STRING_NAME(TARGET)
whismanoid 0:cb44e2e9ec4c 187 #elif defined(TARGET_MAX32600)
whismanoid 0:cb44e2e9ec4c 188 #define TARGET_NAME "MAX32600"
whismanoid 0:cb44e2e9ec4c 189 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 190 #define TARGET_NAME "LPC1768"
whismanoid 0:cb44e2e9ec4c 191 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 192 #define TARGET_NAME "NUCLEO_F446RE"
whismanoid 0:cb44e2e9ec4c 193 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 194 #define TARGET_NAME "NUCLEO_F401RE"
whismanoid 0:cb44e2e9ec4c 195 #else
whismanoid 0:cb44e2e9ec4c 196 #error TARGET NOT DEFINED
whismanoid 0:cb44e2e9ec4c 197 #endif
whismanoid 0:cb44e2e9ec4c 198 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 199 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 200 // TARGET=MAX32630FTHR ARM Cortex-M4F 96MHz 2048kB Flash 512kB SRAM
whismanoid 0:cb44e2e9ec4c 201 // +-------------[microUSB]-------------+
whismanoid 0:cb44e2e9ec4c 202 // | J1 MAX32630FTHR J2 |
whismanoid 0:cb44e2e9ec4c 203 // ______ | [ ] RST GND [ ] |
whismanoid 0:cb44e2e9ec4c 204 // ______ | [ ] 3V3 BAT+[ ] |
whismanoid 0:cb44e2e9ec4c 205 // ______ | [ ] 1V8 reset SW1 |
whismanoid 0:cb44e2e9ec4c 206 // ______ | [ ] GND J4 J3 |
whismanoid 0:cb44e2e9ec4c 207 // analogIn0/4 | [a] AIN_0 1.2Vfs (bat) SYS [ ] | switched BAT+
whismanoid 0:cb44e2e9ec4c 208 // analogIn1/5 | [a] AIN_1 1.2Vfs PWR [ ] | external pwr btn
whismanoid 0:cb44e2e9ec4c 209 // analogIn2 | [a] AIN_2 1.2Vfs +5V VBUS [ ] | USB +5V power
whismanoid 0:cb44e2e9ec4c 210 // analogIn3 | [a] AIN_3 1.2Vfs 1-WIRE P4_0 [d] | D0 dig9
whismanoid 0:cb44e2e9ec4c 211 // (I2C2.SDA) | [d] P5_7 SDA2 SRN P5_6 [d] | D1 dig8
whismanoid 0:cb44e2e9ec4c 212 // (I2C2.SCL) | [d] P6_0 SCL2 SDIO3 P5_5 [d] | D2 dig7
whismanoid 0:cb44e2e9ec4c 213 // D13/SCLK | [s] P5_0 SCLK SDIO2 P5_4 [d] | D3 dig6
whismanoid 0:cb44e2e9ec4c 214 // D11/MOSI | [s] P5_1 MOSI SSEL P5_3 [d] | D4 dig5
whismanoid 0:cb44e2e9ec4c 215 // D12/MISO | [s] P5_2 MISO RTS P3_3 [d] | D5 dig4
whismanoid 0:cb44e2e9ec4c 216 // D10/CS | [s] P3_0 RX CTS P3_2 [d] | D6 dig3
whismanoid 0:cb44e2e9ec4c 217 // D9 dig0 | [d] P3_1 TX SCL P3_5 [d] | D7 dig2
whismanoid 0:cb44e2e9ec4c 218 // ______ | [ ] GND SDA P3_4 [d] | D8 dig1
whismanoid 0:cb44e2e9ec4c 219 // | |
whismanoid 0:cb44e2e9ec4c 220 // | XIP Flash MAX14690N |
whismanoid 0:cb44e2e9ec4c 221 // | XIP_SCLK P1_0 SDA2 P5_7 |
whismanoid 0:cb44e2e9ec4c 222 // | XIP_MOSI P1_1 SCL2 P6_0 |
whismanoid 0:cb44e2e9ec4c 223 // | XIP_MISO P1_2 PMIC_INIT P3_7 |
whismanoid 0:cb44e2e9ec4c 224 // | XIP_SSEL P1_3 MPC P2_7 |
whismanoid 0:cb44e2e9ec4c 225 // | XIP_DIO2 P1_4 MON AIN_0 |
whismanoid 0:cb44e2e9ec4c 226 // | XIP_DIO3 P1_5 |
whismanoid 0:cb44e2e9ec4c 227 // | |
whismanoid 0:cb44e2e9ec4c 228 // | PAN1326B MicroSD LED |
whismanoid 0:cb44e2e9ec4c 229 // | BT_RX P0_0 SD_SCLK P0_4 r P2_4 |
whismanoid 0:cb44e2e9ec4c 230 // | BT_TX P0_1 SD_MOSI P0_5 g P2_5 |
whismanoid 0:cb44e2e9ec4c 231 // | BT_CTS P0_2 SD_MISO P0_6 b P2_6 |
whismanoid 0:cb44e2e9ec4c 232 // | BT_RTS P0_3 SD_SSEL P0_7 |
whismanoid 0:cb44e2e9ec4c 233 // | BT_RST P1_6 DETECT P2_2 |
whismanoid 0:cb44e2e9ec4c 234 // | BT_CLK P1_7 SW2 P2_3 |
whismanoid 0:cb44e2e9ec4c 235 // +------------------------------------+
whismanoid 0:cb44e2e9ec4c 236 // 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 237 // 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 238 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 239 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 240 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 241 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 242 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 243 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 244 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 245 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 246 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 247 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 248 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 249 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 250 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 251 //
whismanoid 0:cb44e2e9ec4c 252 #include "max32630fthr.h"
whismanoid 0:cb44e2e9ec4c 253 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 0:cb44e2e9ec4c 254 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:cb44e2e9ec4c 255 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 0:cb44e2e9ec4c 256 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 0:cb44e2e9ec4c 257 // Arduino connector
whismanoid 0:cb44e2e9ec4c 258 #ifndef A0
whismanoid 0:cb44e2e9ec4c 259 #define A0 AIN_0
whismanoid 0:cb44e2e9ec4c 260 #endif
whismanoid 0:cb44e2e9ec4c 261 #ifndef A1
whismanoid 0:cb44e2e9ec4c 262 #define A1 AIN_1
whismanoid 0:cb44e2e9ec4c 263 #endif
whismanoid 0:cb44e2e9ec4c 264 #ifndef A2
whismanoid 0:cb44e2e9ec4c 265 #define A2 AIN_2
whismanoid 0:cb44e2e9ec4c 266 #endif
whismanoid 0:cb44e2e9ec4c 267 #ifndef A3
whismanoid 0:cb44e2e9ec4c 268 #define A3 AIN_3
whismanoid 0:cb44e2e9ec4c 269 #endif
whismanoid 0:cb44e2e9ec4c 270 #ifndef D0
whismanoid 0:cb44e2e9ec4c 271 #define D0 P4_0
whismanoid 0:cb44e2e9ec4c 272 #endif
whismanoid 0:cb44e2e9ec4c 273 #ifndef D1
whismanoid 0:cb44e2e9ec4c 274 #define D1 P5_6
whismanoid 0:cb44e2e9ec4c 275 #endif
whismanoid 0:cb44e2e9ec4c 276 #ifndef D2
whismanoid 0:cb44e2e9ec4c 277 #define D2 P5_5
whismanoid 0:cb44e2e9ec4c 278 #endif
whismanoid 0:cb44e2e9ec4c 279 #ifndef D3
whismanoid 0:cb44e2e9ec4c 280 #define D3 P5_4
whismanoid 0:cb44e2e9ec4c 281 #endif
whismanoid 0:cb44e2e9ec4c 282 #ifndef D4
whismanoid 0:cb44e2e9ec4c 283 #define D4 P5_3
whismanoid 0:cb44e2e9ec4c 284 #endif
whismanoid 0:cb44e2e9ec4c 285 #ifndef D5
whismanoid 0:cb44e2e9ec4c 286 #define D5 P3_3
whismanoid 0:cb44e2e9ec4c 287 #endif
whismanoid 0:cb44e2e9ec4c 288 #ifndef D6
whismanoid 0:cb44e2e9ec4c 289 #define D6 P3_2
whismanoid 0:cb44e2e9ec4c 290 #endif
whismanoid 0:cb44e2e9ec4c 291 #ifndef D7
whismanoid 0:cb44e2e9ec4c 292 #define D7 P3_5
whismanoid 0:cb44e2e9ec4c 293 #endif
whismanoid 0:cb44e2e9ec4c 294 #ifndef D8
whismanoid 0:cb44e2e9ec4c 295 #define D8 P3_4
whismanoid 0:cb44e2e9ec4c 296 #endif
whismanoid 0:cb44e2e9ec4c 297 #ifndef D9
whismanoid 0:cb44e2e9ec4c 298 #define D9 P3_1
whismanoid 0:cb44e2e9ec4c 299 #endif
whismanoid 0:cb44e2e9ec4c 300 #ifndef D10
whismanoid 0:cb44e2e9ec4c 301 #define D10 P3_0
whismanoid 0:cb44e2e9ec4c 302 #endif
whismanoid 0:cb44e2e9ec4c 303 #ifndef D11
whismanoid 0:cb44e2e9ec4c 304 #define D11 P5_1
whismanoid 0:cb44e2e9ec4c 305 #endif
whismanoid 0:cb44e2e9ec4c 306 #ifndef D12
whismanoid 0:cb44e2e9ec4c 307 #define D12 P5_2
whismanoid 0:cb44e2e9ec4c 308 #endif
whismanoid 0:cb44e2e9ec4c 309 #ifndef D13
whismanoid 0:cb44e2e9ec4c 310 #define D13 P5_0
whismanoid 0:cb44e2e9ec4c 311 #endif
whismanoid 0:cb44e2e9ec4c 312 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 313 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 314 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 315 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 316 // +-------------------------------------+
whismanoid 0:cb44e2e9ec4c 317 // | MAX32625MBED Arduino UNO header |
whismanoid 0:cb44e2e9ec4c 318 // | |
whismanoid 0:cb44e2e9ec4c 319 // | A5/SCL[ ] | P1_7 dig15
whismanoid 0:cb44e2e9ec4c 320 // | A4/SDA[ ] | P1_6 dig14
whismanoid 0:cb44e2e9ec4c 321 // | AREF=N/C[ ] |
whismanoid 0:cb44e2e9ec4c 322 // | GND[ ] |
whismanoid 0:cb44e2e9ec4c 323 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 0:cb44e2e9ec4c 324 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 0:cb44e2e9ec4c 325 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 0:cb44e2e9ec4c 326 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 0:cb44e2e9ec4c 327 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 0:cb44e2e9ec4c 328 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 0:cb44e2e9ec4c 329 // | [ ]GND |
whismanoid 0:cb44e2e9ec4c 330 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 0:cb44e2e9ec4c 331 // | 6[ ]~| P0_6 dig6
whismanoid 0:cb44e2e9ec4c 332 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 0:cb44e2e9ec4c 333 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 0:cb44e2e9ec4c 334 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 0:cb44e2e9ec4c 335 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 0:cb44e2e9ec4c 336 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 0:cb44e2e9ec4c 337 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 0:cb44e2e9ec4c 338 // | [ ] [ ] [ ] |
whismanoid 0:cb44e2e9ec4c 339 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 0:cb44e2e9ec4c 340 // \_______________________/
whismanoid 0:cb44e2e9ec4c 341 //
whismanoid 0:cb44e2e9ec4c 342 // +------------------------+
whismanoid 0:cb44e2e9ec4c 343 // | |
whismanoid 0:cb44e2e9ec4c 344 // | MicroSD LED |
whismanoid 0:cb44e2e9ec4c 345 // | SD_SCLK P2_4 r P3_0 |
whismanoid 0:cb44e2e9ec4c 346 // | SD_MOSI P2_5 g P3_1 |
whismanoid 0:cb44e2e9ec4c 347 // | SD_MISO P2_6 b P3_2 |
whismanoid 0:cb44e2e9ec4c 348 // | SD_SSEL P2_7 y P3_3 |
whismanoid 0:cb44e2e9ec4c 349 // | |
whismanoid 0:cb44e2e9ec4c 350 // | DAPLINK BUTTONS |
whismanoid 0:cb44e2e9ec4c 351 // | TX P2_1 SW3 P2_3 |
whismanoid 0:cb44e2e9ec4c 352 // | RX P2_0 SW2 P2_2 |
whismanoid 0:cb44e2e9ec4c 353 // +------------------------+
whismanoid 0:cb44e2e9ec4c 354 //
whismanoid 0:cb44e2e9ec4c 355 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 356 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 357 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 358 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 359 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 360 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 361 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 362 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 363 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 364 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 365 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 366 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 367 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 368 //
whismanoid 0:cb44e2e9ec4c 369 //#include "max32625mbed.h" // ?
whismanoid 0:cb44e2e9ec4c 370 //MAX32625MBED mbed(MAX32625MBED::VIO_3V3); // ?
whismanoid 0:cb44e2e9ec4c 371 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:cb44e2e9ec4c 372 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 0:cb44e2e9ec4c 373 const float ADC_FULL_SCALE_VOLTAGE = 1.200; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 0:cb44e2e9ec4c 374 // Arduino connector
whismanoid 0:cb44e2e9ec4c 375 #ifndef A0
whismanoid 0:cb44e2e9ec4c 376 #define A0 AIN_0
whismanoid 0:cb44e2e9ec4c 377 #endif
whismanoid 0:cb44e2e9ec4c 378 #ifndef A1
whismanoid 0:cb44e2e9ec4c 379 #define A1 AIN_1
whismanoid 0:cb44e2e9ec4c 380 #endif
whismanoid 0:cb44e2e9ec4c 381 #ifndef A2
whismanoid 0:cb44e2e9ec4c 382 #define A2 AIN_2
whismanoid 0:cb44e2e9ec4c 383 #endif
whismanoid 0:cb44e2e9ec4c 384 #ifndef A3
whismanoid 0:cb44e2e9ec4c 385 #define A3 AIN_3
whismanoid 0:cb44e2e9ec4c 386 #endif
whismanoid 0:cb44e2e9ec4c 387 #ifndef D0
whismanoid 0:cb44e2e9ec4c 388 #define D0 P0_0
whismanoid 0:cb44e2e9ec4c 389 #endif
whismanoid 0:cb44e2e9ec4c 390 #ifndef D1
whismanoid 0:cb44e2e9ec4c 391 #define D1 P0_1
whismanoid 0:cb44e2e9ec4c 392 #endif
whismanoid 0:cb44e2e9ec4c 393 #ifndef D2
whismanoid 0:cb44e2e9ec4c 394 #define D2 P0_2
whismanoid 0:cb44e2e9ec4c 395 #endif
whismanoid 0:cb44e2e9ec4c 396 #ifndef D3
whismanoid 0:cb44e2e9ec4c 397 #define D3 P0_3
whismanoid 0:cb44e2e9ec4c 398 #endif
whismanoid 0:cb44e2e9ec4c 399 #ifndef D4
whismanoid 0:cb44e2e9ec4c 400 #define D4 P0_4
whismanoid 0:cb44e2e9ec4c 401 #endif
whismanoid 0:cb44e2e9ec4c 402 #ifndef D5
whismanoid 0:cb44e2e9ec4c 403 #define D5 P0_5
whismanoid 0:cb44e2e9ec4c 404 #endif
whismanoid 0:cb44e2e9ec4c 405 #ifndef D6
whismanoid 0:cb44e2e9ec4c 406 #define D6 P0_6
whismanoid 0:cb44e2e9ec4c 407 #endif
whismanoid 0:cb44e2e9ec4c 408 #ifndef D7
whismanoid 0:cb44e2e9ec4c 409 #define D7 P0_7
whismanoid 0:cb44e2e9ec4c 410 #endif
whismanoid 0:cb44e2e9ec4c 411 #ifndef D8
whismanoid 0:cb44e2e9ec4c 412 #define D8 P1_4
whismanoid 0:cb44e2e9ec4c 413 #endif
whismanoid 0:cb44e2e9ec4c 414 #ifndef D9
whismanoid 0:cb44e2e9ec4c 415 #define D9 P1_5
whismanoid 0:cb44e2e9ec4c 416 #endif
whismanoid 0:cb44e2e9ec4c 417 #ifndef D10
whismanoid 0:cb44e2e9ec4c 418 #define D10 P1_3
whismanoid 0:cb44e2e9ec4c 419 #endif
whismanoid 0:cb44e2e9ec4c 420 #ifndef D11
whismanoid 0:cb44e2e9ec4c 421 #define D11 P1_1
whismanoid 0:cb44e2e9ec4c 422 #endif
whismanoid 0:cb44e2e9ec4c 423 #ifndef D12
whismanoid 0:cb44e2e9ec4c 424 #define D12 P1_2
whismanoid 0:cb44e2e9ec4c 425 #endif
whismanoid 0:cb44e2e9ec4c 426 #ifndef D13
whismanoid 0:cb44e2e9ec4c 427 #define D13 P1_0
whismanoid 0:cb44e2e9ec4c 428 #endif
whismanoid 0:cb44e2e9ec4c 429 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 430 #elif defined(TARGET_MAX32600)
whismanoid 0:cb44e2e9ec4c 431 // target MAX32600
whismanoid 0:cb44e2e9ec4c 432 //
whismanoid 0:cb44e2e9ec4c 433 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:cb44e2e9ec4c 434 const float ADC_FULL_SCALE_VOLTAGE = 1.500;
whismanoid 0:cb44e2e9ec4c 435 //
whismanoid 0:cb44e2e9ec4c 436 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 437 #elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 438 #warning "TARGET_MAX32620FTHR not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 439 #include "MAX32620FTHR.h"
whismanoid 0:cb44e2e9ec4c 440 // Initialize I/O voltages on MAX32620FTHR board
whismanoid 0:cb44e2e9ec4c 441 MAX32620FTHR fthr(MAX32620FTHR::VIO_3V3);
whismanoid 0:cb44e2e9ec4c 442 //#define USE_LEDS 0 ?
whismanoid 0:cb44e2e9ec4c 443 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 0:cb44e2e9ec4c 444 #warning "TARGET_MAX32620FTHR not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 0:cb44e2e9ec4c 445 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 0:cb44e2e9ec4c 446 //
whismanoid 0:cb44e2e9ec4c 447 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 448 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 15:37c83ec50ea0 449 // #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 450 #include "max32625pico.h"
whismanoid 0:cb44e2e9ec4c 451 // configure MAX32625PICO VDDIOH mode, and I/O voltages for DIP pins and SWD pins
whismanoid 0:cb44e2e9ec4c 452 MAX32625PICO pico(
whismanoid 13:184a08909405 453 // Select source of higher-voltage logic high supply VDDIOH
whismanoid 0:cb44e2e9ec4c 454 // vddioh_mode_t iohMode
whismanoid 0:cb44e2e9ec4c 455 //~ MAX32625PICO::IOH_OFF, // No connections to VDDIOH
whismanoid 0:cb44e2e9ec4c 456 //~ MAX32625PICO::IOH_DIP_IN, // VDDIOH input from DIP pin 1 (AIN0)
whismanoid 0:cb44e2e9ec4c 457 //~ MAX32625PICO::IOH_SWD_IN, // VDDIOH input from SWD pin 1
whismanoid 0:cb44e2e9ec4c 458 MAX32625PICO::IOH_3V3, // VDDIOH = 3.3V from local supply
whismanoid 0:cb44e2e9ec4c 459 //~ MAX32625PICO::IOH_DIP_OUT, // VDDIOH = 3.3V output to DIP pin 1
whismanoid 0:cb44e2e9ec4c 460 //~ MAX32625PICO::IOH_SWD_OUT, // VDDIOH = 3.3V output to SWD pin 1
whismanoid 0:cb44e2e9ec4c 461 //
whismanoid 13:184a08909405 462 // Digital I/O pin logic high voltage 1.8V or 3.3V
whismanoid 0:cb44e2e9ec4c 463 // vio_t dipVio = MAX32625PICO::VIO_1V8 or MAX32625PICO::VIO_IOH
whismanoid 13:184a08909405 464 MAX32625PICO::VIO_1V8, // 1.8V IO (local)
whismanoid 13:184a08909405 465 //~ MAX32625PICO::VIO_IOH, // Use VDDIOH (from DIP pin 1, or SWD pin1, or local 3.3V)
whismanoid 0:cb44e2e9ec4c 466 //
whismanoid 13:184a08909405 467 // Software Debug logic high voltage (normally use VIO_IOH)
whismanoid 0:cb44e2e9ec4c 468 // vio_t swdVio
whismanoid 0:cb44e2e9ec4c 469 //~ MAX32625PICO::VIO_1V8 // 1.8V IO (local)
whismanoid 0:cb44e2e9ec4c 470 MAX32625PICO::VIO_IOH // Use VDDIOH (from DIP pin 1, or SWD pin1, or local 3.3V)
whismanoid 0:cb44e2e9ec4c 471 );
whismanoid 0:cb44e2e9ec4c 472 //#define USE_LEDS 0 ?
whismanoid 0:cb44e2e9ec4c 473 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 15:37c83ec50ea0 474 // #warning "TARGET_MAX32625PICO not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 0:cb44e2e9ec4c 475 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 0:cb44e2e9ec4c 476 //
whismanoid 0:cb44e2e9ec4c 477 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 478 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 479 // TODO1: target NUCLEO_F446RE
whismanoid 0:cb44e2e9ec4c 480 //
whismanoid 0:cb44e2e9ec4c 481 // USER_BUTTON PC13
whismanoid 0:cb44e2e9ec4c 482 // LED1 is shared with SPI_SCK on NUCLEO_F446RE PA_5, so don't use LED1.
whismanoid 0:cb44e2e9ec4c 483 #define USE_LEDS 0
whismanoid 0:cb44e2e9ec4c 484 // SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
whismanoid 0:cb44e2e9ec4c 485 // Serial serial(SERIAL_TX, SERIAL_RX);
whismanoid 0:cb44e2e9ec4c 486 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:cb44e2e9ec4c 487 const float ADC_FULL_SCALE_VOLTAGE = 3.300; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 0:cb44e2e9ec4c 488 //
whismanoid 0:cb44e2e9ec4c 489 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 490 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 491 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 492 // TARGET=LPC1768 ARM Cortex-M3 100 MHz 512kB flash 64kB SRAM
whismanoid 0:cb44e2e9ec4c 493 // +-------------[microUSB]-------------+
whismanoid 0:cb44e2e9ec4c 494 // ______ | [ ] GND +3.3V VOUT [ ] | ______
whismanoid 0:cb44e2e9ec4c 495 // ______ | [ ] 4.5V<VIN<9.0V +5.0V VU [ ] | ______
whismanoid 0:cb44e2e9ec4c 496 // ______ | [ ] VB USB.IF- [ ] | ______
whismanoid 0:cb44e2e9ec4c 497 // ______ | [ ] nR USB.IF+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 498 // digitalInOut0 | [ ] p5 MOSI ETHERNET.RD- [ ] | ______
whismanoid 0:cb44e2e9ec4c 499 // digitalInOut1 | [ ] p6 MISO ETHERNET.RD+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 500 // digitalInOut2 | [ ] p7 SCLK ETHERNET.TD- [ ] | ______
whismanoid 0:cb44e2e9ec4c 501 // digitalInOut3 | [ ] p8 ETHERNET.TD+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 502 // digitalInOut4 | [ ] p9 TX SDA USB.D- [ ] | ______
whismanoid 0:cb44e2e9ec4c 503 // digitalInOut5 | [ ] p10 RX SCL USB.D+ [ ] | ______
whismanoid 0:cb44e2e9ec4c 504 // digitalInOut6 | [ ] p11 MOSI CAN-RD p30 [ ] | digitalInOut13
whismanoid 0:cb44e2e9ec4c 505 // digitalInOut7 | [ ] p12 MISO CAN-TD p29 [ ] | digitalInOut12
whismanoid 0:cb44e2e9ec4c 506 // digitalInOut8 | [ ] p13 TX SCLK SDA TX p28 [ ] | digitalInOut11
whismanoid 0:cb44e2e9ec4c 507 // digitalInOut9 | [ ] p14 RX SCL RX p27 [ ] | digitalInOut10
whismanoid 0:cb44e2e9ec4c 508 // analogIn0 | [ ] p15 AIN0 3.3Vfs PWM1 p26 [ ] | pwmDriver1
whismanoid 0:cb44e2e9ec4c 509 // analogIn1 | [ ] p16 AIN1 3.3Vfs PWM2 p25 [ ] | pwmDriver2
whismanoid 0:cb44e2e9ec4c 510 // analogIn2 | [ ] p17 AIN2 3.3Vfs PWM3 p24 [ ] | pwmDriver3
whismanoid 0:cb44e2e9ec4c 511 // analogIn3 | [ ] p18 AIN3 AOUT PWM4 p23 [ ] | pwmDriver4
whismanoid 0:cb44e2e9ec4c 512 // analogIn4 | [ ] p19 AIN4 3.3Vfs PWM5 p22 [ ] | pwmDriver5
whismanoid 0:cb44e2e9ec4c 513 // analogIn5 | [ ] p20 AIN5 3.3Vfs PWM6 p21 [ ] | pwmDriver6
whismanoid 0:cb44e2e9ec4c 514 // +------------------------------------+
whismanoid 0:cb44e2e9ec4c 515 // AIN6 = P0.3 = TGT_SBL_RXD?
whismanoid 0:cb44e2e9ec4c 516 // AIN7 = P0.2 = TGT_SBL_TXD?
whismanoid 0:cb44e2e9ec4c 517 //
whismanoid 0:cb44e2e9ec4c 518 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 519 // LPC1768 board uses VREF = 3.300V +A3,3V thru L1 to bypass capacitor C14
whismanoid 0:cb44e2e9ec4c 520 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 0:cb44e2e9ec4c 521 const float ADC_FULL_SCALE_VOLTAGE = 3.300;
whismanoid 0:cb44e2e9ec4c 522 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 0:cb44e2e9ec4c 523 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 524 // unknown target
whismanoid 0:cb44e2e9ec4c 525 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 526 #endif // target definition
whismanoid 0:cb44e2e9ec4c 527
whismanoid 0:cb44e2e9ec4c 528
whismanoid 0:cb44e2e9ec4c 529
whismanoid 0:cb44e2e9ec4c 530
whismanoid 18:1235c17b451e 531 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 532 // move definiton of USE_LEDS earlier than find_digitalInOutPin()
whismanoid 18:1235c17b451e 533 //--------------------------------------------------
whismanoid 18:1235c17b451e 534 // Option to use LEDs to show status
whismanoid 18:1235c17b451e 535 #ifndef USE_LEDS
whismanoid 18:1235c17b451e 536 #define USE_LEDS 1
whismanoid 18:1235c17b451e 537 #endif
whismanoid 18:1235c17b451e 538 #if USE_LEDS
whismanoid 18:1235c17b451e 539 #if defined(TARGET_MAX32630)
whismanoid 18:1235c17b451e 540 # define LED_ON 0
whismanoid 18:1235c17b451e 541 # define LED_OFF 1
whismanoid 18:1235c17b451e 542 //--------------------------------------------------
whismanoid 18:1235c17b451e 543 #elif defined(TARGET_MAX32625MBED)
whismanoid 18:1235c17b451e 544 # define LED_ON 0
whismanoid 18:1235c17b451e 545 # define LED_OFF 1
whismanoid 19:5ff09c8e9daf 546 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 18:1235c17b451e 547 # define LED_ON 0
whismanoid 18:1235c17b451e 548 # define LED_OFF 1
whismanoid 18:1235c17b451e 549 //--------------------------------------------------
whismanoid 18:1235c17b451e 550 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 18:1235c17b451e 551 #elif defined(TARGET_LPC1768)
whismanoid 18:1235c17b451e 552 # define LED_ON 1
whismanoid 18:1235c17b451e 553 # define LED_OFF 0
whismanoid 18:1235c17b451e 554 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 18:1235c17b451e 555 // USE_LEDS with some platform other than MAX32630, MAX32625MBED, LPC1768
whismanoid 18:1235c17b451e 556 // bugfix for MAX32600MBED LED blink pattern: check if LED_ON/LED_OFF already defined
whismanoid 18:1235c17b451e 557 # ifndef LED_ON
whismanoid 18:1235c17b451e 558 # define LED_ON 0
whismanoid 18:1235c17b451e 559 # endif
whismanoid 18:1235c17b451e 560 # ifndef LED_OFF
whismanoid 18:1235c17b451e 561 # define LED_OFF 1
whismanoid 18:1235c17b451e 562 # endif
whismanoid 18:1235c17b451e 563 //# define LED_ON 1
whismanoid 18:1235c17b451e 564 //# define LED_OFF 0
whismanoid 18:1235c17b451e 565 #endif // target definition
whismanoid 18:1235c17b451e 566 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 567 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 568 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 569 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 570 // change led1/2/3/4 from DigitalOut to DigitalInOut
whismanoid 18:1235c17b451e 571 DigitalInOut led1(LED1, PIN_INPUT, PullUp, LED_OFF); // MAX32630FTHR: LED1 = LED_RED
whismanoid 18:1235c17b451e 572 DigitalInOut led2(LED2, PIN_INPUT, PullUp, LED_OFF); // MAX32630FTHR: LED2 = LED_GREEN
whismanoid 18:1235c17b451e 573 DigitalInOut led3(LED3, PIN_INPUT, PullUp, LED_OFF); // MAX32630FTHR: LED3 = LED_BLUE
whismanoid 18:1235c17b451e 574 DigitalInOut led4(LED4, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 575 #else // USE_LEDS=0
whismanoid 18:1235c17b451e 576 // issue #41 support Nucleo_F446RE
whismanoid 18:1235c17b451e 577 // there are no LED indicators on the board, LED1 interferes with SPI;
whismanoid 18:1235c17b451e 578 // but we still need placeholders led1 led2 led3 led4.
whismanoid 18:1235c17b451e 579 // Declare DigitalInOut led1 led2 led3 led4 targeting safe pins.
whismanoid 18:1235c17b451e 580 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 18:1235c17b451e 581 # define LED_ON 0
whismanoid 18:1235c17b451e 582 # define LED_OFF 1
whismanoid 18:1235c17b451e 583 // change led1/2/3/4 from DigitalOut to DigitalInOut
whismanoid 18:1235c17b451e 584 DigitalInOut led1(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 585 DigitalInOut led2(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 586 DigitalInOut led3(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 587 DigitalInOut led4(NC, PIN_INPUT, PullUp, LED_OFF);
whismanoid 18:1235c17b451e 588 #endif // USE_LEDS
whismanoid 18:1235c17b451e 589 #define led1_RFailLED led1
whismanoid 18:1235c17b451e 590 #define led2_GPassLED led2
whismanoid 18:1235c17b451e 591 #define led3_BBusyLED led3
whismanoid 18:1235c17b451e 592
whismanoid 21:ac062a97a71d 593 //--------------------------------------------------
whismanoid 21:ac062a97a71d 594 // use BUTTON1 trigger some action
whismanoid 21:ac062a97a71d 595 #if defined(TARGET_MAX32630)
whismanoid 21:ac062a97a71d 596 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 597 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 598 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 599 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 25:8a61cb34191d 600 // #warning "TARGET_MAX32625PICO not previously tested; need to define buttons..."
whismanoid 21:ac062a97a71d 601 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 24:032f3683cb2a 602 #if MAX40108_DEMO
whismanoid 25:8a61cb34191d 603 #if HAS_I2C
whismanoid 25:8a61cb34191d 604 // MAX40108DEMOP2U9 HAS_I2C: J91.1=1V8 J91.2=P1_6(SDA) J91.3=P1_7(SCL) J91.4=GND
whismanoid 25:8a61cb34191d 605 // MAX40108DEMOP2U9 HAS_I2C: move button2/button3 to inaccessible pins P3_6 and P3_7 if we need J91 for I2C
whismanoid 24:032f3683cb2a 606 #define BUTTON2 P3_7
whismanoid 25:8a61cb34191d 607 #else // HAS_I2C
whismanoid 25:8a61cb34191d 608 // MAX40108DEMOP2U9 no HAS_I2C: option using J91 for button2 and button3 instead of I2C
whismanoid 25:8a61cb34191d 609 // 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 610 // MAX40108DEMOP2U9 no HAS_I2C: avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 611 #define BUTTON2 P1_7
whismanoid 25:8a61cb34191d 612 #endif // HAS_I2C
whismanoid 24:032f3683cb2a 613 #define HAS_BUTTON2_DEMO 0
whismanoid 24:032f3683cb2a 614 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 25:8a61cb34191d 615 #if HAS_I2C
whismanoid 25:8a61cb34191d 616 // MAX40108DEMOP2U9 HAS_I2C: J91.1=1V8 J91.2=P1_6(SDA) J91.3=P1_7(SCL) J91.4=GND
whismanoid 25:8a61cb34191d 617 // MAX40108DEMOP2U9 HAS_I2C: move button2/button3 to inaccessible pins P3_6 and P3_7 if we need J91 for I2C
whismanoid 24:032f3683cb2a 618 #define BUTTON3 P3_6
whismanoid 25:8a61cb34191d 619 #else // HAS_I2C
whismanoid 25:8a61cb34191d 620 // MAX40108DEMOP2U9 no HAS_I2C: option using J91 for button2 and button3 instead of I2C
whismanoid 25:8a61cb34191d 621 // 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 622 // MAX40108DEMOP2U9 no HAS_I2C: avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 623 #define BUTTON3 P1_6
whismanoid 25:8a61cb34191d 624 #endif // HAS_I2C
whismanoid 24:032f3683cb2a 625 #define HAS_BUTTON3_DEMO 0
whismanoid 24:032f3683cb2a 626 #define HAS_BUTTON3_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 627 // additional buttons are assigned to unused/unaccessible pins to avoid conflicts
whismanoid 29:6a9edb6e973b 628 // activate using %B4! or action_button pin=4
whismanoid 29:6a9edb6e973b 629 #define BUTTON4 P1_5
whismanoid 29:6a9edb6e973b 630 #define HAS_BUTTON4_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 631 #define BUTTON5 P1_4
whismanoid 29:6a9edb6e973b 632 #define HAS_BUTTON5_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 633 #define BUTTON6 P1_3
whismanoid 29:6a9edb6e973b 634 #define HAS_BUTTON6_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 635 #define BUTTON7 P1_2
whismanoid 29:6a9edb6e973b 636 #define HAS_BUTTON7_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 637 #define BUTTON8 P1_1
whismanoid 29:6a9edb6e973b 638 #define HAS_BUTTON8_DEMO_INTERRUPT 1
whismanoid 29:6a9edb6e973b 639 #define BUTTON9 P1_0
whismanoid 29:6a9edb6e973b 640 #define HAS_BUTTON9_DEMO_INTERRUPT 1
whismanoid 24:032f3683cb2a 641 #else // MAX40108_DEMO
whismanoid 21:ac062a97a71d 642 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 643 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 29:6a9edb6e973b 644 #endif // MAX40108_DEMO ---------------------------------
whismanoid 21:ac062a97a71d 645 #elif defined(TARGET_MAX32625)
whismanoid 21:ac062a97a71d 646 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 647 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 648 #elif defined(TARGET_MAX32620FTHR)
whismanoid 21:ac062a97a71d 649 #warning "TARGET_MAX32620FTHR not previously tested; need to define buttons..."
whismanoid 21:ac062a97a71d 650 #define BUTTON1 SW1
whismanoid 21:ac062a97a71d 651 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 652 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 653 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 654 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 21:ac062a97a71d 655 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 656 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 657 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 21:ac062a97a71d 658 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 659 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 21:ac062a97a71d 660 #else
whismanoid 21:ac062a97a71d 661 #warning "target not previously tested; need to define buttons..."
whismanoid 21:ac062a97a71d 662 #endif
whismanoid 21:ac062a97a71d 663 //
whismanoid 21:ac062a97a71d 664 #ifndef HAS_BUTTON1_DEMO
whismanoid 21:ac062a97a71d 665 #define HAS_BUTTON1_DEMO 0
whismanoid 21:ac062a97a71d 666 #endif
whismanoid 21:ac062a97a71d 667 #ifndef HAS_BUTTON2_DEMO
whismanoid 21:ac062a97a71d 668 #define HAS_BUTTON2_DEMO 0
whismanoid 21:ac062a97a71d 669 #endif
whismanoid 24:032f3683cb2a 670 #ifndef HAS_BUTTON3_DEMO
whismanoid 24:032f3683cb2a 671 #define HAS_BUTTON3_DEMO 0
whismanoid 24:032f3683cb2a 672 #endif
whismanoid 21:ac062a97a71d 673 //
whismanoid 21:ac062a97a71d 674 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 675 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 676 #ifndef HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 677 #define HAS_BUTTON1_DEMO_INTERRUPT_POLLING 1
whismanoid 21:ac062a97a71d 678 #endif
whismanoid 21:ac062a97a71d 679 //
whismanoid 21:ac062a97a71d 680 #ifndef HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 681 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 682 #endif
whismanoid 21:ac062a97a71d 683 #ifndef HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 684 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 21:ac062a97a71d 685 #endif
whismanoid 21:ac062a97a71d 686 //
whismanoid 21:ac062a97a71d 687 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 688 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 689 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 690 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 691 DigitalIn button1(BUTTON1);
whismanoid 21:ac062a97a71d 692 # else
whismanoid 21:ac062a97a71d 693 InterruptIn button1(BUTTON1);
whismanoid 21:ac062a97a71d 694 # endif
whismanoid 21:ac062a97a71d 695 #elif HAS_BUTTON1_DEMO
whismanoid 21:ac062a97a71d 696 DigitalIn button1(BUTTON1);
whismanoid 21:ac062a97a71d 697 #endif
whismanoid 21:ac062a97a71d 698 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 699 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 700 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 701 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 702 DigitalIn button2(BUTTON2);
whismanoid 21:ac062a97a71d 703 # else
whismanoid 21:ac062a97a71d 704 InterruptIn button2(BUTTON2);
whismanoid 21:ac062a97a71d 705 # endif
whismanoid 21:ac062a97a71d 706 #elif HAS_BUTTON2_DEMO
whismanoid 21:ac062a97a71d 707 DigitalIn button2(BUTTON2);
whismanoid 21:ac062a97a71d 708 #endif
whismanoid 24:032f3683cb2a 709 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 710 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 24:032f3683cb2a 711 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 24:032f3683cb2a 712 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 24:032f3683cb2a 713 DigitalIn button3(BUTTON3);
whismanoid 24:032f3683cb2a 714 # else
whismanoid 24:032f3683cb2a 715 InterruptIn button3(BUTTON3);
whismanoid 24:032f3683cb2a 716 # endif
whismanoid 24:032f3683cb2a 717 #elif HAS_BUTTON3_DEMO
whismanoid 24:032f3683cb2a 718 DigitalIn button3(BUTTON3);
whismanoid 24:032f3683cb2a 719 #endif
whismanoid 21:ac062a97a71d 720
whismanoid 0:cb44e2e9ec4c 721 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:cb44e2e9ec4c 722 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 723 // Declare the DigitalInOut GPIO pins
whismanoid 0:cb44e2e9ec4c 724 // Optional digitalInOut support. If there is only one it should be digitalInOut1.
whismanoid 0:cb44e2e9ec4c 725 // D) Digital High/Low/Input Pin
whismanoid 0:cb44e2e9ec4c 726 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 727 // +-------------[microUSB]-------------+
whismanoid 0:cb44e2e9ec4c 728 // | J1 MAX32630FTHR J2 |
whismanoid 0:cb44e2e9ec4c 729 // | [ ] RST GND [ ] |
whismanoid 0:cb44e2e9ec4c 730 // | [ ] 3V3 BAT+[ ] |
whismanoid 0:cb44e2e9ec4c 731 // | [ ] 1V8 reset SW1 |
whismanoid 0:cb44e2e9ec4c 732 // | [ ] GND J4 J3 |
whismanoid 0:cb44e2e9ec4c 733 // | [ ] AIN_0 1.2Vfs (bat) SYS [ ] |
whismanoid 0:cb44e2e9ec4c 734 // | [ ] AIN_1 1.2Vfs PWR [ ] |
whismanoid 0:cb44e2e9ec4c 735 // | [ ] AIN_2 1.2Vfs +5V VBUS [ ] |
whismanoid 0:cb44e2e9ec4c 736 // | [ ] AIN_3 1.2Vfs 1-WIRE P4_0 [ ] | dig9
whismanoid 0:cb44e2e9ec4c 737 // dig10 | [x] P5_7 SDA2 SRN P5_6 [ ] | dig8
whismanoid 0:cb44e2e9ec4c 738 // dig11 | [x] P6_0 SCL2 SDIO3 P5_5 [ ] | dig7
whismanoid 0:cb44e2e9ec4c 739 // dig12 | [x] P5_0 SCLK SDIO2 P5_4 [ ] | dig6
whismanoid 0:cb44e2e9ec4c 740 // dig13 | [x] P5_1 MOSI SSEL P5_3 [x] | dig5
whismanoid 0:cb44e2e9ec4c 741 // dig14 | [ ] P5_2 MISO RTS P3_3 [ ] | dig4
whismanoid 0:cb44e2e9ec4c 742 // dig15 | [ ] P3_0 RX CTS P3_2 [ ] | dig3
whismanoid 0:cb44e2e9ec4c 743 // dig0 | [ ] P3_1 TX SCL P3_5 [x] | dig2
whismanoid 0:cb44e2e9ec4c 744 // | [ ] GND SDA P3_4 [x] | dig1
whismanoid 0:cb44e2e9ec4c 745 // +------------------------------------+
whismanoid 0:cb44e2e9ec4c 746 #define HAS_digitalInOut0 1 // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:cb44e2e9ec4c 747 #define HAS_digitalInOut1 1 // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:cb44e2e9ec4c 748 #define HAS_digitalInOut2 1 // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:cb44e2e9ec4c 749 #define HAS_digitalInOut3 1 // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:cb44e2e9ec4c 750 #define HAS_digitalInOut4 1 // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:cb44e2e9ec4c 751 #define HAS_digitalInOut5 1 // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:cb44e2e9ec4c 752 #define HAS_digitalInOut6 1 // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:cb44e2e9ec4c 753 #define HAS_digitalInOut7 1 // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:cb44e2e9ec4c 754 #define HAS_digitalInOut8 1 // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:cb44e2e9ec4c 755 #define HAS_digitalInOut9 1 // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:cb44e2e9ec4c 756 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 757 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 758 #define HAS_digitalInOut10 0 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 759 #define HAS_digitalInOut11 0 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 760 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 761 #define HAS_digitalInOut10 1 // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 762 #define HAS_digitalInOut11 1 // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 763 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 764 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 765 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 766 #define HAS_digitalInOut12 0 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 767 #define HAS_digitalInOut13 0 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 768 #define HAS_digitalInOut14 0 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 769 #define HAS_digitalInOut15 0 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 770 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 771 #define HAS_digitalInOut12 1 // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 772 #define HAS_digitalInOut13 1 // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 773 #define HAS_digitalInOut14 1 // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 774 #define HAS_digitalInOut15 1 // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 775 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 776 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 777 DigitalInOut digitalInOut0(P3_1, PIN_INPUT, PullUp, 1); // P3_1 TARGET_MAX32630 J1.15
whismanoid 0:cb44e2e9ec4c 778 #endif
whismanoid 0:cb44e2e9ec4c 779 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 780 DigitalInOut digitalInOut1(P3_4, PIN_INPUT, PullUp, 1); // P3_4 TARGET_MAX32630 J3.12
whismanoid 0:cb44e2e9ec4c 781 #endif
whismanoid 0:cb44e2e9ec4c 782 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 783 DigitalInOut digitalInOut2(P3_5, PIN_INPUT, PullUp, 1); // P3_5 TARGET_MAX32630 J3.11
whismanoid 0:cb44e2e9ec4c 784 #endif
whismanoid 0:cb44e2e9ec4c 785 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 786 DigitalInOut digitalInOut3(P3_2, PIN_INPUT, PullUp, 1); // P3_2 TARGET_MAX32630 J3.10
whismanoid 0:cb44e2e9ec4c 787 #endif
whismanoid 0:cb44e2e9ec4c 788 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 789 DigitalInOut digitalInOut4(P3_3, PIN_INPUT, PullUp, 1); // P3_3 TARGET_MAX32630 J3.9
whismanoid 0:cb44e2e9ec4c 790 #endif
whismanoid 0:cb44e2e9ec4c 791 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 792 DigitalInOut digitalInOut5(P5_3, PIN_INPUT, PullUp, 1); // P5_3 TARGET_MAX32630 J3.8
whismanoid 0:cb44e2e9ec4c 793 #endif
whismanoid 0:cb44e2e9ec4c 794 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 795 DigitalInOut digitalInOut6(P5_4, PIN_INPUT, PullUp, 1); // P5_4 TARGET_MAX32630 J3.7
whismanoid 0:cb44e2e9ec4c 796 #endif
whismanoid 0:cb44e2e9ec4c 797 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 798 DigitalInOut digitalInOut7(P5_5, PIN_INPUT, PullUp, 1); // P5_5 TARGET_MAX32630 J3.6
whismanoid 0:cb44e2e9ec4c 799 #endif
whismanoid 0:cb44e2e9ec4c 800 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 801 DigitalInOut digitalInOut8(P5_6, PIN_INPUT, PullUp, 1); // P5_6 TARGET_MAX32630 J3.5
whismanoid 0:cb44e2e9ec4c 802 #endif
whismanoid 0:cb44e2e9ec4c 803 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 804 DigitalInOut digitalInOut9(P4_0, PIN_INPUT, PullUp, 1); // P4_0 TARGET_MAX32630 J3.4
whismanoid 0:cb44e2e9ec4c 805 #endif
whismanoid 0:cb44e2e9ec4c 806 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 807 DigitalInOut digitalInOut10(P5_7, PIN_INPUT, PullUp, 1); // P5_7 TARGET_MAX32630 J1.9
whismanoid 0:cb44e2e9ec4c 808 #endif
whismanoid 0:cb44e2e9ec4c 809 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 810 DigitalInOut digitalInOut11(P6_0, PIN_INPUT, PullUp, 1); // P6_0 TARGET_MAX32630 J1.10
whismanoid 0:cb44e2e9ec4c 811 #endif
whismanoid 0:cb44e2e9ec4c 812 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 813 DigitalInOut digitalInOut12(P5_0, PIN_INPUT, PullUp, 1); // P5_0 TARGET_MAX32630 J1.11
whismanoid 0:cb44e2e9ec4c 814 #endif
whismanoid 0:cb44e2e9ec4c 815 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 816 DigitalInOut digitalInOut13(P5_1, PIN_INPUT, PullUp, 1); // P5_1 TARGET_MAX32630 J1.12
whismanoid 0:cb44e2e9ec4c 817 #endif
whismanoid 0:cb44e2e9ec4c 818 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 819 DigitalInOut digitalInOut14(P5_2, PIN_INPUT, PullUp, 1); // P5_2 TARGET_MAX32630 J1.13
whismanoid 0:cb44e2e9ec4c 820 #endif
whismanoid 0:cb44e2e9ec4c 821 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 822 DigitalInOut digitalInOut15(P3_0, PIN_INPUT, PullUp, 1); // P3_0 TARGET_MAX32630 J1.14
whismanoid 0:cb44e2e9ec4c 823 #endif
whismanoid 0:cb44e2e9ec4c 824 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 825 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 826 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 827 // +-------------------------------------+
whismanoid 0:cb44e2e9ec4c 828 // | MAX32625MBED Arduino UNO header |
whismanoid 0:cb44e2e9ec4c 829 // | |
whismanoid 0:cb44e2e9ec4c 830 // | A5/SCL[ ] | P1_7 dig15
whismanoid 0:cb44e2e9ec4c 831 // | A4/SDA[ ] | P1_6 dig14
whismanoid 0:cb44e2e9ec4c 832 // | AREF=N/C[ ] |
whismanoid 0:cb44e2e9ec4c 833 // | GND[ ] |
whismanoid 0:cb44e2e9ec4c 834 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 0:cb44e2e9ec4c 835 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 0:cb44e2e9ec4c 836 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 0:cb44e2e9ec4c 837 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 0:cb44e2e9ec4c 838 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 0:cb44e2e9ec4c 839 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 0:cb44e2e9ec4c 840 // | [ ]GND |
whismanoid 0:cb44e2e9ec4c 841 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 0:cb44e2e9ec4c 842 // | 6[ ]~| P0_6 dig6
whismanoid 0:cb44e2e9ec4c 843 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 0:cb44e2e9ec4c 844 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 0:cb44e2e9ec4c 845 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 0:cb44e2e9ec4c 846 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 0:cb44e2e9ec4c 847 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 0:cb44e2e9ec4c 848 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 0:cb44e2e9ec4c 849 // | [ ] [ ] [ ] |
whismanoid 0:cb44e2e9ec4c 850 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 0:cb44e2e9ec4c 851 // \_______________________/
whismanoid 0:cb44e2e9ec4c 852 //
whismanoid 0:cb44e2e9ec4c 853 #define HAS_digitalInOut0 1 // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:cb44e2e9ec4c 854 #define HAS_digitalInOut1 1 // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:cb44e2e9ec4c 855 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 856 #define HAS_digitalInOut2 0 // P0_2 TARGET_MAX32625MBED D2 -- MAX11131 EOC DigitalIn
whismanoid 0:cb44e2e9ec4c 857 #else
whismanoid 0:cb44e2e9ec4c 858 #define HAS_digitalInOut2 1 // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:cb44e2e9ec4c 859 #endif
whismanoid 0:cb44e2e9ec4c 860 #define HAS_digitalInOut3 1 // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:cb44e2e9ec4c 861 #define HAS_digitalInOut4 1 // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:cb44e2e9ec4c 862 #define HAS_digitalInOut5 1 // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:cb44e2e9ec4c 863 #define HAS_digitalInOut6 1 // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:cb44e2e9ec4c 864 #define HAS_digitalInOut7 1 // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:cb44e2e9ec4c 865 #define HAS_digitalInOut8 1 // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:cb44e2e9ec4c 866 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 867 #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:cb44e2e9ec4c 868 #else
whismanoid 0:cb44e2e9ec4c 869 #define HAS_digitalInOut9 1 // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:cb44e2e9ec4c 870 #endif
whismanoid 0:cb44e2e9ec4c 871 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 872 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 873 #define HAS_digitalInOut10 0 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 874 #define HAS_digitalInOut11 0 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 875 #define HAS_digitalInOut12 0 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 876 #define HAS_digitalInOut13 0 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 877 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 878 #define HAS_digitalInOut10 1 // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 879 #define HAS_digitalInOut11 1 // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 880 #define HAS_digitalInOut12 1 // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 881 #define HAS_digitalInOut13 1 // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 882 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 883 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 884 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 885 #define HAS_digitalInOut14 0 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 886 #define HAS_digitalInOut15 0 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 887 #define HAS_digitalInOut16 0 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 888 #define HAS_digitalInOut17 0 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 889 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 890 #define HAS_digitalInOut14 1 // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 891 #define HAS_digitalInOut15 1 // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 892 #define HAS_digitalInOut16 1 // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 893 #define HAS_digitalInOut17 1 // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 894 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 895 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 896 DigitalInOut digitalInOut0(P0_0, PIN_INPUT, PullUp, 1); // P0_0 TARGET_MAX32625MBED D0
whismanoid 0:cb44e2e9ec4c 897 #endif
whismanoid 0:cb44e2e9ec4c 898 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 899 DigitalInOut digitalInOut1(P0_1, PIN_INPUT, PullUp, 1); // P0_1 TARGET_MAX32625MBED D1
whismanoid 0:cb44e2e9ec4c 900 #endif
whismanoid 0:cb44e2e9ec4c 901 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 902 DigitalInOut digitalInOut2(P0_2, PIN_INPUT, PullUp, 1); // P0_2 TARGET_MAX32625MBED D2
whismanoid 0:cb44e2e9ec4c 903 #endif
whismanoid 0:cb44e2e9ec4c 904 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 905 DigitalInOut digitalInOut3(P0_3, PIN_INPUT, PullUp, 1); // P0_3 TARGET_MAX32625MBED D3
whismanoid 0:cb44e2e9ec4c 906 #endif
whismanoid 0:cb44e2e9ec4c 907 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 908 DigitalInOut digitalInOut4(P0_4, PIN_INPUT, PullUp, 1); // P0_4 TARGET_MAX32625MBED D4
whismanoid 0:cb44e2e9ec4c 909 #endif
whismanoid 0:cb44e2e9ec4c 910 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 911 DigitalInOut digitalInOut5(P0_5, PIN_INPUT, PullUp, 1); // P0_5 TARGET_MAX32625MBED D5
whismanoid 0:cb44e2e9ec4c 912 #endif
whismanoid 0:cb44e2e9ec4c 913 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 914 DigitalInOut digitalInOut6(P0_6, PIN_INPUT, PullUp, 1); // P0_6 TARGET_MAX32625MBED D6
whismanoid 0:cb44e2e9ec4c 915 #endif
whismanoid 0:cb44e2e9ec4c 916 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 917 DigitalInOut digitalInOut7(P0_7, PIN_INPUT, PullUp, 1); // P0_7 TARGET_MAX32625MBED D7
whismanoid 0:cb44e2e9ec4c 918 #endif
whismanoid 0:cb44e2e9ec4c 919 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 920 DigitalInOut digitalInOut8(P1_4, PIN_INPUT, PullUp, 1); // P1_4 TARGET_MAX32625MBED D8
whismanoid 0:cb44e2e9ec4c 921 #endif
whismanoid 0:cb44e2e9ec4c 922 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 923 DigitalInOut digitalInOut9(P1_5, PIN_INPUT, PullUp, 1); // P1_5 TARGET_MAX32625MBED D9
whismanoid 0:cb44e2e9ec4c 924 #endif
whismanoid 0:cb44e2e9ec4c 925 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 926 DigitalInOut digitalInOut10(P1_3, PIN_INPUT, PullUp, 1); // P1_3 TARGET_MAX32635MBED CS/10
whismanoid 0:cb44e2e9ec4c 927 #endif
whismanoid 0:cb44e2e9ec4c 928 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 929 DigitalInOut digitalInOut11(P1_1, PIN_INPUT, PullUp, 1); // P1_1 TARGET_MAX32635MBED MOSI/11
whismanoid 0:cb44e2e9ec4c 930 #endif
whismanoid 0:cb44e2e9ec4c 931 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 932 DigitalInOut digitalInOut12(P1_2, PIN_INPUT, PullUp, 1); // P1_2 TARGET_MAX32635MBED MISO/12
whismanoid 0:cb44e2e9ec4c 933 #endif
whismanoid 0:cb44e2e9ec4c 934 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 935 DigitalInOut digitalInOut13(P1_0, PIN_INPUT, PullUp, 1); // P1_0 TARGET_MAX32635MBED SCK/13
whismanoid 0:cb44e2e9ec4c 936 #endif
whismanoid 0:cb44e2e9ec4c 937 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 938 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 939 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:cb44e2e9ec4c 940 DigitalInOut digitalInOut14(P1_6, PIN_INPUT, OpenDrain, 1); // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 941 #endif
whismanoid 0:cb44e2e9ec4c 942 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 943 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 944 DigitalInOut digitalInOut15(P1_7, PIN_INPUT, OpenDrain, 1); // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 945 #endif
whismanoid 0:cb44e2e9ec4c 946 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 947 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 948 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 0:cb44e2e9ec4c 949 // PullUp-->3.4V, PullDown-->1.7V, PullNone-->3.5V, OpenDrain-->0.00V
whismanoid 0:cb44e2e9ec4c 950 DigitalInOut digitalInOut16(P3_4, PIN_INPUT, OpenDrain, 0); // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 951 #endif
whismanoid 0:cb44e2e9ec4c 952 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 953 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 0:cb44e2e9ec4c 954 DigitalInOut digitalInOut17(P3_5, PIN_INPUT, OpenDrain, 0); // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 955 #endif
whismanoid 0:cb44e2e9ec4c 956 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 957 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 15:37c83ec50ea0 958 // TARGET=MAX32625PICO ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 15:37c83ec50ea0 959 // +-------------[microUSB]-------------+
whismanoid 15:37c83ec50ea0 960 // | [27]D+ D-[26] |
whismanoid 15:37c83ec50ea0 961 // | |
whismanoid 15:37c83ec50ea0 962 // | [BUTTON P2_7] |
whismanoid 15:37c83ec50ea0 963 // | P2_4 LED_R P2_5 LED_G P2_6 LED_B |
whismanoid 15:37c83ec50ea0 964 // | |
whismanoid 15:37c83ec50ea0 965 // 1V8 | [11] 1.8V MAX32625PICO GND [10] | GND
whismanoid 15:37c83ec50ea0 966 // 3V3 | [12] 3.3V +5V [09] | 5V0
whismanoid 15:37c83ec50ea0 967 // SPI CS D7 | [13] P0_7 CS s-ssel P4_7 [08] | D15
whismanoid 15:37c83ec50ea0 968 // SPI MISO D6 | [14] P0_6 MISO s-miso P4_6 [07] | D14
whismanoid 15:37c83ec50ea0 969 // SPI MOSI D5 | [15] P0_5 MOSI s-mosi P4_5 [06] | D13
whismanoid 15:37c83ec50ea0 970 // SPI SCLK D4 | [16] P0_4 SCLK s-sclk P4_4 [05] | D12
whismanoid 15:37c83ec50ea0 971 // D3 | [17] P0_3 RTS SCL P1_7 [04] | SCL/D17
whismanoid 15:37c83ec50ea0 972 // D2 | [18] P0_2 CTS SDA P1_6 [03] | SDA/D16
whismanoid 15:37c83ec50ea0 973 // TX/D1 | [19] P0_1 TX0 AIN_2 [02] | A2
whismanoid 15:37c83ec50ea0 974 // RX/D0 | [20] P0_0 RX0 AIN_0 [01] | A0/A4
whismanoid 15:37c83ec50ea0 975 // | |
whismanoid 15:37c83ec50ea0 976 // | DAPLINK |
whismanoid 15:37c83ec50ea0 977 // | J3 p3_3 p3_2 p3_0 p3_1 p3_7 |
whismanoid 15:37c83ec50ea0 978 // | DAP [ ] [ ] [RX2][TX2][ ] |
whismanoid 15:37c83ec50ea0 979 // | TOP [ ] [ ] [ ] [ ] [ ] |
whismanoid 15:37c83ec50ea0 980 // | AIN1/A5 gnd gnd nc AIN3 |
whismanoid 15:37c83ec50ea0 981 // | IOH 1-wire |
whismanoid 15:37c83ec50ea0 982 // | |
whismanoid 15:37c83ec50ea0 983 // |NO USE RST P2_0 P2_1 |
whismanoid 15:37c83ec50ea0 984 // |BOTTOM [ ] [ ] [RX1][ ] [TX1] |
whismanoid 15:37c83ec50ea0 985 // | RST SWC GND SWD 1V8 |
whismanoid 15:37c83ec50ea0 986 // |BOTTOM [21] [22] [23] [24] [25] |
whismanoid 15:37c83ec50ea0 987 // +------------------------------------+
whismanoid 15:37c83ec50ea0 988 #if MAX40108_DEMO
whismanoid 15:37c83ec50ea0 989 // MAX40108 demo p2: D0..D7 = P0_0..P0_7; D8..15 = P4_0..P4_7; D16/D17=I2C
whismanoid 15:37c83ec50ea0 990 #endif
whismanoid 15:37c83ec50ea0 991 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 992 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 993 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 994 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 15:37c83ec50ea0 995 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 996 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 997 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 998 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 15:37c83ec50ea0 999 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 15:37c83ec50ea0 1000 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 15:37c83ec50ea0 1001 // AIN_10 = x undefined?
whismanoid 15:37c83ec50ea0 1002 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 1003 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 15:37c83ec50ea0 1004 //
whismanoid 15:37c83ec50ea0 1005 #if MAX40108_DEMO
whismanoid 15:37c83ec50ea0 1006 // avoid resource conflict D0,D1 alternate function as RX/TX
whismanoid 15:37c83ec50ea0 1007 #define HAS_digitalInOut0 0
whismanoid 15:37c83ec50ea0 1008 #define HAS_digitalInOut1 0
whismanoid 15:37c83ec50ea0 1009 #else
whismanoid 15:37c83ec50ea0 1010 #define HAS_digitalInOut0 1
whismanoid 19:5ff09c8e9daf 1011 #define HAS_digitalInOut1 1
whismanoid 19:5ff09c8e9daf 1012 // P0_1 TARGET_MAX32625PICO D1
whismanoid 15:37c83ec50ea0 1013 #endif
whismanoid 15:37c83ec50ea0 1014 #if APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 1015 // avoid resource conflict D2 alternate function as interrupt input
whismanoid 15:37c83ec50ea0 1016 #define HAS_digitalInOut2 0
whismanoid 15:37c83ec50ea0 1017 #else
whismanoid 15:37c83ec50ea0 1018 #define HAS_digitalInOut2 1
whismanoid 15:37c83ec50ea0 1019 #endif
whismanoid 15:37c83ec50ea0 1020 #define HAS_digitalInOut3 1
whismanoid 15:37c83ec50ea0 1021 #define HAS_digitalInOut4 1
whismanoid 15:37c83ec50ea0 1022 #define HAS_digitalInOut5 1
whismanoid 15:37c83ec50ea0 1023 #define HAS_digitalInOut6 1
whismanoid 15:37c83ec50ea0 1024 #define HAS_digitalInOut7 1
whismanoid 15:37c83ec50ea0 1025 //
whismanoid 15:37c83ec50ea0 1026 #define HAS_digitalInOut8 1
whismanoid 15:37c83ec50ea0 1027 #define HAS_digitalInOut9 1
whismanoid 15:37c83ec50ea0 1028 #define HAS_digitalInOut10 1
whismanoid 15:37c83ec50ea0 1029 #define HAS_digitalInOut11 1
whismanoid 15:37c83ec50ea0 1030 #define HAS_digitalInOut12 1
whismanoid 15:37c83ec50ea0 1031 #define HAS_digitalInOut13 1
whismanoid 15:37c83ec50ea0 1032 #define HAS_digitalInOut14 1
whismanoid 15:37c83ec50ea0 1033 #define HAS_digitalInOut15 1
whismanoid 15:37c83ec50ea0 1034 #if HAS_I2C
whismanoid 25:8a61cb34191d 1035 // MAX40108DEMOP2U9 HAS_I2C: J91.1=1V8 J91.2=P1_6(SDA) J91.3=P1_7(SCL) J91.4=GND
whismanoid 25:8a61cb34191d 1036 // MAX40108DEMOP2U9 HAS_I2C: move button2/button3 to inaccessible pins P3_6 and P3_7 if we need J91 for I2C
whismanoid 25:8a61cb34191d 1037 // #define BUTTON2 P3_7
whismanoid 25:8a61cb34191d 1038 // avoid resource conflict between I2C and DigitalInOut
whismanoid 25:8a61cb34191d 1039 #define HAS_digitalInOut16 0 // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 25:8a61cb34191d 1040 #define HAS_digitalInOut17 0 // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 15:37c83ec50ea0 1041 #else // HAS_I2C
whismanoid 25:8a61cb34191d 1042 // MAX40108DEMOP2U9 no HAS_I2C: option using J91 for button2 and button3 instead of I2C
whismanoid 25:8a61cb34191d 1043 // 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 1044 // MAX40108DEMOP2U9 no HAS_I2C: avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 1045 // #define BUTTON2 P1_7
whismanoid 25:8a61cb34191d 1046 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1047 // MAX40108DEMOP2U9 avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 1048 #define HAS_digitalInOut16 0 // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 25:8a61cb34191d 1049 #else // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1050 #define HAS_digitalInOut16 1 // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 25:8a61cb34191d 1051 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1052 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1053 // MAX40108DEMOP2U9 avoid conflict between digital pins D16 D17 and button2/button3
whismanoid 25:8a61cb34191d 1054 #define HAS_digitalInOut17 0 // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 25:8a61cb34191d 1055 #else // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 25:8a61cb34191d 1056 #define HAS_digitalInOut17 1 // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 25:8a61cb34191d 1057 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 15:37c83ec50ea0 1058 #endif // HAS_I2C
whismanoid 15:37c83ec50ea0 1059 #if HAS_digitalInOut0
whismanoid 25:8a61cb34191d 1060 DigitalInOut digitalInOut0(P0_0, PIN_INPUT, PullUp, 1); // P0_0 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D0
whismanoid 15:37c83ec50ea0 1061 #endif
whismanoid 15:37c83ec50ea0 1062 #if HAS_digitalInOut1
whismanoid 25:8a61cb34191d 1063 DigitalInOut digitalInOut1(P0_1, PIN_INPUT, PullUp, 1); // P0_1 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D1
whismanoid 15:37c83ec50ea0 1064 #endif
whismanoid 15:37c83ec50ea0 1065 #if HAS_digitalInOut2
whismanoid 25:8a61cb34191d 1066 DigitalInOut digitalInOut2(P0_2, PIN_INPUT, PullUp, 1); // P0_2 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D2
whismanoid 15:37c83ec50ea0 1067 #endif
whismanoid 15:37c83ec50ea0 1068 #if HAS_digitalInOut3
whismanoid 25:8a61cb34191d 1069 DigitalInOut digitalInOut3(P0_3, PIN_INPUT, PullUp, 1); // P0_3 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D3
whismanoid 15:37c83ec50ea0 1070 #endif
whismanoid 15:37c83ec50ea0 1071 #if HAS_digitalInOut4
whismanoid 25:8a61cb34191d 1072 DigitalInOut digitalInOut4(P0_4, PIN_INPUT, PullUp, 1); // P0_4 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D4
whismanoid 15:37c83ec50ea0 1073 #endif
whismanoid 15:37c83ec50ea0 1074 #if HAS_digitalInOut5
whismanoid 25:8a61cb34191d 1075 DigitalInOut digitalInOut5(P0_5, PIN_INPUT, PullUp, 1); // P0_5 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D5
whismanoid 15:37c83ec50ea0 1076 #endif
whismanoid 15:37c83ec50ea0 1077 #if HAS_digitalInOut6
whismanoid 25:8a61cb34191d 1078 DigitalInOut digitalInOut6(P0_6, PIN_INPUT, PullUp, 1); // P0_6 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D6
whismanoid 15:37c83ec50ea0 1079 #endif
whismanoid 15:37c83ec50ea0 1080 #if HAS_digitalInOut7
whismanoid 25:8a61cb34191d 1081 DigitalInOut digitalInOut7(P0_7, PIN_INPUT, PullUp, 1); // P0_7 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D7
whismanoid 15:37c83ec50ea0 1082 #endif
whismanoid 15:37c83ec50ea0 1083 #if HAS_digitalInOut8
whismanoid 25:8a61cb34191d 1084 DigitalInOut digitalInOut8(P4_0, PIN_INPUT, PullUp, 1); // P4_0 TARGET_MAX40108DEMOP2U9 D8
whismanoid 15:37c83ec50ea0 1085 #endif
whismanoid 15:37c83ec50ea0 1086 #if HAS_digitalInOut9
whismanoid 25:8a61cb34191d 1087 DigitalInOut digitalInOut9(P4_1, PIN_INPUT, PullUp, 1); // P4_1 TARGET_MAX40108DEMOP2U9 D9
whismanoid 15:37c83ec50ea0 1088 #endif
whismanoid 15:37c83ec50ea0 1089 #if HAS_digitalInOut10
whismanoid 25:8a61cb34191d 1090 DigitalInOut digitalInOut10(P4_2, PIN_INPUT, PullUp, 1); // P4_2 TARGET_MAX40108DEMOP2U9 D10
whismanoid 15:37c83ec50ea0 1091 #endif
whismanoid 15:37c83ec50ea0 1092 #if HAS_digitalInOut11
whismanoid 25:8a61cb34191d 1093 DigitalInOut digitalInOut11(P4_3, PIN_INPUT, PullUp, 1); // P4_3 TARGET_MAX40108DEMOP2U9 D11
whismanoid 15:37c83ec50ea0 1094 #endif
whismanoid 15:37c83ec50ea0 1095 #if HAS_digitalInOut12
whismanoid 25:8a61cb34191d 1096 DigitalInOut digitalInOut12(P4_4, PIN_INPUT, PullUp, 1); // P4_4 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D12
whismanoid 15:37c83ec50ea0 1097 #endif
whismanoid 15:37c83ec50ea0 1098 #if HAS_digitalInOut13
whismanoid 25:8a61cb34191d 1099 DigitalInOut digitalInOut13(P4_5, PIN_INPUT, PullUp, 1); // P4_5 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D13
whismanoid 15:37c83ec50ea0 1100 #endif
whismanoid 15:37c83ec50ea0 1101 #if HAS_digitalInOut14
whismanoid 25:8a61cb34191d 1102 DigitalInOut digitalInOut14(P4_6, PIN_INPUT, PullUp, 1); // P4_6 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D14
whismanoid 15:37c83ec50ea0 1103 #endif
whismanoid 15:37c83ec50ea0 1104 #if HAS_digitalInOut15
whismanoid 25:8a61cb34191d 1105 DigitalInOut digitalInOut15(P4_7, PIN_INPUT, PullUp, 1); // P4_7 TARGET_MAX32625PICO TARGET_MAX40108DEMOP2U9 D15
whismanoid 15:37c83ec50ea0 1106 #endif
whismanoid 15:37c83ec50ea0 1107 #if HAS_digitalInOut16
whismanoid 15:37c83ec50ea0 1108 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 15:37c83ec50ea0 1109 // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
whismanoid 25:8a61cb34191d 1110 DigitalInOut digitalInOut16(P1_6, PIN_INPUT, OpenDrain, 1); // P1_6 TARGET_MAX40108DEMOP2U9 J91.2=P1_6(button3/'%B3!'/SDA)
whismanoid 15:37c83ec50ea0 1111 #endif
whismanoid 15:37c83ec50ea0 1112 #if HAS_digitalInOut17
whismanoid 15:37c83ec50ea0 1113 // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
whismanoid 25:8a61cb34191d 1114 DigitalInOut digitalInOut17(P1_7, PIN_INPUT, OpenDrain, 1); // P1_7 TARGET_MAX40108DEMOP2U9 J91.3=P1_7(button2/'%B2!'/SCL)
whismanoid 15:37c83ec50ea0 1115 #endif
whismanoid 15:37c83ec50ea0 1116 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1117 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1118 #define HAS_digitalInOut0 0
whismanoid 0:cb44e2e9ec4c 1119 #define HAS_digitalInOut1 0
whismanoid 0:cb44e2e9ec4c 1120 #if APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 1121 // D2 -- MAX11131 EOC DigitalIn
whismanoid 0:cb44e2e9ec4c 1122 #define HAS_digitalInOut2 0
whismanoid 0:cb44e2e9ec4c 1123 #else
whismanoid 0:cb44e2e9ec4c 1124 #define HAS_digitalInOut2 1
whismanoid 0:cb44e2e9ec4c 1125 #endif
whismanoid 0:cb44e2e9ec4c 1126 #define HAS_digitalInOut3 1
whismanoid 0:cb44e2e9ec4c 1127 #define HAS_digitalInOut4 1
whismanoid 0:cb44e2e9ec4c 1128 #define HAS_digitalInOut5 1
whismanoid 0:cb44e2e9ec4c 1129 #define HAS_digitalInOut6 1
whismanoid 0:cb44e2e9ec4c 1130 #define HAS_digitalInOut7 1
whismanoid 0:cb44e2e9ec4c 1131 #if APPLICATION_MAX5715
whismanoid 0:cb44e2e9ec4c 1132 // D8 -- MAX5715 CLRb DigitalOut
whismanoid 0:cb44e2e9ec4c 1133 #define HAS_digitalInOut8 0
whismanoid 0:cb44e2e9ec4c 1134 #else
whismanoid 0:cb44e2e9ec4c 1135 #define HAS_digitalInOut8 1
whismanoid 0:cb44e2e9ec4c 1136 #endif
whismanoid 0:cb44e2e9ec4c 1137 #if APPLICATION_MAX5715
whismanoid 0:cb44e2e9ec4c 1138 // D9 -- MAX5715 LDACb DigitalOut
whismanoid 0:cb44e2e9ec4c 1139 #define HAS_digitalInOut9 0
whismanoid 0:cb44e2e9ec4c 1140 #elif APPLICATION_MAX11131
whismanoid 0:cb44e2e9ec4c 1141 // D9 -- MAX11131 CNVST DigitalOut
whismanoid 0:cb44e2e9ec4c 1142 #define HAS_digitalInOut9 0
whismanoid 0:cb44e2e9ec4c 1143 #else
whismanoid 0:cb44e2e9ec4c 1144 #define HAS_digitalInOut9 1
whismanoid 0:cb44e2e9ec4c 1145 #endif
whismanoid 0:cb44e2e9ec4c 1146 #if HAS_SPI
whismanoid 0:cb44e2e9ec4c 1147 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 1148 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:cb44e2e9ec4c 1149 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:cb44e2e9ec4c 1150 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:cb44e2e9ec4c 1151 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:cb44e2e9ec4c 1152 #define HAS_digitalInOut10 0
whismanoid 0:cb44e2e9ec4c 1153 #define HAS_digitalInOut11 0
whismanoid 0:cb44e2e9ec4c 1154 #define HAS_digitalInOut12 0
whismanoid 0:cb44e2e9ec4c 1155 #define HAS_digitalInOut13 0
whismanoid 0:cb44e2e9ec4c 1156 #else // HAS_SPI
whismanoid 0:cb44e2e9ec4c 1157 #define HAS_digitalInOut10 1
whismanoid 0:cb44e2e9ec4c 1158 #define HAS_digitalInOut11 1
whismanoid 0:cb44e2e9ec4c 1159 #define HAS_digitalInOut12 1
whismanoid 0:cb44e2e9ec4c 1160 #define HAS_digitalInOut13 1
whismanoid 0:cb44e2e9ec4c 1161 #endif // HAS_SPI
whismanoid 0:cb44e2e9ec4c 1162 #if HAS_I2C
whismanoid 0:cb44e2e9ec4c 1163 // avoid resource conflict between P5_7, P6_0 I2C and DigitalInOut
whismanoid 0:cb44e2e9ec4c 1164 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1165 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1166 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1167 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1168 #define HAS_digitalInOut14 0
whismanoid 0:cb44e2e9ec4c 1169 #define HAS_digitalInOut15 0
whismanoid 0:cb44e2e9ec4c 1170 #define HAS_digitalInOut16 0
whismanoid 0:cb44e2e9ec4c 1171 #define HAS_digitalInOut17 0
whismanoid 0:cb44e2e9ec4c 1172 #else // HAS_I2C
whismanoid 0:cb44e2e9ec4c 1173 #define HAS_digitalInOut14 1
whismanoid 0:cb44e2e9ec4c 1174 #define HAS_digitalInOut15 1
whismanoid 0:cb44e2e9ec4c 1175 #define HAS_digitalInOut16 0
whismanoid 0:cb44e2e9ec4c 1176 #define HAS_digitalInOut17 0
whismanoid 0:cb44e2e9ec4c 1177 #endif // HAS_I2C
whismanoid 0:cb44e2e9ec4c 1178 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1179 DigitalInOut digitalInOut0(D0, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1180 #endif
whismanoid 0:cb44e2e9ec4c 1181 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1182 DigitalInOut digitalInOut1(D1, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1183 #endif
whismanoid 0:cb44e2e9ec4c 1184 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1185 DigitalInOut digitalInOut2(D2, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1186 #endif
whismanoid 0:cb44e2e9ec4c 1187 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1188 DigitalInOut digitalInOut3(D3, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1189 #endif
whismanoid 0:cb44e2e9ec4c 1190 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1191 DigitalInOut digitalInOut4(D4, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1192 #endif
whismanoid 0:cb44e2e9ec4c 1193 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1194 DigitalInOut digitalInOut5(D5, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1195 #endif
whismanoid 0:cb44e2e9ec4c 1196 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1197 DigitalInOut digitalInOut6(D6, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1198 #endif
whismanoid 0:cb44e2e9ec4c 1199 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1200 DigitalInOut digitalInOut7(D7, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1201 #endif
whismanoid 0:cb44e2e9ec4c 1202 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1203 DigitalInOut digitalInOut8(D8, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1204 #endif
whismanoid 0:cb44e2e9ec4c 1205 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1206 DigitalInOut digitalInOut9(D9, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1207 #endif
whismanoid 0:cb44e2e9ec4c 1208 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1209 // Arduino digital pin D10 SPI function is CS/10
whismanoid 0:cb44e2e9ec4c 1210 DigitalInOut digitalInOut10(D10, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1211 #endif
whismanoid 0:cb44e2e9ec4c 1212 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1213 // Arduino digital pin D11 SPI function is MOSI/11
whismanoid 0:cb44e2e9ec4c 1214 DigitalInOut digitalInOut11(D11, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1215 #endif
whismanoid 0:cb44e2e9ec4c 1216 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1217 // Arduino digital pin D12 SPI function is MISO/12
whismanoid 0:cb44e2e9ec4c 1218 DigitalInOut digitalInOut12(D12, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1219 #endif
whismanoid 0:cb44e2e9ec4c 1220 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1221 // Arduino digital pin D13 SPI function is SCK/13
whismanoid 0:cb44e2e9ec4c 1222 DigitalInOut digitalInOut13(D13, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1223 #endif
whismanoid 0:cb44e2e9ec4c 1224 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1225 // Arduino digital pin D14 I2C function is A4/SDA (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1226 DigitalInOut digitalInOut14(D14, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1227 #endif
whismanoid 0:cb44e2e9ec4c 1228 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1229 // Arduino digital pin D15 I2C function is A5/SCL (10pin digital connector)
whismanoid 0:cb44e2e9ec4c 1230 DigitalInOut digitalInOut15(D15, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1231 #endif
whismanoid 0:cb44e2e9ec4c 1232 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1233 // Arduino digital pin D16 I2C function is A4/SDA (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1234 DigitalInOut digitalInOut16(D16, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1235 #endif
whismanoid 0:cb44e2e9ec4c 1236 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1237 // Arduino digital pin D17 I2C function is A5/SCL (6pin analog connector)
whismanoid 0:cb44e2e9ec4c 1238 DigitalInOut digitalInOut17(D17, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1239 #endif
whismanoid 0:cb44e2e9ec4c 1240 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1241 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1242 #define HAS_digitalInOut0 1
whismanoid 0:cb44e2e9ec4c 1243 #define HAS_digitalInOut1 1
whismanoid 0:cb44e2e9ec4c 1244 #define HAS_digitalInOut2 1
whismanoid 0:cb44e2e9ec4c 1245 #define HAS_digitalInOut3 1
whismanoid 0:cb44e2e9ec4c 1246 #define HAS_digitalInOut4 1
whismanoid 0:cb44e2e9ec4c 1247 #define HAS_digitalInOut5 1
whismanoid 0:cb44e2e9ec4c 1248 #define HAS_digitalInOut6 1
whismanoid 0:cb44e2e9ec4c 1249 #define HAS_digitalInOut7 1
whismanoid 0:cb44e2e9ec4c 1250 #define HAS_digitalInOut8 1
whismanoid 0:cb44e2e9ec4c 1251 #define HAS_digitalInOut9 1
whismanoid 0:cb44e2e9ec4c 1252 // #define HAS_digitalInOut10 1
whismanoid 0:cb44e2e9ec4c 1253 // #define HAS_digitalInOut11 1
whismanoid 0:cb44e2e9ec4c 1254 // #define HAS_digitalInOut12 1
whismanoid 0:cb44e2e9ec4c 1255 // #define HAS_digitalInOut13 1
whismanoid 0:cb44e2e9ec4c 1256 // #define HAS_digitalInOut14 1
whismanoid 0:cb44e2e9ec4c 1257 // #define HAS_digitalInOut15 1
whismanoid 0:cb44e2e9ec4c 1258 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1259 DigitalInOut digitalInOut0(p5, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.9/I2STX_SDA/MOSI1/MAT2.3
whismanoid 0:cb44e2e9ec4c 1260 #endif
whismanoid 0:cb44e2e9ec4c 1261 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1262 DigitalInOut digitalInOut1(p6, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.8/I2STX_WS/MISO1/MAT2.2
whismanoid 0:cb44e2e9ec4c 1263 #endif
whismanoid 0:cb44e2e9ec4c 1264 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1265 DigitalInOut digitalInOut2(p7, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.7/I2STX_CLK/SCK1/MAT2.1
whismanoid 0:cb44e2e9ec4c 1266 #endif
whismanoid 0:cb44e2e9ec4c 1267 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1268 DigitalInOut digitalInOut3(p8, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.6/I2SRX_SDA/SSEL1/MAT2.0
whismanoid 0:cb44e2e9ec4c 1269 #endif
whismanoid 0:cb44e2e9ec4c 1270 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1271 DigitalInOut digitalInOut4(p9, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.0/CAN_RX1/TXD3/SDA1
whismanoid 0:cb44e2e9ec4c 1272 #endif
whismanoid 0:cb44e2e9ec4c 1273 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1274 DigitalInOut digitalInOut5(p10, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.1/CAN_TX1/RXD3/SCL1
whismanoid 0:cb44e2e9ec4c 1275 #endif
whismanoid 0:cb44e2e9ec4c 1276 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1277 DigitalInOut digitalInOut6(p11, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.18/DCD1/MOSI0/MOSI1
whismanoid 0:cb44e2e9ec4c 1278 #endif
whismanoid 0:cb44e2e9ec4c 1279 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1280 DigitalInOut digitalInOut7(p12, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.17/CTS1/MISO0/MISO
whismanoid 0:cb44e2e9ec4c 1281 #endif
whismanoid 0:cb44e2e9ec4c 1282 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1283 DigitalInOut digitalInOut8(p13, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.15/TXD1/SCK0/SCK
whismanoid 0:cb44e2e9ec4c 1284 #endif
whismanoid 0:cb44e2e9ec4c 1285 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1286 DigitalInOut digitalInOut9(p14, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.16/RXD1/SSEL0/SSEL
whismanoid 0:cb44e2e9ec4c 1287 #endif
whismanoid 0:cb44e2e9ec4c 1288 //
whismanoid 0:cb44e2e9ec4c 1289 // these pins support analog input analogIn0 .. analogIn5
whismanoid 0:cb44e2e9ec4c 1290 //DigitalInOut digitalInOut_(p15, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:cb44e2e9ec4c 1291 //DigitalInOut digitalInOut_(p16, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:cb44e2e9ec4c 1292 //DigitalInOut digitalInOut_(p17, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:cb44e2e9ec4c 1293 //DigitalInOut digitalInOut_(p18, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:cb44e2e9ec4c 1294 //DigitalInOut digitalInOut_(p19, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:cb44e2e9ec4c 1295 //DigitalInOut digitalInOut_(p20, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:cb44e2e9ec4c 1296 //
whismanoid 0:cb44e2e9ec4c 1297 // these pins support PWM pwmDriver1 .. pwmDriver6
whismanoid 0:cb44e2e9ec4c 1298 //DigitalInOut digitalInOut_(p21, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.5/PWM1.6/DTR1/TRACEDATA0
whismanoid 0:cb44e2e9ec4c 1299 //DigitalInOut digitalInOut_(p22, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.4/PWM1.5/DSR1/TRACEDATA1
whismanoid 0:cb44e2e9ec4c 1300 //DigitalInOut digitalInOut_(p23, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.3/PWM1.4/DCD1/TRACEDATA2
whismanoid 0:cb44e2e9ec4c 1301 //DigitalInOut digitalInOut_(p24, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.2/PWM1.3/CTS1/TRACEDATA3
whismanoid 0:cb44e2e9ec4c 1302 //DigitalInOut digitalInOut_(p25, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.1/PWM1.2/RXD1
whismanoid 0:cb44e2e9ec4c 1303 //DigitalInOut digitalInOut_(p26, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P2.0/PWM1.1/TXD1/TRACECLK
whismanoid 0:cb44e2e9ec4c 1304 //
whismanoid 0:cb44e2e9ec4c 1305 // these could be additional digitalInOut pins
whismanoid 0:cb44e2e9ec4c 1306 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1307 DigitalInOut digitalInOut10(p27, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.11/RXD2/SCL2/MAT3.1
whismanoid 0:cb44e2e9ec4c 1308 #endif
whismanoid 0:cb44e2e9ec4c 1309 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1310 DigitalInOut digitalInOut11(p28, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.10/TXD2/SDA2/MAT3.0
whismanoid 0:cb44e2e9ec4c 1311 #endif
whismanoid 0:cb44e2e9ec4c 1312 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1313 DigitalInOut digitalInOut12(p29, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.5/I2SRX_WS/CAN_TX2/CAP2.1
whismanoid 0:cb44e2e9ec4c 1314 #endif
whismanoid 0:cb44e2e9ec4c 1315 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1316 DigitalInOut digitalInOut13(p30, PIN_INPUT, PullUp, 1); // TARGET_LPC1768 P0.4/I2SRX_CLK/CAN_RX2/CAP2.0
whismanoid 0:cb44e2e9ec4c 1317 #endif
whismanoid 0:cb44e2e9ec4c 1318 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1319 DigitalInOut digitalInOut14(___, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1320 #endif
whismanoid 0:cb44e2e9ec4c 1321 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1322 DigitalInOut digitalInOut15(___, PIN_INPUT, PullUp, 1);
whismanoid 0:cb44e2e9ec4c 1323 #endif
whismanoid 0:cb44e2e9ec4c 1324 #else
whismanoid 0:cb44e2e9ec4c 1325 // unknown target
whismanoid 0:cb44e2e9ec4c 1326 #endif
whismanoid 0:cb44e2e9ec4c 1327 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:cb44e2e9ec4c 1328 #if HAS_digitalInOut0 || HAS_digitalInOut1 \
whismanoid 0:cb44e2e9ec4c 1329 || HAS_digitalInOut2 || HAS_digitalInOut3 \
whismanoid 0:cb44e2e9ec4c 1330 || HAS_digitalInOut4 || HAS_digitalInOut5 \
whismanoid 0:cb44e2e9ec4c 1331 || HAS_digitalInOut6 || HAS_digitalInOut7 \
whismanoid 0:cb44e2e9ec4c 1332 || HAS_digitalInOut8 || HAS_digitalInOut9 \
whismanoid 0:cb44e2e9ec4c 1333 || HAS_digitalInOut10 || HAS_digitalInOut11 \
whismanoid 0:cb44e2e9ec4c 1334 || HAS_digitalInOut12 || HAS_digitalInOut13 \
whismanoid 0:cb44e2e9ec4c 1335 || HAS_digitalInOut14 || HAS_digitalInOut15 \
whismanoid 0:cb44e2e9ec4c 1336 || HAS_digitalInOut16 || HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1337 #define HAS_digitalInOuts 1
whismanoid 0:cb44e2e9ec4c 1338 #else
whismanoid 0:cb44e2e9ec4c 1339 #warning "Note: There are no digitalInOut resources defined"
whismanoid 0:cb44e2e9ec4c 1340 #endif
whismanoid 0:cb44e2e9ec4c 1341
whismanoid 0:cb44e2e9ec4c 1342 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 0:cb44e2e9ec4c 1343 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1344 // Declare the AnalogIn driver
whismanoid 0:cb44e2e9ec4c 1345 // Optional analogIn support. If there is only one it should be analogIn1.
whismanoid 0:cb44e2e9ec4c 1346 // A) analog input
whismanoid 0:cb44e2e9ec4c 1347 #if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 1348 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1349 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1350 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1351 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1352 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1353 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1354 #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1355 #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1356 #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1357 #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1358 // #define HAS_analogIn10 0
whismanoid 0:cb44e2e9ec4c 1359 // #define HAS_analogIn11 0
whismanoid 0:cb44e2e9ec4c 1360 // #define HAS_analogIn12 0
whismanoid 0:cb44e2e9ec4c 1361 // #define HAS_analogIn13 0
whismanoid 0:cb44e2e9ec4c 1362 // #define HAS_analogIn14 0
whismanoid 0:cb44e2e9ec4c 1363 // #define HAS_analogIn15 0
whismanoid 0:cb44e2e9ec4c 1364 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1365 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1366 #endif
whismanoid 0:cb44e2e9ec4c 1367 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1368 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1369 #endif
whismanoid 0:cb44e2e9ec4c 1370 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1371 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1372 #endif
whismanoid 0:cb44e2e9ec4c 1373 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1374 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1375 #endif
whismanoid 0:cb44e2e9ec4c 1376 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1377 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1378 #endif
whismanoid 0:cb44e2e9ec4c 1379 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1380 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1381 #endif
whismanoid 0:cb44e2e9ec4c 1382 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1383 AnalogIn analogIn6(AIN_6); // TARGET_MAX32630 AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1384 #endif
whismanoid 0:cb44e2e9ec4c 1385 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1386 AnalogIn analogIn7(AIN_7); // TARGET_MAX32630 AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1387 #endif
whismanoid 0:cb44e2e9ec4c 1388 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1389 AnalogIn analogIn8(AIN_8); // TARGET_MAX32630 AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1390 #endif
whismanoid 0:cb44e2e9ec4c 1391 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1392 AnalogIn analogIn9(AIN_9); // TARGET_MAX32630 AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1393 #endif
whismanoid 0:cb44e2e9ec4c 1394 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1395 AnalogIn analogIn10(____); // TARGET_MAX32630 AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1396 #endif
whismanoid 0:cb44e2e9ec4c 1397 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1398 AnalogIn analogIn11(____); // TARGET_MAX32630 AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1399 #endif
whismanoid 0:cb44e2e9ec4c 1400 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1401 AnalogIn analogIn12(____); // TARGET_MAX32630 AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1402 #endif
whismanoid 0:cb44e2e9ec4c 1403 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1404 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1405 #endif
whismanoid 0:cb44e2e9ec4c 1406 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1407 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1408 #endif
whismanoid 0:cb44e2e9ec4c 1409 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1410 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1411 #endif
whismanoid 0:cb44e2e9ec4c 1412 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1413 #elif defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 1414 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1415 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1416 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1417 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1418 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1419 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1420 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1421 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 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_MAX32630 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_MAX32630 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_MAX32630 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_MAX32630 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_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1437 #endif
whismanoid 0:cb44e2e9ec4c 1438 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1439 #elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 1440 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1441 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1442 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1443 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1444 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1445 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1446 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1447 #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1448 #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1449 #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1450 #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1451 // #define HAS_analogIn10 0
whismanoid 0:cb44e2e9ec4c 1452 // #define HAS_analogIn11 0
whismanoid 0:cb44e2e9ec4c 1453 // #define HAS_analogIn12 0
whismanoid 0:cb44e2e9ec4c 1454 // #define HAS_analogIn13 0
whismanoid 0:cb44e2e9ec4c 1455 // #define HAS_analogIn14 0
whismanoid 0:cb44e2e9ec4c 1456 // #define HAS_analogIn15 0
whismanoid 0:cb44e2e9ec4c 1457 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1458 AnalogIn analogIn0(AIN_0); // TARGET_MAX32620FTHR J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1459 #endif
whismanoid 0:cb44e2e9ec4c 1460 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1461 AnalogIn analogIn1(AIN_1); // TARGET_MAX32620FTHR J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1462 #endif
whismanoid 0:cb44e2e9ec4c 1463 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1464 AnalogIn analogIn2(AIN_2); // TARGET_MAX32620FTHR J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1465 #endif
whismanoid 0:cb44e2e9ec4c 1466 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1467 AnalogIn analogIn3(AIN_3); // TARGET_MAX32620FTHR J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1468 #endif
whismanoid 0:cb44e2e9ec4c 1469 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1470 AnalogIn analogIn4(AIN_4); // TARGET_MAX32620FTHR J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1471 #endif
whismanoid 0:cb44e2e9ec4c 1472 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1473 AnalogIn analogIn5(AIN_5); // TARGET_MAX32620FTHR J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1474 #endif
whismanoid 0:cb44e2e9ec4c 1475 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1476 AnalogIn analogIn6(AIN_6); // TARGET_MAX32620FTHR AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1477 #endif
whismanoid 0:cb44e2e9ec4c 1478 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1479 AnalogIn analogIn7(AIN_7); // TARGET_MAX32620FTHR AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1480 #endif
whismanoid 0:cb44e2e9ec4c 1481 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1482 AnalogIn analogIn8(AIN_8); // TARGET_MAX32620FTHR AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1483 #endif
whismanoid 0:cb44e2e9ec4c 1484 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1485 AnalogIn analogIn9(AIN_9); // TARGET_MAX32620FTHR AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1486 #endif
whismanoid 0:cb44e2e9ec4c 1487 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1488 AnalogIn analogIn10(____); // TARGET_MAX32620FTHR AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1489 #endif
whismanoid 0:cb44e2e9ec4c 1490 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1491 AnalogIn analogIn11(____); // TARGET_MAX32620FTHR AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1492 #endif
whismanoid 0:cb44e2e9ec4c 1493 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1494 AnalogIn analogIn12(____); // TARGET_MAX32620FTHR AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1495 #endif
whismanoid 0:cb44e2e9ec4c 1496 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1497 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1498 #endif
whismanoid 0:cb44e2e9ec4c 1499 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1500 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1501 #endif
whismanoid 0:cb44e2e9ec4c 1502 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1503 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1504 #endif
whismanoid 0:cb44e2e9ec4c 1505 //--------------------------------------------------
whismanoid 19:5ff09c8e9daf 1506 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 37:3f369235e5bc 1507 // #warning "TARGET_MAX32625PICO not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1508 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1509 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1510 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1511 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1512 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1513 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1514 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1515 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1516 #endif
whismanoid 0:cb44e2e9ec4c 1517 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1518 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1519 #endif
whismanoid 0:cb44e2e9ec4c 1520 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1521 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1522 #endif
whismanoid 0:cb44e2e9ec4c 1523 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1524 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1525 #endif
whismanoid 0:cb44e2e9ec4c 1526 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1527 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1528 #endif
whismanoid 0:cb44e2e9ec4c 1529 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1530 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1531 #endif
whismanoid 0:cb44e2e9ec4c 1532 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1533 #elif defined(TARGET_MAX32600)
whismanoid 0:cb44e2e9ec4c 1534 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1535 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1536 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1537 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1538 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1539 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1540 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1541 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1542 #endif
whismanoid 0:cb44e2e9ec4c 1543 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1544 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1545 #endif
whismanoid 0:cb44e2e9ec4c 1546 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1547 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1548 #endif
whismanoid 0:cb44e2e9ec4c 1549 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1550 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1551 #endif
whismanoid 0:cb44e2e9ec4c 1552 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1553 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1554 #endif
whismanoid 0:cb44e2e9ec4c 1555 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1556 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1557 #endif
whismanoid 0:cb44e2e9ec4c 1558 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1559 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 1560 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1561 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1562 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1563 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1564 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1565 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1566 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1567 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1568 #endif
whismanoid 0:cb44e2e9ec4c 1569 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1570 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1571 #endif
whismanoid 0:cb44e2e9ec4c 1572 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1573 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1574 #endif
whismanoid 0:cb44e2e9ec4c 1575 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1576 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1577 #endif
whismanoid 0:cb44e2e9ec4c 1578 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1579 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1580 #endif
whismanoid 0:cb44e2e9ec4c 1581 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1582 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1583 #endif
whismanoid 0:cb44e2e9ec4c 1584 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1585 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1586 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1587 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1588 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1589 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1590 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1591 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1592 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1593 AnalogIn analogIn0(A0);
whismanoid 0:cb44e2e9ec4c 1594 #endif
whismanoid 0:cb44e2e9ec4c 1595 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1596 AnalogIn analogIn1(A1);
whismanoid 0:cb44e2e9ec4c 1597 #endif
whismanoid 0:cb44e2e9ec4c 1598 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1599 AnalogIn analogIn2(A2);
whismanoid 0:cb44e2e9ec4c 1600 #endif
whismanoid 0:cb44e2e9ec4c 1601 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1602 AnalogIn analogIn3(A3);
whismanoid 0:cb44e2e9ec4c 1603 #endif
whismanoid 0:cb44e2e9ec4c 1604 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1605 AnalogIn analogIn4(A4);
whismanoid 0:cb44e2e9ec4c 1606 #endif
whismanoid 0:cb44e2e9ec4c 1607 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1608 AnalogIn analogIn5(A5);
whismanoid 0:cb44e2e9ec4c 1609 #endif
whismanoid 0:cb44e2e9ec4c 1610 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 1611 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 0:cb44e2e9ec4c 1612 #elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1613 #define HAS_analogIn0 1
whismanoid 0:cb44e2e9ec4c 1614 #define HAS_analogIn1 1
whismanoid 0:cb44e2e9ec4c 1615 #define HAS_analogIn2 1
whismanoid 0:cb44e2e9ec4c 1616 #define HAS_analogIn3 1
whismanoid 0:cb44e2e9ec4c 1617 #define HAS_analogIn4 1
whismanoid 0:cb44e2e9ec4c 1618 #define HAS_analogIn5 1
whismanoid 0:cb44e2e9ec4c 1619 // #define HAS_analogIn6 1
whismanoid 0:cb44e2e9ec4c 1620 // #define HAS_analogIn7 1
whismanoid 0:cb44e2e9ec4c 1621 // #define HAS_analogIn8 1
whismanoid 0:cb44e2e9ec4c 1622 // #define HAS_analogIn9 1
whismanoid 0:cb44e2e9ec4c 1623 // #define HAS_analogIn10 1
whismanoid 0:cb44e2e9ec4c 1624 // #define HAS_analogIn11 1
whismanoid 0:cb44e2e9ec4c 1625 // #define HAS_analogIn12 1
whismanoid 0:cb44e2e9ec4c 1626 // #define HAS_analogIn13 1
whismanoid 0:cb44e2e9ec4c 1627 // #define HAS_analogIn14 1
whismanoid 0:cb44e2e9ec4c 1628 // #define HAS_analogIn15 1
whismanoid 0:cb44e2e9ec4c 1629 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1630 AnalogIn analogIn0(p15); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 0:cb44e2e9ec4c 1631 #endif
whismanoid 0:cb44e2e9ec4c 1632 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1633 AnalogIn analogIn1(p16); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 0:cb44e2e9ec4c 1634 #endif
whismanoid 0:cb44e2e9ec4c 1635 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1636 AnalogIn analogIn2(p17); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 0:cb44e2e9ec4c 1637 #endif
whismanoid 0:cb44e2e9ec4c 1638 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1639 AnalogIn analogIn3(p18); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 0:cb44e2e9ec4c 1640 #endif
whismanoid 0:cb44e2e9ec4c 1641 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1642 AnalogIn analogIn4(p19); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 0:cb44e2e9ec4c 1643 #endif
whismanoid 0:cb44e2e9ec4c 1644 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1645 AnalogIn analogIn5(p20); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 0:cb44e2e9ec4c 1646 #endif
whismanoid 0:cb44e2e9ec4c 1647 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1648 AnalogIn analogIn6(____);
whismanoid 0:cb44e2e9ec4c 1649 #endif
whismanoid 0:cb44e2e9ec4c 1650 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1651 AnalogIn analogIn7(____);
whismanoid 0:cb44e2e9ec4c 1652 #endif
whismanoid 0:cb44e2e9ec4c 1653 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1654 AnalogIn analogIn8(____);
whismanoid 0:cb44e2e9ec4c 1655 #endif
whismanoid 0:cb44e2e9ec4c 1656 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1657 AnalogIn analogIn9(____);
whismanoid 0:cb44e2e9ec4c 1658 #endif
whismanoid 0:cb44e2e9ec4c 1659 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1660 AnalogIn analogIn10(____);
whismanoid 0:cb44e2e9ec4c 1661 #endif
whismanoid 0:cb44e2e9ec4c 1662 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1663 AnalogIn analogIn11(____);
whismanoid 0:cb44e2e9ec4c 1664 #endif
whismanoid 0:cb44e2e9ec4c 1665 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1666 AnalogIn analogIn12(____);
whismanoid 0:cb44e2e9ec4c 1667 #endif
whismanoid 0:cb44e2e9ec4c 1668 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1669 AnalogIn analogIn13(____);
whismanoid 0:cb44e2e9ec4c 1670 #endif
whismanoid 0:cb44e2e9ec4c 1671 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1672 AnalogIn analogIn14(____);
whismanoid 0:cb44e2e9ec4c 1673 #endif
whismanoid 0:cb44e2e9ec4c 1674 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1675 AnalogIn analogIn15(____);
whismanoid 0:cb44e2e9ec4c 1676 #endif
whismanoid 0:cb44e2e9ec4c 1677 #else
whismanoid 0:cb44e2e9ec4c 1678 // unknown target
whismanoid 0:cb44e2e9ec4c 1679 #endif
whismanoid 0:cb44e2e9ec4c 1680 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 0:cb44e2e9ec4c 1681 #if HAS_analogIn0 || HAS_analogIn1 \
whismanoid 0:cb44e2e9ec4c 1682 || HAS_analogIn2 || HAS_analogIn3 \
whismanoid 0:cb44e2e9ec4c 1683 || HAS_analogIn4 || HAS_analogIn5 \
whismanoid 0:cb44e2e9ec4c 1684 || HAS_analogIn6 || HAS_analogIn7 \
whismanoid 0:cb44e2e9ec4c 1685 || HAS_analogIn8 || HAS_analogIn9 \
whismanoid 0:cb44e2e9ec4c 1686 || HAS_analogIn10 || HAS_analogIn11 \
whismanoid 0:cb44e2e9ec4c 1687 || HAS_analogIn12 || HAS_analogIn13 \
whismanoid 0:cb44e2e9ec4c 1688 || HAS_analogIn14 || HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1689 #define HAS_analogIns 1
whismanoid 0:cb44e2e9ec4c 1690 #else
whismanoid 0:cb44e2e9ec4c 1691 #warning "Note: There are no analogIn resources defined"
whismanoid 0:cb44e2e9ec4c 1692 #endif
whismanoid 0:cb44e2e9ec4c 1693
whismanoid 0:cb44e2e9ec4c 1694 // DigitalInOut pin resource: print the pin index names to serial
whismanoid 0:cb44e2e9ec4c 1695 #if HAS_digitalInOuts
whismanoid 0:cb44e2e9ec4c 1696 void list_digitalInOutPins(Stream& serialStream)
whismanoid 0:cb44e2e9ec4c 1697 {
whismanoid 0:cb44e2e9ec4c 1698 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1699 serialStream.printf(" 0");
whismanoid 0:cb44e2e9ec4c 1700 #endif
whismanoid 0:cb44e2e9ec4c 1701 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1702 serialStream.printf(" 1");
whismanoid 0:cb44e2e9ec4c 1703 #endif
whismanoid 0:cb44e2e9ec4c 1704 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1705 serialStream.printf(" 2");
whismanoid 0:cb44e2e9ec4c 1706 #endif
whismanoid 0:cb44e2e9ec4c 1707 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1708 serialStream.printf(" 3");
whismanoid 0:cb44e2e9ec4c 1709 #endif
whismanoid 0:cb44e2e9ec4c 1710 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1711 serialStream.printf(" 4");
whismanoid 0:cb44e2e9ec4c 1712 #endif
whismanoid 0:cb44e2e9ec4c 1713 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1714 serialStream.printf(" 5");
whismanoid 0:cb44e2e9ec4c 1715 #endif
whismanoid 0:cb44e2e9ec4c 1716 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1717 serialStream.printf(" 6");
whismanoid 0:cb44e2e9ec4c 1718 #endif
whismanoid 0:cb44e2e9ec4c 1719 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1720 serialStream.printf(" 7");
whismanoid 0:cb44e2e9ec4c 1721 #endif
whismanoid 0:cb44e2e9ec4c 1722 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1723 serialStream.printf(" 8");
whismanoid 0:cb44e2e9ec4c 1724 #endif
whismanoid 0:cb44e2e9ec4c 1725 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1726 serialStream.printf(" 9");
whismanoid 0:cb44e2e9ec4c 1727 #endif
whismanoid 0:cb44e2e9ec4c 1728 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1729 serialStream.printf(" 10");
whismanoid 0:cb44e2e9ec4c 1730 #endif
whismanoid 0:cb44e2e9ec4c 1731 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1732 serialStream.printf(" 11");
whismanoid 0:cb44e2e9ec4c 1733 #endif
whismanoid 0:cb44e2e9ec4c 1734 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1735 serialStream.printf(" 12");
whismanoid 0:cb44e2e9ec4c 1736 #endif
whismanoid 0:cb44e2e9ec4c 1737 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1738 serialStream.printf(" 13");
whismanoid 0:cb44e2e9ec4c 1739 #endif
whismanoid 0:cb44e2e9ec4c 1740 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1741 serialStream.printf(" 14");
whismanoid 0:cb44e2e9ec4c 1742 #endif
whismanoid 0:cb44e2e9ec4c 1743 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1744 serialStream.printf(" 15");
whismanoid 0:cb44e2e9ec4c 1745 #endif
whismanoid 0:cb44e2e9ec4c 1746 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1747 serialStream.printf(" 16");
whismanoid 0:cb44e2e9ec4c 1748 #endif
whismanoid 0:cb44e2e9ec4c 1749 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1750 serialStream.printf(" 17");
whismanoid 0:cb44e2e9ec4c 1751 #endif
whismanoid 18:1235c17b451e 1752 #if USE_LEDS
whismanoid 18:1235c17b451e 1753 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 1754 // support list_digitalInOutPins() listing buttons and leds as pin numbers 90/91/92/93
whismanoid 18:1235c17b451e 1755 // TODO: support find_digitalInOutPin(90) return DigitalInOut of switch SW1/BUTTON1
whismanoid 18:1235c17b451e 1756 //~ serialStream.printf(" 90");
whismanoid 18:1235c17b451e 1757 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 1758 serialStream.printf(" 91");
whismanoid 18:1235c17b451e 1759 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 1760 serialStream.printf(" 92");
whismanoid 18:1235c17b451e 1761 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 1762 serialStream.printf(" 93");
whismanoid 18:1235c17b451e 1763 #else // USE_LEDS
whismanoid 18:1235c17b451e 1764 #endif // USE_LEDS
whismanoid 0:cb44e2e9ec4c 1765 }
whismanoid 0:cb44e2e9ec4c 1766 #endif
whismanoid 0:cb44e2e9ec4c 1767
whismanoid 0:cb44e2e9ec4c 1768
whismanoid 0:cb44e2e9ec4c 1769 // DigitalInOut pin resource: search index
whismanoid 0:cb44e2e9ec4c 1770 #if HAS_digitalInOuts
whismanoid 0:cb44e2e9ec4c 1771 DigitalInOut& find_digitalInOutPin(int cPinIndex)
whismanoid 0:cb44e2e9ec4c 1772 {
whismanoid 0:cb44e2e9ec4c 1773 switch (cPinIndex)
whismanoid 0:cb44e2e9ec4c 1774 {
whismanoid 0:cb44e2e9ec4c 1775 default: // default to the first defined digitalInOut pin
whismanoid 0:cb44e2e9ec4c 1776 #if HAS_digitalInOut0
whismanoid 0:cb44e2e9ec4c 1777 case '0': case 0x00: return digitalInOut0;
whismanoid 0:cb44e2e9ec4c 1778 #endif
whismanoid 0:cb44e2e9ec4c 1779 #if HAS_digitalInOut1
whismanoid 0:cb44e2e9ec4c 1780 case '1': case 0x01: return digitalInOut1;
whismanoid 0:cb44e2e9ec4c 1781 #endif
whismanoid 0:cb44e2e9ec4c 1782 #if HAS_digitalInOut2
whismanoid 0:cb44e2e9ec4c 1783 case '2': case 0x02: return digitalInOut2;
whismanoid 0:cb44e2e9ec4c 1784 #endif
whismanoid 0:cb44e2e9ec4c 1785 #if HAS_digitalInOut3
whismanoid 0:cb44e2e9ec4c 1786 case '3': case 0x03: return digitalInOut3;
whismanoid 0:cb44e2e9ec4c 1787 #endif
whismanoid 0:cb44e2e9ec4c 1788 #if HAS_digitalInOut4
whismanoid 0:cb44e2e9ec4c 1789 case '4': case 0x04: return digitalInOut4;
whismanoid 0:cb44e2e9ec4c 1790 #endif
whismanoid 0:cb44e2e9ec4c 1791 #if HAS_digitalInOut5
whismanoid 0:cb44e2e9ec4c 1792 case '5': case 0x05: return digitalInOut5;
whismanoid 0:cb44e2e9ec4c 1793 #endif
whismanoid 0:cb44e2e9ec4c 1794 #if HAS_digitalInOut6
whismanoid 0:cb44e2e9ec4c 1795 case '6': case 0x06: return digitalInOut6;
whismanoid 0:cb44e2e9ec4c 1796 #endif
whismanoid 0:cb44e2e9ec4c 1797 #if HAS_digitalInOut7
whismanoid 0:cb44e2e9ec4c 1798 case '7': case 0x07: return digitalInOut7;
whismanoid 0:cb44e2e9ec4c 1799 #endif
whismanoid 0:cb44e2e9ec4c 1800 #if HAS_digitalInOut8
whismanoid 0:cb44e2e9ec4c 1801 case '8': case 0x08: return digitalInOut8;
whismanoid 0:cb44e2e9ec4c 1802 #endif
whismanoid 0:cb44e2e9ec4c 1803 #if HAS_digitalInOut9
whismanoid 0:cb44e2e9ec4c 1804 case '9': case 0x09: return digitalInOut9;
whismanoid 0:cb44e2e9ec4c 1805 #endif
whismanoid 0:cb44e2e9ec4c 1806 #if HAS_digitalInOut10
whismanoid 0:cb44e2e9ec4c 1807 case 'a': case 0x0a: return digitalInOut10;
whismanoid 0:cb44e2e9ec4c 1808 #endif
whismanoid 0:cb44e2e9ec4c 1809 #if HAS_digitalInOut11
whismanoid 0:cb44e2e9ec4c 1810 case 'b': case 0x0b: return digitalInOut11;
whismanoid 0:cb44e2e9ec4c 1811 #endif
whismanoid 0:cb44e2e9ec4c 1812 #if HAS_digitalInOut12
whismanoid 0:cb44e2e9ec4c 1813 case 'c': case 0x0c: return digitalInOut12;
whismanoid 0:cb44e2e9ec4c 1814 #endif
whismanoid 0:cb44e2e9ec4c 1815 #if HAS_digitalInOut13
whismanoid 0:cb44e2e9ec4c 1816 case 'd': case 0x0d: return digitalInOut13;
whismanoid 0:cb44e2e9ec4c 1817 #endif
whismanoid 0:cb44e2e9ec4c 1818 #if HAS_digitalInOut14
whismanoid 0:cb44e2e9ec4c 1819 case 'e': case 0x0e: return digitalInOut14;
whismanoid 0:cb44e2e9ec4c 1820 #endif
whismanoid 0:cb44e2e9ec4c 1821 #if HAS_digitalInOut15
whismanoid 0:cb44e2e9ec4c 1822 case 'f': case 0x0f: return digitalInOut15;
whismanoid 0:cb44e2e9ec4c 1823 #endif
whismanoid 0:cb44e2e9ec4c 1824 #if HAS_digitalInOut16
whismanoid 0:cb44e2e9ec4c 1825 case 'g': case 0x10: return digitalInOut16;
whismanoid 0:cb44e2e9ec4c 1826 #endif
whismanoid 0:cb44e2e9ec4c 1827 #if HAS_digitalInOut17
whismanoid 0:cb44e2e9ec4c 1828 case 'h': case 0x11: return digitalInOut17;
whismanoid 0:cb44e2e9ec4c 1829 #endif
whismanoid 18:1235c17b451e 1830 // support LEDs as digital pins 91 92 93; WIP button as digital pin 90
whismanoid 18:1235c17b451e 1831 // TODO: support find_digitalInOutPin(90) return DigitalInOut of switch SW1/BUTTON1
whismanoid 18:1235c17b451e 1832 //~ case 90: return button1;
whismanoid 18:1235c17b451e 1833 #if USE_LEDS
whismanoid 18:1235c17b451e 1834 // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 1835 case 91: return led1_RFailLED;
whismanoid 18:1235c17b451e 1836 // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 1837 case 92: return led2_GPassLED;
whismanoid 18:1235c17b451e 1838 // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 18:1235c17b451e 1839 case 93: return led3_BBusyLED;
whismanoid 18:1235c17b451e 1840 #else // USE_LEDS
whismanoid 18:1235c17b451e 1841 #endif // USE_LEDS
whismanoid 0:cb44e2e9ec4c 1842 }
whismanoid 0:cb44e2e9ec4c 1843 }
whismanoid 0:cb44e2e9ec4c 1844 #endif
whismanoid 0:cb44e2e9ec4c 1845
whismanoid 0:cb44e2e9ec4c 1846
whismanoid 0:cb44e2e9ec4c 1847 // AnalogIn pin resource: search index
whismanoid 0:cb44e2e9ec4c 1848 #if HAS_analogIns
whismanoid 0:cb44e2e9ec4c 1849 AnalogIn& find_analogInPin(int cPinIndex)
whismanoid 0:cb44e2e9ec4c 1850 {
whismanoid 0:cb44e2e9ec4c 1851 switch (cPinIndex)
whismanoid 0:cb44e2e9ec4c 1852 {
whismanoid 0:cb44e2e9ec4c 1853 default: // default to the first defined analogIn pin
whismanoid 0:cb44e2e9ec4c 1854 #if HAS_analogIn0
whismanoid 0:cb44e2e9ec4c 1855 case '0': case 0x00: return analogIn0;
whismanoid 0:cb44e2e9ec4c 1856 #endif
whismanoid 0:cb44e2e9ec4c 1857 #if HAS_analogIn1
whismanoid 0:cb44e2e9ec4c 1858 case '1': case 0x01: return analogIn1;
whismanoid 0:cb44e2e9ec4c 1859 #endif
whismanoid 0:cb44e2e9ec4c 1860 #if HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 1861 case '2': case 0x02: return analogIn2;
whismanoid 0:cb44e2e9ec4c 1862 #endif
whismanoid 0:cb44e2e9ec4c 1863 #if HAS_analogIn3
whismanoid 0:cb44e2e9ec4c 1864 case '3': case 0x03: return analogIn3;
whismanoid 0:cb44e2e9ec4c 1865 #endif
whismanoid 0:cb44e2e9ec4c 1866 #if HAS_analogIn4
whismanoid 0:cb44e2e9ec4c 1867 case '4': case 0x04: return analogIn4;
whismanoid 0:cb44e2e9ec4c 1868 #endif
whismanoid 0:cb44e2e9ec4c 1869 #if HAS_analogIn5
whismanoid 0:cb44e2e9ec4c 1870 case '5': case 0x05: return analogIn5;
whismanoid 0:cb44e2e9ec4c 1871 #endif
whismanoid 0:cb44e2e9ec4c 1872 #if HAS_analogIn6
whismanoid 0:cb44e2e9ec4c 1873 case '6': case 0x06: return analogIn6;
whismanoid 0:cb44e2e9ec4c 1874 #endif
whismanoid 0:cb44e2e9ec4c 1875 #if HAS_analogIn7
whismanoid 0:cb44e2e9ec4c 1876 case '7': case 0x07: return analogIn7;
whismanoid 0:cb44e2e9ec4c 1877 #endif
whismanoid 0:cb44e2e9ec4c 1878 #if HAS_analogIn8
whismanoid 0:cb44e2e9ec4c 1879 case '8': case 0x08: return analogIn8;
whismanoid 0:cb44e2e9ec4c 1880 #endif
whismanoid 0:cb44e2e9ec4c 1881 #if HAS_analogIn9
whismanoid 0:cb44e2e9ec4c 1882 case '9': case 0x09: return analogIn9;
whismanoid 0:cb44e2e9ec4c 1883 #endif
whismanoid 0:cb44e2e9ec4c 1884 #if HAS_analogIn10
whismanoid 0:cb44e2e9ec4c 1885 case 'a': case 0x0a: return analogIn10;
whismanoid 0:cb44e2e9ec4c 1886 #endif
whismanoid 0:cb44e2e9ec4c 1887 #if HAS_analogIn11
whismanoid 0:cb44e2e9ec4c 1888 case 'b': case 0x0b: return analogIn11;
whismanoid 0:cb44e2e9ec4c 1889 #endif
whismanoid 0:cb44e2e9ec4c 1890 #if HAS_analogIn12
whismanoid 0:cb44e2e9ec4c 1891 case 'c': case 0x0c: return analogIn12;
whismanoid 0:cb44e2e9ec4c 1892 #endif
whismanoid 0:cb44e2e9ec4c 1893 #if HAS_analogIn13
whismanoid 0:cb44e2e9ec4c 1894 case 'd': case 0x0d: return analogIn13;
whismanoid 0:cb44e2e9ec4c 1895 #endif
whismanoid 0:cb44e2e9ec4c 1896 #if HAS_analogIn14
whismanoid 0:cb44e2e9ec4c 1897 case 'e': case 0x0e: return analogIn14;
whismanoid 0:cb44e2e9ec4c 1898 #endif
whismanoid 0:cb44e2e9ec4c 1899 #if HAS_analogIn15
whismanoid 0:cb44e2e9ec4c 1900 case 'f': case 0x0f: return analogIn15;
whismanoid 0:cb44e2e9ec4c 1901 #endif
whismanoid 0:cb44e2e9ec4c 1902 }
whismanoid 0:cb44e2e9ec4c 1903 }
whismanoid 0:cb44e2e9ec4c 1904 #endif
whismanoid 0:cb44e2e9ec4c 1905
whismanoid 0:cb44e2e9ec4c 1906 #if HAS_analogIns
whismanoid 0:cb44e2e9ec4c 1907 const float analogInPin_fullScaleVoltage[] = {
whismanoid 0:cb44e2e9ec4c 1908 # if defined(TARGET_MAX32630)
whismanoid 0:cb44e2e9ec4c 1909 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1910 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1911 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1912 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1913 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1914 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1915 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1916 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1917 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1918 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1919 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1920 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1921 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1922 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1923 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1924 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1925 # elif defined(TARGET_MAX32620FTHR)
whismanoid 0:cb44e2e9ec4c 1926 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 0:cb44e2e9ec4c 1927 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1928 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1929 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1930 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1931 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1932 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1933 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1934 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1935 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1936 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1937 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1938 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1939 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1940 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1941 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1942 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 19:5ff09c8e9daf 1943 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 1944 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn0 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1945 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn1 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1946 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn2 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1947 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn3 // fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1948 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1949 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 0:cb44e2e9ec4c 1950 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1951 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1952 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 0:cb44e2e9ec4c 1953 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 0:cb44e2e9ec4c 1954 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 0:cb44e2e9ec4c 1955 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1956 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 0:cb44e2e9ec4c 1957 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1958 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1959 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1960 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 0:cb44e2e9ec4c 1961 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1962 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1963 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1964 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1965 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1966 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1967 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1968 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1969 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1970 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1971 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1972 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1973 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1974 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1975 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1976 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1977 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 1978 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1979 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1980 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 1981 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 1982 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 1983 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 1984 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 1985 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 1986 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 1987 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 1988 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 1989 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 1990 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 1991 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 1992 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 1993 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 1994 //#elif defined(TARGET_LPC1768)
whismanoid 0:cb44e2e9ec4c 1995 #else
whismanoid 0:cb44e2e9ec4c 1996 // unknown target
whismanoid 0:cb44e2e9ec4c 1997 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 0:cb44e2e9ec4c 1998 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 0:cb44e2e9ec4c 1999 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 0:cb44e2e9ec4c 2000 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 0:cb44e2e9ec4c 2001 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 0:cb44e2e9ec4c 2002 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 0:cb44e2e9ec4c 2003 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 0:cb44e2e9ec4c 2004 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 0:cb44e2e9ec4c 2005 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 0:cb44e2e9ec4c 2006 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 0:cb44e2e9ec4c 2007 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 0:cb44e2e9ec4c 2008 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 0:cb44e2e9ec4c 2009 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 0:cb44e2e9ec4c 2010 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 0:cb44e2e9ec4c 2011 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 0:cb44e2e9ec4c 2012 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 0:cb44e2e9ec4c 2013 # endif
whismanoid 0:cb44e2e9ec4c 2014 };
whismanoid 0:cb44e2e9ec4c 2015 #endif
whismanoid 0:cb44e2e9ec4c 2016
whismanoid 0:cb44e2e9ec4c 2017
whismanoid 0:cb44e2e9ec4c 2018
whismanoid 0:cb44e2e9ec4c 2019
whismanoid 0:cb44e2e9ec4c 2020 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2021 // TODO support CmdLine command menus (like on Serial_Tester)
whismanoid 4:d9b05924ad4c 2022 #ifndef USE_CMDLINE_MENUS
whismanoid 4:d9b05924ad4c 2023 #define USE_CMDLINE_MENUS 1
whismanoid 4:d9b05924ad4c 2024 //~ #undef USE_CMDLINE_MENUS
whismanoid 4:d9b05924ad4c 2025 #endif
whismanoid 4:d9b05924ad4c 2026 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 2027 #include "CmdLine.h"
whismanoid 4:d9b05924ad4c 2028 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 2029 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 2030 extern CmdLine cmdLine; // declared later
whismanoid 4:d9b05924ad4c 2031 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 2032
whismanoid 4:d9b05924ad4c 2033 //--------------------------------------------------
whismanoid 39:4d285e961435 2034 // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 2035 #ifndef USE_DATALOGGER_SLEEP
whismanoid 39:4d285e961435 2036 #define USE_DATALOGGER_SLEEP 1
whismanoid 39:4d285e961435 2037 //~ #undef USE_DATALOGGER_SLEEP
whismanoid 39:4d285e961435 2038 #endif
whismanoid 39:4d285e961435 2039 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 2040 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 42:89607d5d4e6d 2041 // TODO: USE_DATALOGGER_SLEEP -- #include "lp.h" -- LP_EnterLP1()
whismanoid 42:89607d5d4e6d 2042 #include "lp.h"
whismanoid 39:4d285e961435 2043 #endif
whismanoid 39:4d285e961435 2044 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 2045 typedef enum Datalogger_Sleep_enum_t {
whismanoid 39:4d285e961435 2046 datalogger_Sleep_LP0_Stop = 0,
whismanoid 39:4d285e961435 2047 datalogger_Sleep_LP1_DeepSleep = 1,
whismanoid 39:4d285e961435 2048 datalogger_Sleep_LP2_Sleep = 2,
whismanoid 39:4d285e961435 2049 datalogger_Sleep_LP3_Run = 3,
whismanoid 39:4d285e961435 2050 } Datalogger_Sleep_enum_t;
whismanoid 39:4d285e961435 2051 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 2052 Datalogger_Sleep_enum_t g_timer_sleepmode = datalogger_Sleep_LP3_Run;
whismanoid 39:4d285e961435 2053 #endif
whismanoid 39:4d285e961435 2054
whismanoid 39:4d285e961435 2055 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2056 // Datalog trigger types
whismanoid 4:d9b05924ad4c 2057 #ifndef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 2058 #define USE_DATALOGGER_TRIGGER 1
whismanoid 4:d9b05924ad4c 2059 //~ #undef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 2060 #endif
whismanoid 4:d9b05924ad4c 2061 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 2062 typedef enum Datalogger_Trigger_enum_t {
whismanoid 4:d9b05924ad4c 2063 trigger_Halt = 0, //!< halt
whismanoid 4:d9b05924ad4c 2064 trigger_FreeRun = 1, //!< free run as fast as possible
whismanoid 4:d9b05924ad4c 2065 trigger_Timer = 2, //!< timer (configure interval)
whismanoid 4:d9b05924ad4c 2066 trigger_PlatformDigitalInput, //!< platform digital input (configure digital input pin reference)
whismanoid 4:d9b05924ad4c 2067 trigger_SPIDeviceRegRead, //!< SPI device register read (configure regaddr, mask value, match value)
whismanoid 4:d9b05924ad4c 2068 } Datalogger_Trigger_enum_t;
whismanoid 4:d9b05924ad4c 2069 Datalogger_Trigger_enum_t Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 2070 //
whismanoid 17:9397ea3ea7e9 2071 // configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 2072 int g_timer_interval_msec = 500; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2073 int g_timer_interval_count = 10; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2074 int g_timer_interval_counter = 0; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2075 //
whismanoid 17:9397ea3ea7e9 2076 // TODO: configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 2077 //
whismanoid 17:9397ea3ea7e9 2078 // TODO: configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2079 //
whismanoid 4:d9b05924ad4c 2080 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 2081
whismanoid 4:d9b05924ad4c 2082 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 2083 // support trigger_SPIDeviceRegRead: Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 2084 #ifndef USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2085 #define USE_DATALOGGER_SPIDeviceRegRead 0
whismanoid 17:9397ea3ea7e9 2086 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2087 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2088 // TODO: uint16_t regAddr;
whismanoid 17:9397ea3ea7e9 2089 // TODO: uint16_t regDataMask;
whismanoid 17:9397ea3ea7e9 2090 // TODO: uint16_t regDataTest;
whismanoid 17:9397ea3ea7e9 2091 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2092
whismanoid 17:9397ea3ea7e9 2093 //--------------------------------------------------
whismanoid 30:07197a430869 2094 // support Datalogger_PrintRow() print gstrRemarkText field from recent #remark
whismanoid 30:07197a430869 2095 #ifndef USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2096 #define USE_DATALOGGER_REMARK_FIELD 1
whismanoid 30:07197a430869 2097 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2098 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2099 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark
whismanoid 30:07197a430869 2100 const size_t gstrRemarkTextLASTINDEX = 40; // gstrRemarkText buffer size - 1
whismanoid 30:07197a430869 2101 char gstrRemarkText[gstrRemarkTextLASTINDEX+1] = "";
whismanoid 30:07197a430869 2102 char gstrRemarkHeader[] = "comment"; // comment or remark?
whismanoid 30:07197a430869 2103 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2104
whismanoid 30:07197a430869 2105 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 2106 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2107 #ifndef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 2108 #define USE_DATALOGGER_ActionTable 1
whismanoid 17:9397ea3ea7e9 2109 //~ #undef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 2110 #endif
whismanoid 17:9397ea3ea7e9 2111 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2112 //
whismanoid 17:9397ea3ea7e9 2113 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2114 typedef enum action_type_enum_t {
whismanoid 17:9397ea3ea7e9 2115 action_noop = 0, // no operation
whismanoid 30:07197a430869 2116 action_digitalOutLow = 1, // pin = low if condition
whismanoid 30:07197a430869 2117 action_digitalOutHigh = 2, // pin = high if condition
whismanoid 30:07197a430869 2118 action_button = 3, // pin = button event index 1, 2, 3
whismanoid 30:07197a430869 2119 action_trigger_Halt = 4,
whismanoid 30:07197a430869 2120 action_trigger_FreeRun = 5,
whismanoid 30:07197a430869 2121 action_trigger_Timer = 6,
whismanoid 30:07197a430869 2122 action_trigger_PlatformDigitalInput = 7,
whismanoid 30:07197a430869 2123 action_trigger_SPIDeviceRegRead = 8,
whismanoid 17:9397ea3ea7e9 2124 } action_type_enum_t;
whismanoid 17:9397ea3ea7e9 2125 //
whismanoid 17:9397ea3ea7e9 2126 // Datalogger_RunActionTable() supported conditions
whismanoid 17:9397ea3ea7e9 2127 typedef enum action_condition_enum_t {
whismanoid 17:9397ea3ea7e9 2128 condition_always = 0, // ( true )
whismanoid 17:9397ea3ea7e9 2129 condition_if_An_gt_threshold, // (Platform_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 2130 condition_if_An_lt_threshold, // (Platform_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 2131 condition_if_An_eq_threshold, // (Platform_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 2132 condition_if_An_ge_threshold, // (Platform_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 2133 condition_if_An_le_threshold, // (Platform_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 2134 condition_if_An_ne_threshold, // (Platform_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 2135 condition_if_AINn_gt_threshold, // (SPI_AIN_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 2136 condition_if_AINn_lt_threshold, // (SPI_AIN_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 2137 condition_if_AINn_eq_threshold, // (SPI_AIN_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 2138 condition_if_AINn_ge_threshold, // (SPI_AIN_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 2139 condition_if_AINn_le_threshold, // (SPI_AIN_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 2140 condition_if_AINn_ne_threshold, // (SPI_AIN_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 2141 } condition_enum_t;
whismanoid 17:9397ea3ea7e9 2142 //
whismanoid 17:9397ea3ea7e9 2143 // Datalogger_RunActionTable() structure
whismanoid 17:9397ea3ea7e9 2144 typedef struct action_table_row_t {
whismanoid 17:9397ea3ea7e9 2145 action_type_enum_t action;
whismanoid 17:9397ea3ea7e9 2146 int digitalOutPin;
whismanoid 17:9397ea3ea7e9 2147 action_condition_enum_t condition;
whismanoid 17:9397ea3ea7e9 2148 int condition_channel;
whismanoid 17:9397ea3ea7e9 2149 double condition_threshold;
whismanoid 17:9397ea3ea7e9 2150 } action_table_row_t;
whismanoid 17:9397ea3ea7e9 2151 #if MAX40108_DEMO
whismanoid 39:4d285e961435 2152 # ifdef BOARD_SERIAL_NUMBER
whismanoid 39:4d285e961435 2153 // data unique to certain boards based on serial number
whismanoid 39:4d285e961435 2154 // channels A0/A4(CSA*100/3.34=mA), A1/A5(1V0), A2(WE), A3(CE)
whismanoid 39:4d285e961435 2155 # if (BOARD_SERIAL_NUMBER) == 1
whismanoid 39:4d285e961435 2156 #warning "(BOARD_SERIAL_NUMBER) == 1 -- logic uses A3(CE) instead of A2(WE)"
whismanoid 39:4d285e961435 2157 const int channel_WE = 3; // use channel_CE instead on proto board s/n 1 for diagnostics; easier to sweep values
whismanoid 39:4d285e961435 2158 # elif (BOARD_SERIAL_NUMBER) == 5
whismanoid 39:4d285e961435 2159 #warning "(BOARD_SERIAL_NUMBER) == 5 -- logic uses A3(CE) instead of A2(WE)"
whismanoid 39:4d285e961435 2160 const int channel_WE = 3; // use channel_CE instead on proto board s/n 1 for diagnostics; easier to sweep values
whismanoid 39:4d285e961435 2161 # else // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 17:9397ea3ea7e9 2162 const int channel_WE = 2;
whismanoid 39:4d285e961435 2163 # endif
whismanoid 39:4d285e961435 2164 # endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 17:9397ea3ea7e9 2165 const double threshold_WE_0V5 = 0.5;
whismanoid 17:9397ea3ea7e9 2166 const double threshold_WE_0V6 = 0.6;
whismanoid 17:9397ea3ea7e9 2167 const double threshold_WE_0V7 = 0.7;
whismanoid 18:1235c17b451e 2168 const int pin_LED_1 = 91; // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 2169 const int pin_LED_2 = 92; // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 2170 const int pin_LED_3 = 93; // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 17:9397ea3ea7e9 2171 #endif
whismanoid 17:9397ea3ea7e9 2172 const int ACTION_TABLE_ROW_MAX = 20;
whismanoid 17:9397ea3ea7e9 2173 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2174 bool Datalogger_action_table_enabled = true;
whismanoid 30:07197a430869 2175 int Datalogger_action_table_row_count = 8; // assert (Datalogger_action_table_row_count <= ACTION_TABLE_ROW_MAX)
whismanoid 17:9397ea3ea7e9 2176 #else // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2177 int Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 2178 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2179 action_table_row_t Datalogger_action_table[ACTION_TABLE_ROW_MAX] = {
whismanoid 17:9397ea3ea7e9 2180 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2181 // LED indicator show (WE > 0.5V)
whismanoid 18:1235c17b451e 2182 // L@0 act=1 pin=92 if=1 ch=2 x=0.500000 -- digitalOutLow D92 if A2 > 0.500000
whismanoid 18:1235c17b451e 2183 {action_digitalOutLow, pin_LED_2, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V5},
whismanoid 17:9397ea3ea7e9 2184 //
whismanoid 17:9397ea3ea7e9 2185 // LED indicator show (WE > 0.6V)
whismanoid 18:1235c17b451e 2186 // L@1 act=1 pin=93 if=1 ch=2 x=0.600000 -- digitalOutLow D93 if A2 > 0.600000
whismanoid 18:1235c17b451e 2187 {action_digitalOutLow, pin_LED_3, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 17:9397ea3ea7e9 2188 //
whismanoid 17:9397ea3ea7e9 2189 // switch to always-on mode `trigger_FreeRun` if (WE > 0.7V)
whismanoid 29:6a9edb6e973b 2190 // L@2 act=5 if=1 ch=2 x=0.700000 -- trigger_FreeRun if A2 > 0.700000
whismanoid 17:9397ea3ea7e9 2191 {action_trigger_FreeRun, 0, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 17:9397ea3ea7e9 2192 //
whismanoid 17:9397ea3ea7e9 2193 // switch to intermittent-sleep-mode `trigger_Timer` if (WE < 0.6V)
whismanoid 29:6a9edb6e973b 2194 // L@3 act=6 if=2 ch=2 x=0.600000 -- trigger_Timer(10 x 500msec) if A2 < 0.600000
whismanoid 17:9397ea3ea7e9 2195 {action_trigger_Timer, 0, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 2196 //
whismanoid 18:1235c17b451e 2197 // LED indicator show (`Datalogger_Trigger` == `trigger_FreeRun`)
whismanoid 18:1235c17b451e 2198 // {action_noop, 0, condition_always, 0, 0},
whismanoid 18:1235c17b451e 2199 // L@4 act=1 pin=91 if=1 ch=2 x=0.700000 -- digitalOutLow D91 if A2 > 0.700000
whismanoid 18:1235c17b451e 2200 {action_digitalOutLow, pin_LED_1, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 18:1235c17b451e 2201 //
whismanoid 18:1235c17b451e 2202 // L@5 act=2 pin=91 if=2 ch=2 x=0.600000 -- digitalOutHigh D91 if A2 < 0.600000
whismanoid 18:1235c17b451e 2203 {action_digitalOutHigh, pin_LED_1, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 2204 //
whismanoid 30:07197a430869 2205 // L@6 act=3 pin=4 if=1 ch=2 x=0.700000 -- button 4 event if A2 > 0.700000
whismanoid 30:07197a430869 2206 {action_button, 4, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 29:6a9edb6e973b 2207 //
whismanoid 30:07197a430869 2208 // L@7 act=3 pin=5 if=2 ch=2 x=0.600000 -- button 5 event if A2 < 0.600000
whismanoid 30:07197a430869 2209 {action_button, 5, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 29:6a9edb6e973b 2210 //
whismanoid 17:9397ea3ea7e9 2211 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2212 //
whismanoid 17:9397ea3ea7e9 2213 {action_noop, 0, condition_always, 0, 0},
whismanoid 17:9397ea3ea7e9 2214 };
whismanoid 17:9397ea3ea7e9 2215 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2216
whismanoid 17:9397ea3ea7e9 2217 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2218 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 2219 uint8_t Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 2220 uint8_t need_reinit = true;
whismanoid 8:dffee7509bfb 2221 void Datalogger_PrintHeader(CmdLine& cmdLine);
whismanoid 5:aaf8b5f5fda1 2222 void Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 2223 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2224 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 2225 void Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 2226 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 8:dffee7509bfb 2227 void Datalogger_PrintRow(CmdLine& cmdLine);
whismanoid 4:d9b05924ad4c 2228
whismanoid 4:d9b05924ad4c 2229 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 2230 // Option to validate SPI link by reading PART_ID register
whismanoid 0:cb44e2e9ec4c 2231 #ifndef VERIFY_PART_ID_IN_LOOP
whismanoid 3:9055e17e181a 2232 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2233 #define VERIFY_PART_ID_IN_LOOP 1
whismanoid 3:9055e17e181a 2234 #else
whismanoid 0:cb44e2e9ec4c 2235 #define VERIFY_PART_ID_IN_LOOP 0
whismanoid 3:9055e17e181a 2236 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2237 #endif
whismanoid 0:cb44e2e9ec4c 2238
whismanoid 3:9055e17e181a 2239 //--------------------------------------------------
whismanoid 3:9055e17e181a 2240 #define NUM_DUT_ANALOG_IN_CHANNELS 10
whismanoid 3:9055e17e181a 2241
whismanoid 3:9055e17e181a 2242 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2243 // MAX11410 individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 3:9055e17e181a 2244 typedef enum SPI_AIN_Enable_t {
whismanoid 10:04022a61b527 2245 SPI_AIN_Disable = 0,
whismanoid 10:04022a61b527 2246 SPI_AIN_Enable_LSB = 1,
whismanoid 10:04022a61b527 2247 SPI_AIN_Enable_Volt = 2,
whismanoid 3:9055e17e181a 2248 } SPI_AIN_Enable_t;
whismanoid 3:9055e17e181a 2249 uint8_t SPI_AIN_Enable_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2250 SPI_AIN_Enable_LSB, // AIN0 1=LSB
whismanoid 10:04022a61b527 2251 SPI_AIN_Enable_LSB, // AIN1 1=LSB
whismanoid 10:04022a61b527 2252 SPI_AIN_Enable_LSB, // AIN2 1=LSB
whismanoid 10:04022a61b527 2253 SPI_AIN_Enable_LSB, // AIN3 1=LSB
whismanoid 10:04022a61b527 2254 SPI_AIN_Enable_LSB, // AIN4 1=LSB
whismanoid 10:04022a61b527 2255 SPI_AIN_Enable_LSB, // AIN5 1=LSB
whismanoid 10:04022a61b527 2256 SPI_AIN_Enable_LSB, // AIN6 1=LSB
whismanoid 10:04022a61b527 2257 SPI_AIN_Enable_LSB, // AIN7 1=LSB
whismanoid 10:04022a61b527 2258 SPI_AIN_Enable_LSB, // AIN8 1=LSB
whismanoid 10:04022a61b527 2259 SPI_AIN_Enable_LSB, // AIN9 1=LSB
whismanoid 3:9055e17e181a 2260 };
whismanoid 3:9055e17e181a 2261 //
whismanoid 10:04022a61b527 2262 double SPI_AIN_Voltage[NUM_DUT_ANALOG_IN_CHANNELS];
whismanoid 13:184a08909405 2263 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2264 #ifndef HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 2265 #define HAS_SPI_AIN_customChannelHeader 0
whismanoid 13:184a08909405 2266 #endif
whismanoid 13:184a08909405 2267 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2268 const char* const SPI_AIN_customChannelHeader_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2269 "", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2270 "", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2271 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2272 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2273 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2274 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2275 };
whismanoid 13:184a08909405 2276 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 3:9055e17e181a 2277 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2278 // ---------- Measure_Voltage_custom_props in Measure_Voltage @pre and in class properties ----------
whismanoid 3:9055e17e181a 2279 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 2280 // MAX11410 specific per-channel config register v_filter
whismanoid 3:9055e17e181a 2281 uint8_t SPI_AIN_Cfg_v_filter_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2282 0x34, // AIN0 @ v_filter=0x34
whismanoid 3:9055e17e181a 2283 0x34, // AIN1 @ v_filter=0x34
whismanoid 3:9055e17e181a 2284 0x34, // AIN2 @ v_filter=0x34
whismanoid 3:9055e17e181a 2285 0x34, // AIN3 @ v_filter=0x34
whismanoid 3:9055e17e181a 2286 0x34, // AIN4 @ v_filter=0x34
whismanoid 3:9055e17e181a 2287 0x34, // AIN5 @ v_filter=0x34
whismanoid 3:9055e17e181a 2288 0x34, // AIN6 @ v_filter=0x34
whismanoid 3:9055e17e181a 2289 0x34, // AIN7 @ v_filter=0x34
whismanoid 3:9055e17e181a 2290 0x34, // AIN8 @ v_filter=0x34
whismanoid 3:9055e17e181a 2291 0x34, // AIN9 @ v_filter=0x34
whismanoid 3:9055e17e181a 2292 };
whismanoid 3:9055e17e181a 2293 //
whismanoid 4:d9b05924ad4c 2294 // MAX11410 specific per-channel config register v_ctrl
whismanoid 3:9055e17e181a 2295 uint8_t SPI_AIN_Cfg_v_ctrl_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2296 0x42, // AIN0 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2297 0x42, // AIN1 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2298 0x42, // AIN2 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2299 0x42, // AIN3 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2300 0x42, // AIN4 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2301 0x42, // AIN5 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2302 0x42, // AIN6 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2303 0x42, // AIN7 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2304 0x42, // AIN8 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2305 0x42, // AIN9 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2306 };
whismanoid 3:9055e17e181a 2307 //
whismanoid 4:d9b05924ad4c 2308 // MAX11410 specific per-channel config register v_pga
whismanoid 3:9055e17e181a 2309 uint8_t SPI_AIN_Cfg_v_pga_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2310 0x00, // AIN0 @ v_pga=0x00
whismanoid 3:9055e17e181a 2311 0x00, // AIN1 @ v_pga=0x00
whismanoid 3:9055e17e181a 2312 0x00, // AIN2 @ v_pga=0x00
whismanoid 3:9055e17e181a 2313 0x00, // AIN3 @ v_pga=0x00
whismanoid 3:9055e17e181a 2314 0x00, // AIN4 @ v_pga=0x00
whismanoid 3:9055e17e181a 2315 0x00, // AIN5 @ v_pga=0x00
whismanoid 3:9055e17e181a 2316 0x00, // AIN6 @ v_pga=0x00
whismanoid 3:9055e17e181a 2317 0x00, // AIN7 @ v_pga=0x00
whismanoid 3:9055e17e181a 2318 0x00, // AIN8 @ v_pga=0x00
whismanoid 3:9055e17e181a 2319 0x00, // AIN9 @ v_pga=0x00
whismanoid 3:9055e17e181a 2320 };
whismanoid 3:9055e17e181a 2321 //
whismanoid 3:9055e17e181a 2322 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2323 // ---------- Measure_Voltage_custom_props ----------
whismanoid 0:cb44e2e9ec4c 2324 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2325 // filter register configuration in Measure_Voltage and Read_All_Voltages CONV_TYPE_01_Continuous
whismanoid 0:cb44e2e9ec4c 2326 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2327 //~ const uint8_t custom_v_filter = 0x00; // @ v_filter=0x00 -- LINEF_00_50Hz_60Hz_FIR RATE_0000 | 1.1SPS
whismanoid 0:cb44e2e9ec4c 2328 //~ const uint8_t custom_v_filter = 0x01; // @ v_filter=0x01 -- LINEF_00_50Hz_60Hz_FIR RATE_0001 | 2.1SPS
whismanoid 0:cb44e2e9ec4c 2329 //~ const uint8_t custom_v_filter = 0x02; // @ v_filter=0x02 -- LINEF_00_50Hz_60Hz_FIR RATE_0010 | 4.2SPS
whismanoid 0:cb44e2e9ec4c 2330 //~ const uint8_t custom_v_filter = 0x03; // @ v_filter=0x03 -- LINEF_00_50Hz_60Hz_FIR RATE_0011 | 8.4SPS
whismanoid 0:cb44e2e9ec4c 2331 //~ const uint8_t custom_v_filter = 0x04; // @ v_filter=0x04 -- LINEF_00_50Hz_60Hz_FIR RATE_0100 | 16.8SPS
whismanoid 0:cb44e2e9ec4c 2332 //~ const uint8_t custom_v_filter = 0x10; // @ v_filter=0x10 -- LINEF_01_50Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2333 //~ const uint8_t custom_v_filter = 0x11; // @ v_filter=0x11 -- LINEF_01_50Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2334 //~ const uint8_t custom_v_filter = 0x12; // @ v_filter=0x12 -- LINEF_01_50Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2335 //~ const uint8_t custom_v_filter = 0x13; // @ v_filter=0x13 -- LINEF_01_50Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2336 //~ const uint8_t custom_v_filter = 0x14; // @ v_filter=0x14 -- LINEF_01_50Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2337 //~ const uint8_t custom_v_filter = 0x15; // @ v_filter=0x15 -- LINEF_01_50Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2338 //~ const uint8_t custom_v_filter = 0x20; // @ v_filter=0x20 -- LINEF_10_60Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2339 //~ const uint8_t custom_v_filter = 0x21; // @ v_filter=0x21 -- LINEF_10_60Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2340 //~ const uint8_t custom_v_filter = 0x22; // @ v_filter=0x22 -- LINEF_10_60Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2341 //~ const uint8_t custom_v_filter = 0x23; // @ v_filter=0x23 -- LINEF_10_60Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2342 //~ const uint8_t custom_v_filter = 0x24; // @ v_filter=0x24 -- LINEF_10_60Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2343 //~ const uint8_t custom_v_filter = 0x25; // @ v_filter=0x25 -- LINEF_10_60Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2344 //~ const uint8_t custom_v_filter = 0x30; // @ v_filter=0x30 -- LINEF_11_SINC4 RATE_0000 | 4SPS
whismanoid 0:cb44e2e9ec4c 2345 //~ const uint8_t custom_v_filter = 0x31; // @ v_filter=0x31 -- LINEF_11_SINC4 RATE_0001 | 10SPS
whismanoid 0:cb44e2e9ec4c 2346 //~ const uint8_t custom_v_filter = 0x32; // @ v_filter=0x32 -- LINEF_11_SINC4 RATE_0010 | 20SPS
whismanoid 0:cb44e2e9ec4c 2347 //~ const uint8_t custom_v_filter = 0x33; // @ v_filter=0x33 -- LINEF_11_SINC4 RATE_0011 | 40SPS
whismanoid 0:cb44e2e9ec4c 2348 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2349 //~ const uint8_t custom_v_filter = 0x35; // @ v_filter=0x35 -- LINEF_11_SINC4 RATE_0101 | 120SPS
whismanoid 0:cb44e2e9ec4c 2350 //~ const uint8_t custom_v_filter = 0x36; // @ v_filter=0x36 -- LINEF_11_SINC4 RATE_0110 | 240SPS
whismanoid 0:cb44e2e9ec4c 2351 //~ const uint8_t custom_v_filter = 0x37; // @ v_filter=0x37 -- LINEF_11_SINC4 RATE_0111 | 480SPS
whismanoid 0:cb44e2e9ec4c 2352 //~ const uint8_t custom_v_filter = 0x38; // @ v_filter=0x38 -- LINEF_11_SINC4 RATE_1000 | 960SPS
whismanoid 0:cb44e2e9ec4c 2353 //~ const uint8_t custom_v_filter = 0x39; // @ v_filter=0x39 -- LINEF_11_SINC4 RATE_1001 | 1920SPS
whismanoid 0:cb44e2e9ec4c 2354 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2355 //
whismanoid 0:cb44e2e9ec4c 2356 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2357 // pga register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 0:cb44e2e9ec4c 2358 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2359 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2360 //~ const uint8_t custom_v_pga = 0x10; // @ v_pga=0x10 -- 0x10 SIG_PATH_01_BYPASS
whismanoid 0:cb44e2e9ec4c 2361 //~ const uint8_t custom_v_pga = 0x20; // @ v_pga=0x20 -- 0x20 SIG_PATH_10_PGA GAIN_000_1
whismanoid 0:cb44e2e9ec4c 2362 //~ const uint8_t custom_v_pga = 0x21; // @ v_pga=0x21 --*0x21 SIG_PATH_10_PGA GAIN_001_2
whismanoid 0:cb44e2e9ec4c 2363 //~ const uint8_t custom_v_pga = 0x22; // @ v_pga=0x22 -- 0x22 SIG_PATH_10_PGA GAIN_010_4
whismanoid 0:cb44e2e9ec4c 2364 //~ const uint8_t custom_v_pga = 0x23; // @ v_pga=0x23 -- 0x23 SIG_PATH_10_PGA GAIN_011_8
whismanoid 0:cb44e2e9ec4c 2365 //~ const uint8_t custom_v_pga = 0x24; // @ v_pga=0x24 -- 0x24 SIG_PATH_10_PGA GAIN_100_16
whismanoid 0:cb44e2e9ec4c 2366 //~ const uint8_t custom_v_pga = 0x25; // @ v_pga=0x25 -- 0x25 SIG_PATH_10_PGA GAIN_101_32
whismanoid 0:cb44e2e9ec4c 2367 //~ const uint8_t custom_v_pga = 0x26; // @ v_pga=0x26 -- 0x26 SIG_PATH_10_PGA GAIN_110_64
whismanoid 0:cb44e2e9ec4c 2368 //~ const uint8_t custom_v_pga = 0x27; // @ v_pga=0x27 -- 0x27 SIG_PATH_10_PGA GAIN_111_128
whismanoid 0:cb44e2e9ec4c 2369 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2370 //
whismanoid 0:cb44e2e9ec4c 2371 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2372 // ctrl register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 3:9055e17e181a 2373 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2374 //~ const uint8_t custom_v_ctrl = 0x40; // @ v_ctrl=0x40 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1
whismanoid 0:cb44e2e9ec4c 2375 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2376 //~ const uint8_t custom_v_ctrl = 0x58; // @ v_ctrl=0x58 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2377 //
whismanoid 0:cb44e2e9ec4c 2378 //~ const uint8_t custom_v_ctrl = 0x41; // @ v_ctrl=0x41 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N
whismanoid 0:cb44e2e9ec4c 2379 //~ const uint8_t custom_v_ctrl = 0x45; // @ v_ctrl=0x45 -- 0x40 unipolar, 0x05 REF_SEL_101_REF1P_AGND
whismanoid 0:cb44e2e9ec4c 2380 //~ const uint8_t custom_v_ctrl = 0x59; // @ v_ctrl=0x59 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2381 //
whismanoid 0:cb44e2e9ec4c 2382 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2383 //~ const uint8_t custom_v_ctrl = 0x46; // @ v_ctrl=0x46 -- 0x40 unipolar, 0x06 REF_SEL_110_REF2P_AGND
whismanoid 0:cb44e2e9ec4c 2384 //~ const uint8_t custom_v_ctrl = 0x22; // @ v_ctrl=0x22 -- 0x20 bipolar offset binary, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2385 //~ const uint8_t custom_v_ctrl = 0x02; // @ v_ctrl=0x02 -- 0x00 bipolar 2's complement, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2386 //
whismanoid 0:cb44e2e9ec4c 2387 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2388 //~ const uint8_t custom_v_ctrl = 0x47; // @ v_ctrl=0x47 -- 0x40 unipolar, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2389 //~ const uint8_t custom_v_ctrl = 0x27; // @ v_ctrl=0x27 -- 0x20 bipolar offset binary, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2390 //~ const uint8_t custom_v_ctrl = 0x07; // @ v_ctrl=0x07 -- 0x00 bipolar 2's complement, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2391 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2392
whismanoid 3:9055e17e181a 2393 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2394 // example code declare SPI interface (GPIO controlled CS)
whismanoid 0:cb44e2e9ec4c 2395 #if defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 2396 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 2397 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 19:5ff09c8e9daf 2398 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 2399 #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 2400 SPI spi(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625PICO: pin P0_5 P0_6 P0_4
whismanoid 0:cb44e2e9ec4c 2401 DigitalOut spi_cs(SPI0_SS); // TARGET_MAX32625PICO: pin P0_7
whismanoid 0:cb44e2e9ec4c 2402 #elif defined(TARGET_MAX32600MBED)
whismanoid 0:cb44e2e9ec4c 2403 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:cb44e2e9ec4c 2404 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2405 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 2406 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 2407 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:cb44e2e9ec4c 2408 //
whismanoid 0:cb44e2e9ec4c 2409 // TODO1: NUCLEO_F446RE SPI not working; CS and MOSI data looks OK but no SCLK clock pulses.
whismanoid 0:cb44e2e9ec4c 2410 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 2411 DigitalOut spi_cs(SPI_CS); // TARGET_NUCLEO_F446RE: PB_6 Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2412 //
whismanoid 0:cb44e2e9ec4c 2413 #else
whismanoid 3:9055e17e181a 2414 SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 3:9055e17e181a 2415 DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2416 #endif
whismanoid 0:cb44e2e9ec4c 2417
whismanoid 0:cb44e2e9ec4c 2418 // example code declare GPIO interface pins
whismanoid 0:cb44e2e9ec4c 2419 // example code declare device instance
whismanoid 3:9055e17e181a 2420 MAX11410 g_MAX11410_device(spi, spi_cs, MAX11410::MAX11410_IC);
whismanoid 3:9055e17e181a 2421 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2422
whismanoid 1:747f1602abfc 2423 //--------------------------------------------------
whismanoid 3:9055e17e181a 2424 // Option to Datalog Arduino platform analog inputs
whismanoid 3:9055e17e181a 2425 #ifndef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2426 #define LOG_PLATFORM_AIN 6
whismanoid 3:9055e17e181a 2427 //~ #undef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2428 #endif
whismanoid 3:9055e17e181a 2429 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 1:747f1602abfc 2430 //#ifndef NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 1:747f1602abfc 2431 //#define NUM_PLATFORM_ANALOG_IN_CHANNELS 6
whismanoid 1:747f1602abfc 2432 //#endif
whismanoid 1:747f1602abfc 2433 const int NUM_PLATFORM_ANALOG_IN_CHANNELS = 6;
whismanoid 1:747f1602abfc 2434 const double adc_full_scale_voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2435 analogInPin_fullScaleVoltage[0], // 1.2,
whismanoid 10:04022a61b527 2436 analogInPin_fullScaleVoltage[1], // 1.2,
whismanoid 10:04022a61b527 2437 analogInPin_fullScaleVoltage[2], // 1.2,
whismanoid 10:04022a61b527 2438 analogInPin_fullScaleVoltage[3], // 1.2,
whismanoid 10:04022a61b527 2439 analogInPin_fullScaleVoltage[4], // 6.0
whismanoid 10:04022a61b527 2440 analogInPin_fullScaleVoltage[5], // 6.0
whismanoid 0:cb44e2e9ec4c 2441 };
whismanoid 9:45f98573eb6d 2442 // Platform ADC individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 9:45f98573eb6d 2443 typedef enum Platform_AIN_Enable_t {
whismanoid 9:45f98573eb6d 2444 Platform_AIN_Disable = 0,
whismanoid 9:45f98573eb6d 2445 Platform_AIN_Enable_LSB = 1,
whismanoid 9:45f98573eb6d 2446 Platform_AIN_Enable_Volt = 2,
whismanoid 9:45f98573eb6d 2447 } Platform_AIN_Enable_t;
whismanoid 13:184a08909405 2448 uint8_t Platform_Enable_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 9:45f98573eb6d 2449 Platform_AIN_Enable_Volt, // AIN0 2=Volt
whismanoid 9:45f98573eb6d 2450 Platform_AIN_Enable_Volt, // AIN1 2=Volt
whismanoid 9:45f98573eb6d 2451 Platform_AIN_Enable_Volt, // AIN2 2=Volt
whismanoid 9:45f98573eb6d 2452 Platform_AIN_Enable_Volt, // AIN3 2=Volt
whismanoid 9:45f98573eb6d 2453 Platform_AIN_Enable_Volt, // AIN4 2=Volt
whismanoid 9:45f98573eb6d 2454 Platform_AIN_Enable_Volt, // AIN5 2=Volt
whismanoid 9:45f98573eb6d 2455 };
whismanoid 37:3f369235e5bc 2456 // Option to report average value of Arduino platform analog inputs
whismanoid 37:3f369235e5bc 2457 #ifndef USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2458 #define USE_Platform_AIN_Average 1
whismanoid 37:3f369235e5bc 2459 //~ #undef USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2460 #endif
whismanoid 37:3f369235e5bc 2461 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2462 #endif // USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2463 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2464 int Platform_AIN_Average_N = 16;
whismanoid 37:3f369235e5bc 2465 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 2466 // Option to apply calibration to Arduino platform analog inputs
whismanoid 34:a1993a1ee904 2467 #ifndef HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2468 #define HAS_Platform_AIN_Calibration 1
whismanoid 34:a1993a1ee904 2469 //~ #undef HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2470 #endif
whismanoid 34:a1993a1ee904 2471 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2472 double CalibratedNormValue(int channel_0_5, double raw_normValue_0_1);
whismanoid 34:a1993a1ee904 2473 // Calibration is between two points for each channel, defined by
whismanoid 34:a1993a1ee904 2474 // a normalized value between 0% and 100%, and the corresponding voltage.
whismanoid 34:a1993a1ee904 2475 // nominal 5% fullscale point; normValue_0_1 < 0.5
whismanoid 34:a1993a1ee904 2476 // calibration_05_normValue_0_1, calibration_05_V should be around 5% or 25%
whismanoid 42:89607d5d4e6d 2477 extern double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 42:89607d5d4e6d 2478 extern double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 34:a1993a1ee904 2479 // nominal 95% fullscale point; normValue_0_1 > 0.5
whismanoid 34:a1993a1ee904 2480 // calibration_95_normValue_0_1, calibration_95_V should be around 95% or 75%
whismanoid 42:89607d5d4e6d 2481 extern double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 42:89607d5d4e6d 2482 extern double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 34:a1993a1ee904 2483 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2484 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2485 double CalibratedNormValue(int channel_0_5, double raw_normValue_0_1)
whismanoid 34:a1993a1ee904 2486 {
whismanoid 34:a1993a1ee904 2487 // TODO: return corrected normValue_0_1 using two-point linear calibration
whismanoid 34:a1993a1ee904 2488 // point 1: calibration_05_normValue_0_1[ch], calibration_05_V[ch]
whismanoid 34:a1993a1ee904 2489 // point 2: calibration_95_normValue_0_1[ch], calibration_95_V[ch]
whismanoid 34:a1993a1ee904 2490 // validate that there is enough span to get sensible results
whismanoid 34:a1993a1ee904 2491 //
whismanoid 34:a1993a1ee904 2492 int ch = channel_0_5;
whismanoid 34:a1993a1ee904 2493 // cmdLine.serial().printf(" %%A cal%dn=%1.9f cal%dv=%1.9fV cal%dn=%1.9f cal%dv=%1.9fV\r\n",
whismanoid 34:a1993a1ee904 2494 // ch, calibration_05_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 2495 // ch, calibration_05_V[ch],
whismanoid 34:a1993a1ee904 2496 // ch, calibration_95_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 2497 // ch, calibration_95_V[ch]
whismanoid 34:a1993a1ee904 2498 // );
whismanoid 34:a1993a1ee904 2499 // cmdLine.serial().printf("\r\n adc_full_scale_voltage[%d] = %1.6fV",
whismanoid 34:a1993a1ee904 2500 // ch,
whismanoid 34:a1993a1ee904 2501 // adc_full_scale_voltage[ch]
whismanoid 34:a1993a1ee904 2502 // );
whismanoid 34:a1993a1ee904 2503 // raw normValue nominal 5% and 95% points
whismanoid 34:a1993a1ee904 2504 double raw_05_normValue = calibration_05_normValue_0_1[ch];
whismanoid 34:a1993a1ee904 2505 double raw_95_normValue = calibration_95_normValue_0_1[ch];
whismanoid 34:a1993a1ee904 2506 // calibrated normValue nominal 5% and 95% points
whismanoid 34:a1993a1ee904 2507 // divide V/adc_full_scale_voltage[0] to get normValue_0_1
whismanoid 34:a1993a1ee904 2508 double cal_05_normValue = calibration_05_V[ch] / adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 2509 double cal_95_normValue = calibration_95_V[ch] / adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 2510 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) cal_05_normValue = %1.6f",
whismanoid 34:a1993a1ee904 2511 // ch,
whismanoid 34:a1993a1ee904 2512 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2513 // cal_05_normValue
whismanoid 34:a1993a1ee904 2514 // );
whismanoid 34:a1993a1ee904 2515 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) cal_95_normValue = %1.6f",
whismanoid 34:a1993a1ee904 2516 // ch,
whismanoid 34:a1993a1ee904 2517 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2518 // cal_95_normValue
whismanoid 34:a1993a1ee904 2519 // );
whismanoid 34:a1993a1ee904 2520 //
whismanoid 34:a1993a1ee904 2521 double span_raw = raw_95_normValue - raw_05_normValue;
whismanoid 34:a1993a1ee904 2522 double span_cal = cal_95_normValue - cal_05_normValue;
whismanoid 34:a1993a1ee904 2523 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) span_raw = %1.6f",
whismanoid 34:a1993a1ee904 2524 // ch,
whismanoid 34:a1993a1ee904 2525 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2526 // span_raw
whismanoid 34:a1993a1ee904 2527 // );
whismanoid 34:a1993a1ee904 2528 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) span_cal = %1.6f",
whismanoid 34:a1993a1ee904 2529 // ch,
whismanoid 34:a1993a1ee904 2530 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2531 // span_cal
whismanoid 34:a1993a1ee904 2532 // );
whismanoid 34:a1993a1ee904 2533 // if calibration is not valid, return unmodified normValue_0_1 and print a warning
whismanoid 34:a1993a1ee904 2534 if (span_raw < 0.001) {
whismanoid 34:a1993a1ee904 2535 cmdLine.serial().printf("\r\n! CalibratedNormValue(%d, %1.6f) ERRRRRR span_raw = %1.6f",
whismanoid 34:a1993a1ee904 2536 ch,
whismanoid 34:a1993a1ee904 2537 raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2538 span_raw
whismanoid 34:a1993a1ee904 2539 );
whismanoid 34:a1993a1ee904 2540 return raw_normValue_0_1;
whismanoid 34:a1993a1ee904 2541 }
whismanoid 34:a1993a1ee904 2542 if (span_cal < 0.001) {
whismanoid 34:a1993a1ee904 2543 cmdLine.serial().printf("\r\n! CalibratedNormValue(%d, %1.6f) ERRRRRR span_cal = %1.6f",
whismanoid 34:a1993a1ee904 2544 ch,
whismanoid 34:a1993a1ee904 2545 raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2546 span_cal
whismanoid 34:a1993a1ee904 2547 );
whismanoid 34:a1993a1ee904 2548 return raw_normValue_0_1;
whismanoid 34:a1993a1ee904 2549 }
whismanoid 34:a1993a1ee904 2550 double slope_correction = span_cal / span_raw;
whismanoid 34:a1993a1ee904 2551 double corrected_normValue_0_1 = cal_05_normValue + ((raw_normValue_0_1 - raw_05_normValue) * slope_correction);
whismanoid 34:a1993a1ee904 2552 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) slope_correction = %1.6f",
whismanoid 34:a1993a1ee904 2553 // ch,
whismanoid 34:a1993a1ee904 2554 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2555 // slope_correction
whismanoid 34:a1993a1ee904 2556 // );
whismanoid 34:a1993a1ee904 2557 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) corrected_normValue_0_1 = %1.6f\r\n",
whismanoid 34:a1993a1ee904 2558 // ch,
whismanoid 34:a1993a1ee904 2559 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2560 // corrected_normValue_0_1
whismanoid 34:a1993a1ee904 2561 // );
whismanoid 34:a1993a1ee904 2562 return corrected_normValue_0_1;
whismanoid 34:a1993a1ee904 2563 }
whismanoid 34:a1993a1ee904 2564 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2565 // Option to customize channel names in datalog header line
whismanoid 13:184a08909405 2566 #ifndef HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 2567 #define HAS_Platform_AIN_customChannelHeader 1
whismanoid 13:184a08909405 2568 #endif
whismanoid 13:184a08909405 2569 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2570 const char* const Platform_AIN_customChannelHeader_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2571 "=AIN4", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2572 "=AIN5", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2573 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2574 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2575 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2576 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2577 };
whismanoid 13:184a08909405 2578 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 1:747f1602abfc 2579 //--------------------------------------------------
whismanoid 1:747f1602abfc 2580 // Option to log platform analog inputs as raw LSB code
whismanoid 1:747f1602abfc 2581 #ifndef LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2582 #define LOG_PLATFORM_ANALOG_IN_LSB 0
whismanoid 1:747f1602abfc 2583 #endif
whismanoid 1:747f1602abfc 2584 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2585 int Platform_LSB[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2586 #endif
whismanoid 1:747f1602abfc 2587
whismanoid 1:747f1602abfc 2588 //--------------------------------------------------
whismanoid 1:747f1602abfc 2589 // Option to use platform analog inputs as Voltage
whismanoid 1:747f1602abfc 2590 #ifndef LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2591 #define LOG_PLATFORM_ANALOG_IN_VOLTS 1
whismanoid 1:747f1602abfc 2592 #endif
whismanoid 1:747f1602abfc 2593 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2594 double Platform_Voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2595 #endif
whismanoid 3:9055e17e181a 2596 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 0:cb44e2e9ec4c 2597
whismanoid 10:04022a61b527 2598 //--------------------------------------------------
whismanoid 10:04022a61b527 2599 // Option to use Command forwarding to Auxiliary serial port
whismanoid 10:04022a61b527 2600 // Command forwarding to Auxiliary serial port TX/RX
whismanoid 10:04022a61b527 2601 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial
whismanoid 10:04022a61b527 2602 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial
whismanoid 10:04022a61b527 2603 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2604 #ifndef USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2605 #define USE_AUX_SERIAL_CMD_FORWARDING 1
whismanoid 10:04022a61b527 2606 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2607 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2608 // Command forwarding to Auxiliary serial port TX/RX #257 -- global parameters
whismanoid 10:04022a61b527 2609 const size_t RX_STRING_BUF_SIZE = 1000;
whismanoid 10:04022a61b527 2610 int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 2611 // transmit command string by AUX TX
whismanoid 10:04022a61b527 2612 #if 0
whismanoid 10:04022a61b527 2613 int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 2614 int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 2615 int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 2616 #endif
whismanoid 10:04022a61b527 2617 // capture received string from AUX RX
whismanoid 10:04022a61b527 2618 Timer g_auxSerialCom_Timer;
whismanoid 10:04022a61b527 2619 int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 2620 int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 2621 int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 2622 int g_auxSerialCom_rx_idle_ms = 500; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 2623 int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 2624 const int aux_serial_cmd_forwarding_rx_eot_not_used = 'x';
whismanoid 10:04022a61b527 2625 int g_auxSerialCom_rx_eot = aux_serial_cmd_forwarding_rx_eot_not_used; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 2626 //~ int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text string?
whismanoid 10:04022a61b527 2627 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2628 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2629 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257
whismanoid 10:04022a61b527 2630 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2631 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2632 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2633 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2634 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2635 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2636 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 2637 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2638 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2639 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2640 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2641 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2642 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2643 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2644 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2645
whismanoid 8:dffee7509bfb 2646 // CODE GENERATOR: example code for ADC: serial port declaration
whismanoid 8:dffee7509bfb 2647 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2648 // Declare the Serial driver
whismanoid 8:dffee7509bfb 2649 // default baud rate settings are 9600 8N1
whismanoid 8:dffee7509bfb 2650 // install device driver from http://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe
whismanoid 8:dffee7509bfb 2651 // see docs https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/getting_started/what_need/
whismanoid 8:dffee7509bfb 2652 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2653 #if defined(TARGET_MAX32630)
whismanoid 8:dffee7509bfb 2654 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2655 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2656 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2657 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2658 //
whismanoid 8:dffee7509bfb 2659 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2660 Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2661 //Serial J3AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2662 //Serial BTAUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2663 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2664 //
whismanoid 8:dffee7509bfb 2665 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2666 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2667 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2668 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2669 //
whismanoid 8:dffee7509bfb 2670 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2671 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2672 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2673 USBSerial serial;
whismanoid 8:dffee7509bfb 2674 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2675 #elif defined(TARGET_MAX32625MBED)
whismanoid 8:dffee7509bfb 2676 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625MBED: P0_1,P0_0 (Arduino D1,D0)
whismanoid 8:dffee7509bfb 2677 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2678 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625MBED: P3_1,P3_0 (J15-LEDgreen,LEDred)
whismanoid 8:dffee7509bfb 2679 //
whismanoid 8:dffee7509bfb 2680 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2681 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2682 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2683 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2684 //
whismanoid 8:dffee7509bfb 2685 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2686 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2687 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2688 USBSerial serial;
whismanoid 8:dffee7509bfb 2689 //--------------------------------------------------
whismanoid 22:d6dc8a85f435 2690 #elif defined(TARGET_MAX32625PICO)
whismanoid 8:dffee7509bfb 2691 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2692 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625PICO: P2_1,P2_0 (underside?)
whismanoid 8:dffee7509bfb 2693 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2694 //
whismanoid 8:dffee7509bfb 2695 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2696 Serial AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2697 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2698 //
whismanoid 8:dffee7509bfb 2699 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2700 Serial DAPLINKserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2701 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2702 //
whismanoid 8:dffee7509bfb 2703 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2704 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2705 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2706 USBSerial serial;
whismanoid 22:d6dc8a85f435 2707 //--------------------------------------------------
whismanoid 22:d6dc8a85f435 2708 #elif defined(TARGET_MAX40108DEMOP2U9)
whismanoid 22:d6dc8a85f435 2709 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX40108DEMOP2U9: P0_1,P0_0 (J90.1/J90.0 to console)
whismanoid 22:d6dc8a85f435 2710 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK)
whismanoid 22:d6dc8a85f435 2711 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX40108DEMOP2U9: P3_1,P3_0 (unavailable)
whismanoid 22:d6dc8a85f435 2712 //
whismanoid 22:d6dc8a85f435 2713 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial is used as main serial port in MAX40108 Demo board
whismanoid 22:d6dc8a85f435 2714 Serial serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX40108DEMOP2U9: P0_1,P0_0 (J90.1/J90.0 to console)
whismanoid 22:d6dc8a85f435 2715 // #define HAS_AUX_SERIAL 1
whismanoid 22:d6dc8a85f435 2716 //
whismanoid 22:d6dc8a85f435 2717 // Hardware serial port over DAPLink
whismanoid 22:d6dc8a85f435 2718 // connection to external MAX32625PICO(DAPLINK) needed TX/RX swap in firmware.
whismanoid 22:d6dc8a85f435 2719 // MAX32625PICO(DAPLINK) drives DAPLINK.8, listens on DAPLINK.6.
whismanoid 22:d6dc8a85f435 2720 // See AN6350 MAX32625 Users Guide 7.5.2.3.1 TX and RX Pin Mapping for UART 1 -- Mapping Option B
whismanoid 39:4d285e961435 2721 #ifdef BOARD_SERIAL_NUMBER
whismanoid 39:4d285e961435 2722 // data unique to certain boards based on serial number
whismanoid 39:4d285e961435 2723 # if (BOARD_SERIAL_NUMBER) == 0
whismanoid 39:4d285e961435 2724 #warning "(BOARD_SERIAL_NUMBER) == 0"
whismanoid 39:4d285e961435 2725 // s/n 0 is not really a MAX40108 board, it's actually a MAX32625PICO used for early development. So no swap.
whismanoid 39:4d285e961435 2726 Serial DAPLINKserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option A (normal)
whismanoid 39:4d285e961435 2727 //Serial DAPLINKserial(UART1_RX,UART1_TX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option B (TX/RX-swap)
whismanoid 39:4d285e961435 2728 #define HAS_DAPLINK_SERIAL 1
whismanoid 39:4d285e961435 2729 //
whismanoid 39:4d285e961435 2730 // # elif (BOARD_SERIAL_NUMBER) == 1
whismanoid 39:4d285e961435 2731 // #warning "(BOARD_SERIAL_NUMBER) == 1"
whismanoid 39:4d285e961435 2732 // //
whismanoid 39:4d285e961435 2733 // # elif (BOARD_SERIAL_NUMBER) == 2
whismanoid 39:4d285e961435 2734 // #warning "(BOARD_SERIAL_NUMBER) == 2"
whismanoid 39:4d285e961435 2735 // //
whismanoid 39:4d285e961435 2736 // # elif (BOARD_SERIAL_NUMBER) == 3
whismanoid 39:4d285e961435 2737 // #warning "(BOARD_SERIAL_NUMBER) == 3"
whismanoid 39:4d285e961435 2738 // //
whismanoid 39:4d285e961435 2739 // # elif (BOARD_SERIAL_NUMBER) == 4
whismanoid 39:4d285e961435 2740 // #warning "(BOARD_SERIAL_NUMBER) == 4"
whismanoid 39:4d285e961435 2741 // //
whismanoid 39:4d285e961435 2742 // # elif (BOARD_SERIAL_NUMBER) == 5
whismanoid 39:4d285e961435 2743 // #warning "(BOARD_SERIAL_NUMBER) == 5"
whismanoid 39:4d285e961435 2744 // //
whismanoid 39:4d285e961435 2745 // # elif (BOARD_SERIAL_NUMBER) == 6
whismanoid 39:4d285e961435 2746 // #warning "(BOARD_SERIAL_NUMBER) == 6"
whismanoid 39:4d285e961435 2747 // //
whismanoid 39:4d285e961435 2748 # else
whismanoid 39:4d285e961435 2749 // #warning "BOARD_SERIAL_NUMBER defined but not recognized"
whismanoid 22:d6dc8a85f435 2750 //Serial DAPLINKserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option A (normal)
whismanoid 22:d6dc8a85f435 2751 Serial DAPLINKserial(UART1_RX,UART1_TX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option B (TX/RX-swap)
whismanoid 22:d6dc8a85f435 2752 #define HAS_DAPLINK_SERIAL 1
whismanoid 39:4d285e961435 2753 # endif
whismanoid 39:4d285e961435 2754 #else // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 39:4d285e961435 2755 #warning "BOARD_SERIAL_NUMBER not defined; using default values"
whismanoid 39:4d285e961435 2756 //Serial DAPLINKserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option A (normal)
whismanoid 39:4d285e961435 2757 Serial DAPLINKserial(UART1_RX,UART1_TX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option B (TX/RX-swap)
whismanoid 39:4d285e961435 2758 #define HAS_DAPLINK_SERIAL 1
whismanoid 39:4d285e961435 2759 //
whismanoid 39:4d285e961435 2760 #endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 22:d6dc8a85f435 2761 //
whismanoid 22:d6dc8a85f435 2762 // Serial AUXserial(UART1_TX,UART1_RX); // tx,rx UART2 MAX40108DEMOP2U9: P3_1,P3_0 (unavailable)
whismanoid 22:d6dc8a85f435 2763 // #define HAS_AUX_SERIAL 1
whismanoid 22:d6dc8a85f435 2764 //
whismanoid 22:d6dc8a85f435 2765 // Virtual serial port over USB
whismanoid 22:d6dc8a85f435 2766 // #include "USBSerial.h"
whismanoid 22:d6dc8a85f435 2767 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 22:d6dc8a85f435 2768 //USBSerial serial;
whismanoid 8:dffee7509bfb 2769 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2770 #elif defined(TARGET_MAX32620FTHR)
whismanoid 8:dffee7509bfb 2771 #warning "TARGET_MAX32620FTHR not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2772 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2773 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32620FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2774 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2775 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2776 //
whismanoid 8:dffee7509bfb 2777 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2778 Serial serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2779 //Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2780 Serial AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2781 //Serial PMOD0AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2782 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2783 //
whismanoid 8:dffee7509bfb 2784 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2785 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2786 Serial DAPLINKserial(USBTX, USBRX); // tx,rx MAX32620FTHR: P2_1,P2_0
whismanoid 8:dffee7509bfb 2787 //Serial DAPLINKserial(STDIO_UART_TX, STDIO_UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2788 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2789 //
whismanoid 8:dffee7509bfb 2790 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2791 // #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2792 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2793 //USBSerial serial; // MAX32620FTHR: USBSerial crash??
whismanoid 8:dffee7509bfb 2794 #warning "TARGET_MAX32620FTHR not previously tested; USBSerial crash?"
whismanoid 8:dffee7509bfb 2795 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2796 #elif defined(TARGET_MAX32600)
whismanoid 8:dffee7509bfb 2797 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2798 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART2 MAX32625MBED: P1_3,P1_2 (Arduino D3,D2)
whismanoid 8:dffee7509bfb 2799 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART1 MAX32625MBED: P7_3,P7_2 ( ?? )
whismanoid 8:dffee7509bfb 2800 //
whismanoid 8:dffee7509bfb 2801 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2802 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2803 Serial DAPLINKserial(P1_1,P1_0); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2804 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2805 //
whismanoid 8:dffee7509bfb 2806 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2807 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2808 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2809 USBSerial serial;
whismanoid 8:dffee7509bfb 2810 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2811 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 8:dffee7509bfb 2812 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2813 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2814 #else
whismanoid 8:dffee7509bfb 2815 #if defined(SERIAL_TX)
whismanoid 8:dffee7509bfb 2816 #warning "target not previously tested; guess serial pins are SERIAL_TX, SERIAL_RX..."
whismanoid 8:dffee7509bfb 2817 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2818 #elif defined(USBTX)
whismanoid 8:dffee7509bfb 2819 #warning "target not previously tested; guess serial pins are USBTX, USBRX..."
whismanoid 8:dffee7509bfb 2820 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 8:dffee7509bfb 2821 #elif defined(UART_TX)
whismanoid 8:dffee7509bfb 2822 #warning "target not previously tested; guess serial pins are UART_TX, UART_RX..."
whismanoid 8:dffee7509bfb 2823 Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2824 #else
whismanoid 8:dffee7509bfb 2825 #warning "target not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2826 #endif
whismanoid 8:dffee7509bfb 2827 #endif
whismanoid 8:dffee7509bfb 2828 //
whismanoid 8:dffee7509bfb 2829 #include "CmdLine.h"
whismanoid 8:dffee7509bfb 2830
whismanoid 8:dffee7509bfb 2831 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2832 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2833 CmdLine cmdLine_AUXserial(AUXserial, "AUXserial");
whismanoid 10:04022a61b527 2834 uint8_t Datalogger_enable_AUXserial = {
whismanoid 10:04022a61b527 2835 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2836 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 2837 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 2838 false
whismanoid 10:04022a61b527 2839 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2840 true
whismanoid 10:04022a61b527 2841 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2842 };
whismanoid 8:dffee7509bfb 2843 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2844 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2845 CmdLine cmdLine_DAPLINKserial(DAPLINKserial, "DAPLINK");
whismanoid 8:dffee7509bfb 2846 uint8_t Datalogger_enable_DAPLINKserial = true;
whismanoid 8:dffee7509bfb 2847 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2848 CmdLine cmdLine(serial, "serial");
whismanoid 8:dffee7509bfb 2849 uint8_t Datalogger_enable_serial = true;
whismanoid 8:dffee7509bfb 2850 // CODE GENERATOR: example code for ADC: serial port declaration (end)
whismanoid 8:dffee7509bfb 2851
whismanoid 21:ac062a97a71d 2852
whismanoid 21:ac062a97a71d 2853 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 2854 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 2855 #ifndef USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2856 #define USE_DATALOGGER_CommandTable 1
whismanoid 23:c6c652bef4b9 2857 //~ #undef USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2858 #endif
whismanoid 23:c6c652bef4b9 2859 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 2860 const int COMMAND_TABLE_ROW_MAX = 10;
whismanoid 23:c6c652bef4b9 2861 const int COMMAND_TABLE_COL_MAX = 40;
whismanoid 23:c6c652bef4b9 2862 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2863 //
whismanoid 23:c6c652bef4b9 2864 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 2865 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2866 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2867 char onButton1_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button1 event";
whismanoid 23:c6c652bef4b9 2868 char onButton1_command_table_01[COMMAND_TABLE_COL_MAX] = "%L91";
whismanoid 23:c6c652bef4b9 2869 char onButton1_command_table_02[COMMAND_TABLE_COL_MAX] = "%H92";
whismanoid 23:c6c652bef4b9 2870 char onButton1_command_table_03[COMMAND_TABLE_COL_MAX] = "%L93";
whismanoid 23:c6c652bef4b9 2871 char onButton1_command_table_04[COMMAND_TABLE_COL_MAX] = "%H91";
whismanoid 23:c6c652bef4b9 2872 char onButton1_command_table_05[COMMAND_TABLE_COL_MAX] = "%L92";
whismanoid 23:c6c652bef4b9 2873 char onButton1_command_table_06[COMMAND_TABLE_COL_MAX] = "%H93";
whismanoid 23:c6c652bef4b9 2874 char onButton1_command_table_07[COMMAND_TABLE_COL_MAX] = "LR";
whismanoid 23:c6c652bef4b9 2875 char onButton1_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2876 char onButton1_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2877 static char* onButton1_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 23:c6c652bef4b9 2878 onButton1_command_table_00,
whismanoid 23:c6c652bef4b9 2879 onButton1_command_table_01,
whismanoid 23:c6c652bef4b9 2880 onButton1_command_table_02,
whismanoid 23:c6c652bef4b9 2881 onButton1_command_table_03,
whismanoid 23:c6c652bef4b9 2882 onButton1_command_table_04,
whismanoid 23:c6c652bef4b9 2883 onButton1_command_table_05,
whismanoid 23:c6c652bef4b9 2884 onButton1_command_table_06,
whismanoid 23:c6c652bef4b9 2885 onButton1_command_table_07,
whismanoid 23:c6c652bef4b9 2886 onButton1_command_table_08,
whismanoid 23:c6c652bef4b9 2887 onButton1_command_table_09,
whismanoid 23:c6c652bef4b9 2888 };
whismanoid 23:c6c652bef4b9 2889 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2890 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2891 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2892 char onButton2_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button2 event";
whismanoid 23:c6c652bef4b9 2893 char onButton2_command_table_01[COMMAND_TABLE_COL_MAX] = "%H91";
whismanoid 23:c6c652bef4b9 2894 char onButton2_command_table_02[COMMAND_TABLE_COL_MAX] = "%H92";
whismanoid 23:c6c652bef4b9 2895 char onButton2_command_table_03[COMMAND_TABLE_COL_MAX] = "%L93";
whismanoid 23:c6c652bef4b9 2896 char onButton2_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2897 char onButton2_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2898 char onButton2_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2899 char onButton2_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2900 char onButton2_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2901 char onButton2_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2902 static char* onButton2_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 23:c6c652bef4b9 2903 onButton2_command_table_00,
whismanoid 23:c6c652bef4b9 2904 onButton2_command_table_01,
whismanoid 23:c6c652bef4b9 2905 onButton2_command_table_02,
whismanoid 23:c6c652bef4b9 2906 onButton2_command_table_03,
whismanoid 23:c6c652bef4b9 2907 onButton2_command_table_04,
whismanoid 23:c6c652bef4b9 2908 onButton2_command_table_05,
whismanoid 23:c6c652bef4b9 2909 onButton2_command_table_06,
whismanoid 23:c6c652bef4b9 2910 onButton2_command_table_07,
whismanoid 23:c6c652bef4b9 2911 onButton2_command_table_08,
whismanoid 23:c6c652bef4b9 2912 onButton2_command_table_09,
whismanoid 23:c6c652bef4b9 2913 };
whismanoid 23:c6c652bef4b9 2914 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2915 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2916 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2917 char onButton3_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button3 event";
whismanoid 24:032f3683cb2a 2918 char onButton3_command_table_01[COMMAND_TABLE_COL_MAX] = "%L91";
whismanoid 24:032f3683cb2a 2919 char onButton3_command_table_02[COMMAND_TABLE_COL_MAX] = "%L92";
whismanoid 24:032f3683cb2a 2920 char onButton3_command_table_03[COMMAND_TABLE_COL_MAX] = "%H93";
whismanoid 24:032f3683cb2a 2921 char onButton3_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2922 char onButton3_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2923 char onButton3_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2924 char onButton3_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2925 char onButton3_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2926 char onButton3_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2927 static char* onButton3_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 24:032f3683cb2a 2928 onButton3_command_table_00,
whismanoid 24:032f3683cb2a 2929 onButton3_command_table_01,
whismanoid 24:032f3683cb2a 2930 onButton3_command_table_02,
whismanoid 24:032f3683cb2a 2931 onButton3_command_table_03,
whismanoid 24:032f3683cb2a 2932 onButton3_command_table_04,
whismanoid 24:032f3683cb2a 2933 onButton3_command_table_05,
whismanoid 24:032f3683cb2a 2934 onButton3_command_table_06,
whismanoid 24:032f3683cb2a 2935 onButton3_command_table_07,
whismanoid 24:032f3683cb2a 2936 onButton3_command_table_08,
whismanoid 24:032f3683cb2a 2937 onButton3_command_table_09,
whismanoid 24:032f3683cb2a 2938 };
whismanoid 24:032f3683cb2a 2939 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2940 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2941 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2942 char onButton4_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button4 event";
whismanoid 30:07197a430869 2943 char onButton4_command_table_01[COMMAND_TABLE_COL_MAX] = "# WE>0.7:active";
whismanoid 29:6a9edb6e973b 2944 char onButton4_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2945 char onButton4_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2946 char onButton4_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2947 char onButton4_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2948 char onButton4_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2949 char onButton4_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2950 char onButton4_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2951 char onButton4_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2952 static char* onButton4_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2953 onButton4_command_table_00,
whismanoid 29:6a9edb6e973b 2954 onButton4_command_table_01,
whismanoid 29:6a9edb6e973b 2955 onButton4_command_table_02,
whismanoid 29:6a9edb6e973b 2956 onButton4_command_table_03,
whismanoid 29:6a9edb6e973b 2957 onButton4_command_table_04,
whismanoid 29:6a9edb6e973b 2958 onButton4_command_table_05,
whismanoid 29:6a9edb6e973b 2959 onButton4_command_table_06,
whismanoid 29:6a9edb6e973b 2960 onButton4_command_table_07,
whismanoid 29:6a9edb6e973b 2961 onButton4_command_table_08,
whismanoid 29:6a9edb6e973b 2962 onButton4_command_table_09,
whismanoid 29:6a9edb6e973b 2963 };
whismanoid 29:6a9edb6e973b 2964 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2965 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2966 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2967 char onButton5_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button5 event";
whismanoid 30:07197a430869 2968 char onButton5_command_table_01[COMMAND_TABLE_COL_MAX] = "# WE<0.6:sleep";
whismanoid 29:6a9edb6e973b 2969 char onButton5_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2970 char onButton5_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2971 char onButton5_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2972 char onButton5_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2973 char onButton5_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2974 char onButton5_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2975 char onButton5_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2976 char onButton5_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2977 static char* onButton5_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2978 onButton5_command_table_00,
whismanoid 29:6a9edb6e973b 2979 onButton5_command_table_01,
whismanoid 29:6a9edb6e973b 2980 onButton5_command_table_02,
whismanoid 29:6a9edb6e973b 2981 onButton5_command_table_03,
whismanoid 29:6a9edb6e973b 2982 onButton5_command_table_04,
whismanoid 29:6a9edb6e973b 2983 onButton5_command_table_05,
whismanoid 29:6a9edb6e973b 2984 onButton5_command_table_06,
whismanoid 29:6a9edb6e973b 2985 onButton5_command_table_07,
whismanoid 29:6a9edb6e973b 2986 onButton5_command_table_08,
whismanoid 29:6a9edb6e973b 2987 onButton5_command_table_09,
whismanoid 29:6a9edb6e973b 2988 };
whismanoid 29:6a9edb6e973b 2989 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2990 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2991 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2992 char onButton6_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button6 event";
whismanoid 29:6a9edb6e973b 2993 char onButton6_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2994 char onButton6_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2995 char onButton6_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2996 char onButton6_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2997 char onButton6_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2998 char onButton6_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2999 char onButton6_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3000 char onButton6_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3001 char onButton6_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3002 static char* onButton6_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3003 onButton6_command_table_00,
whismanoid 29:6a9edb6e973b 3004 onButton6_command_table_01,
whismanoid 29:6a9edb6e973b 3005 onButton6_command_table_02,
whismanoid 29:6a9edb6e973b 3006 onButton6_command_table_03,
whismanoid 29:6a9edb6e973b 3007 onButton6_command_table_04,
whismanoid 29:6a9edb6e973b 3008 onButton6_command_table_05,
whismanoid 29:6a9edb6e973b 3009 onButton6_command_table_06,
whismanoid 29:6a9edb6e973b 3010 onButton6_command_table_07,
whismanoid 29:6a9edb6e973b 3011 onButton6_command_table_08,
whismanoid 29:6a9edb6e973b 3012 onButton6_command_table_09,
whismanoid 29:6a9edb6e973b 3013 };
whismanoid 29:6a9edb6e973b 3014 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3015 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3016 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 3017 char onButton7_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button7 event";
whismanoid 29:6a9edb6e973b 3018 char onButton7_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3019 char onButton7_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3020 char onButton7_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3021 char onButton7_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3022 char onButton7_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3023 char onButton7_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3024 char onButton7_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3025 char onButton7_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3026 char onButton7_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3027 static char* onButton7_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3028 onButton7_command_table_00,
whismanoid 29:6a9edb6e973b 3029 onButton7_command_table_01,
whismanoid 29:6a9edb6e973b 3030 onButton7_command_table_02,
whismanoid 29:6a9edb6e973b 3031 onButton7_command_table_03,
whismanoid 29:6a9edb6e973b 3032 onButton7_command_table_04,
whismanoid 29:6a9edb6e973b 3033 onButton7_command_table_05,
whismanoid 29:6a9edb6e973b 3034 onButton7_command_table_06,
whismanoid 29:6a9edb6e973b 3035 onButton7_command_table_07,
whismanoid 29:6a9edb6e973b 3036 onButton7_command_table_08,
whismanoid 29:6a9edb6e973b 3037 onButton7_command_table_09,
whismanoid 29:6a9edb6e973b 3038 };
whismanoid 29:6a9edb6e973b 3039 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3040 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3041 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 3042 char onButton8_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button8 event";
whismanoid 29:6a9edb6e973b 3043 char onButton8_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3044 char onButton8_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3045 char onButton8_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3046 char onButton8_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3047 char onButton8_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3048 char onButton8_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3049 char onButton8_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3050 char onButton8_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3051 char onButton8_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3052 static char* onButton8_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3053 onButton8_command_table_00,
whismanoid 29:6a9edb6e973b 3054 onButton8_command_table_01,
whismanoid 29:6a9edb6e973b 3055 onButton8_command_table_02,
whismanoid 29:6a9edb6e973b 3056 onButton8_command_table_03,
whismanoid 29:6a9edb6e973b 3057 onButton8_command_table_04,
whismanoid 29:6a9edb6e973b 3058 onButton8_command_table_05,
whismanoid 29:6a9edb6e973b 3059 onButton8_command_table_06,
whismanoid 29:6a9edb6e973b 3060 onButton8_command_table_07,
whismanoid 29:6a9edb6e973b 3061 onButton8_command_table_08,
whismanoid 29:6a9edb6e973b 3062 onButton8_command_table_09,
whismanoid 29:6a9edb6e973b 3063 };
whismanoid 29:6a9edb6e973b 3064 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3065 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3066 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 3067 char onButton9_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button9 event";
whismanoid 29:6a9edb6e973b 3068 char onButton9_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3069 char onButton9_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3070 char onButton9_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3071 char onButton9_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3072 char onButton9_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3073 char onButton9_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3074 char onButton9_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3075 char onButton9_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3076 char onButton9_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3077 static char* onButton9_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3078 onButton9_command_table_00,
whismanoid 29:6a9edb6e973b 3079 onButton9_command_table_01,
whismanoid 29:6a9edb6e973b 3080 onButton9_command_table_02,
whismanoid 29:6a9edb6e973b 3081 onButton9_command_table_03,
whismanoid 29:6a9edb6e973b 3082 onButton9_command_table_04,
whismanoid 29:6a9edb6e973b 3083 onButton9_command_table_05,
whismanoid 29:6a9edb6e973b 3084 onButton9_command_table_06,
whismanoid 29:6a9edb6e973b 3085 onButton9_command_table_07,
whismanoid 29:6a9edb6e973b 3086 onButton9_command_table_08,
whismanoid 29:6a9edb6e973b 3087 onButton9_command_table_09,
whismanoid 29:6a9edb6e973b 3088 };
whismanoid 29:6a9edb6e973b 3089 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 3090 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3091 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3092 #if USE_DATALOGGER_CommandTable
whismanoid 31:47eee7e0cc2d 3093 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3094 bool g_Run_command_table_running = false;
whismanoid 23:c6c652bef4b9 3095 void Run_command_table(char* command_table[])
whismanoid 23:c6c652bef4b9 3096 {
whismanoid 23:c6c652bef4b9 3097 // command_table: perform list of commands
whismanoid 31:47eee7e0cc2d 3098 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3099 if (g_Run_command_table_running) {
whismanoid 31:47eee7e0cc2d 3100 // TODO: button event chaining is not supported at this time
whismanoid 31:47eee7e0cc2d 3101 } // if (g_Run_command_table_running)
whismanoid 31:47eee7e0cc2d 3102 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3103 g_Run_command_table_running = true;
whismanoid 23:c6c652bef4b9 3104 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3105 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3106 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 23:c6c652bef4b9 3107 cmdLine.clear();
whismanoid 31:47eee7e0cc2d 3108 cmdLine.quiet = g_Run_command_table_running;
whismanoid 23:c6c652bef4b9 3109 //~ char* strIndex = command_table[lineIndex];
whismanoid 23:c6c652bef4b9 3110 for (char* strIndex = command_table[lineIndex]; *strIndex != '\0'; strIndex++)
whismanoid 23:c6c652bef4b9 3111 {
whismanoid 23:c6c652bef4b9 3112 cmdLine.append(*strIndex);
whismanoid 23:c6c652bef4b9 3113 }
whismanoid 23:c6c652bef4b9 3114 cmdLine.append('\r'); // append \r invokes onEOLcommandParser to handle command
whismanoid 23:c6c652bef4b9 3115 }
whismanoid 31:47eee7e0cc2d 3116 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3117 g_Run_command_table_running = false;
whismanoid 31:47eee7e0cc2d 3118 cmdLine.quiet = g_Run_command_table_running;
whismanoid 23:c6c652bef4b9 3119 }
whismanoid 23:c6c652bef4b9 3120 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3121 //--------------------------------------------------
whismanoid 21:ac062a97a71d 3122 // When user presses button BUTTON1, perform actions
whismanoid 21:ac062a97a71d 3123 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3124 void onButton1FallingEdge(void)
whismanoid 21:ac062a97a71d 3125 {
whismanoid 21:ac062a97a71d 3126 //~ void SelfTest(CmdLine & cmdLine);
whismanoid 21:ac062a97a71d 3127 //~ SelfTest(cmdLine_serial);
whismanoid 22:d6dc8a85f435 3128 //
whismanoid 23:c6c652bef4b9 3129 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 22:d6dc8a85f435 3130 // command_table: list of commands to perform on button press
whismanoid 22:d6dc8a85f435 3131 // command_table: perform list of commands
whismanoid 23:c6c652bef4b9 3132 Run_command_table(onButton1_command_table);
whismanoid 23:c6c652bef4b9 3133 #endif // USE_DATALOGGER_CommandTable
whismanoid 21:ac062a97a71d 3134 }
whismanoid 21:ac062a97a71d 3135 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3136
whismanoid 21:ac062a97a71d 3137 //--------------------------------------------------
whismanoid 21:ac062a97a71d 3138 // When user presses button BUTTON2, perform actions
whismanoid 21:ac062a97a71d 3139 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3140 void onButton2FallingEdge(void)
whismanoid 21:ac062a97a71d 3141 {
whismanoid 21:ac062a97a71d 3142 // TBD demo configuration
whismanoid 21:ac062a97a71d 3143 // TODO diagnostic LED
whismanoid 21:ac062a97a71d 3144 // led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 22:d6dc8a85f435 3145 //
whismanoid 23:c6c652bef4b9 3146 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 22:d6dc8a85f435 3147 // command_table: list of commands to perform on button press
whismanoid 22:d6dc8a85f435 3148 // command_table: perform list of commands
whismanoid 23:c6c652bef4b9 3149 Run_command_table(onButton2_command_table);
whismanoid 23:c6c652bef4b9 3150 #endif // USE_DATALOGGER_CommandTable
whismanoid 21:ac062a97a71d 3151 }
whismanoid 21:ac062a97a71d 3152 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3153
whismanoid 24:032f3683cb2a 3154 //--------------------------------------------------
whismanoid 29:6a9edb6e973b 3155 // When user presses button BUTTON3, perform actions
whismanoid 24:032f3683cb2a 3156 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3157 void onButton3FallingEdge(void)
whismanoid 24:032f3683cb2a 3158 {
whismanoid 24:032f3683cb2a 3159 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 24:032f3683cb2a 3160 // command_table: list of commands to perform on button press
whismanoid 24:032f3683cb2a 3161 // command_table: perform list of commands
whismanoid 24:032f3683cb2a 3162 Run_command_table(onButton3_command_table);
whismanoid 24:032f3683cb2a 3163 #endif // USE_DATALOGGER_CommandTable
whismanoid 24:032f3683cb2a 3164 }
whismanoid 24:032f3683cb2a 3165 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3166 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3167 void onButton4FallingEdge(void)
whismanoid 29:6a9edb6e973b 3168 {
whismanoid 29:6a9edb6e973b 3169 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3170 Run_command_table(onButton4_command_table);
whismanoid 29:6a9edb6e973b 3171 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3172 }
whismanoid 29:6a9edb6e973b 3173 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3174 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3175 void onButton5FallingEdge(void)
whismanoid 29:6a9edb6e973b 3176 {
whismanoid 29:6a9edb6e973b 3177 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3178 Run_command_table(onButton5_command_table);
whismanoid 29:6a9edb6e973b 3179 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3180 }
whismanoid 29:6a9edb6e973b 3181 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3182 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3183 void onButton6FallingEdge(void)
whismanoid 29:6a9edb6e973b 3184 {
whismanoid 29:6a9edb6e973b 3185 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3186 Run_command_table(onButton6_command_table);
whismanoid 29:6a9edb6e973b 3187 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3188 }
whismanoid 29:6a9edb6e973b 3189 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3190 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3191 void onButton7FallingEdge(void)
whismanoid 29:6a9edb6e973b 3192 {
whismanoid 29:6a9edb6e973b 3193 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3194 Run_command_table(onButton7_command_table);
whismanoid 29:6a9edb6e973b 3195 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3196 }
whismanoid 29:6a9edb6e973b 3197 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3198 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3199 void onButton8FallingEdge(void)
whismanoid 29:6a9edb6e973b 3200 {
whismanoid 29:6a9edb6e973b 3201 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3202 Run_command_table(onButton8_command_table);
whismanoid 29:6a9edb6e973b 3203 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3204 }
whismanoid 29:6a9edb6e973b 3205 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3206 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3207 void onButton9FallingEdge(void)
whismanoid 29:6a9edb6e973b 3208 {
whismanoid 29:6a9edb6e973b 3209 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3210 Run_command_table(onButton9_command_table);
whismanoid 29:6a9edb6e973b 3211 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3212 }
whismanoid 29:6a9edb6e973b 3213 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3214
whismanoid 4:d9b05924ad4c 3215 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3216 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3217 inline void print_command_prompt()
whismanoid 4:d9b05924ad4c 3218 {
whismanoid 4:d9b05924ad4c 3219 //~ Serial.println(F(">"));
whismanoid 4:d9b05924ad4c 3220 cmdLine.serial().printf("\r\n> ");
whismanoid 4:d9b05924ad4c 3221 }
whismanoid 4:d9b05924ad4c 3222 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3223
whismanoid 4:d9b05924ad4c 3224 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3225 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3226 void main_menu_status(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 3227 {
whismanoid 4:d9b05924ad4c 3228 cmdLine.serial().printf("\r\nMain menu");
whismanoid 4:d9b05924ad4c 3229 #if APPLICATION_MAX5715 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3230 cmdLine.serial().printf(" MAX5715 12-bit 4-ch SPI VOUT DAC");
whismanoid 4:d9b05924ad4c 3231 #elif APPLICATION_MAX11131 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3232 cmdLine.serial().printf(" MAX11131 12-bit 3MSps 16-ch ADC");
whismanoid 4:d9b05924ad4c 3233 #elif APPLICATION_MAX5171 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3234 cmdLine.serial().printf(" MAX5171 14-bit Force/Sense VOUT DAC");
whismanoid 4:d9b05924ad4c 3235 #elif APPLICATION_MAX11410 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3236 cmdLine.serial().printf(" MAX11410 24-bit 1.9ksps Delta-Sigma ADC");
whismanoid 4:d9b05924ad4c 3237 #elif APPLICATION_MAX12345 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3238 cmdLine.serial().printf(" MAX12345");
whismanoid 16:819c5aaf5271 3239 #elif MAX40108_DEMO // main_menu_status banner
whismanoid 17:9397ea3ea7e9 3240 cmdLine.serial().printf(" MAX40108_U%d", MAX40108_DEMO);
whismanoid 36:e7aac874b8be 3241 #ifdef BOARD_SERIAL_NUMBER
whismanoid 36:e7aac874b8be 3242 // data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 3243 cmdLine.serial().printf(" [s/n %d]", BOARD_SERIAL_NUMBER);
whismanoid 36:e7aac874b8be 3244 #else // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 36:e7aac874b8be 3245 #warning "BOARD_SERIAL_NUMBER not defined; using default values"
whismanoid 36:e7aac874b8be 3246 //
whismanoid 36:e7aac874b8be 3247 #endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 3248 #ifdef FW_REV
whismanoid 37:3f369235e5bc 3249 cmdLine.serial().printf(" [FW_REV %d]", FW_REV);
whismanoid 37:3f369235e5bc 3250 #endif // FW_REV
whismanoid 4:d9b05924ad4c 3251 #else
whismanoid 4:d9b05924ad4c 3252 //cmdLine.serial().printf(" ");
whismanoid 4:d9b05924ad4c 3253 #endif
whismanoid 4:d9b05924ad4c 3254 //cmdLine.serial().printf(" %s", TARGET_NAME);
whismanoid 4:d9b05924ad4c 3255 if (cmdLine.nameStr())
whismanoid 4:d9b05924ad4c 3256 {
whismanoid 4:d9b05924ad4c 3257 cmdLine.serial().printf(" [%s]", cmdLine.nameStr());
whismanoid 4:d9b05924ad4c 3258 }
whismanoid 4:d9b05924ad4c 3259 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3260 cmdLine.serial().printf(" [Button1");
whismanoid 4:d9b05924ad4c 3261 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3262 cmdLine.serial().printf("2");
whismanoid 24:032f3683cb2a 3263 #endif
whismanoid 24:032f3683cb2a 3264 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3265 cmdLine.serial().printf("3");
whismanoid 29:6a9edb6e973b 3266 #endif
whismanoid 29:6a9edb6e973b 3267 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3268 cmdLine.serial().printf("4");
whismanoid 29:6a9edb6e973b 3269 #endif
whismanoid 29:6a9edb6e973b 3270 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3271 cmdLine.serial().printf("5");
whismanoid 29:6a9edb6e973b 3272 #endif
whismanoid 29:6a9edb6e973b 3273 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3274 cmdLine.serial().printf("6");
whismanoid 29:6a9edb6e973b 3275 #endif
whismanoid 29:6a9edb6e973b 3276 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3277 cmdLine.serial().printf("7");
whismanoid 29:6a9edb6e973b 3278 #endif
whismanoid 29:6a9edb6e973b 3279 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3280 cmdLine.serial().printf("8");
whismanoid 29:6a9edb6e973b 3281 #endif
whismanoid 29:6a9edb6e973b 3282 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3283 cmdLine.serial().printf("9");
whismanoid 29:6a9edb6e973b 3284 #endif
whismanoid 29:6a9edb6e973b 3285 cmdLine.serial().printf("]");
whismanoid 29:6a9edb6e973b 3286 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 4:d9b05924ad4c 3287 #if HAS_BUTTON1_DEMO
whismanoid 4:d9b05924ad4c 3288 // print BUTTON1 status
whismanoid 4:d9b05924ad4c 3289 cmdLine.serial().printf("\r\n BUTTON1 = %d", button1.read());
whismanoid 4:d9b05924ad4c 3290 #endif
whismanoid 4:d9b05924ad4c 3291 #if HAS_BUTTON2_DEMO
whismanoid 24:032f3683cb2a 3292 // print BUTTON2 status
whismanoid 4:d9b05924ad4c 3293 cmdLine.serial().printf("\r\n BUTTON2 = %d", button2.read());
whismanoid 4:d9b05924ad4c 3294 #endif
whismanoid 24:032f3683cb2a 3295 #if HAS_BUTTON3_DEMO
whismanoid 24:032f3683cb2a 3296 // print BUTTON3 status
whismanoid 24:032f3683cb2a 3297 cmdLine.serial().printf("\r\n BUTTON3 = %d", button3.read());
whismanoid 24:032f3683cb2a 3298 #endif
whismanoid 4:d9b05924ad4c 3299 cmdLine.serial().printf("\r\n ? -- help");
whismanoid 4:d9b05924ad4c 3300 }
whismanoid 4:d9b05924ad4c 3301 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3302
whismanoid 28:a9a3a9db592b 3303 //--------------------------------------------------
whismanoid 28:a9a3a9db592b 3304 #ifndef USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3305 #define USE_DATALOGGER_TRIGGER_HELP_BRIEF 1
whismanoid 28:a9a3a9db592b 3306 //~ #undef USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3307 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3308
whismanoid 4:d9b05924ad4c 3309 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3310 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3311 void main_menu_help(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 3312 {
whismanoid 4:d9b05924ad4c 3313 // ? -- help
whismanoid 4:d9b05924ad4c 3314 //~ cmdLine.serial().printf("\r\nMenu:");
whismanoid 10:04022a61b527 3315 //
whismanoid 4:d9b05924ad4c 3316 cmdLine.serial().printf("\r\n # -- lines beginning with # are comments");
whismanoid 10:04022a61b527 3317 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 3318 cmdLine.serial().printf("\r\n ! -- Init");
whismanoid 10:04022a61b527 3319 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 3320 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 3321 cmdLine.serial().printf("\r\n . -- SelfTest");
whismanoid 4:d9b05924ad4c 3322 #endif // USE_SELFTEST
whismanoid 9:45f98573eb6d 3323 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 9:45f98573eb6d 3324 // CODE GENERATOR: help menu if has_register_write_command: *regname? -- read register; *regname=regvalue -- write register
whismanoid 9:45f98573eb6d 3325 cmdLine.serial().printf("\r\n * -- read core registers\r\n *regname? -- read register\r\n *regname=regvalue -- write register");
whismanoid 9:45f98573eb6d 3326 // cmdLine.serial().printf("\r\n 01 23 45 67 89 ab cd ef -- write and read raw hex codes");
whismanoid 10:04022a61b527 3327 #endif // USE_STAR_REG_READWRITE
whismanoid 10:04022a61b527 3328 //
whismanoid 10:04022a61b527 3329 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3330 // Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_help
whismanoid 10:04022a61b527 3331 //~ cmdLine.serial().printf("\r\n > -- auxiliary UART port");
whismanoid 10:04022a61b527 3332 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 3333 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3334 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3335 if (cmdLine_AUXserial.nameStr())
whismanoid 10:04022a61b527 3336 {
whismanoid 10:04022a61b527 3337 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_AUXserial.nameStr());
whismanoid 10:04022a61b527 3338 }
whismanoid 10:04022a61b527 3339 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3340 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 3341 if (cmdLine_DAPLINKserial.nameStr())
whismanoid 10:04022a61b527 3342 {
whismanoid 10:04022a61b527 3343 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_DAPLINKserial.nameStr());
whismanoid 10:04022a61b527 3344 }
whismanoid 10:04022a61b527 3345 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3346 # if HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3347 // WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3348 cmdLine.serial().printf("\r\n >xyzzy -- Forward command/data 'xyzzy' to aux TX/RX");
whismanoid 10:04022a61b527 3349 cmdLine.serial().printf("\r\n >>xyzzy -- Forward 'xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 3350 cmdLine.serial().printf("\r\n >>>xyzzy -- Forward '>xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 3351 #if 0
whismanoid 10:04022a61b527 3352 cmdLine.serial().printf("\r\n >tx_wait_echo=%d -- configure TX wait for each character echo", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 3353 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 3354 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 3355 #endif
whismanoid 20:78ef670955d4 3356 #if 1 // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 3357 cmdLine.serial().printf("\r\n >baud=%d message_ms=%d rx_idle_ms=%d rx_max_count=%d rx_eot=%d",
whismanoid 20:78ef670955d4 3358 g_auxSerialCom_baud,
whismanoid 20:78ef670955d4 3359 g_auxSerialCom_message_ms,
whismanoid 20:78ef670955d4 3360 g_auxSerialCom_rx_idle_ms,
whismanoid 20:78ef670955d4 3361 g_auxSerialCom_rx_max_count,
whismanoid 20:78ef670955d4 3362 g_auxSerialCom_rx_eot);
whismanoid 20:78ef670955d4 3363 #else // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 3364 cmdLine.serial().printf("\r\n >baud=%d -- configure aux TX/RX port", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3365 cmdLine.serial().printf("\r\n >message_ms=%d -- maximum RX message total response time", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3366 cmdLine.serial().printf("\r\n >rx_idle_ms=%d -- maximum RX message idle time between characters", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3367 cmdLine.serial().printf("\r\n >rx_max_count=%d -- maximum RX message total length", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3368 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 3369 #endif // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 10:04022a61b527 3370 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3371 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3372 //
whismanoid 4:d9b05924ad4c 3373 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 28:a9a3a9db592b 3374 #if USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3375 // Datalog trigger menu
whismanoid 28:a9a3a9db592b 3376 // brief toplevel heading for datalog help L
whismanoid 28:a9a3a9db592b 3377 // L -- detailed help for datalog commands
whismanoid 28:a9a3a9db592b 3378 cmdLine.serial().printf("\r\n L -- halt the datalogger; show more commands");
whismanoid 28:a9a3a9db592b 3379 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 28:a9a3a9db592b 3380 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 28:a9a3a9db592b 3381 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 28:a9a3a9db592b 3382 //
whismanoid 28:a9a3a9db592b 3383 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 28:a9a3a9db592b 3384 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 28:a9a3a9db592b 3385 //
whismanoid 39:4d285e961435 3386 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 3387 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 3388 cmdLine.serial().printf("\r\n LT count=%d base=%dms sleep=%d -- Datalog timer",
whismanoid 39:4d285e961435 3389 g_timer_interval_count,
whismanoid 39:4d285e961435 3390 g_timer_interval_msec,
whismanoid 39:4d285e961435 3391 (int)g_timer_sleepmode
whismanoid 39:4d285e961435 3392 ); // trigger_Timer
whismanoid 39:4d285e961435 3393 #else // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 3394 cmdLine.serial().printf("\r\n LT count=%d base=%dms -- Datalog timer", g_timer_interval_count, g_timer_interval_msec); // trigger_Timer
whismanoid 39:4d285e961435 3395 #endif // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 3396 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3397 //~ cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 28:a9a3a9db592b 3398 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3399 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 4:d9b05924ad4c 3400 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 3401 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 3402 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 9:45f98573eb6d 3403 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 9:45f98573eb6d 3404 //
whismanoid 17:9397ea3ea7e9 3405 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 4:d9b05924ad4c 3406 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 9:45f98573eb6d 3407 //
whismanoid 17:9397ea3ea7e9 3408 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 3409 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 17:9397ea3ea7e9 3410 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 3411 //
whismanoid 9:45f98573eb6d 3412 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 3413 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3414 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3415 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 9:45f98573eb6d 3416 //
whismanoid 17:9397ea3ea7e9 3417 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 9:45f98573eb6d 3418 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 3419 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 27:b4ac095b83b3 3420 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 3421 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3422 //
whismanoid 17:9397ea3ea7e9 3423 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3424 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 17:9397ea3ea7e9 3425 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 9:45f98573eb6d 3426 //
whismanoid 9:45f98573eb6d 3427 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3428 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 3429 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3430 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3431 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 9:45f98573eb6d 3432 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 9:45f98573eb6d 3433 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 9:45f98573eb6d 3434 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 9:45f98573eb6d 3435 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 9:45f98573eb6d 3436 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 9:45f98573eb6d 3437 //
whismanoid 9:45f98573eb6d 3438 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 3439 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 9:45f98573eb6d 3440 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 9:45f98573eb6d 3441 //
whismanoid 9:45f98573eb6d 3442 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3443 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 3444 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 9:45f98573eb6d 3445 //
whismanoid 9:45f98573eb6d 3446 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3447 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 9:45f98573eb6d 3448 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3449 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 9:45f98573eb6d 3450 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3451 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 9:45f98573eb6d 3452 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3453 //
whismanoid 9:45f98573eb6d 3454 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 3455 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 9:45f98573eb6d 3456 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 9:45f98573eb6d 3457 //
whismanoid 9:45f98573eb6d 3458 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3459 //
whismanoid 9:45f98573eb6d 3460 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 3461 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 3462 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3463 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3464 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 9:45f98573eb6d 3465 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3466 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 9:45f98573eb6d 3467 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3468 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3469 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 9:45f98573eb6d 3470 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3471 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 9:45f98573eb6d 3472 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3473 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 9:45f98573eb6d 3474 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3475 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3476 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 9:45f98573eb6d 3477 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3478 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 28:a9a3a9db592b 3479 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 4:d9b05924ad4c 3480 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 28:a9a3a9db592b 3481 #if USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3482 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 8:dffee7509bfb 3483 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 3484 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 3485 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 3486 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 3487 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 3488 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 3489 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 3490 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 8:dffee7509bfb 3491 //
whismanoid 4:d9b05924ad4c 3492 //cmdLine.serial().print(F("\r\n ! -- Initial Configuration"));
whismanoid 4:d9b05924ad4c 3493 //
whismanoid 4:d9b05924ad4c 3494 // % standardize diagnostic commands
whismanoid 4:d9b05924ad4c 3495 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 3496 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 3497 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 3498 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 3499 // %Ppin df=xx -- pwm output
whismanoid 4:d9b05924ad4c 3500 // %Wpin -- measure high pulsewidth input in usec
whismanoid 4:d9b05924ad4c 3501 // %wpin -- measure low pulsewidth input in usec
whismanoid 4:d9b05924ad4c 3502 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 3503 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 3504 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 3505 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 4:d9b05924ad4c 3506 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 3507 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3508 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 3509 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 3510 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 3511 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 3512 // A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 3513 //
whismanoid 23:c6c652bef4b9 3514 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3515 #if USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3516 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 3517 // TODO: %B1 submenu for Button1
whismanoid 23:c6c652bef4b9 3518 // TODO: future: %B2 submenu for Button2
whismanoid 23:c6c652bef4b9 3519 // TODO: future: %B3 submenu for Button3
whismanoid 23:c6c652bef4b9 3520 // TODO: %B1@ view command table, similar to L@ for action table
whismanoid 23:c6c652bef4b9 3521 // TODO: %B1@+ command add new row (if there is room to add) (ignore one space before command)
whismanoid 23:c6c652bef4b9 3522 // TODO: %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 23:c6c652bef4b9 3523 // TODO: %B1@-~~~ clear entire command table
whismanoid 23:c6c652bef4b9 3524 // TODO: %B1@nnn command replace row number nnn (ignore one space before command)
whismanoid 23:c6c652bef4b9 3525 // TODO: %B1@! disable button response but keep command table contents
whismanoid 23:c6c652bef4b9 3526 // TODO: %B1@@ enable button response
whismanoid 23:c6c652bef4b9 3527 // TODO: %B1! trigger onButton1FallingEdge() immediately (for test development)
whismanoid 30:07197a430869 3528 cmdLine.serial().printf("\r\n %%B1! trigger Button1 event; %%B1@ -- view/edit command table");
whismanoid 23:c6c652bef4b9 3529 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3530 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3531 #if HAS_digitalInOuts
whismanoid 4:d9b05924ad4c 3532 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 3533 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 3534 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 3535 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 4:d9b05924ad4c 3536 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3537 cmdLine.serial().printf("} -- High Output");
whismanoid 4:d9b05924ad4c 3538 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 4:d9b05924ad4c 3539 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3540 cmdLine.serial().printf("} -- Low Output");
whismanoid 4:d9b05924ad4c 3541 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 4:d9b05924ad4c 3542 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3543 cmdLine.serial().printf("} -- Input");
whismanoid 4:d9b05924ad4c 3544 #endif
whismanoid 4:d9b05924ad4c 3545
whismanoid 4:d9b05924ad4c 3546 #if HAS_analogIns
whismanoid 4:d9b05924ad4c 3547 // Menu A) analogRead A0..7
whismanoid 4:d9b05924ad4c 3548 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 3549 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 37:3f369235e5bc 3550 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 37:3f369235e5bc 3551 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 3552 // %A avg=%d -- help string display Platform_AIN_Average_N
whismanoid 37:3f369235e5bc 3553 cmdLine.serial().printf("; %%A avg=%d -- average", Platform_AIN_Average_N);
whismanoid 37:3f369235e5bc 3554 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 3555 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 3556 // %A cal? view/export raw calibration values for all channels
whismanoid 37:3f369235e5bc 3557 cmdLine.serial().printf("; %%A cal? -- calibration");
whismanoid 34:a1993a1ee904 3558 #endif // HAS_Platform_AIN_Calibration
whismanoid 4:d9b05924ad4c 3559 #endif
whismanoid 4:d9b05924ad4c 3560
whismanoid 4:d9b05924ad4c 3561 #if HAS_SPI2_MAX541
whismanoid 4:d9b05924ad4c 3562 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 4:d9b05924ad4c 3563 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 4:d9b05924ad4c 3564 #endif
whismanoid 4:d9b05924ad4c 3565
whismanoid 4:d9b05924ad4c 3566 #if HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3567 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3568 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3569 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 4:d9b05924ad4c 3570 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 3571 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 3572 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 3573 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 4:d9b05924ad4c 3574 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 3575 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3576 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 4:d9b05924ad4c 3577 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 4:d9b05924ad4c 3578 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 4:d9b05924ad4c 3579 (g_I2C_SCL_Hz / 1000.));
whismanoid 4:d9b05924ad4c 3580 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 4:d9b05924ad4c 3581 g_I2C_deviceAddress7);
whismanoid 4:d9b05924ad4c 3582 //
whismanoid 4:d9b05924ad4c 3583 #if SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3584 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3585 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 4:d9b05924ad4c 3586 // test low-level I2C i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3587 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3588 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 4:d9b05924ad4c 3589 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 4:d9b05924ad4c 3590 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 4:d9b05924ad4c 3591 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3592
whismanoid 4:d9b05924ad4c 3593 #if HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3594 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3595 // SPI test command S (mosiData)+
whismanoid 4:d9b05924ad4c 3596 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 3597 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 3598 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 3599 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 3600 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 4:d9b05924ad4c 3601 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 4:d9b05924ad4c 3602 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 4:d9b05924ad4c 3603 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 4:d9b05924ad4c 3604 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 4:d9b05924ad4c 3605 // mode | POL PHA
whismanoid 4:d9b05924ad4c 3606 // -----+--------
whismanoid 4:d9b05924ad4c 3607 // 0 | 0 0
whismanoid 4:d9b05924ad4c 3608 // 1 | 0 1
whismanoid 4:d9b05924ad4c 3609 // 2 | 1 0
whismanoid 4:d9b05924ad4c 3610 // 3 | 1 1
whismanoid 4:d9b05924ad4c 3611 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 4:d9b05924ad4c 3612 // 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 3613 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 4:d9b05924ad4c 3614 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 4:d9b05924ad4c 3615 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 4:d9b05924ad4c 3616 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 4:d9b05924ad4c 3617 cmdLine.serial().printf("\r\n %%SD -- SPI diagnostic messages ");
whismanoid 4:d9b05924ad4c 3618 if (g_MAX11410_device.onSPIprint) {
whismanoid 4:d9b05924ad4c 3619 cmdLine.serial().printf("hide");
whismanoid 4:d9b05924ad4c 3620 }
whismanoid 4:d9b05924ad4c 3621 else {
whismanoid 4:d9b05924ad4c 3622 cmdLine.serial().printf("show");
whismanoid 4:d9b05924ad4c 3623 }
whismanoid 4:d9b05924ad4c 3624 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 4:d9b05924ad4c 3625 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 4:d9b05924ad4c 3626 #endif // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3627 //
whismanoid 4:d9b05924ad4c 3628 // Application-specific commands (help text) here
whismanoid 4:d9b05924ad4c 3629 //
whismanoid 4:d9b05924ad4c 3630 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3631 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3632 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3633 //
whismanoid 4:d9b05924ad4c 3634
whismanoid 4:d9b05924ad4c 3635 //~ extern void MAX11410_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp\n
whismanoid 4:d9b05924ad4c 3636 //~ MAX11410_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 3637 }
whismanoid 4:d9b05924ad4c 3638 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3639
whismanoid 4:d9b05924ad4c 3640 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 15:37c83ec50ea0 3641
whismanoid 15:37c83ec50ea0 3642 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 3643 void pinsMonitor_submenu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 15:37c83ec50ea0 3644 {
whismanoid 15:37c83ec50ea0 3645 // % diagnostic commands submenu
whismanoid 15:37c83ec50ea0 3646 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 3647 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 3648 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 3649 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 3650 // %Ppin df=xx -- pwm output
whismanoid 15:37c83ec50ea0 3651 // %Wpin -- measure high pulsewidth input in usec
whismanoid 15:37c83ec50ea0 3652 // %wpin -- measure low pulsewidth input in usec
whismanoid 15:37c83ec50ea0 3653 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 3654 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3655 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3656 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3657 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3658 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3659 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3660 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3661 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3662 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3663 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 3664 //
whismanoid 15:37c83ec50ea0 3665 char strPinIndex[3];
whismanoid 15:37c83ec50ea0 3666 strPinIndex[0] = cmdLine[2];
whismanoid 15:37c83ec50ea0 3667 strPinIndex[1] = cmdLine[3];
whismanoid 15:37c83ec50ea0 3668 strPinIndex[2] = '\0';
whismanoid 15:37c83ec50ea0 3669 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 15:37c83ec50ea0 3670 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 15:37c83ec50ea0 3671 //
whismanoid 15:37c83ec50ea0 3672 // get next character
whismanoid 15:37c83ec50ea0 3673 switch (cmdLine[1])
whismanoid 15:37c83ec50ea0 3674 {
whismanoid 23:c6c652bef4b9 3675 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3676 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 3677 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 3678 case 'B': case 'b':
whismanoid 23:c6c652bef4b9 3679 {
whismanoid 24:032f3683cb2a 3680 int command_table_button_index = 1;
whismanoid 23:c6c652bef4b9 3681 // %B1 submenu for Button1
whismanoid 23:c6c652bef4b9 3682 // future: %B2 submenu for Button2
whismanoid 23:c6c652bef4b9 3683 // future: %B3 submenu for Button3
whismanoid 23:c6c652bef4b9 3684 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 3685 // cmdLine[2] == '1' selects onButton1_command_table
whismanoid 23:c6c652bef4b9 3686 char** command_table = onButton1_command_table;
whismanoid 23:c6c652bef4b9 3687 #endif
whismanoid 24:032f3683cb2a 3688 switch(cmdLine[2])
whismanoid 24:032f3683cb2a 3689 {
whismanoid 24:032f3683cb2a 3690 default:
whismanoid 24:032f3683cb2a 3691 case '1': case 'A': case 'a': case '!':
whismanoid 24:032f3683cb2a 3692 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3693 command_table_button_index = 1;
whismanoid 24:032f3683cb2a 3694 command_table = onButton1_command_table;
whismanoid 24:032f3683cb2a 3695 #endif
whismanoid 24:032f3683cb2a 3696 break;
whismanoid 24:032f3683cb2a 3697 case '2': case 'B': case 'b': case '@':
whismanoid 23:c6c652bef4b9 3698 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3699 command_table_button_index = 2;
whismanoid 24:032f3683cb2a 3700 command_table = onButton2_command_table;
whismanoid 24:032f3683cb2a 3701 #endif
whismanoid 24:032f3683cb2a 3702 break;
whismanoid 24:032f3683cb2a 3703 case '3': case 'C': case 'c': case '#':
whismanoid 23:c6c652bef4b9 3704 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3705 command_table_button_index = 3;
whismanoid 24:032f3683cb2a 3706 command_table = onButton3_command_table;
whismanoid 24:032f3683cb2a 3707 #endif
whismanoid 24:032f3683cb2a 3708 break;
whismanoid 29:6a9edb6e973b 3709 case '4':
whismanoid 29:6a9edb6e973b 3710 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3711 command_table_button_index = 4;
whismanoid 29:6a9edb6e973b 3712 command_table = onButton4_command_table;
whismanoid 29:6a9edb6e973b 3713 #endif
whismanoid 29:6a9edb6e973b 3714 break;
whismanoid 29:6a9edb6e973b 3715 case '5':
whismanoid 29:6a9edb6e973b 3716 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3717 command_table_button_index = 5;
whismanoid 29:6a9edb6e973b 3718 command_table = onButton5_command_table;
whismanoid 29:6a9edb6e973b 3719 #endif
whismanoid 29:6a9edb6e973b 3720 break;
whismanoid 29:6a9edb6e973b 3721 case '6':
whismanoid 29:6a9edb6e973b 3722 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3723 command_table_button_index = 6;
whismanoid 29:6a9edb6e973b 3724 command_table = onButton6_command_table;
whismanoid 29:6a9edb6e973b 3725 #endif
whismanoid 29:6a9edb6e973b 3726 break;
whismanoid 29:6a9edb6e973b 3727 case '7':
whismanoid 29:6a9edb6e973b 3728 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3729 command_table_button_index = 7;
whismanoid 29:6a9edb6e973b 3730 command_table = onButton7_command_table;
whismanoid 29:6a9edb6e973b 3731 #endif
whismanoid 29:6a9edb6e973b 3732 break;
whismanoid 29:6a9edb6e973b 3733 case '8':
whismanoid 29:6a9edb6e973b 3734 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3735 command_table_button_index = 8;
whismanoid 29:6a9edb6e973b 3736 command_table = onButton8_command_table;
whismanoid 29:6a9edb6e973b 3737 #endif
whismanoid 29:6a9edb6e973b 3738 break;
whismanoid 29:6a9edb6e973b 3739 case '9':
whismanoid 29:6a9edb6e973b 3740 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3741 command_table_button_index = 9;
whismanoid 29:6a9edb6e973b 3742 command_table = onButton9_command_table;
whismanoid 29:6a9edb6e973b 3743 #endif
whismanoid 29:6a9edb6e973b 3744 break;
whismanoid 24:032f3683cb2a 3745 }
whismanoid 24:032f3683cb2a 3746 //
whismanoid 23:c6c652bef4b9 3747 switch(cmdLine[3])
whismanoid 23:c6c652bef4b9 3748 {
whismanoid 23:c6c652bef4b9 3749 case '@':
whismanoid 23:c6c652bef4b9 3750 {
whismanoid 23:c6c652bef4b9 3751 // %B1@ view/edit command table, similar to L@ for action table
whismanoid 23:c6c652bef4b9 3752 int editRowIndex = 0;
whismanoid 23:c6c652bef4b9 3753 int command_table_row_count = 0;
whismanoid 23:c6c652bef4b9 3754 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3755 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3756 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 24:032f3683cb2a 3757 command_table_row_count = lineIndex+1;
whismanoid 24:032f3683cb2a 3758 }
whismanoid 24:032f3683cb2a 3759 //
whismanoid 24:032f3683cb2a 3760 // ignore extra spaces before the command
whismanoid 24:032f3683cb2a 3761 // find argIndex such that cmdLine[argIndex] is the start of the second word
whismanoid 24:032f3683cb2a 3762 int argIndex;
whismanoid 24:032f3683cb2a 3763 for (argIndex = 5; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 24:032f3683cb2a 3764 {
whismanoid 24:032f3683cb2a 3765 if (cmdLine[argIndex] == ' ') break;
whismanoid 24:032f3683cb2a 3766 }
whismanoid 24:032f3683cb2a 3767 for (; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 24:032f3683cb2a 3768 {
whismanoid 24:032f3683cb2a 3769 if (cmdLine[argIndex] != ' ') break;
whismanoid 23:c6c652bef4b9 3770 }
whismanoid 23:c6c652bef4b9 3771 //
whismanoid 23:c6c652bef4b9 3772 // Edit the contents of command_table
whismanoid 23:c6c652bef4b9 3773 switch (cmdLine[4]) // %B1@... -- Edit the contents of command_table
whismanoid 23:c6c652bef4b9 3774 {
whismanoid 23:c6c652bef4b9 3775 case '0': case '1': case '2': case '3': case '4':
whismanoid 23:c6c652bef4b9 3776 case '5': case '6': case '7': case '8': case '9':
whismanoid 24:032f3683cb2a 3777 // %B1@nnn command replace row number nnn
whismanoid 23:c6c652bef4b9 3778 // edit row data
whismanoid 33:70a28cfe9e01 3779 // get row number to edit from cmdLine[4]
whismanoid 33:70a28cfe9e01 3780 editRowIndex = atoi(cmdLine.str()+4);
whismanoid 23:c6c652bef4b9 3781 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3782 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 24:032f3683cb2a 3783 if ((editRowIndex >= 0) && (editRowIndex < command_table_row_count)) {
whismanoid 28:a9a3a9db592b 3784 // avoid replacing with null because that would truncate the table
whismanoid 28:a9a3a9db592b 3785 if (*(cmdLine.str()+argIndex)=='\0') {
whismanoid 28:a9a3a9db592b 3786 cmdLine.serial().printf("\r\n cannot replace row %d with nothing",
whismanoid 28:a9a3a9db592b 3787 editRowIndex);
whismanoid 28:a9a3a9db592b 3788 }
whismanoid 28:a9a3a9db592b 3789 else
whismanoid 28:a9a3a9db592b 3790 {
whismanoid 28:a9a3a9db592b 3791 // update row
whismanoid 28:a9a3a9db592b 3792 cmdLine.serial().printf("\r\n replace row %d with \"%s\"",
whismanoid 28:a9a3a9db592b 3793 editRowIndex, cmdLine.str()+argIndex);
whismanoid 28:a9a3a9db592b 3794 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3795 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 28:a9a3a9db592b 3796 }
whismanoid 24:032f3683cb2a 3797 }
whismanoid 33:70a28cfe9e01 3798 } // end if (command_table_row_count > 0)
whismanoid 33:70a28cfe9e01 3799 if ((editRowIndex == command_table_row_count) && (command_table_row_count < COMMAND_TABLE_ROW_MAX)) {
whismanoid 33:70a28cfe9e01 3800 // %B1@nnn command add new row (even though this looks like a replace command) if and only if nnn==next new unassigned line number
whismanoid 33:70a28cfe9e01 3801 //
whismanoid 33:70a28cfe9e01 3802 command_table_row_count++;
whismanoid 33:70a28cfe9e01 3803 cmdLine.serial().printf("\r\n add next row %d containing \"%s\"",
whismanoid 33:70a28cfe9e01 3804 editRowIndex, cmdLine.str()+argIndex);
whismanoid 33:70a28cfe9e01 3805 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 33:70a28cfe9e01 3806 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 33:70a28cfe9e01 3807 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 33:70a28cfe9e01 3808 //
whismanoid 23:c6c652bef4b9 3809 }
whismanoid 33:70a28cfe9e01 3810 //
whismanoid 23:c6c652bef4b9 3811 break;
whismanoid 23:c6c652bef4b9 3812 case '+':
whismanoid 24:032f3683cb2a 3813 // %B1@+ command add new row (if there is room to add)
whismanoid 23:c6c652bef4b9 3814 // add a new row at end of table
whismanoid 23:c6c652bef4b9 3815 if (command_table_row_count < COMMAND_TABLE_ROW_MAX) {
whismanoid 23:c6c652bef4b9 3816 // if command_table_row_count => COMMAND_TABLE_ROW_MAX then the table is full
whismanoid 23:c6c652bef4b9 3817 editRowIndex = command_table_row_count;
whismanoid 28:a9a3a9db592b 3818 // avoid replacing with null because that would truncate the table
whismanoid 28:a9a3a9db592b 3819 if (*(cmdLine.str()+argIndex)=='\0') {
whismanoid 28:a9a3a9db592b 3820 cmdLine.serial().printf("\r\n cannot add new row %d containing nothing",
whismanoid 28:a9a3a9db592b 3821 editRowIndex);
whismanoid 28:a9a3a9db592b 3822 }
whismanoid 28:a9a3a9db592b 3823 else
whismanoid 28:a9a3a9db592b 3824 {
whismanoid 28:a9a3a9db592b 3825 command_table_row_count++;
whismanoid 28:a9a3a9db592b 3826 cmdLine.serial().printf("\r\n add new row %d containing \"%s\"",
whismanoid 28:a9a3a9db592b 3827 editRowIndex, cmdLine.str()+argIndex);
whismanoid 28:a9a3a9db592b 3828 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3829 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 28:a9a3a9db592b 3830 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 28:a9a3a9db592b 3831 }
whismanoid 23:c6c652bef4b9 3832 }
whismanoid 23:c6c652bef4b9 3833 break;
whismanoid 23:c6c652bef4b9 3834 case '-':
whismanoid 24:032f3683cb2a 3835 // %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 23:c6c652bef4b9 3836 // delete row from table
whismanoid 23:c6c652bef4b9 3837 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3838 // if command_table_row_count == 0 then the table is empty
whismanoid 23:c6c652bef4b9 3839 if ((cmdLine[5] == '~') && (cmdLine[6] == '~') && (cmdLine[7] == '~')) {
whismanoid 23:c6c652bef4b9 3840 // %B1@-~~~ clear entire command table
whismanoid 24:032f3683cb2a 3841 cmdLine.serial().printf("\r\n clear entire command table");
whismanoid 23:c6c652bef4b9 3842 command_table_row_count = 0;
whismanoid 28:a9a3a9db592b 3843 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 23:c6c652bef4b9 3844 break;
whismanoid 23:c6c652bef4b9 3845 }
whismanoid 24:032f3683cb2a 3846 else
whismanoid 23:c6c652bef4b9 3847 {
whismanoid 24:032f3683cb2a 3848 // %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 24:032f3683cb2a 3849 editRowIndex = atoi(cmdLine.str()+5);
whismanoid 24:032f3683cb2a 3850 if ((editRowIndex >= 0) && (editRowIndex < command_table_row_count)) {
whismanoid 24:032f3683cb2a 3851 cmdLine.serial().printf("\r\n delete row %d", editRowIndex);
whismanoid 24:032f3683cb2a 3852 // delete row editRowIndex from Datalogger_action_table
whismanoid 24:032f3683cb2a 3853 for (int i = editRowIndex; i < (command_table_row_count-1); i++)
whismanoid 24:032f3683cb2a 3854 {
whismanoid 24:032f3683cb2a 3855 // copy row i+1 into row i
whismanoid 24:032f3683cb2a 3856 cmdLine.serial().printf("\r\n copy row %d into row %d: \"%s\"",
whismanoid 24:032f3683cb2a 3857 i+1, i, command_table[i+1]);
whismanoid 24:032f3683cb2a 3858 strncpy(command_table[i], command_table[i+1], COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3859 command_table[i][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 24:032f3683cb2a 3860 }
whismanoid 24:032f3683cb2a 3861 command_table_row_count--;
whismanoid 28:a9a3a9db592b 3862 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 24:032f3683cb2a 3863 }
whismanoid 23:c6c652bef4b9 3864 }
whismanoid 23:c6c652bef4b9 3865 }
whismanoid 23:c6c652bef4b9 3866 break;
whismanoid 30:07197a430869 3867 case '.': // something other than ! because %B1! means trigger event
whismanoid 30:07197a430869 3868 // pause the button event
whismanoid 30:07197a430869 3869 // TODO: %B1@. disable button response but keep command table contents
whismanoid 23:c6c652bef4b9 3870 //~ Datalogger_action_table_enabled = false;
whismanoid 23:c6c652bef4b9 3871 break;
whismanoid 23:c6c652bef4b9 3872 case '@':
whismanoid 30:07197a430869 3873 // enable the button event
whismanoid 23:c6c652bef4b9 3874 // TODO: %B1@@ enable button response
whismanoid 23:c6c652bef4b9 3875 //~ Datalogger_action_table_enabled = true;
whismanoid 23:c6c652bef4b9 3876 break;
whismanoid 23:c6c652bef4b9 3877 }
whismanoid 23:c6c652bef4b9 3878 //
whismanoid 23:c6c652bef4b9 3879 // Print the contents of command_table
whismanoid 23:c6c652bef4b9 3880 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3881 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3882 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 24:032f3683cb2a 3883 command_table_row_count = lineIndex+1;
whismanoid 24:032f3683cb2a 3884 cmdLine.serial().printf("\r\n %%B%1d@%d %s",
whismanoid 24:032f3683cb2a 3885 command_table_button_index,
whismanoid 24:032f3683cb2a 3886 lineIndex,
whismanoid 24:032f3683cb2a 3887 command_table[lineIndex]);
whismanoid 23:c6c652bef4b9 3888 }
whismanoid 30:07197a430869 3889 //~ cmdLine.serial().printf("\r\n command_table_row_count = %d/%d",
whismanoid 30:07197a430869 3890 //~ command_table_row_count, COMMAND_TABLE_ROW_MAX);
whismanoid 30:07197a430869 3891 cmdLine.serial().printf("\r\n\r\nEdit Button%d event (used %d/%d, %d free):",
whismanoid 30:07197a430869 3892 command_table_button_index,
whismanoid 30:07197a430869 3893 command_table_row_count,
whismanoid 30:07197a430869 3894 COMMAND_TABLE_ROW_MAX,
whismanoid 30:07197a430869 3895 (COMMAND_TABLE_ROW_MAX - command_table_row_count)
whismanoid 30:07197a430869 3896 );
whismanoid 23:c6c652bef4b9 3897 if (command_table_row_count < COMMAND_TABLE_ROW_MAX) {
whismanoid 23:c6c652bef4b9 3898 // if command_table_row_count => COMMAND_TABLE_ROW_MAX then the table is full
whismanoid 24:032f3683cb2a 3899 cmdLine.serial().printf("\r\n %%B%1d@+ command -- add new row %d at end of table",
whismanoid 24:032f3683cb2a 3900 command_table_button_index,
whismanoid 24:032f3683cb2a 3901 command_table_row_count);
whismanoid 23:c6c652bef4b9 3902 }
whismanoid 23:c6c652bef4b9 3903 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3904 // if command_table_row_count == 0 then the table is empty
whismanoid 24:032f3683cb2a 3905 cmdLine.serial().printf("\r\n %%B%1d@%d command -- replace row %d",
whismanoid 24:032f3683cb2a 3906 command_table_button_index,
whismanoid 23:c6c652bef4b9 3907 command_table_row_count-1,
whismanoid 23:c6c652bef4b9 3908 command_table_row_count-1);
whismanoid 24:032f3683cb2a 3909 cmdLine.serial().printf("\r\n %%B%1d@-%d -- delete row %d",
whismanoid 24:032f3683cb2a 3910 command_table_button_index,
whismanoid 24:032f3683cb2a 3911 command_table_row_count-1,
whismanoid 24:032f3683cb2a 3912 command_table_row_count-1);
whismanoid 24:032f3683cb2a 3913 cmdLine.serial().printf("\r\n %%B%1d@-~~~ -- delete all rows",
whismanoid 24:032f3683cb2a 3914 command_table_button_index);
whismanoid 30:07197a430869 3915 //~ cmdLine.serial().printf("\r\n %%B%1d@. -- pause entire command table",
whismanoid 30:07197a430869 3916 //~ command_table_button_index);
whismanoid 30:07197a430869 3917 //~ cmdLine.serial().printf("\r\n %%B%1d@@ -- enable command table",
whismanoid 30:07197a430869 3918 //~ command_table_button_index);
whismanoid 30:07197a430869 3919 cmdLine.serial().printf("\r\n %%B%1d! -- trigger Button%d event",
whismanoid 30:07197a430869 3920 command_table_button_index,
whismanoid 24:032f3683cb2a 3921 command_table_button_index);
whismanoid 23:c6c652bef4b9 3922 }
whismanoid 23:c6c652bef4b9 3923 //
whismanoid 23:c6c652bef4b9 3924 } // case '@' -- %B1@ view/edit command table
whismanoid 23:c6c652bef4b9 3925 break;
whismanoid 23:c6c652bef4b9 3926 case '!':
whismanoid 23:c6c652bef4b9 3927 // TODO: %B1! trigger onButton1FallingEdge() immediately (for test development)
whismanoid 23:c6c652bef4b9 3928 Run_command_table(command_table);
whismanoid 23:c6c652bef4b9 3929 break;
whismanoid 23:c6c652bef4b9 3930 }
whismanoid 23:c6c652bef4b9 3931 }
whismanoid 23:c6c652bef4b9 3932 break;
whismanoid 23:c6c652bef4b9 3933 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3934 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 3935 #if HAS_digitalInOuts
whismanoid 15:37c83ec50ea0 3936 case 'H': case 'h':
whismanoid 15:37c83ec50ea0 3937 {
whismanoid 15:37c83ec50ea0 3938 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 3939 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3940 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3941 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3942 #else
whismanoid 15:37c83ec50ea0 3943 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3944 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 3945 digitalInOutPin.write(1);
whismanoid 15:37c83ec50ea0 3946 #endif
whismanoid 15:37c83ec50ea0 3947 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 15:37c83ec50ea0 3948 }
whismanoid 15:37c83ec50ea0 3949 break;
whismanoid 15:37c83ec50ea0 3950 case 'L': case 'l':
whismanoid 15:37c83ec50ea0 3951 {
whismanoid 15:37c83ec50ea0 3952 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 3953 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3954 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3955 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3956 #else
whismanoid 15:37c83ec50ea0 3957 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3958 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 3959 digitalInOutPin.write(0);
whismanoid 15:37c83ec50ea0 3960 #endif
whismanoid 15:37c83ec50ea0 3961 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 15:37c83ec50ea0 3962 }
whismanoid 15:37c83ec50ea0 3963 break;
whismanoid 15:37c83ec50ea0 3964 case '?':
whismanoid 15:37c83ec50ea0 3965 {
whismanoid 15:37c83ec50ea0 3966 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 3967 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3968 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3969 #else
whismanoid 15:37c83ec50ea0 3970 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3971 digitalInOutPin.input();
whismanoid 15:37c83ec50ea0 3972 #endif
whismanoid 15:37c83ec50ea0 3973 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 15:37c83ec50ea0 3974 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3975 int value = digitalRead(pinIndex);
whismanoid 15:37c83ec50ea0 3976 #else
whismanoid 15:37c83ec50ea0 3977 int value = digitalInOutPin.read();
whismanoid 15:37c83ec50ea0 3978 #endif
whismanoid 15:37c83ec50ea0 3979 cmdLine.serial().printf("%d ", value);
whismanoid 15:37c83ec50ea0 3980 }
whismanoid 15:37c83ec50ea0 3981 break;
whismanoid 15:37c83ec50ea0 3982 #endif
whismanoid 15:37c83ec50ea0 3983 //
whismanoid 15:37c83ec50ea0 3984 #if HAS_analogIns
whismanoid 15:37c83ec50ea0 3985 case 'A': case 'a':
whismanoid 15:37c83ec50ea0 3986 {
whismanoid 15:37c83ec50ea0 3987 // %A %Apin -- analog input
whismanoid 37:3f369235e5bc 3988 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 3989 // %A avg= -- set Platform_AIN_Average_N
whismanoid 37:3f369235e5bc 3990 if (cmdLine.parse_int_dec("avg", Platform_AIN_Average_N))
whismanoid 37:3f369235e5bc 3991 {
whismanoid 37:3f369235e5bc 3992 // Platform_AIN_Average_N was updated
whismanoid 37:3f369235e5bc 3993 }
whismanoid 37:3f369235e5bc 3994 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 3995 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 3996 // %A cal? view/export raw calibration values for all channels
whismanoid 34:a1993a1ee904 3997 // double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 3998 // double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 3999 // double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4000 // double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4001 {
whismanoid 34:a1993a1ee904 4002 char valueBuf[16];
whismanoid 34:a1993a1ee904 4003 // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 34:a1993a1ee904 4004 if (cmdLine.parse_and_remove_key("cal?", valueBuf, sizeof(valueBuf)))
whismanoid 34:a1993a1ee904 4005 {
whismanoid 34:a1993a1ee904 4006 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4007 {
whismanoid 34:a1993a1ee904 4008 cmdLine.serial().printf(" %%A cal%dn=%1.9f cal%dv=%1.9fV cal%dn=%1.9f cal%dv=%1.9fV\r\n",
whismanoid 34:a1993a1ee904 4009 ch, calibration_05_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4010 ch, calibration_05_V[ch],
whismanoid 34:a1993a1ee904 4011 ch, calibration_95_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4012 ch, calibration_95_V[ch]
whismanoid 34:a1993a1ee904 4013 );
whismanoid 34:a1993a1ee904 4014 }
whismanoid 34:a1993a1ee904 4015 //
whismanoid 34:a1993a1ee904 4016 // print extended help for %A
whismanoid 34:a1993a1ee904 4017 // %A cal0n=0.02 cal0v=0.123 cal0n=0.938 cal0v=1.132 edit/import raw calibration values for any/all channels
whismanoid 34:a1993a1ee904 4018 //~ cmdLine.serial().printf("\r\n %%A cal0n=0.02 cal0v=0.123 cal0n=0.938 cal0v=1.132 -- update calibration");
whismanoid 34:a1993a1ee904 4019 // %A cal0test=0.5 test calibration functions by calculating the calibrated voltage of specified normValue_0_1
whismanoid 34:a1993a1ee904 4020 cmdLine.serial().printf(" %%A cal0test=0.5 -- calculate voltage at 50%% of full scale");
whismanoid 34:a1993a1ee904 4021 cmdLine.serial().printf("\r\n %%A v0cal=1.000V -- calibrate channel against a known input voltage");
whismanoid 34:a1993a1ee904 4022 // TODO: %A___TBD___ save calibration values in non-volatile memory on-chip (if supported)
whismanoid 34:a1993a1ee904 4023 // TODO: %A___TBD___ load calibration values from non-volatile memory on-chip (if supported)
whismanoid 34:a1993a1ee904 4024 // %A calreset -- reset all calibration data
whismanoid 34:a1993a1ee904 4025 cmdLine.serial().printf("\r\n %%A calreset -- reset all calibration data");
whismanoid 37:3f369235e5bc 4026 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4027 // %A avg=%d -- help string display Platform_AIN_Average_N
whismanoid 37:3f369235e5bc 4028 cmdLine.serial().printf("\r\n %%A avg=%d -- average", Platform_AIN_Average_N);
whismanoid 37:3f369235e5bc 4029 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4030 cmdLine.serial().printf("\r\n\r\n");
whismanoid 34:a1993a1ee904 4031 //
whismanoid 34:a1993a1ee904 4032 } // end if (cmdLine.parse_and_remove_key("cal?", valueBuf, sizeof(valueBuf)))
whismanoid 34:a1993a1ee904 4033 }
whismanoid 34:a1993a1ee904 4034 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4035 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4036 {
whismanoid 34:a1993a1ee904 4037 // %A calreset -- reset all calibration data
whismanoid 34:a1993a1ee904 4038 char valueBuf[16];
whismanoid 34:a1993a1ee904 4039 // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 34:a1993a1ee904 4040 if (cmdLine.parse_and_remove_key("calreset", valueBuf, sizeof(valueBuf)))
whismanoid 34:a1993a1ee904 4041 {
whismanoid 34:a1993a1ee904 4042 // nominal 5% fullscale point; normValue_0_1 < 0.5
whismanoid 34:a1993a1ee904 4043 calibration_05_normValue_0_1[0] = 0.25; calibration_05_V[0] = 0.3;
whismanoid 34:a1993a1ee904 4044 calibration_05_normValue_0_1[1] = 0.25; calibration_05_V[1] = 0.3;
whismanoid 34:a1993a1ee904 4045 calibration_05_normValue_0_1[2] = 0.25; calibration_05_V[2] = 0.3;
whismanoid 34:a1993a1ee904 4046 calibration_05_normValue_0_1[3] = 0.25; calibration_05_V[3] = 0.3;
whismanoid 34:a1993a1ee904 4047 calibration_05_normValue_0_1[4] = 0.25; calibration_05_V[4] = 1.5;
whismanoid 34:a1993a1ee904 4048 calibration_05_normValue_0_1[5] = 0.25; calibration_05_V[5] = 1.5;
whismanoid 34:a1993a1ee904 4049 //
whismanoid 34:a1993a1ee904 4050 // nominal 95% fullscale point; normValue_0_1 > 0.5
whismanoid 34:a1993a1ee904 4051 calibration_95_normValue_0_1[0] = 0.75; calibration_95_V[0] = 0.9;
whismanoid 34:a1993a1ee904 4052 calibration_95_normValue_0_1[1] = 0.75; calibration_95_V[1] = 0.9;
whismanoid 34:a1993a1ee904 4053 calibration_95_normValue_0_1[2] = 0.75; calibration_95_V[2] = 0.9;
whismanoid 34:a1993a1ee904 4054 calibration_95_normValue_0_1[3] = 0.75; calibration_95_V[3] = 0.9;
whismanoid 34:a1993a1ee904 4055 calibration_95_normValue_0_1[4] = 0.75; calibration_95_V[4] = 4.5;
whismanoid 34:a1993a1ee904 4056 calibration_95_normValue_0_1[5] = 0.75; calibration_95_V[5] = 4.5;
whismanoid 34:a1993a1ee904 4057 //
whismanoid 34:a1993a1ee904 4058 }
whismanoid 34:a1993a1ee904 4059 }
whismanoid 34:a1993a1ee904 4060 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4061 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4062 // %A cal0n=0.02 cal0v=0.123 cal0n=0.938 cal0v=1.132 edit/import raw calibration values for any/all channels
whismanoid 35:c9549b5c01de 4063 // %A cal4n=0.135874882 cal4v=0.800000012V cal4n=0.286168128 cal4v=1.700000048V
whismanoid 34:a1993a1ee904 4064 // double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4065 // double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4066 // double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4067 // double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4068 {
whismanoid 34:a1993a1ee904 4069 double normValue_0_1, V;
whismanoid 34:a1993a1ee904 4070 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4071 {
whismanoid 34:a1993a1ee904 4072 static char key_can0n[8] = "cal0n__";
whismanoid 34:a1993a1ee904 4073 sprintf(key_can0n, "cal%1dn", ch);
whismanoid 34:a1993a1ee904 4074 static char key_cal0v[8] = "cal0v__";
whismanoid 34:a1993a1ee904 4075 sprintf(key_cal0v, "cal%1dv", ch);
whismanoid 35:c9549b5c01de 4076 // first point could be the 5% point or the 95% point
whismanoid 35:c9549b5c01de 4077 double norm_threshold = (calibration_05_normValue_0_1[ch] + calibration_95_normValue_0_1[ch]) / 2.0;
whismanoid 35:c9549b5c01de 4078 bool updated_05 = false;
whismanoid 35:c9549b5c01de 4079 //~ bool updated_95 = false;
whismanoid 35:c9549b5c01de 4080 if (cmdLine.parse_double(key_can0n, normValue_0_1)) {
whismanoid 34:a1993a1ee904 4081 if (cmdLine.parse_double(key_cal0v, V))
whismanoid 34:a1993a1ee904 4082 {
whismanoid 35:c9549b5c01de 4083 if (normValue_0_1 < norm_threshold) {
whismanoid 35:c9549b5c01de 4084 // store first calibration point in the 5% slot
whismanoid 35:c9549b5c01de 4085 calibration_05_normValue_0_1[ch] = normValue_0_1;
whismanoid 34:a1993a1ee904 4086 calibration_05_V[ch] = V;
whismanoid 35:c9549b5c01de 4087 updated_05 = true;
whismanoid 34:a1993a1ee904 4088 }
whismanoid 34:a1993a1ee904 4089 else {
whismanoid 35:c9549b5c01de 4090 // store first calibration point in the 95% slot
whismanoid 35:c9549b5c01de 4091 calibration_95_normValue_0_1[ch] = normValue_0_1;
whismanoid 34:a1993a1ee904 4092 calibration_95_V[ch] = V;
whismanoid 35:c9549b5c01de 4093 //~ updated_95 = true;
whismanoid 34:a1993a1ee904 4094 }
whismanoid 34:a1993a1ee904 4095 }
whismanoid 35:c9549b5c01de 4096 }
whismanoid 35:c9549b5c01de 4097 // handle the optional second calibration point
whismanoid 35:c9549b5c01de 4098 if (cmdLine.parse_double(key_can0n, normValue_0_1))
whismanoid 35:c9549b5c01de 4099 {
whismanoid 35:c9549b5c01de 4100 if (cmdLine.parse_double(key_cal0v, V))
whismanoid 35:c9549b5c01de 4101 {
whismanoid 35:c9549b5c01de 4102 if (updated_05) {
whismanoid 35:c9549b5c01de 4103 // we already stored the first point here
whismanoid 35:c9549b5c01de 4104 // calibration_05_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4105 // calibration_05_V[ch] = V;
whismanoid 35:c9549b5c01de 4106 // store the second point in the other slot
whismanoid 35:c9549b5c01de 4107 calibration_95_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4108 calibration_95_V[ch] = V;
whismanoid 35:c9549b5c01de 4109 }
whismanoid 35:c9549b5c01de 4110 else {
whismanoid 35:c9549b5c01de 4111 // we already stored the first point here
whismanoid 35:c9549b5c01de 4112 // calibration_95_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4113 // calibration_95_V[ch] = V;
whismanoid 35:c9549b5c01de 4114 // store the second point in the other slot
whismanoid 35:c9549b5c01de 4115 calibration_05_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4116 calibration_05_V[ch] = V;
whismanoid 35:c9549b5c01de 4117 }
whismanoid 35:c9549b5c01de 4118 }
whismanoid 35:c9549b5c01de 4119 }
whismanoid 38:fda80a0020d1 4120 // make sure calibration_05_normValue_0_1[ch] < calibration_95_normValue_0_1[ch]
whismanoid 38:fda80a0020d1 4121 if (calibration_05_normValue_0_1[ch] > calibration_95_normValue_0_1[ch])
whismanoid 38:fda80a0020d1 4122 {
whismanoid 38:fda80a0020d1 4123 // swap to make sure calibration_05_normValue_0_1[ch] < calibration_95_normValue_0_1[ch]
whismanoid 38:fda80a0020d1 4124 double n05 = calibration_95_normValue_0_1[ch];
whismanoid 38:fda80a0020d1 4125 double V05 = calibration_95_V[ch];
whismanoid 38:fda80a0020d1 4126 double n95 = calibration_05_normValue_0_1[ch];
whismanoid 38:fda80a0020d1 4127 double V95 = calibration_05_V[ch];
whismanoid 38:fda80a0020d1 4128 calibration_05_normValue_0_1[ch] = n05;
whismanoid 38:fda80a0020d1 4129 calibration_05_V[ch] = V05;
whismanoid 38:fda80a0020d1 4130 calibration_95_normValue_0_1[ch] = n95;
whismanoid 38:fda80a0020d1 4131 calibration_95_V[ch] = V95;
whismanoid 38:fda80a0020d1 4132 }
whismanoid 34:a1993a1ee904 4133 } // end for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4134 }
whismanoid 34:a1993a1ee904 4135 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4136 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4137 // %A cal0test=0.5 test calibration functions by calculating the calibrated voltage of specified normValue_0_1
whismanoid 34:a1993a1ee904 4138 // double CalibratedNormValue(int channel_0_5, double raw_normValue_0_1);
whismanoid 34:a1993a1ee904 4139 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4140 {
whismanoid 34:a1993a1ee904 4141 static char key_cal0test[12] = "cal0test__";
whismanoid 34:a1993a1ee904 4142 sprintf(key_cal0test, "cal%1dtest", ch);
whismanoid 34:a1993a1ee904 4143 double normValue_0_1, Vtest;
whismanoid 34:a1993a1ee904 4144 if (cmdLine.parse_double(key_cal0test, Vtest))
whismanoid 34:a1993a1ee904 4145 {
whismanoid 34:a1993a1ee904 4146 // divide Vtest/adc_full_scale_voltage[0] to get normValue_0_1
whismanoid 34:a1993a1ee904 4147 normValue_0_1 = Vtest/adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 4148 //
whismanoid 34:a1993a1ee904 4149 cmdLine.serial().printf(" CalibratedNormValue(%d, %1.6f) = %1.6f = %1.6fV\r\n",
whismanoid 34:a1993a1ee904 4150 ch,
whismanoid 34:a1993a1ee904 4151 normValue_0_1,
whismanoid 34:a1993a1ee904 4152 CalibratedNormValue(ch, normValue_0_1),
whismanoid 34:a1993a1ee904 4153 (CalibratedNormValue(ch, normValue_0_1) * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4154 );
whismanoid 34:a1993a1ee904 4155 //
whismanoid 34:a1993a1ee904 4156 // sweep CalibratedNormValue argument
whismanoid 34:a1993a1ee904 4157 double normValue_0_1_start = -0.05;
whismanoid 34:a1993a1ee904 4158 double normValue_0_1_step = 0.05;
whismanoid 34:a1993a1ee904 4159 double normValue_0_1_end = 1.07;
whismanoid 34:a1993a1ee904 4160 for (normValue_0_1 = normValue_0_1_start;
whismanoid 34:a1993a1ee904 4161 normValue_0_1 <= normValue_0_1_end;
whismanoid 34:a1993a1ee904 4162 normValue_0_1 = normValue_0_1 + normValue_0_1_step)
whismanoid 34:a1993a1ee904 4163 {
whismanoid 34:a1993a1ee904 4164 cmdLine.serial().printf(" CalibratedNormValue(%d, %1.6f) = %1.6f = %1.6fV\r\n",
whismanoid 34:a1993a1ee904 4165 ch,
whismanoid 34:a1993a1ee904 4166 normValue_0_1,
whismanoid 34:a1993a1ee904 4167 CalibratedNormValue(ch, normValue_0_1),
whismanoid 34:a1993a1ee904 4168 (CalibratedNormValue(ch, normValue_0_1) * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4169 );
whismanoid 34:a1993a1ee904 4170 }
whismanoid 34:a1993a1ee904 4171 }
whismanoid 34:a1993a1ee904 4172 } // end for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4173 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4174 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4175 // %A v0cal=1.000V -- calibrate channel against a known input voltage
whismanoid 34:a1993a1ee904 4176 // double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4177 // double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4178 // double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4179 // double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4180 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4181 {
whismanoid 34:a1993a1ee904 4182 static char key_v0cal[10] = "v0cal__";
whismanoid 34:a1993a1ee904 4183 sprintf(key_v0cal, "v%1dcal", ch);
whismanoid 34:a1993a1ee904 4184 double Vtest;
whismanoid 34:a1993a1ee904 4185 if (cmdLine.parse_double(key_v0cal, Vtest))
whismanoid 34:a1993a1ee904 4186 {
whismanoid 34:a1993a1ee904 4187 // divide Vtest/adc_full_scale_voltage[0] to get normValue_0_1
whismanoid 34:a1993a1ee904 4188 double Vtest_normValue_0_1 = Vtest/adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 4189 //
whismanoid 34:a1993a1ee904 4190 // %A v0cal=1.000 calibrate one channel by measuring against a known input voltage
whismanoid 34:a1993a1ee904 4191 //
whismanoid 34:a1993a1ee904 4192 cmdLine.serial().printf("\r\n Measuring against input voltage of %1.6fV...", Vtest);
whismanoid 37:3f369235e5bc 4193 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4194 const int numberOfMeasurements = 16 * Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4195 #else // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4196 const int numberOfMeasurements = 16;
whismanoid 37:3f369235e5bc 4197 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4198 double Sx_measure_normValue_0_1 = 0; // sum of values
whismanoid 34:a1993a1ee904 4199 double Sxx_measure_normValue_0_1 = 0; // sum of the squares of the values
whismanoid 34:a1993a1ee904 4200 for (int count = 0; count < numberOfMeasurements; count++)
whismanoid 34:a1993a1ee904 4201 {
whismanoid 34:a1993a1ee904 4202 double measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4203 switch(ch)
whismanoid 34:a1993a1ee904 4204 {
whismanoid 34:a1993a1ee904 4205 case 0: measure_normValue_0_1 = analogIn0.read(); break;
whismanoid 34:a1993a1ee904 4206 case 1: measure_normValue_0_1 = analogIn1.read(); break;
whismanoid 34:a1993a1ee904 4207 case 2: measure_normValue_0_1 = analogIn2.read(); break;
whismanoid 34:a1993a1ee904 4208 case 3: measure_normValue_0_1 = analogIn3.read(); break;
whismanoid 34:a1993a1ee904 4209 case 4: measure_normValue_0_1 = analogIn4.read(); break;
whismanoid 34:a1993a1ee904 4210 case 5: measure_normValue_0_1 = analogIn5.read(); break;
whismanoid 34:a1993a1ee904 4211 }
whismanoid 34:a1993a1ee904 4212 Sx_measure_normValue_0_1 = Sx_measure_normValue_0_1 + measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4213 Sxx_measure_normValue_0_1 = Sxx_measure_normValue_0_1 + (measure_normValue_0_1 * measure_normValue_0_1);
whismanoid 38:fda80a0020d1 4214 if ((count < 3) || (count >= numberOfMeasurements - 3)) {
whismanoid 38:fda80a0020d1 4215 cmdLine.serial().printf("\r\n raw: %7.6f%% = %1.6fV",
whismanoid 38:fda80a0020d1 4216 measure_normValue_0_1 * 100.0,
whismanoid 38:fda80a0020d1 4217 (measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 38:fda80a0020d1 4218 );
whismanoid 38:fda80a0020d1 4219 }
whismanoid 34:a1993a1ee904 4220 }
whismanoid 34:a1993a1ee904 4221 cmdLine.serial().printf("\r\n numberOfMeasurements = %d", numberOfMeasurements);
whismanoid 34:a1993a1ee904 4222 cmdLine.serial().printf("\r\n Sx_measure_normValue_0_1 = %1.6f", Sx_measure_normValue_0_1);
whismanoid 34:a1993a1ee904 4223 cmdLine.serial().printf("\r\n Sxx_measure_normValue_0_1 = %1.6f", Sxx_measure_normValue_0_1);
whismanoid 34:a1993a1ee904 4224 //
whismanoid 34:a1993a1ee904 4225 // calculate mean_measure_normValue_0_1 from
whismanoid 34:a1993a1ee904 4226 // Sxx_measure_normValue_0_1, Sx_measure_normValue_0_1, numberOfMeasurements
whismanoid 34:a1993a1ee904 4227 double mean_measure_normValue_0_1 = Sx_measure_normValue_0_1 / numberOfMeasurements;
whismanoid 34:a1993a1ee904 4228 cmdLine.serial().printf("\r\n mean = %7.6f%% = %1.6fV",
whismanoid 34:a1993a1ee904 4229 mean_measure_normValue_0_1 * 100.0,
whismanoid 34:a1993a1ee904 4230 (mean_measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4231 );
whismanoid 34:a1993a1ee904 4232 //
whismanoid 34:a1993a1ee904 4233 // TODO: calculate sample variance_measure_normValue_0_1 from
whismanoid 34:a1993a1ee904 4234 // Sxx_measure_normValue_0_1, Sx_measure_normValue_0_1, numberOfMeasurements
whismanoid 34:a1993a1ee904 4235 // variance_measure_normValue_0_1 = (Sxx - ( Sx * Sx / nWords) ) / (nWords - 1);
whismanoid 34:a1993a1ee904 4236 double variance_measure_normValue_0_1 = (Sxx_measure_normValue_0_1 - ( Sx_measure_normValue_0_1 * Sx_measure_normValue_0_1 / numberOfMeasurements) ) / (numberOfMeasurements - 1);
whismanoid 34:a1993a1ee904 4237 cmdLine.serial().printf("\r\n variance = %7.6f%% = %1.6fV",
whismanoid 34:a1993a1ee904 4238 variance_measure_normValue_0_1 * 100.0,
whismanoid 34:a1993a1ee904 4239 (variance_measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4240 );
whismanoid 34:a1993a1ee904 4241 //
whismanoid 34:a1993a1ee904 4242 // calculate sample stddev_measure_normValue_0_1 from
whismanoid 34:a1993a1ee904 4243 // Sxx_measure_normValue_0_1, Sx_measure_normValue_0_1, numberOfMeasurements
whismanoid 34:a1993a1ee904 4244 double stddev_measure_normValue_0_1 = sqrt(variance_measure_normValue_0_1);
whismanoid 34:a1993a1ee904 4245 cmdLine.serial().printf("\r\n stddev = %7.6f%% = %1.6fV",
whismanoid 34:a1993a1ee904 4246 stddev_measure_normValue_0_1 * 100.0,
whismanoid 34:a1993a1ee904 4247 (stddev_measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4248 );
whismanoid 34:a1993a1ee904 4249 //
whismanoid 34:a1993a1ee904 4250 // Validate the measurements:
whismanoid 34:a1993a1ee904 4251 // is the mean near the expected value?
whismanoid 34:a1993a1ee904 4252 // is the standard deviation not too high?
whismanoid 34:a1993a1ee904 4253 bool isCalibrationValid = true;
whismanoid 34:a1993a1ee904 4254 if ((Vtest_normValue_0_1 - mean_measure_normValue_0_1) > 0.1) {
whismanoid 34:a1993a1ee904 4255 isCalibrationValid = false;
whismanoid 34:a1993a1ee904 4256 cmdLine.serial().printf(" mean value too far from expected.\r\n");
whismanoid 34:a1993a1ee904 4257 }
whismanoid 34:a1993a1ee904 4258 if ((Vtest_normValue_0_1 - mean_measure_normValue_0_1) < -0.1) {
whismanoid 34:a1993a1ee904 4259 isCalibrationValid = false;
whismanoid 34:a1993a1ee904 4260 cmdLine.serial().printf(" mean value too far from expected.\r\n");
whismanoid 34:a1993a1ee904 4261 }
whismanoid 34:a1993a1ee904 4262 if ((stddev_measure_normValue_0_1) > 10) {
whismanoid 34:a1993a1ee904 4263 isCalibrationValid = false;
whismanoid 34:a1993a1ee904 4264 cmdLine.serial().printf(" stddev too high.\r\n");
whismanoid 34:a1993a1ee904 4265 }
whismanoid 34:a1993a1ee904 4266 if (isCalibrationValid)
whismanoid 34:a1993a1ee904 4267 {
whismanoid 34:a1993a1ee904 4268 // update calibration point (mean_measure_normValue_0_1, Vtest)
whismanoid 34:a1993a1ee904 4269 if (Vtest_normValue_0_1 < 0.5) {
whismanoid 34:a1993a1ee904 4270 calibration_05_normValue_0_1[ch] = mean_measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4271 calibration_05_V[ch] = Vtest;
whismanoid 34:a1993a1ee904 4272 } else {
whismanoid 34:a1993a1ee904 4273 calibration_95_normValue_0_1[ch] = mean_measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4274 calibration_95_V[ch] = Vtest;
whismanoid 34:a1993a1ee904 4275 }
whismanoid 34:a1993a1ee904 4276 //
whismanoid 34:a1993a1ee904 4277 // print updated calibration values
whismanoid 34:a1993a1ee904 4278 cmdLine.serial().printf("\r\n");
whismanoid 34:a1993a1ee904 4279 cmdLine.serial().printf(" %%A cal%dn=%1.9f cal%dv=%1.9fV cal%dn=%1.9f cal%dv=%1.9fV\r\n",
whismanoid 34:a1993a1ee904 4280 ch, calibration_05_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4281 ch, calibration_05_V[ch],
whismanoid 34:a1993a1ee904 4282 ch, calibration_95_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4283 ch, calibration_95_V[ch]
whismanoid 34:a1993a1ee904 4284 );
whismanoid 34:a1993a1ee904 4285 // print corrected value of mean of measurements (should be close to Vtest)
whismanoid 34:a1993a1ee904 4286 cmdLine.serial().printf(" CalibratedNormValue(%d, %1.6f) = %1.6f = %1.6fV vs %1.6fV\r\n",
whismanoid 34:a1993a1ee904 4287 ch,
whismanoid 34:a1993a1ee904 4288 mean_measure_normValue_0_1,
whismanoid 34:a1993a1ee904 4289 CalibratedNormValue(ch, mean_measure_normValue_0_1),
whismanoid 34:a1993a1ee904 4290 (CalibratedNormValue(ch, mean_measure_normValue_0_1) * adc_full_scale_voltage[ch]),
whismanoid 34:a1993a1ee904 4291 Vtest
whismanoid 34:a1993a1ee904 4292 );
whismanoid 34:a1993a1ee904 4293 } // end if (isCalibrationValid)
whismanoid 34:a1993a1ee904 4294 else {
whismanoid 34:a1993a1ee904 4295 cmdLine.serial().printf("\r\n");
whismanoid 34:a1993a1ee904 4296 cmdLine.serial().printf(" Measurement Error: Calibration will not be updated.\r\n");
whismanoid 34:a1993a1ee904 4297 } // end if (isCalibrationValid)
whismanoid 34:a1993a1ee904 4298 } // end if key_v0cal
whismanoid 34:a1993a1ee904 4299 } // end for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4300 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4301 #if HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 4302 // // TODO: %A___TBD___ save calibration values in non-volatile memory on-chip (if supported)
whismanoid 37:3f369235e5bc 4303 // {
whismanoid 37:3f369235e5bc 4304 // char valueBuf[16];
whismanoid 37:3f369235e5bc 4305 // // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 37:3f369235e5bc 4306 // if (cmdLine.parse_and_remove_key("__TBD_saveCal__", valueBuf, sizeof(valueBuf)))
whismanoid 37:3f369235e5bc 4307 // {
whismanoid 37:3f369235e5bc 4308 // // handle %A __TBD_saveCal__ -- command
whismanoid 37:3f369235e5bc 4309 // }
whismanoid 37:3f369235e5bc 4310 // }
whismanoid 34:a1993a1ee904 4311 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4312 #if HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 4313 // // TODO: %A___TBD___ load calibration values from non-volatile memory on-chip (if supported)
whismanoid 37:3f369235e5bc 4314 // {
whismanoid 37:3f369235e5bc 4315 // char valueBuf[16];
whismanoid 37:3f369235e5bc 4316 // // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 37:3f369235e5bc 4317 // if (cmdLine.parse_and_remove_key("__TBD_loadCal__", valueBuf, sizeof(valueBuf)))
whismanoid 37:3f369235e5bc 4318 // {
whismanoid 37:3f369235e5bc 4319 // // handle %A __TBD_loadCal__ -- command
whismanoid 37:3f369235e5bc 4320 // }
whismanoid 37:3f369235e5bc 4321 // }
whismanoid 34:a1993a1ee904 4322 #endif // HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 4323 // %A -- report analog input voltages
whismanoid 37:3f369235e5bc 4324 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4325 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4326 #endif // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4327 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 4328 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 15:37c83ec50ea0 4329 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 15:37c83ec50ea0 4330 {
whismanoid 15:37c83ec50ea0 4331 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 4332 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 4333 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 37:3f369235e5bc 4334 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4335 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4336 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4337 float normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 4338 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4339 normValue_0_1 = normValue_0_1 + analogInPin.read();
whismanoid 37:3f369235e5bc 4340 }
whismanoid 37:3f369235e5bc 4341 normValue_0_1 = normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4342 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4343 float normValue_0_1 = analogInPin.read();
whismanoid 37:3f369235e5bc 4344 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4345 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4346 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4347 normValue_0_1 = CalibratedNormValue(pinIndex, normValue_0_1);
whismanoid 34:a1993a1ee904 4348 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4349 //
whismanoid 15:37c83ec50ea0 4350 int pinIndexH = pinIndex + 4;
whismanoid 15:37c83ec50ea0 4351 int cPinIndexH = '0' + pinIndexH;
whismanoid 15:37c83ec50ea0 4352 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 15:37c83ec50ea0 4353 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 37:3f369235e5bc 4354 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4355 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4356 // float normValueH_0_1 = analogInPinH.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4357 float normValueH_0_1 = 0;
whismanoid 37:3f369235e5bc 4358 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4359 normValueH_0_1 = normValueH_0_1 + analogInPinH.read();
whismanoid 37:3f369235e5bc 4360 }
whismanoid 37:3f369235e5bc 4361 normValueH_0_1 = normValueH_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4362 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4363 float normValueH_0_1 = analogInPinH.read();
whismanoid 37:3f369235e5bc 4364 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4365 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4366 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4367 normValueH_0_1 = CalibratedNormValue(pinIndex, normValueH_0_1);
whismanoid 34:a1993a1ee904 4368 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4369 //
whismanoid 37:3f369235e5bc 4370 cmdLine.serial().printf("A%c = %7.3f%% = %1.3fV high range A%c = %7.3f%% = %1.3fV \r\n",
whismanoid 15:37c83ec50ea0 4371 cPinIndex,
whismanoid 15:37c83ec50ea0 4372 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4373 normValue_0_1 * adc_full_scale_voltage,
whismanoid 15:37c83ec50ea0 4374 cPinIndexH,
whismanoid 15:37c83ec50ea0 4375 normValueH_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4376 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 15:37c83ec50ea0 4377 );
whismanoid 15:37c83ec50ea0 4378 }
whismanoid 15:37c83ec50ea0 4379 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 15:37c83ec50ea0 4380 {
whismanoid 15:37c83ec50ea0 4381 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 4382 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 4383 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 37:3f369235e5bc 4384 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4385 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4386 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4387 float normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 4388 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4389 normValue_0_1 = normValue_0_1 + analogInPin.read();
whismanoid 37:3f369235e5bc 4390 }
whismanoid 37:3f369235e5bc 4391 normValue_0_1 = normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4392 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4393 float normValue_0_1 = analogInPin.read();
whismanoid 37:3f369235e5bc 4394 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4395 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4396 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4397 normValue_0_1 = CalibratedNormValue(pinIndex, normValue_0_1);
whismanoid 34:a1993a1ee904 4398 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4399 //
whismanoid 37:3f369235e5bc 4400 cmdLine.serial().printf("A%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 4401 cPinIndex,
whismanoid 15:37c83ec50ea0 4402 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4403 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 4404 );
whismanoid 15:37c83ec50ea0 4405 }
whismanoid 15:37c83ec50ea0 4406 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 4407 // Platform board uses simple analog inputs
whismanoid 15:37c83ec50ea0 4408 // assume standard Arduino analog inputs A0-A5
whismanoid 15:37c83ec50ea0 4409 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 15:37c83ec50ea0 4410 {
whismanoid 15:37c83ec50ea0 4411 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 4412 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 4413 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 37:3f369235e5bc 4414 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4415 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4416 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4417 float normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 4418 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4419 normValue_0_1 = normValue_0_1 + analogInPin.read();
whismanoid 37:3f369235e5bc 4420 }
whismanoid 37:3f369235e5bc 4421 normValue_0_1 = normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4422 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4423 float normValue_0_1 = analogInPin.read();
whismanoid 37:3f369235e5bc 4424 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4425 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4426 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4427 normValue_0_1 = CalibratedNormValue(pinIndex, normValue_0_1);
whismanoid 34:a1993a1ee904 4428 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4429 //
whismanoid 37:3f369235e5bc 4430 cmdLine.serial().printf("A%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 4431 cPinIndex,
whismanoid 15:37c83ec50ea0 4432 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4433 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 4434 );
whismanoid 15:37c83ec50ea0 4435 }
whismanoid 15:37c83ec50ea0 4436 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 4437 }
whismanoid 15:37c83ec50ea0 4438 break;
whismanoid 15:37c83ec50ea0 4439 #endif
whismanoid 15:37c83ec50ea0 4440 //
whismanoid 15:37c83ec50ea0 4441 #if HAS_SPI2_MAX541
whismanoid 15:37c83ec50ea0 4442 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 4443 {
whismanoid 15:37c83ec50ea0 4444 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 15:37c83ec50ea0 4445 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 15:37c83ec50ea0 4446 float voltageV = max541.Get_Voltage();
whismanoid 15:37c83ec50ea0 4447 // if (cmdLine[2] == '+') {
whismanoid 15:37c83ec50ea0 4448 // // %D+
whismanoid 15:37c83ec50ea0 4449 // voltageV = voltageV * 1.25f;
whismanoid 15:37c83ec50ea0 4450 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 15:37c83ec50ea0 4451 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4452 // }
whismanoid 15:37c83ec50ea0 4453 // else if (cmdLine[2] == '-') {
whismanoid 15:37c83ec50ea0 4454 // // %D-
whismanoid 15:37c83ec50ea0 4455 // voltageV = voltageV * 0.75f;
whismanoid 15:37c83ec50ea0 4456 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 15:37c83ec50ea0 4457 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4458 // }
whismanoid 15:37c83ec50ea0 4459 if (cmdLine.parse_float("V", voltageV))
whismanoid 15:37c83ec50ea0 4460 {
whismanoid 15:37c83ec50ea0 4461 // %D V=1.234 -- set voltage
whismanoid 15:37c83ec50ea0 4462 max541.Set_Voltage(voltageV);
whismanoid 15:37c83ec50ea0 4463 }
whismanoid 15:37c83ec50ea0 4464 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 15:37c83ec50ea0 4465 {
whismanoid 15:37c83ec50ea0 4466 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 15:37c83ec50ea0 4467 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4468 }
whismanoid 15:37c83ec50ea0 4469 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 15:37c83ec50ea0 4470 {
whismanoid 15:37c83ec50ea0 4471 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 15:37c83ec50ea0 4472
whismanoid 15:37c83ec50ea0 4473 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 15:37c83ec50ea0 4474 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 4475 const int average_count = 100;
whismanoid 15:37c83ec50ea0 4476 const double average_K = 0.25;
whismanoid 15:37c83ec50ea0 4477 for (int count = 0; count < average_count; count++) {
whismanoid 15:37c83ec50ea0 4478 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 4479 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 15:37c83ec50ea0 4480 }
whismanoid 15:37c83ec50ea0 4481 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 15:37c83ec50ea0 4482 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4483 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 15:37c83ec50ea0 4484 max541_midscale_V, max541.VRef);
whismanoid 15:37c83ec50ea0 4485 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 15:37c83ec50ea0 4486 voltageV = 1.0f;
whismanoid 15:37c83ec50ea0 4487 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4488 }
whismanoid 15:37c83ec50ea0 4489 else {
whismanoid 15:37c83ec50ea0 4490 // %D -- print MAX541 DAC status
whismanoid 15:37c83ec50ea0 4491 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 15:37c83ec50ea0 4492 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 15:37c83ec50ea0 4493 }
whismanoid 15:37c83ec50ea0 4494 }
whismanoid 15:37c83ec50ea0 4495 break;
whismanoid 15:37c83ec50ea0 4496 #endif
whismanoid 15:37c83ec50ea0 4497
whismanoid 15:37c83ec50ea0 4498 //
whismanoid 15:37c83ec50ea0 4499 #if HAS_I2C // SUPPORT_I2C
whismanoid 15:37c83ec50ea0 4500 case 'I': case 'i':
whismanoid 15:37c83ec50ea0 4501 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 4502 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 4503 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 4504 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 4505 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 4506 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 4507 // get next character
whismanoid 15:37c83ec50ea0 4508 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 15:37c83ec50ea0 4509 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 15:37c83ec50ea0 4510 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 15:37c83ec50ea0 4511 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 15:37c83ec50ea0 4512 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 15:37c83ec50ea0 4513 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 15:37c83ec50ea0 4514 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 15:37c83ec50ea0 4515 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 4516 {
whismanoid 15:37c83ec50ea0 4517 case 'P': case 'p':
whismanoid 15:37c83ec50ea0 4518 {
whismanoid 15:37c83ec50ea0 4519 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 4520 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 15:37c83ec50ea0 4521 }
whismanoid 15:37c83ec50ea0 4522 break;
whismanoid 15:37c83ec50ea0 4523 case 'C': case 'c':
whismanoid 15:37c83ec50ea0 4524 {
whismanoid 15:37c83ec50ea0 4525 bool isUpdatedI2CConfig = false;
whismanoid 15:37c83ec50ea0 4526 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 4527 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 15:37c83ec50ea0 4528 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 15:37c83ec50ea0 4529 {
whismanoid 15:37c83ec50ea0 4530 isUpdatedI2CConfig = true;
whismanoid 15:37c83ec50ea0 4531 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 4532 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 4533 {
whismanoid 15:37c83ec50ea0 4534 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 4535 }
whismanoid 15:37c83ec50ea0 4536 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 4537 {
whismanoid 15:37c83ec50ea0 4538 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 4539 }
whismanoid 15:37c83ec50ea0 4540 }
whismanoid 15:37c83ec50ea0 4541 if (isUpdatedI2CConfig)
whismanoid 15:37c83ec50ea0 4542 {
whismanoid 15:37c83ec50ea0 4543 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 4544 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 4545 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4546 i2cMaster.start();
whismanoid 15:37c83ec50ea0 4547 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 4548 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4549 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4550 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 15:37c83ec50ea0 4551 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 15:37c83ec50ea0 4552 (g_I2C_SCL_Hz / 1000.));
whismanoid 15:37c83ec50ea0 4553 i2cMaster.start();
whismanoid 15:37c83ec50ea0 4554 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 4555 }
whismanoid 15:37c83ec50ea0 4556 }
whismanoid 15:37c83ec50ea0 4557 break;
whismanoid 15:37c83ec50ea0 4558 case 'W': case 'w':
whismanoid 15:37c83ec50ea0 4559 {
whismanoid 15:37c83ec50ea0 4560 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 4561 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 4562 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4563 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 4564 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4565 #define MAX_I2C_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 4566 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 4567 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4568 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4569 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 4570 MAX_I2C_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 4571 {
whismanoid 15:37c83ec50ea0 4572 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4573 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4574 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 15:37c83ec50ea0 4575 g_I2C_deviceAddress7,
whismanoid 15:37c83ec50ea0 4576 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 15:37c83ec50ea0 4577 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 4578 {
whismanoid 15:37c83ec50ea0 4579 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 4580 }
whismanoid 15:37c83ec50ea0 4581 //
whismanoid 15:37c83ec50ea0 4582 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 4583 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 4584 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4585 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 4586 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 4587 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 4588 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 4589 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4590 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4591 // /* 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 4592 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 4593 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4594 unsigned int misoLength = 0;
whismanoid 15:37c83ec50ea0 4595 bool repeated = (g_I2C_read_count > 0);
whismanoid 15:37c83ec50ea0 4596 //
whismanoid 15:37c83ec50ea0 4597 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 15:37c83ec50ea0 4598 switch (writeStatus)
whismanoid 15:37c83ec50ea0 4599 {
whismanoid 15:37c83ec50ea0 4600 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 4601 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 4602 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 4603 writeStatus);
whismanoid 15:37c83ec50ea0 4604 }
whismanoid 15:37c83ec50ea0 4605 if (repeated)
whismanoid 15:37c83ec50ea0 4606 {
whismanoid 15:37c83ec50ea0 4607 int readStatus =
whismanoid 15:37c83ec50ea0 4608 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 15:37c83ec50ea0 4609 switch (readStatus)
whismanoid 15:37c83ec50ea0 4610 {
whismanoid 15:37c83ec50ea0 4611 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 4612 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 4613 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 4614 readStatus);
whismanoid 15:37c83ec50ea0 4615 }
whismanoid 15:37c83ec50ea0 4616 }
whismanoid 15:37c83ec50ea0 4617 //
whismanoid 15:37c83ec50ea0 4618 if (misoLength > 0)
whismanoid 15:37c83ec50ea0 4619 {
whismanoid 15:37c83ec50ea0 4620 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4621 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 4622 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 15:37c83ec50ea0 4623 byteIndex++)
whismanoid 15:37c83ec50ea0 4624 {
whismanoid 15:37c83ec50ea0 4625 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 4626 }
whismanoid 15:37c83ec50ea0 4627 }
whismanoid 15:37c83ec50ea0 4628 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 4629 }
whismanoid 15:37c83ec50ea0 4630 }
whismanoid 15:37c83ec50ea0 4631 break;
whismanoid 15:37c83ec50ea0 4632 case 'R': case 'r':
whismanoid 15:37c83ec50ea0 4633 {
whismanoid 15:37c83ec50ea0 4634 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 4635 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 4636 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4637 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 4638 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 4639 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 4640 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4641 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 4642 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 4643 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 4644 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 4645 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4646 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4647 // /* 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 4648 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 4649 }
whismanoid 15:37c83ec50ea0 4650 break;
whismanoid 15:37c83ec50ea0 4651 case '^':
whismanoid 15:37c83ec50ea0 4652 {
whismanoid 15:37c83ec50ea0 4653 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 4654 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 4655 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4656 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 4657 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 4658 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 4659 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4660 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 4661 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 4662 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 4663 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 4664 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4665 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4666 // /* 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 4667 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 4668 }
whismanoid 15:37c83ec50ea0 4669 break;
whismanoid 15:37c83ec50ea0 4670 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 4671 break;
whismanoid 15:37c83ec50ea0 4672 #endif
whismanoid 15:37c83ec50ea0 4673 //
whismanoid 15:37c83ec50ea0 4674 #if HAS_SPI // SUPPORT_SPI
whismanoid 15:37c83ec50ea0 4675 case 'S': case 's':
whismanoid 15:37c83ec50ea0 4676 {
whismanoid 15:37c83ec50ea0 4677 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 4678 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4679 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 4680 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 4681 //
whismanoid 15:37c83ec50ea0 4682 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 15:37c83ec50ea0 4683 bool isUpdatedSPIConfig = false;
whismanoid 15:37c83ec50ea0 4684 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 15:37c83ec50ea0 4685 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 15:37c83ec50ea0 4686 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 15:37c83ec50ea0 4687 {
whismanoid 15:37c83ec50ea0 4688 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4689 }
whismanoid 15:37c83ec50ea0 4690 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 15:37c83ec50ea0 4691 {
whismanoid 15:37c83ec50ea0 4692 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4693 }
whismanoid 15:37c83ec50ea0 4694 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 15:37c83ec50ea0 4695 {
whismanoid 15:37c83ec50ea0 4696 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4697 }
whismanoid 15:37c83ec50ea0 4698 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 15:37c83ec50ea0 4699 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 15:37c83ec50ea0 4700 {
whismanoid 15:37c83ec50ea0 4701 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4702 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 4703 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 4704 {
whismanoid 15:37c83ec50ea0 4705 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4706 }
whismanoid 15:37c83ec50ea0 4707 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 4708 {
whismanoid 15:37c83ec50ea0 4709 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4710 }
whismanoid 15:37c83ec50ea0 4711 }
whismanoid 15:37c83ec50ea0 4712 // Update SPI configuration
whismanoid 15:37c83ec50ea0 4713 if (isUpdatedSPIConfig)
whismanoid 15:37c83ec50ea0 4714 {
whismanoid 15:37c83ec50ea0 4715 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4716 spi_cs = g_SPI_cs_state;
whismanoid 15:37c83ec50ea0 4717 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 15:37c83ec50ea0 4718 #if APPLICATION_MAX5715
whismanoid 15:37c83ec50ea0 4719 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4720 #elif APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 4721 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4722 #elif APPLICATION_MAX5171
whismanoid 15:37c83ec50ea0 4723 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4724 #elif APPLICATION_MAX11410
whismanoid 15:37c83ec50ea0 4725 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4726 #elif APPLICATION_MAX12345
whismanoid 15:37c83ec50ea0 4727 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4728 #else
whismanoid 15:37c83ec50ea0 4729 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 15:37c83ec50ea0 4730 #endif
whismanoid 15:37c83ec50ea0 4731 //
whismanoid 15:37c83ec50ea0 4732 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4733 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 15:37c83ec50ea0 4734 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 15:37c83ec50ea0 4735 //
whismanoid 15:37c83ec50ea0 4736 // 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 4737 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4738 "\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 4739 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 15:37c83ec50ea0 4740 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 15:37c83ec50ea0 4741 g_SPI_cs_state,
whismanoid 15:37c83ec50ea0 4742 g_SPI_SCLK_Hz,
whismanoid 15:37c83ec50ea0 4743 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 15:37c83ec50ea0 4744 ((double)(SystemCoreClock / 1000000.)),
whismanoid 15:37c83ec50ea0 4745 ideal_divisor,
whismanoid 15:37c83ec50ea0 4746 (actual_SCLK_Hz / 1000000.)
whismanoid 15:37c83ec50ea0 4747 );
whismanoid 15:37c83ec50ea0 4748 }
whismanoid 15:37c83ec50ea0 4749 // get next character
whismanoid 15:37c83ec50ea0 4750 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 4751 {
whismanoid 15:37c83ec50ea0 4752 case 'C': case 's':
whismanoid 15:37c83ec50ea0 4753 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4754 break;
whismanoid 15:37c83ec50ea0 4755 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 4756 // %SD -- SPI diagnostic messages enable
whismanoid 15:37c83ec50ea0 4757 if (g_MAX5719_device.onSPIprint) {
whismanoid 15:37c83ec50ea0 4758 g_MAX5719_device.onSPIprint = NULL;
whismanoid 15:37c83ec50ea0 4759 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') != None is false
whismanoid 15:37c83ec50ea0 4760 }
whismanoid 15:37c83ec50ea0 4761 else {
whismanoid 15:37c83ec50ea0 4762 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[]);
whismanoid 15:37c83ec50ea0 4763 g_MAX5719_device.onSPIprint = onSPIprint_handler;
whismanoid 15:37c83ec50ea0 4764 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') is false
whismanoid 15:37c83ec50ea0 4765 }
whismanoid 15:37c83ec50ea0 4766 break;
whismanoid 15:37c83ec50ea0 4767 case 'W': case 'R': case 'w': case 'r':
whismanoid 15:37c83ec50ea0 4768 {
whismanoid 15:37c83ec50ea0 4769 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 4770 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 4771 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4772 #define MAX_SPI_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 4773 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 4774 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4775 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4776 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 4777 MAX_SPI_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 4778 {
whismanoid 15:37c83ec50ea0 4779 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4780 cmdLine.serial().printf("\r\nSPI");
whismanoid 15:37c83ec50ea0 4781 if (byteCount > 7) {
whismanoid 15:37c83ec50ea0 4782 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 15:37c83ec50ea0 4783 }
whismanoid 15:37c83ec50ea0 4784 cmdLine.serial().printf(" MOSI->");
whismanoid 15:37c83ec50ea0 4785 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 4786 {
whismanoid 15:37c83ec50ea0 4787 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 4788 }
whismanoid 15:37c83ec50ea0 4789 spi_cs = 0;
whismanoid 15:37c83ec50ea0 4790 unsigned int numBytesTransferred =
whismanoid 15:37c83ec50ea0 4791 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 15:37c83ec50ea0 4792 spi_cs = 1;
whismanoid 15:37c83ec50ea0 4793 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4794 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 4795 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 15:37c83ec50ea0 4796 byteIndex++)
whismanoid 15:37c83ec50ea0 4797 {
whismanoid 15:37c83ec50ea0 4798 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 4799 }
whismanoid 15:37c83ec50ea0 4800 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 4801 }
whismanoid 15:37c83ec50ea0 4802 }
whismanoid 15:37c83ec50ea0 4803 break;
whismanoid 15:37c83ec50ea0 4804 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 4805 } // case 'S': // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 4806 break;
whismanoid 15:37c83ec50ea0 4807 #endif
whismanoid 15:37c83ec50ea0 4808 //
whismanoid 15:37c83ec50ea0 4809 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 4810 } // switch(cmdLine[1])
whismanoid 15:37c83ec50ea0 4811 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 15:37c83ec50ea0 4812 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 15:37c83ec50ea0 4813
whismanoid 15:37c83ec50ea0 4814 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 4815 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 4816 void main_menu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 4817 {
whismanoid 9:45f98573eb6d 4818 // process command line
whismanoid 31:47eee7e0cc2d 4819 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4820 if (g_Run_command_table_running == false) {
whismanoid 31:47eee7e0cc2d 4821 cmdLine.serial().printf("\r\nCmdLine buf:\"%s\"\r\n", cmdLine.str());
whismanoid 31:47eee7e0cc2d 4822 } // if (g_Run_command_table_running)
whismanoid 31:47eee7e0cc2d 4823 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4824 if (g_Run_command_table_running == false) {
whismanoid 31:47eee7e0cc2d 4825 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 4826
whismanoid 4:d9b05924ad4c 4827 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 31:47eee7e0cc2d 4828 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4829 if (g_Run_command_table_running == false) {
whismanoid 4:d9b05924ad4c 4830 // If datalog is free running, halt on any possible received command
whismanoid 17:9397ea3ea7e9 4831 if (Datalogger_Trigger != trigger_Halt) {
whismanoid 4:d9b05924ad4c 4832 Datalogger_Trigger = trigger_Halt;
whismanoid 9:45f98573eb6d 4833 cmdLine.serial().printf("Datalog stopped by USB command input\r\n");
whismanoid 9:45f98573eb6d 4834 cmdLine.serial().printf("Restart datalog by sending LR\r\n");
whismanoid 4:d9b05924ad4c 4835 }
whismanoid 31:47eee7e0cc2d 4836 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 4837 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 4838
whismanoid 4:d9b05924ad4c 4839 // DIAGNOSTIC: print line buffer
whismanoid 4:d9b05924ad4c 4840 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 4841 //
whismanoid 4:d9b05924ad4c 4842 switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 4843 {
whismanoid 4:d9b05924ad4c 4844 case '?':
whismanoid 4:d9b05924ad4c 4845 main_menu_status(cmdLine);
whismanoid 4:d9b05924ad4c 4846 main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 4847 // print command prompt
whismanoid 4:d9b05924ad4c 4848 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 4849 break;
whismanoid 4:d9b05924ad4c 4850 case '\r': case '\n': // ignore blank line
whismanoid 4:d9b05924ad4c 4851 case '\0': // ignore empty line
whismanoid 30:07197a430869 4852 main_menu_status(cmdLine);
whismanoid 30:07197a430869 4853 //~ main_menu_help(cmdLine);
whismanoid 30:07197a430869 4854 // print command prompt
whismanoid 30:07197a430869 4855 //cmdLine.serial().printf("\r\n>");
whismanoid 30:07197a430869 4856 break;
whismanoid 4:d9b05924ad4c 4857 case '#': // ignore comment line
whismanoid 4:d9b05924ad4c 4858 // # -- lines beginning with # are comments
whismanoid 30:07197a430869 4859 //
whismanoid 30:07197a430869 4860 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 4861 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark -- in main_menu_onEOLcommandParser
whismanoid 30:07197a430869 4862 // # command handler update gstrRemarkText buffer instead of just ignoring the remark
whismanoid 30:07197a430869 4863 //
whismanoid 30:07197a430869 4864 // ignore extra spaces before the remark
whismanoid 30:07197a430869 4865 // find argIndex such that cmdLine[argIndex] is the start of the second word
whismanoid 30:07197a430869 4866 int argIndex;
whismanoid 30:07197a430869 4867 for (argIndex = 1; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 30:07197a430869 4868 {
whismanoid 30:07197a430869 4869 if (cmdLine[argIndex] == ' ') break;
whismanoid 30:07197a430869 4870 }
whismanoid 30:07197a430869 4871 for (; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 30:07197a430869 4872 {
whismanoid 30:07197a430869 4873 if (cmdLine[argIndex] != ' ') break;
whismanoid 30:07197a430869 4874 }
whismanoid 30:07197a430869 4875 //
whismanoid 30:07197a430869 4876 strncpy(gstrRemarkText, cmdLine.str()+argIndex, gstrRemarkTextLASTINDEX+1);
whismanoid 30:07197a430869 4877 // do not exceed string buffer limit; keep sentinel null character at end of buffer
whismanoid 30:07197a430869 4878 gstrRemarkText[gstrRemarkTextLASTINDEX] = '\0';
whismanoid 41:13a6a097502c 4879 for (unsigned int index = 0; index < gstrRemarkTextLASTINDEX; index++)
whismanoid 30:07197a430869 4880 {
whismanoid 30:07197a430869 4881 if ((gstrRemarkText[index]) == '\0') break; // null character at end of string
whismanoid 30:07197a430869 4882 if ((gstrRemarkText[index]) < 0x20) {
whismanoid 30:07197a430869 4883 // replace non-printing characters with _
whismanoid 30:07197a430869 4884 gstrRemarkText[index] = '_';
whismanoid 30:07197a430869 4885 continue;
whismanoid 30:07197a430869 4886 }
whismanoid 30:07197a430869 4887 if ((gstrRemarkText[index]) >= 0x7F) {
whismanoid 30:07197a430869 4888 // replace non-printing characters with _
whismanoid 30:07197a430869 4889 gstrRemarkText[index] = '_';
whismanoid 30:07197a430869 4890 continue;
whismanoid 30:07197a430869 4891 }
whismanoid 30:07197a430869 4892 switch(gstrRemarkText[index])
whismanoid 30:07197a430869 4893 {
whismanoid 30:07197a430869 4894 case ',':
whismanoid 30:07197a430869 4895 // replace , with ;
whismanoid 30:07197a430869 4896 gstrRemarkText[index] = ';';
whismanoid 30:07197a430869 4897 break;
whismanoid 30:07197a430869 4898 case '"':
whismanoid 30:07197a430869 4899 // replace " with '
whismanoid 30:07197a430869 4900 gstrRemarkText[index] = '\'';
whismanoid 30:07197a430869 4901 break;
whismanoid 30:07197a430869 4902 case '\\':
whismanoid 30:07197a430869 4903 // replace \ with /
whismanoid 30:07197a430869 4904 gstrRemarkText[index] = '/';
whismanoid 30:07197a430869 4905 break;
whismanoid 30:07197a430869 4906 }
whismanoid 30:07197a430869 4907 }
whismanoid 30:07197a430869 4908 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 4909 //
whismanoid 31:47eee7e0cc2d 4910 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4911 if (g_Run_command_table_running == false) {
whismanoid 4:d9b05924ad4c 4912 main_menu_status(cmdLine);
whismanoid 31:47eee7e0cc2d 4913 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 4914 //~ main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 4915 // print command prompt
whismanoid 4:d9b05924ad4c 4916 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 4917 break;
whismanoid 4:d9b05924ad4c 4918 #if ECHO_EOF_ON_EOL
whismanoid 4:d9b05924ad4c 4919 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 4:d9b05924ad4c 4920 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 4921 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 4922 break;
whismanoid 4:d9b05924ad4c 4923 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 4:d9b05924ad4c 4924 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 4925 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 4926 break;
whismanoid 4:d9b05924ad4c 4927 #endif
whismanoid 10:04022a61b527 4928 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4929 case '!': // device init
whismanoid 10:04022a61b527 4930 {
whismanoid 10:04022a61b527 4931 cmdLine.serial().printf("Init");
whismanoid 10:04022a61b527 4932 // call function Init
whismanoid 10:04022a61b527 4933 uint8_t result = g_MAX11410_device.Init();
whismanoid 10:04022a61b527 4934 // cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 4935 cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 4936 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 4937 // in command '!' device init, apply list of custom register writes after init
whismanoid 10:04022a61b527 4938 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 4939 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 10:04022a61b527 4940 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 10:04022a61b527 4941 uint32_t regData = custom_reg_init_data[index];
whismanoid 10:04022a61b527 4942 cmdLine.serial().printf("*%s=0x%06.6x",
whismanoid 10:04022a61b527 4943 g_MAX11410_device.RegName((MAX11410::MAX11410_CMD_enum_t)regAddress),
whismanoid 10:04022a61b527 4944 regData
whismanoid 10:04022a61b527 4945 );
whismanoid 10:04022a61b527 4946 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 10:04022a61b527 4947 }
whismanoid 10:04022a61b527 4948 #endif // USE_CUSTOM_REG_INIT
whismanoid 10:04022a61b527 4949 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 4950 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 4951 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 4952 }
whismanoid 10:04022a61b527 4953 break;
whismanoid 10:04022a61b527 4954 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 4955 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 4956 case '.':
whismanoid 4:d9b05924ad4c 4957 {
whismanoid 4:d9b05924ad4c 4958 // . -- SelfTest
whismanoid 4:d9b05924ad4c 4959 cmdLine.serial().printf("SelfTest()");
whismanoid 4:d9b05924ad4c 4960 SelfTest(cmdLine);
whismanoid 4:d9b05924ad4c 4961 }
whismanoid 4:d9b05924ad4c 4962 break;
whismanoid 4:d9b05924ad4c 4963 #endif // USE_SELFTEST
whismanoid 15:37c83ec50ea0 4964 #if 1 // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4965 case '%':
whismanoid 4:d9b05924ad4c 4966 {
whismanoid 4:d9b05924ad4c 4967 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 4:d9b05924ad4c 4968 }
whismanoid 4:d9b05924ad4c 4969 break; // case '%'
whismanoid 4:d9b05924ad4c 4970 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 9:45f98573eb6d 4971 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4972 // reuse the Serial_Tester command *regName=regValue
whismanoid 10:04022a61b527 4973 // CODE GENERATOR: generate * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4974 case '*':
whismanoid 10:04022a61b527 4975 {
whismanoid 10:04022a61b527 4976 // if buffer starts with a regName:
whismanoid 10:04022a61b527 4977 // for each reg value (0..n) if(cmdLine.has_keyword(device.regName(r))):
whismanoid 10:04022a61b527 4978 // cmdLine.serial().printf(" scan RegName...\r\n");
whismanoid 10:04022a61b527 4979 }
whismanoid 10:04022a61b527 4980 break;
whismanoid 9:45f98573eb6d 4981 #endif // USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4982 //
whismanoid 10:04022a61b527 4983 #if 1 // USE_AUX_SERIAL_CMD_FORWARDING && (HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL)
whismanoid 10:04022a61b527 4984 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_onEOLcommandParser
whismanoid 40:330b28116178 4985 case '>': case '<': // > send and receive; < receive without sending anything
whismanoid 10:04022a61b527 4986 {
whismanoid 10:04022a61b527 4987 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 4988 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 4989 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 4990 CmdLine& cmdLine_AuxSerial = cmdLine_AUXserial;
whismanoid 10:04022a61b527 4991 Serial& AuxSerial = AUXserial;
whismanoid 10:04022a61b527 4992 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4993 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 4994 CmdLine& cmdLine_AuxSerial = cmdLine_DAPLINKserial;
whismanoid 10:04022a61b527 4995 Serial& AuxSerial = DAPLINKserial;
whismanoid 10:04022a61b527 4996 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4997 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 4998 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 4999 //
whismanoid 40:330b28116178 5000 int g_auxSerialCom_outgoing_string_cr = 1; // option to send CR after outgoing_string
whismanoid 40:330b28116178 5001 int g_auxSerialCom_outgoing_string_lf = 0; // option to send LF after outgoing_string (breaks remote datalogger LR!)
whismanoid 40:330b28116178 5002 int g_auxSerialCom_rx_string_verbose_crlf = 0; // option to display \r\n as "\\r\\n" in rx_string_buf
whismanoid 40:330b28116178 5003 int g_auxSerialCom_rx_string_verbose_ctrl = 1; // option to display control codes as \xXX
whismanoid 40:330b28116178 5004 const char* g_auxSerialCom_display_tx_prefix = "\r\n->|"; // "\r\n >";
whismanoid 40:330b28116178 5005 const char* g_auxSerialCom_display_rx_prefix = "\r\n<-|"; // "\r\n< ";
whismanoid 40:330b28116178 5006 //
whismanoid 40:330b28116178 5007 bool need_g_auxSerialCom_display_rx_prefix = 1; // temp
whismanoid 40:330b28116178 5008 //
whismanoid 10:04022a61b527 5009 // >> suppress key=value parsing
whismanoid 10:04022a61b527 5010 bool suppress_parsing = (cmdLine[1] == '>');
whismanoid 10:04022a61b527 5011 if (suppress_parsing == false) {
whismanoid 10:04022a61b527 5012 // int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 5013 if (cmdLine.parse_int_dec("baud", g_auxSerialCom_baud))
whismanoid 10:04022a61b527 5014 {
whismanoid 10:04022a61b527 5015 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- baud rate
whismanoid 10:04022a61b527 5016 cmdLine_AuxSerial.serial().printf("\r\n*** New Baud Rate %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5017 AuxSerial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5018 cmdLine_AuxSerial.serial().printf("\r\n*** Baud Rate was set to %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5019 }
whismanoid 10:04022a61b527 5020 #if 0
whismanoid 10:04022a61b527 5021 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 5022 if (cmdLine.parse_int_dec("tx_wait_echo", g_auxSerialCom_tx_wait_echo))
whismanoid 10:04022a61b527 5023 {
whismanoid 10:04022a61b527 5024 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_wait_echo
whismanoid 10:04022a61b527 5025 //~ cmdLine_AuxSerial.serial().printf("\r\n*** tx_wait_echo was set to %d ***\r\n", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 5026 cmdLine.serial().printf("\r\n tx_wait_echo=%d", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 5027 }
whismanoid 10:04022a61b527 5028 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 5029 if (cmdLine.parse_int_dec("tx_char_delay_ms", g_auxSerialCom_tx_char_delay_ms))
whismanoid 10:04022a61b527 5030 {
whismanoid 10:04022a61b527 5031 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_char_delay_ms
whismanoid 10:04022a61b527 5032 //~ 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 5033 cmdLine.serial().printf("\r\n tx_char_delay_ms=%dms", g_auxSerialCom_tx_char_delay_ms);
whismanoid 10:04022a61b527 5034 }
whismanoid 10:04022a61b527 5035 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 5036 if (cmdLine.parse_int_dec("tx_line_delay_ms", g_auxSerialCom_tx_line_delay_ms))
whismanoid 10:04022a61b527 5037 {
whismanoid 10:04022a61b527 5038 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_line_delay_ms
whismanoid 10:04022a61b527 5039 //~ 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 5040 cmdLine.serial().printf("\r\n tx_line_delay_ms=%dms", g_auxSerialCom_tx_line_delay_ms);
whismanoid 10:04022a61b527 5041 }
whismanoid 10:04022a61b527 5042 #endif
whismanoid 10:04022a61b527 5043 // int g_auxSerialCom_message_ms = 0; //!< capture RX until response timeout?
whismanoid 10:04022a61b527 5044 if (cmdLine.parse_int_dec("message_ms", g_auxSerialCom_message_ms))
whismanoid 10:04022a61b527 5045 {
whismanoid 10:04022a61b527 5046 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 10:04022a61b527 5047 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 5048 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 5049 }
whismanoid 10:04022a61b527 5050 // int g_auxSerialCom_rx_idle_ms = 0; //!< capture RX until idle timeout?
whismanoid 10:04022a61b527 5051 if (cmdLine.parse_int_dec("rx_idle_ms", g_auxSerialCom_rx_idle_ms))
whismanoid 10:04022a61b527 5052 {
whismanoid 10:04022a61b527 5053 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_idle_ms
whismanoid 10:04022a61b527 5054 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_idle_ms was set to %d ***\r\n", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 5055 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 5056 }
whismanoid 10:04022a61b527 5057 // int g_auxSerialCom_rx_max_count = 0; //!< capture RX until max character count?
whismanoid 10:04022a61b527 5058 if (cmdLine.parse_int_dec("rx_max_count", g_auxSerialCom_rx_max_count))
whismanoid 10:04022a61b527 5059 {
whismanoid 10:04022a61b527 5060 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_max_count
whismanoid 10:04022a61b527 5061 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_max_count was set to %d ***\r\n", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 5062 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 5063 }
whismanoid 10:04022a61b527 5064 // int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text char?
whismanoid 10:04022a61b527 5065 if (cmdLine.parse_int_dec("rx_eot", g_auxSerialCom_rx_eot))
whismanoid 10:04022a61b527 5066 {
whismanoid 10:04022a61b527 5067 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_eot
whismanoid 10:04022a61b527 5068 //~ cmdLine_AUXserial.serial().printf("\r\n*** rx_eot was set to %d ***\r\n", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 5069 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 5070 }
whismanoid 10:04022a61b527 5071 }
whismanoid 10:04022a61b527 5072 // Command forwarding to AUX serial TX/RX cmdLine_AuxSerial #257 -- send outgoing_string
whismanoid 41:13a6a097502c 5073 char* outgoing_string = ""; // warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
whismanoid 40:330b28116178 5074 if (cmdLine[0] == '>') {
whismanoid 40:330b28116178 5075 outgoing_string = (char*)cmdLine.str();
whismanoid 40:330b28116178 5076 // > use key=value parsing
whismanoid 40:330b28116178 5077 // >> suppress key=value parsing
whismanoid 40:330b28116178 5078 if (suppress_parsing) {
whismanoid 40:330b28116178 5079 cmdLine.serial().printf("\r\n suppress_parsing outgoing_string=\"%s\"", outgoing_string);
whismanoid 40:330b28116178 5080 outgoing_string++; // skip the first '>'
whismanoid 40:330b28116178 5081 outgoing_string++; // skip the second '>'
whismanoid 40:330b28116178 5082 } else {
whismanoid 40:330b28116178 5083 // TODO: after parsing, key=value pairs should be deleted, but outgoing_string=">xyzzy abc=def"
whismanoid 40:330b28116178 5084 cmdLine.serial().printf("\r\n after parsing, outgoing_string=\"%s\"", outgoing_string);
whismanoid 40:330b28116178 5085 outgoing_string++; // skip the first '>'
whismanoid 40:330b28116178 5086 }
whismanoid 40:330b28116178 5087 } // if (cmdLine[0] == '>')
whismanoid 10:04022a61b527 5088 static char rx_string_buf[RX_STRING_BUF_SIZE];
whismanoid 10:04022a61b527 5089 unsigned int rx_string_length = 0;
whismanoid 40:330b28116178 5090 //cmdLine.serial().printf("\r\n >%s\r\n <", outgoing_string);
whismanoid 40:330b28116178 5091 //char* g_auxSerialCom_display_tx_prefix = "\r\n >";
whismanoid 40:330b28116178 5092 //char* g_auxSerialCom_display_rx_prefix = "\r\n< ";
whismanoid 40:330b28116178 5093 cmdLine.serial().printf("%s%s%s",
whismanoid 40:330b28116178 5094 g_auxSerialCom_display_tx_prefix, // "\r\n >"
whismanoid 40:330b28116178 5095 outgoing_string,
whismanoid 40:330b28116178 5096 g_auxSerialCom_display_rx_prefix // "\r\n <"
whismanoid 40:330b28116178 5097 );
whismanoid 10:04022a61b527 5098 rx_string_buf[0] = '\0';
whismanoid 10:04022a61b527 5099 rx_string_length = 0;
whismanoid 10:04022a61b527 5100 //
whismanoid 10:04022a61b527 5101 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 5102 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 5103 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 5104 //
whismanoid 10:04022a61b527 5105 // int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 5106 // int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 5107 // int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 5108 // int g_auxSerialCom_rx_idle_ms = 2000; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 5109 // int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 5110 // int g_auxSerialCom_rx_eot = '\r'; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 5111 //~ cmdLine_AuxSerial.serial().printf("\r\n*** TODO forward %s ***\r\n", outgoing_string);
whismanoid 10:04022a61b527 5112 //
whismanoid 10:04022a61b527 5113 // TODO: send whole string or send character-by-character?
whismanoid 40:330b28116178 5114 if (cmdLine[0] == '>') {
whismanoid 40:330b28116178 5115 cmdLine_AuxSerial.serial().printf("%s", outgoing_string);
whismanoid 40:330b28116178 5116 //
whismanoid 40:330b28116178 5117 // TODO: send CRLF or just send CR line end?
whismanoid 40:330b28116178 5118 if (g_auxSerialCom_outgoing_string_cr) { cmdLine_AuxSerial.serial().printf("\r"); }
whismanoid 40:330b28116178 5119 if (g_auxSerialCom_outgoing_string_lf) { cmdLine_AuxSerial.serial().printf("\n"); }
whismanoid 40:330b28116178 5120 // cmdLine_AuxSerial.serial().printf("\r\n");
whismanoid 40:330b28116178 5121 } // if (cmdLine[0] == '>')
whismanoid 40:330b28116178 5122 //
whismanoid 10:04022a61b527 5123 g_auxSerialCom_Timer.start();
whismanoid 10:04022a61b527 5124 g_auxSerialCom_Timer_begin_message_ms = g_auxSerialCom_Timer.read_ms(); // start of message
whismanoid 10:04022a61b527 5125 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 5126 while (rx_string_length < (RX_STRING_BUF_SIZE-1)) {
whismanoid 10:04022a61b527 5127 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_message_ms) > g_auxSerialCom_message_ms) {
whismanoid 10:04022a61b527 5128 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 5129 break;
whismanoid 10:04022a61b527 5130 }
whismanoid 10:04022a61b527 5131 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_rx_idle_ms) > g_auxSerialCom_rx_idle_ms) {
whismanoid 10:04022a61b527 5132 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 5133 break;
whismanoid 10:04022a61b527 5134 }
whismanoid 41:13a6a097502c 5135 if ((int)rx_string_length >= g_auxSerialCom_rx_max_count) {
whismanoid 10:04022a61b527 5136 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 5137 break;
whismanoid 10:04022a61b527 5138 }
whismanoid 10:04022a61b527 5139 if (AuxSerial.readable()) {
whismanoid 10:04022a61b527 5140 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 5141 char ch = AuxSerial.getc();
whismanoid 10:04022a61b527 5142 rx_string_buf[rx_string_length++] = ch;
whismanoid 10:04022a61b527 5143 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 40:330b28116178 5144 //
whismanoid 40:330b28116178 5145 #if 1
whismanoid 40:330b28116178 5146 // immediate character echo
whismanoid 40:330b28116178 5147 for (char* cp = &(rx_string_buf[rx_string_length-1]); *cp != '\0'; cp++)
whismanoid 40:330b28116178 5148 {
whismanoid 40:330b28116178 5149 //cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 40:330b28116178 5150 if (need_g_auxSerialCom_display_rx_prefix) {
whismanoid 40:330b28116178 5151 cmdLine.serial().printf(g_auxSerialCom_display_rx_prefix); // "\r\n< " g_auxSerialCom_rx_string display prefix
whismanoid 40:330b28116178 5152 need_g_auxSerialCom_display_rx_prefix = 0;
whismanoid 40:330b28116178 5153 }
whismanoid 40:330b28116178 5154 if ((*cp) == '\r') {
whismanoid 40:330b28116178 5155 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\r"); }
whismanoid 40:330b28116178 5156 // if (*(cp+1) != '\n') { need_g_auxSerialCom_display_rx_prefix = 1; }
whismanoid 40:330b28116178 5157 } else if ((*cp) == '\n') {
whismanoid 40:330b28116178 5158 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\n"); }
whismanoid 40:330b28116178 5159 need_g_auxSerialCom_display_rx_prefix = 1;
whismanoid 40:330b28116178 5160 if (*(cp-1) != '\r') { need_g_auxSerialCom_display_rx_prefix = 1; }
whismanoid 40:330b28116178 5161 } else if ((*cp) < 0x20) {
whismanoid 40:330b28116178 5162 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5163 } else if ((*cp) >= 0x7f) {
whismanoid 40:330b28116178 5164 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5165 } else {
whismanoid 40:330b28116178 5166 cmdLine.serial().printf("%c", *cp);
whismanoid 40:330b28116178 5167 }
whismanoid 40:330b28116178 5168 }
whismanoid 40:330b28116178 5169 #else
whismanoid 40:330b28116178 5170 // immediate character echo
whismanoid 40:330b28116178 5171 cmdLine.serial().printf("%s", &(rx_string_buf[rx_string_length-1]) );
whismanoid 40:330b28116178 5172 #endif
whismanoid 40:330b28116178 5173 //
whismanoid 10:04022a61b527 5174 if (g_auxSerialCom_rx_eot != aux_serial_cmd_forwarding_rx_eot_not_used) {
whismanoid 10:04022a61b527 5175 if (ch == g_auxSerialCom_rx_eot) {
whismanoid 10:04022a61b527 5176 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 5177 break;
whismanoid 10:04022a61b527 5178 }
whismanoid 10:04022a61b527 5179 }
whismanoid 10:04022a61b527 5180 }
whismanoid 10:04022a61b527 5181 } // end while (rx_string_length < (RX_STRING_BUF_SIZE-1))
whismanoid 40:330b28116178 5182 #if 0
whismanoid 10:04022a61b527 5183 // print summary. is this needed? we already print aux rx as it is received.
whismanoid 10:04022a61b527 5184 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 40:330b28116178 5185 # if 1 // support multi-line rx_string_buf response
whismanoid 40:330b28116178 5186 if (cmdLine[0] == '>') {
whismanoid 40:330b28116178 5187 cmdLine.serial().printf("%s%s", g_auxSerialCom_display_tx_prefix, outgoing_string);
whismanoid 40:330b28116178 5188 } // if (cmdLine[0] == '>')
whismanoid 40:330b28116178 5189 // cmdLine.serial().printf("\r\n <"); // prefix
whismanoid 40:330b28116178 5190 need_g_auxSerialCom_display_rx_prefix = 1;
whismanoid 40:330b28116178 5191 for (char* cp = rx_string_buf; *cp != '\0'; cp++)
whismanoid 40:330b28116178 5192 {
whismanoid 40:330b28116178 5193 //cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 40:330b28116178 5194 if (need_g_auxSerialCom_display_rx_prefix) {
whismanoid 40:330b28116178 5195 cmdLine.serial().printf(g_auxSerialCom_display_rx_prefix); // "\r\n< " g_auxSerialCom_rx_string display prefix
whismanoid 40:330b28116178 5196 need_g_auxSerialCom_display_rx_prefix = 0;
whismanoid 40:330b28116178 5197 }
whismanoid 40:330b28116178 5198 if ((*cp) == '\r') {
whismanoid 40:330b28116178 5199 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\r"); }
whismanoid 40:330b28116178 5200 if (*(cp+1) != '\n') { need_g_auxSerialCom_display_rx_prefix = 1; }
whismanoid 40:330b28116178 5201 } else if ((*cp) == '\n') {
whismanoid 40:330b28116178 5202 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\n"); }
whismanoid 40:330b28116178 5203 need_g_auxSerialCom_display_rx_prefix = 1;
whismanoid 40:330b28116178 5204 } else if ((*cp) < 0x20) {
whismanoid 40:330b28116178 5205 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5206 } else if ((*cp) >= 0x7f) {
whismanoid 40:330b28116178 5207 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5208 } else {
whismanoid 40:330b28116178 5209 cmdLine.serial().printf("%c", *cp);
whismanoid 40:330b28116178 5210 }
whismanoid 40:330b28116178 5211 }
whismanoid 40:330b28116178 5212 cmdLine.serial().printf("\r\n");
whismanoid 40:330b28116178 5213 # else
whismanoid 10:04022a61b527 5214 cmdLine.serial().printf("\r\n >%s", outgoing_string);
whismanoid 10:04022a61b527 5215 cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 40:330b28116178 5216 # endif
whismanoid 10:04022a61b527 5217 #endif
whismanoid 10:04022a61b527 5218 //
whismanoid 10:04022a61b527 5219 }
whismanoid 10:04022a61b527 5220 break; // case '>'
whismanoid 10:04022a61b527 5221 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 5222 //
whismanoid 4:d9b05924ad4c 5223 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 5224 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 5225 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 5226 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 5227 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible
whismanoid 9:45f98573eb6d 5228 case 'L': case 'l':
whismanoid 4:d9b05924ad4c 5229 {
whismanoid 4:d9b05924ad4c 5230 // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 5231 Datalogger_Trigger = trigger_Halt;
whismanoid 4:d9b05924ad4c 5232 switch (cmdLine[1])
whismanoid 4:d9b05924ad4c 5233 {
whismanoid 17:9397ea3ea7e9 5234 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 5235 case 'T': case 't':
whismanoid 17:9397ea3ea7e9 5236 {
whismanoid 17:9397ea3ea7e9 5237 // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 5238 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 5239 Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 5240 g_timer_interval_counter = 0;
whismanoid 39:4d285e961435 5241 // get g_timer_interval_msec from cmdLine
whismanoid 17:9397ea3ea7e9 5242 // g_timer_interval_msec = 500;
whismanoid 17:9397ea3ea7e9 5243 // g_timer_interval_count = 10;
whismanoid 17:9397ea3ea7e9 5244 if (cmdLine.parse_int_dec("count", g_timer_interval_count))
whismanoid 17:9397ea3ea7e9 5245 {
whismanoid 32:80f3e5eb77d4 5246 if (g_timer_interval_count < 1) { g_timer_interval_count = 1; }
whismanoid 17:9397ea3ea7e9 5247 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 5248 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 5249 cmdLine.serial().printf("\r\n g_timer_interval_count=%d", g_timer_interval_count);
whismanoid 17:9397ea3ea7e9 5250 }
whismanoid 17:9397ea3ea7e9 5251 if (cmdLine.parse_int_dec("base", g_timer_interval_msec))
whismanoid 17:9397ea3ea7e9 5252 {
whismanoid 17:9397ea3ea7e9 5253 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 5254 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 5255 cmdLine.serial().printf("\r\n g_timer_interval_msec=%d", g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 5256 }
whismanoid 39:4d285e961435 5257 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5258 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5259 int int_timer_sleepmode = g_timer_sleepmode;
whismanoid 39:4d285e961435 5260 if (cmdLine.parse_int_dec("sleep", int_timer_sleepmode))
whismanoid 39:4d285e961435 5261 {
whismanoid 39:4d285e961435 5262 g_timer_sleepmode = (Datalogger_Sleep_enum_t)int_timer_sleepmode;
whismanoid 39:4d285e961435 5263 //~ if (g_timer_interval_count < 1) { g_timer_interval_count = 1; }
whismanoid 39:4d285e961435 5264 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 39:4d285e961435 5265 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 39:4d285e961435 5266 cmdLine.serial().printf("\r\n g_timer_sleepmode=%d", (int)g_timer_sleepmode);
whismanoid 39:4d285e961435 5267 }
whismanoid 39:4d285e961435 5268 #else // USE_DATALOGGER_SLEEP
whismanoid 39:4d285e961435 5269 #endif // USE_DATALOGGER_SLEEP
whismanoid 17:9397ea3ea7e9 5270 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 17:9397ea3ea7e9 5271 }
whismanoid 17:9397ea3ea7e9 5272 break;
whismanoid 17:9397ea3ea7e9 5273 // LIH3 -- Datalog when input high D3
whismanoid 17:9397ea3ea7e9 5274 // LIL6 -- Datalog when input low D6
whismanoid 17:9397ea3ea7e9 5275 case 'I': case 'i':
whismanoid 17:9397ea3ea7e9 5276 {
whismanoid 17:9397ea3ea7e9 5277 // TODO: switch cmdLine[2] configure High or Low, configure input pin
whismanoid 17:9397ea3ea7e9 5278 }
whismanoid 17:9397ea3ea7e9 5279 break;
whismanoid 17:9397ea3ea7e9 5280 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 27:b4ac095b83b3 5281 // L$ count=10 base=500ms addr=xxx data=xxx mask=xxx -- Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 5282 case '$':
whismanoid 17:9397ea3ea7e9 5283 {
whismanoid 17:9397ea3ea7e9 5284 // TODO: scan cmdLine for regAddr, dataMask, testValue
whismanoid 17:9397ea3ea7e9 5285 }
whismanoid 17:9397ea3ea7e9 5286 break;
whismanoid 17:9397ea3ea7e9 5287 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 5288 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 5289 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5290 case '@':
whismanoid 17:9397ea3ea7e9 5291 {
whismanoid 17:9397ea3ea7e9 5292 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5293 int editRowIndex = 0;
whismanoid 17:9397ea3ea7e9 5294 int edit_action = (int)action_noop;
whismanoid 17:9397ea3ea7e9 5295 int edit_digitalOutPin = 0;
whismanoid 17:9397ea3ea7e9 5296 int edit_condition = (int)condition_always;
whismanoid 17:9397ea3ea7e9 5297 int edit_condition_channel = 0;
whismanoid 17:9397ea3ea7e9 5298 double edit_condition_threshold = 0;
whismanoid 17:9397ea3ea7e9 5299 //
whismanoid 17:9397ea3ea7e9 5300 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 5301 {
whismanoid 17:9397ea3ea7e9 5302 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 5303 }
whismanoid 17:9397ea3ea7e9 5304 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 5305 {
whismanoid 17:9397ea3ea7e9 5306 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 5307 }
whismanoid 17:9397ea3ea7e9 5308 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 5309 {
whismanoid 17:9397ea3ea7e9 5310 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 5311 }
whismanoid 17:9397ea3ea7e9 5312 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 5313 {
whismanoid 17:9397ea3ea7e9 5314 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 5315 }
whismanoid 17:9397ea3ea7e9 5316 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 5317 {
whismanoid 17:9397ea3ea7e9 5318 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 5319 }
whismanoid 17:9397ea3ea7e9 5320 //
whismanoid 17:9397ea3ea7e9 5321 // Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5322 switch (cmdLine[2]) // L@... -- Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5323 {
whismanoid 17:9397ea3ea7e9 5324 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 5325 case '0': case '1': case '2': case '3': case '4':
whismanoid 17:9397ea3ea7e9 5326 case '5': case '6': case '7': case '8': case '9':
whismanoid 17:9397ea3ea7e9 5327 // edit row data
whismanoid 30:07197a430869 5328 if (1) { // removed Datalogger_action_table_row_count > 0 -- support %L@nnn command add new row (even though this looks like a replace command) if and only if nnn==next new unassigned line number
whismanoid 17:9397ea3ea7e9 5329 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 5330 // get row number to edit from cmdLine[2]
whismanoid 17:9397ea3ea7e9 5331 editRowIndex = atoi(cmdLine.str()+2);
whismanoid 30:07197a430869 5332 if ((editRowIndex >= 0) && (editRowIndex < Datalogger_action_table_row_count)) {
whismanoid 30:07197a430869 5333 // update row
whismanoid 30:07197a430869 5334 cmdLine.serial().printf("\r\n replace row %d", editRowIndex);
whismanoid 30:07197a430869 5335 // rescan cmdLine[2] for key=value of what fields to change (now that we have got defaults from the existing line
whismanoid 30:07197a430869 5336 edit_action = Datalogger_action_table[editRowIndex].action;
whismanoid 30:07197a430869 5337 edit_digitalOutPin = Datalogger_action_table[editRowIndex].digitalOutPin;
whismanoid 30:07197a430869 5338 edit_condition = Datalogger_action_table[editRowIndex].condition;
whismanoid 30:07197a430869 5339 edit_condition_channel = Datalogger_action_table[editRowIndex].condition_channel;
whismanoid 30:07197a430869 5340 edit_condition_threshold = Datalogger_action_table[editRowIndex].condition_threshold;
whismanoid 30:07197a430869 5341 // rescan cmdLine[2] for key=value of what fields to change (now that we have got defaults from the existing line
whismanoid 30:07197a430869 5342 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 30:07197a430869 5343 {
whismanoid 30:07197a430869 5344 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 30:07197a430869 5345 }
whismanoid 30:07197a430869 5346 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 30:07197a430869 5347 {
whismanoid 30:07197a430869 5348 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 30:07197a430869 5349 }
whismanoid 30:07197a430869 5350 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 30:07197a430869 5351 {
whismanoid 30:07197a430869 5352 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 30:07197a430869 5353 }
whismanoid 30:07197a430869 5354 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 30:07197a430869 5355 {
whismanoid 30:07197a430869 5356 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 30:07197a430869 5357 }
whismanoid 30:07197a430869 5358 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 30:07197a430869 5359 {
whismanoid 30:07197a430869 5360 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 30:07197a430869 5361 }
whismanoid 30:07197a430869 5362 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 30:07197a430869 5363 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 30:07197a430869 5364 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 30:07197a430869 5365 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 30:07197a430869 5366 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 5367 }
whismanoid 30:07197a430869 5368 else if ((editRowIndex == Datalogger_action_table_row_count) && (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX)) {
whismanoid 30:07197a430869 5369 // %L@nnn command add new row (even though this looks like a replace command) if and only if nnn==next new unassigned line number
whismanoid 30:07197a430869 5370 Datalogger_action_table_row_count++;
whismanoid 30:07197a430869 5371 cmdLine.serial().printf("\r\n add next row %d", editRowIndex);
whismanoid 30:07197a430869 5372 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 30:07197a430869 5373 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 30:07197a430869 5374 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 30:07197a430869 5375 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 30:07197a430869 5376 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 30:07197a430869 5377 //
whismanoid 17:9397ea3ea7e9 5378 }
whismanoid 17:9397ea3ea7e9 5379 }
whismanoid 17:9397ea3ea7e9 5380 break;
whismanoid 17:9397ea3ea7e9 5381 case '+':
whismanoid 17:9397ea3ea7e9 5382 // add a new row at end of table
whismanoid 17:9397ea3ea7e9 5383 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 5384 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 5385 editRowIndex = Datalogger_action_table_row_count;
whismanoid 17:9397ea3ea7e9 5386 Datalogger_action_table_row_count++;
whismanoid 30:07197a430869 5387 cmdLine.serial().printf("\r\n add new row %d", editRowIndex);
whismanoid 17:9397ea3ea7e9 5388 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 5389 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 5390 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 5391 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 5392 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 5393 }
whismanoid 17:9397ea3ea7e9 5394 break;
whismanoid 17:9397ea3ea7e9 5395 case '-':
whismanoid 17:9397ea3ea7e9 5396 // delete row from table
whismanoid 17:9397ea3ea7e9 5397 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 5398 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 5399 if ((cmdLine[3] == '~') && (cmdLine[4] == '~') && (cmdLine[5] == '~')) {
whismanoid 17:9397ea3ea7e9 5400 // L@-~~~ -- delete all rows from table
whismanoid 30:07197a430869 5401 cmdLine.serial().printf("\r\n delete all rows");
whismanoid 17:9397ea3ea7e9 5402 Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 5403 break;
whismanoid 17:9397ea3ea7e9 5404 }
whismanoid 30:07197a430869 5405 else {
whismanoid 30:07197a430869 5406 editRowIndex = atoi(cmdLine.str()+3);
whismanoid 30:07197a430869 5407 cmdLine.serial().printf("\r\n delete row %d", editRowIndex);
whismanoid 30:07197a430869 5408 // delete row editRowIndex from Datalogger_action_table
whismanoid 30:07197a430869 5409 for (int i = editRowIndex; i < (Datalogger_action_table_row_count-1); i++)
whismanoid 30:07197a430869 5410 {
whismanoid 30:07197a430869 5411 // copy row i+1 into row i
whismanoid 30:07197a430869 5412 Datalogger_action_table[i].action = Datalogger_action_table[i+1].action;
whismanoid 30:07197a430869 5413 Datalogger_action_table[i].digitalOutPin = Datalogger_action_table[i+1].digitalOutPin;
whismanoid 30:07197a430869 5414 Datalogger_action_table[i].condition = Datalogger_action_table[i+1].condition;
whismanoid 30:07197a430869 5415 Datalogger_action_table[i].condition_channel = Datalogger_action_table[i+1].condition_channel;
whismanoid 30:07197a430869 5416 Datalogger_action_table[i].condition_threshold = Datalogger_action_table[i+1].condition_threshold;
whismanoid 30:07197a430869 5417 }
whismanoid 30:07197a430869 5418 Datalogger_action_table_row_count--;
whismanoid 17:9397ea3ea7e9 5419 }
whismanoid 17:9397ea3ea7e9 5420 }
whismanoid 17:9397ea3ea7e9 5421 break;
whismanoid 30:07197a430869 5422 case '.':
whismanoid 30:07197a430869 5423 // L@. pause the entire Log action table
whismanoid 30:07197a430869 5424 cmdLine.serial().printf("\r\n pause the entire Log action table");
whismanoid 17:9397ea3ea7e9 5425 Datalogger_action_table_enabled = false;
whismanoid 17:9397ea3ea7e9 5426 break;
whismanoid 17:9397ea3ea7e9 5427 case '@':
whismanoid 30:07197a430869 5428 // L@@ enable the entire Log action table
whismanoid 30:07197a430869 5429 cmdLine.serial().printf("\r\n enable the entire Log action table");
whismanoid 17:9397ea3ea7e9 5430 Datalogger_action_table_enabled = true;
whismanoid 17:9397ea3ea7e9 5431 break;
whismanoid 17:9397ea3ea7e9 5432 }
whismanoid 17:9397ea3ea7e9 5433 //
whismanoid 17:9397ea3ea7e9 5434 // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5435 if (Datalogger_action_table_enabled) {
whismanoid 30:07197a430869 5436 // cmdLine.serial().printf("Log action table enabled; L@. to pause");
whismanoid 17:9397ea3ea7e9 5437 }
whismanoid 17:9397ea3ea7e9 5438 else {
whismanoid 30:07197a430869 5439 cmdLine.serial().printf("Log action table paused; L@@ to enable");
whismanoid 17:9397ea3ea7e9 5440 }
whismanoid 17:9397ea3ea7e9 5441 //~ cmdLine.serial().printf("\r\n Datalogger_action_table_row_count=%d", Datalogger_action_table_row_count);
whismanoid 17:9397ea3ea7e9 5442 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 5443 {
whismanoid 17:9397ea3ea7e9 5444 cmdLine.serial().printf("\r\n L@%d", i);
whismanoid 17:9397ea3ea7e9 5445 cmdLine.serial().printf(" act=%d", Datalogger_action_table[i].action);
whismanoid 17:9397ea3ea7e9 5446 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5447 {
whismanoid 17:9397ea3ea7e9 5448 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 5449 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 5450 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5451 break;
whismanoid 29:6a9edb6e973b 5452 case action_button: // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 5453 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 29:6a9edb6e973b 5454 break;
whismanoid 17:9397ea3ea7e9 5455 default:
whismanoid 17:9397ea3ea7e9 5456 case action_noop:
whismanoid 17:9397ea3ea7e9 5457 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 5458 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 5459 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 5460 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 5461 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 5462 break;
whismanoid 17:9397ea3ea7e9 5463 }
whismanoid 17:9397ea3ea7e9 5464 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5465 {
whismanoid 17:9397ea3ea7e9 5466 case condition_always:
whismanoid 17:9397ea3ea7e9 5467 break;
whismanoid 17:9397ea3ea7e9 5468 default:
whismanoid 17:9397ea3ea7e9 5469 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 5470 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 5471 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 5472 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 5473 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 5474 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 5475 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 5476 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 5477 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 5478 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 5479 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 5480 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 5481 cmdLine.serial().printf(" if=%d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 5482 cmdLine.serial().printf(" ch=%d", Datalogger_action_table[i].condition_channel);
whismanoid 40:330b28116178 5483 // our voltage measurement is around 1mV at best
whismanoid 40:330b28116178 5484 cmdLine.serial().printf(" x=%1.4f", Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5485 break;
whismanoid 17:9397ea3ea7e9 5486 }
whismanoid 17:9397ea3ea7e9 5487 cmdLine.serial().printf(" -- ");
whismanoid 17:9397ea3ea7e9 5488 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5489 {
whismanoid 17:9397ea3ea7e9 5490 case action_noop:
whismanoid 17:9397ea3ea7e9 5491 cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 5492 break;
whismanoid 17:9397ea3ea7e9 5493 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 5494 cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 5495 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5496 break;
whismanoid 17:9397ea3ea7e9 5497 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 5498 cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 5499 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5500 break;
whismanoid 29:6a9edb6e973b 5501 case action_button: // pin = button index 1, 2, 3
whismanoid 40:330b28116178 5502 cmdLine.serial().printf("button %%B%d!", Datalogger_action_table[i].digitalOutPin);
whismanoid 29:6a9edb6e973b 5503 break;
whismanoid 17:9397ea3ea7e9 5504 case action_trigger_Halt:
whismanoid 40:330b28116178 5505 cmdLine.serial().printf("Halt");
whismanoid 17:9397ea3ea7e9 5506 break;
whismanoid 17:9397ea3ea7e9 5507 case action_trigger_FreeRun:
whismanoid 40:330b28116178 5508 cmdLine.serial().printf("LR");
whismanoid 17:9397ea3ea7e9 5509 break;
whismanoid 17:9397ea3ea7e9 5510 case action_trigger_Timer:
whismanoid 40:330b28116178 5511 cmdLine.serial().printf("LT count=%d base=%dms sleep=%d", g_timer_interval_count, g_timer_interval_msec, g_timer_sleepmode);
whismanoid 17:9397ea3ea7e9 5512 break;
whismanoid 17:9397ea3ea7e9 5513 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 5514 cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 5515 // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 5516 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 5517 break;
whismanoid 17:9397ea3ea7e9 5518 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 5519 cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 5520 // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 5521 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 5522 break;
whismanoid 17:9397ea3ea7e9 5523 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5524 //~ cmdLine.serial().printf(" condition %d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 5525 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5526 {
whismanoid 17:9397ea3ea7e9 5527 case condition_always:
whismanoid 17:9397ea3ea7e9 5528 cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 5529 break;
whismanoid 17:9397ea3ea7e9 5530 case condition_if_An_gt_threshold:
whismanoid 40:330b28116178 5531 cmdLine.serial().printf(" if A%d > %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5532 break;
whismanoid 17:9397ea3ea7e9 5533 case condition_if_An_lt_threshold:
whismanoid 40:330b28116178 5534 cmdLine.serial().printf(" if A%d < %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5535 break;
whismanoid 17:9397ea3ea7e9 5536 case condition_if_An_eq_threshold:
whismanoid 40:330b28116178 5537 cmdLine.serial().printf(" if A%d == %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5538 break;
whismanoid 17:9397ea3ea7e9 5539 case condition_if_An_ge_threshold:
whismanoid 40:330b28116178 5540 cmdLine.serial().printf(" if A%d >= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5541 break;
whismanoid 17:9397ea3ea7e9 5542 case condition_if_An_le_threshold:
whismanoid 40:330b28116178 5543 cmdLine.serial().printf(" if A%d <= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5544 break;
whismanoid 17:9397ea3ea7e9 5545 case condition_if_An_ne_threshold:
whismanoid 40:330b28116178 5546 cmdLine.serial().printf(" if A%d != %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5547 break;
whismanoid 17:9397ea3ea7e9 5548 case condition_if_AINn_gt_threshold:
whismanoid 40:330b28116178 5549 cmdLine.serial().printf(" if AIN%d > %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5550 break;
whismanoid 17:9397ea3ea7e9 5551 case condition_if_AINn_lt_threshold:
whismanoid 40:330b28116178 5552 cmdLine.serial().printf(" if AIN%d < %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5553 break;
whismanoid 17:9397ea3ea7e9 5554 case condition_if_AINn_eq_threshold:
whismanoid 40:330b28116178 5555 cmdLine.serial().printf(" if AIN%d == %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5556 break;
whismanoid 17:9397ea3ea7e9 5557 case condition_if_AINn_ge_threshold:
whismanoid 40:330b28116178 5558 cmdLine.serial().printf(" if AIN%d >= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5559 break;
whismanoid 17:9397ea3ea7e9 5560 case condition_if_AINn_le_threshold:
whismanoid 40:330b28116178 5561 cmdLine.serial().printf(" if AIN%d <= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5562 break;
whismanoid 17:9397ea3ea7e9 5563 case condition_if_AINn_ne_threshold:
whismanoid 40:330b28116178 5564 cmdLine.serial().printf(" if AIN%d != %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5565 break;
whismanoid 17:9397ea3ea7e9 5566 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5567 } // for ...Datalogger_action_table_row_count // Print the contents of Datalogger_action_table
whismanoid 30:07197a430869 5568 cmdLine.serial().printf("\r\n\r\nEdit Log action table (used %d/%d, %d free):",
whismanoid 30:07197a430869 5569 Datalogger_action_table_row_count,
whismanoid 30:07197a430869 5570 ACTION_TABLE_ROW_MAX,
whismanoid 30:07197a430869 5571 (ACTION_TABLE_ROW_MAX - Datalogger_action_table_row_count)
whismanoid 30:07197a430869 5572 );
whismanoid 17:9397ea3ea7e9 5573 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 5574 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 5575 cmdLine.serial().printf("\r\n L@+ act=4 if=1 ch=5 x=12345 -- add new entry at end of table");
whismanoid 17:9397ea3ea7e9 5576 }
whismanoid 17:9397ea3ea7e9 5577 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 5578 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 5579 cmdLine.serial().printf("\r\n L@%d act=4 if=1 ch=5 x=12345 -- edit row %d",
whismanoid 17:9397ea3ea7e9 5580 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 5581 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 5582 cmdLine.serial().printf("\r\n L@-%d -- delete row %d",
whismanoid 17:9397ea3ea7e9 5583 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 5584 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 5585 cmdLine.serial().printf("\r\n L@-~~~ -- delete all rows");
whismanoid 30:07197a430869 5586 if (Datalogger_action_table_enabled) cmdLine.serial().printf("\r\n L@. -- pause entire Log action table");
whismanoid 30:07197a430869 5587 if (!Datalogger_action_table_enabled) cmdLine.serial().printf("\r\n L@@ -- enable Log action table");
whismanoid 17:9397ea3ea7e9 5588 }
whismanoid 17:9397ea3ea7e9 5589 //
whismanoid 17:9397ea3ea7e9 5590 } // case L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5591 break;
whismanoid 17:9397ea3ea7e9 5592 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 5593 // LR -- Datalog free run as fast as possible
whismanoid 4:d9b05924ad4c 5594 case 'R': case 'r':
whismanoid 4:d9b05924ad4c 5595 // free run as fast as possible
whismanoid 8:dffee7509bfb 5596 Datalogger_Trigger = trigger_FreeRun;
whismanoid 8:dffee7509bfb 5597 Datalogger_Need_PrintHeader = true;
whismanoid 4:d9b05924ad4c 5598 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 9:45f98573eb6d 5599 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 5600 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 5601 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 5602 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 5603 case 'S': case 's':
whismanoid 9:45f98573eb6d 5604 {
whismanoid 9:45f98573eb6d 5605 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 5606 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 5607 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 5608 )
whismanoid 9:45f98573eb6d 5609 {
whismanoid 9:45f98573eb6d 5610 // it's me
whismanoid 9:45f98573eb6d 5611 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 5612 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 5613 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 5614 {
whismanoid 9:45f98573eb6d 5615 case 'D': case 'd':
whismanoid 9:45f98573eb6d 5616 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Disable;
whismanoid 9:45f98573eb6d 5617 break;
whismanoid 9:45f98573eb6d 5618 case 'L': case 'l':
whismanoid 9:45f98573eb6d 5619 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 5620 break;
whismanoid 9:45f98573eb6d 5621 case 'V': case 'v':
whismanoid 9:45f98573eb6d 5622 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 5623 break;
whismanoid 9:45f98573eb6d 5624 //
whismanoid 9:45f98573eb6d 5625 //
whismanoid 9:45f98573eb6d 5626 // TODO: MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 5627 case 'C': case 'c':
whismanoid 9:45f98573eb6d 5628 {
whismanoid 9:45f98573eb6d 5629 uint8_t hexValue = 0;
whismanoid 9:45f98573eb6d 5630 hexValue = hexValueOfChar(cmdLine[5]) * 0x10 + hexValueOfChar(cmdLine[6]);
whismanoid 9:45f98573eb6d 5631 switch (cmdLine[4])
whismanoid 9:45f98573eb6d 5632 {
whismanoid 9:45f98573eb6d 5633 //
whismanoid 9:45f98573eb6d 5634 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 5635 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34"));
whismanoid 9:45f98573eb6d 5636 case 'F': case 'f':
whismanoid 9:45f98573eb6d 5637 SPI_AIN_Cfg_v_filter_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 5638 break;
whismanoid 9:45f98573eb6d 5639 //
whismanoid 9:45f98573eb6d 5640 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 5641 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 5642 case 'C': case 'c':
whismanoid 9:45f98573eb6d 5643 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 5644 break;
whismanoid 9:45f98573eb6d 5645 //
whismanoid 9:45f98573eb6d 5646 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 5647 // cmdLine.serial().print(F("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00"));
whismanoid 9:45f98573eb6d 5648 case 'P': case 'p':
whismanoid 9:45f98573eb6d 5649 SPI_AIN_Cfg_v_pga_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 5650 break;
whismanoid 9:45f98573eb6d 5651 //
whismanoid 9:45f98573eb6d 5652 // cmdLine.serial().print(F("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar"));
whismanoid 9:45f98573eb6d 5653 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 5654 case 'U': case 'u':
whismanoid 9:45f98573eb6d 5655 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] | 0x40;
whismanoid 9:45f98573eb6d 5656 break;
whismanoid 9:45f98573eb6d 5657 //
whismanoid 9:45f98573eb6d 5658 // cmdLine.serial().print(F("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar"));
whismanoid 9:45f98573eb6d 5659 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 5660 case 'B': case 'b':
whismanoid 9:45f98573eb6d 5661 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] &~ 0x40;
whismanoid 9:45f98573eb6d 5662 break;
whismanoid 9:45f98573eb6d 5663 }
whismanoid 9:45f98573eb6d 5664 break;
whismanoid 9:45f98573eb6d 5665 }
whismanoid 9:45f98573eb6d 5666 //
whismanoid 9:45f98573eb6d 5667 //
whismanoid 9:45f98573eb6d 5668 }
whismanoid 9:45f98573eb6d 5669 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 5670 } // end for channel_index
whismanoid 9:45f98573eb6d 5671 Datalogger_PrintHeader();
whismanoid 9:45f98573eb6d 5672 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5673 }
whismanoid 9:45f98573eb6d 5674 break;
whismanoid 9:45f98573eb6d 5675 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 5676 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 5677 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 5678 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 5679 // verb: D for disable, V for Voltage, L for LSB
whismanoid 8:dffee7509bfb 5680 case 'A': case 'a':
whismanoid 9:45f98573eb6d 5681 {
whismanoid 9:45f98573eb6d 5682 // all-channel: loop through all valid channel_index, test cmdLine[2] 'is it me'?
whismanoid 9:45f98573eb6d 5683 // for channel_index loop through 0..NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 9:45f98573eb6d 5684 // if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 5685 // || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 5686 // ) {
whismanoid 9:45f98573eb6d 5687 // // it's me
whismanoid 9:45f98573eb6d 5688 // // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 5689 // // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 5690 // } end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 5691 // } end for channel_index
whismanoid 9:45f98573eb6d 5692 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 5693 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 5694 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 5695 )
whismanoid 9:45f98573eb6d 5696 {
whismanoid 9:45f98573eb6d 5697 // it's me
whismanoid 9:45f98573eb6d 5698 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 5699 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 5700 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 5701 {
whismanoid 9:45f98573eb6d 5702 case 'D': case 'd':
whismanoid 9:45f98573eb6d 5703 Platform_Enable_ch[channel_index] = Platform_AIN_Disable;
whismanoid 9:45f98573eb6d 5704 break;
whismanoid 9:45f98573eb6d 5705 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 5706 case 'L': case 'l':
whismanoid 9:45f98573eb6d 5707 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 5708 break;
whismanoid 9:45f98573eb6d 5709 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 5710 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 5711 case 'V': case 'v':
whismanoid 9:45f98573eb6d 5712 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 5713 break;
whismanoid 9:45f98573eb6d 5714 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 5715 }
whismanoid 9:45f98573eb6d 5716 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 5717 } // end for channel_index
whismanoid 10:04022a61b527 5718 // Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 5719 if (Datalogger_enable_serial) {
whismanoid 9:45f98573eb6d 5720 Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 5721 }
whismanoid 9:45f98573eb6d 5722 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 5723 if (Datalogger_enable_AUXserial) {
whismanoid 9:45f98573eb6d 5724 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 9:45f98573eb6d 5725 }
whismanoid 9:45f98573eb6d 5726 # endif // HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 5727 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5728 if (Datalogger_enable_DAPLINKserial) {
whismanoid 9:45f98573eb6d 5729 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 9:45f98573eb6d 5730 }
whismanoid 9:45f98573eb6d 5731 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5732 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5733 }
whismanoid 8:dffee7509bfb 5734 break;
whismanoid 9:45f98573eb6d 5735 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 5736 case '>':
whismanoid 9:45f98573eb6d 5737 // L>A -- Datalogger_enable_AUXserial
whismanoid 9:45f98573eb6d 5738 // L>D -- Datalogger_enable_DAPLINKserial
whismanoid 9:45f98573eb6d 5739 // L>S -- Datalogger_enable_serial
whismanoid 9:45f98573eb6d 5740 switch (cmdLine[2])
whismanoid 9:45f98573eb6d 5741 {
whismanoid 9:45f98573eb6d 5742 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 5743 case 'A': case 'a':
whismanoid 9:45f98573eb6d 5744 Datalogger_enable_AUXserial = !Datalogger_enable_AUXserial;
whismanoid 9:45f98573eb6d 5745 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5746 break;
whismanoid 8:dffee7509bfb 5747 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 5748 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5749 case 'D': case 'd':
whismanoid 9:45f98573eb6d 5750 Datalogger_enable_DAPLINKserial = !Datalogger_enable_DAPLINKserial;
whismanoid 9:45f98573eb6d 5751 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5752 break;
whismanoid 8:dffee7509bfb 5753 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5754 case 'S': case 's':
whismanoid 9:45f98573eb6d 5755 Datalogger_enable_serial = !Datalogger_enable_serial;
whismanoid 9:45f98573eb6d 5756 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5757 break;
whismanoid 9:45f98573eb6d 5758 }
whismanoid 9:45f98573eb6d 5759 break; // case '>' L>S serial enable toggle
whismanoid 28:a9a3a9db592b 5760 default:
whismanoid 28:a9a3a9db592b 5761 // TODO: L -- detailed help for datalog commands
whismanoid 28:a9a3a9db592b 5762 //
whismanoid 28:a9a3a9db592b 5763 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 28:a9a3a9db592b 5764 #if 1 // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 5765 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 28:a9a3a9db592b 5766 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 28:a9a3a9db592b 5767 //
whismanoid 28:a9a3a9db592b 5768 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 28:a9a3a9db592b 5769 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 39:4d285e961435 5770 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5771 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5772 cmdLine.serial().printf("\r\n LT count=%d base=%dms sleep=%d -- Datalog timer",
whismanoid 39:4d285e961435 5773 g_timer_interval_count,
whismanoid 39:4d285e961435 5774 g_timer_interval_msec,
whismanoid 39:4d285e961435 5775 (int)g_timer_sleepmode
whismanoid 39:4d285e961435 5776 ); // trigger_Timer
whismanoid 39:4d285e961435 5777 #else // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 5778 cmdLine.serial().printf("\r\n LT count=%d base=%dms -- Datalog timer", g_timer_interval_count, g_timer_interval_msec); // trigger_Timer
whismanoid 39:4d285e961435 5779 #endif // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 5780 //
whismanoid 28:a9a3a9db592b 5781 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 28:a9a3a9db592b 5782 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 5783 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 5784 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 5785 //
whismanoid 28:a9a3a9db592b 5786 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 5787 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 28:a9a3a9db592b 5788 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 5789 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 5790 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 5791 //
whismanoid 28:a9a3a9db592b 5792 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 5793 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 28:a9a3a9db592b 5794 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 5795 //
whismanoid 28:a9a3a9db592b 5796 //
whismanoid 28:a9a3a9db592b 5797 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 28:a9a3a9db592b 5798 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 28:a9a3a9db592b 5799 // channel ID: 0,1,2,... or - for all channels
whismanoid 28:a9a3a9db592b 5800 // verb: D for disable, V for Voltage, L for LSB
whismanoid 28:a9a3a9db592b 5801 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 28:a9a3a9db592b 5802 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 28:a9a3a9db592b 5803 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 28:a9a3a9db592b 5804 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 28:a9a3a9db592b 5805 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 28:a9a3a9db592b 5806 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 28:a9a3a9db592b 5807 //
whismanoid 28:a9a3a9db592b 5808 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 28:a9a3a9db592b 5809 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 28:a9a3a9db592b 5810 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 28:a9a3a9db592b 5811 //
whismanoid 28:a9a3a9db592b 5812 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 5813 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 28:a9a3a9db592b 5814 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 28:a9a3a9db592b 5815 //
whismanoid 28:a9a3a9db592b 5816 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 5817 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 28:a9a3a9db592b 5818 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 5819 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 28:a9a3a9db592b 5820 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 28:a9a3a9db592b 5821 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 28:a9a3a9db592b 5822 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 28:a9a3a9db592b 5823 //
whismanoid 28:a9a3a9db592b 5824 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 28:a9a3a9db592b 5825 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 28:a9a3a9db592b 5826 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 28:a9a3a9db592b 5827 //
whismanoid 28:a9a3a9db592b 5828 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 28:a9a3a9db592b 5829 //
whismanoid 28:a9a3a9db592b 5830 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 28:a9a3a9db592b 5831 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 28:a9a3a9db592b 5832 // channel ID: 0,1,2,... or - for all channels
whismanoid 28:a9a3a9db592b 5833 // verb: D for disable, V for Voltage, L for LSB
whismanoid 28:a9a3a9db592b 5834 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 28:a9a3a9db592b 5835 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5836 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 28:a9a3a9db592b 5837 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5838 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5839 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 28:a9a3a9db592b 5840 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5841 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 28:a9a3a9db592b 5842 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5843 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 28:a9a3a9db592b 5844 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5845 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5846 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 28:a9a3a9db592b 5847 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5848 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 28:a9a3a9db592b 5849 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 28:a9a3a9db592b 5850 # if HAS_AUX_SERIAL
whismanoid 28:a9a3a9db592b 5851 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 5852 # endif // HAS_AUX_SERIAL
whismanoid 28:a9a3a9db592b 5853 # if HAS_DAPLINK_SERIAL
whismanoid 28:a9a3a9db592b 5854 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 5855 # endif // HAS_DAPLINK_SERIAL
whismanoid 28:a9a3a9db592b 5856 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 5857 //
whismanoid 28:a9a3a9db592b 5858 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 5859 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 5860 break;
whismanoid 17:9397ea3ea7e9 5861 } // switch (cmdLine[1]) inside case 'L'
whismanoid 4:d9b05924ad4c 5862 }
whismanoid 4:d9b05924ad4c 5863 break; // case 'L'
whismanoid 4:d9b05924ad4c 5864 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 5865 //
whismanoid 4:d9b05924ad4c 5866 // Application-specific commands here
whismanoid 4:d9b05924ad4c 5867 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 5868 //
whismanoid 4:d9b05924ad4c 5869 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 5870 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 5871
whismanoid 4:d9b05924ad4c 5872 //
whismanoid 4:d9b05924ad4c 5873 // TODO1: add new commands here
whismanoid 4:d9b05924ad4c 5874 //
whismanoid 4:d9b05924ad4c 5875 default:
whismanoid 4:d9b05924ad4c 5876 #if APPLICATION_MAX5715 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5877 extern bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5715.cpp
whismanoid 4:d9b05924ad4c 5878 if (!MAX5715_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5879 #elif APPLICATION_MAX11131 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5880 extern bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11131.cpp
whismanoid 4:d9b05924ad4c 5881 if (!MAX11131_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5882 #elif APPLICATION_MAX5171 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5883 extern bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5171.cpp
whismanoid 4:d9b05924ad4c 5884 if (!MAX5171_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5885 #elif APPLICATION_MAX11410 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5886 extern bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp
whismanoid 4:d9b05924ad4c 5887 if (!MAX11410_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5888 #elif APPLICATION_MAX12345 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5889 extern bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX12345.cpp
whismanoid 4:d9b05924ad4c 5890 if (!MAX12345_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5891 #else
whismanoid 4:d9b05924ad4c 5892 if (0) // not_handled_by_device_submenu
whismanoid 4:d9b05924ad4c 5893 #endif
whismanoid 4:d9b05924ad4c 5894 {
whismanoid 4:d9b05924ad4c 5895 cmdLine.serial().printf("\r\n unknown command ");
whismanoid 4:d9b05924ad4c 5896 //~ cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 5897 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 5898 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n",
whismanoid 4:d9b05924ad4c 5899 cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 5900 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5901 }
whismanoid 4:d9b05924ad4c 5902 } // switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 5903 //
whismanoid 31:47eee7e0cc2d 5904 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 5905 if (g_Run_command_table_running == false) {
whismanoid 4:d9b05924ad4c 5906 // print command prompt
whismanoid 8:dffee7509bfb 5907 // print_command_prompt();
whismanoid 8:dffee7509bfb 5908 cmdLine.serial().printf("\r\n> ");
whismanoid 31:47eee7e0cc2d 5909 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 5910 }
whismanoid 4:d9b05924ad4c 5911 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 5912
whismanoid 4:d9b05924ad4c 5913 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 5914 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 5915 void Datalogger_PrintHeader(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 5916 {
whismanoid 37:3f369235e5bc 5917 #if MAX40108_DEMO // main_menu_status banner
whismanoid 37:3f369235e5bc 5918 cmdLine.serial().printf("\r\n\r\n\"MAX40108_U%d", MAX40108_DEMO);
whismanoid 37:3f369235e5bc 5919 #ifdef BOARD_SERIAL_NUMBER
whismanoid 37:3f369235e5bc 5920 // data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 5921 cmdLine.serial().printf(" [s/n %d]", BOARD_SERIAL_NUMBER);
whismanoid 37:3f369235e5bc 5922 #endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 5923 #ifdef FW_REV
whismanoid 37:3f369235e5bc 5924 cmdLine.serial().printf(" [FW_REV %d]", FW_REV);
whismanoid 37:3f369235e5bc 5925 #endif // FW_REV
whismanoid 37:3f369235e5bc 5926 cmdLine.serial().printf("\"\r\n");
whismanoid 37:3f369235e5bc 5927 #endif // MAX40108_DEMO
whismanoid 37:3f369235e5bc 5928
whismanoid 4:d9b05924ad4c 5929 // column header banner for csv data columns
whismanoid 4:d9b05924ad4c 5930 int field_index = 0;
whismanoid 4:d9b05924ad4c 5931 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 5932 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 5933 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 4:d9b05924ad4c 5934 continue;
whismanoid 4:d9b05924ad4c 5935 }
whismanoid 4:d9b05924ad4c 5936 // comma between fields
whismanoid 4:d9b05924ad4c 5937 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 5938 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 5939 }
whismanoid 10:04022a61b527 5940 field_index++;
whismanoid 4:d9b05924ad4c 5941 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 5942 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 5943 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 4:d9b05924ad4c 5944 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 4:d9b05924ad4c 5945 cmdLine.serial().printf("\"AIN%d-%d_BIP", channel_index, channel_index+1);
whismanoid 4:d9b05924ad4c 5946 }
whismanoid 4:d9b05924ad4c 5947 else {
whismanoid 4:d9b05924ad4c 5948 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 5949 }
whismanoid 4:d9b05924ad4c 5950 #else // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 5951 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 5952 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 5953 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_LSB) {
whismanoid 4:d9b05924ad4c 5954 // _LSB column header suffix
whismanoid 13:184a08909405 5955 cmdLine.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 5956 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5957 cmdLine_DAPLINKserial.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 5958 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5959 }
whismanoid 10:04022a61b527 5960 else if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_Volt) {
whismanoid 4:d9b05924ad4c 5961 // _V column header suffix
whismanoid 13:184a08909405 5962 cmdLine.serial().printf("_V");
whismanoid 4:d9b05924ad4c 5963 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5964 cmdLine_DAPLINKserial.serial().printf("_V");
whismanoid 4:d9b05924ad4c 5965 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5966 }
whismanoid 13:184a08909405 5967 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5968 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5969 if (SPI_AIN_customChannelHeader_ch[channel_index] && SPI_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 5970 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 5971 cmdLine.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5972 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5973 cmdLine_DAPLINKserial.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5974 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5975 } else {
whismanoid 13:184a08909405 5976 // no custom channel name for this channel
whismanoid 13:184a08909405 5977 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 5978 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5979 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 5980 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5981 }
whismanoid 13:184a08909405 5982 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 5983 // close quote
whismanoid 13:184a08909405 5984 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 5985 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5986 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 5987 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5988 }
whismanoid 4:d9b05924ad4c 5989
whismanoid 4:d9b05924ad4c 5990 #if VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 5991 // PART_ID field: Device ID Validation
whismanoid 4:d9b05924ad4c 5992 cmdLine.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 5993 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5994 cmdLine_DAPLINKserial.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 5995 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5996 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 5997 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 5998 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 5999 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 6000 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 6001 continue;
whismanoid 9:45f98573eb6d 6002 }
whismanoid 4:d9b05924ad4c 6003 // comma between fields
whismanoid 4:d9b05924ad4c 6004 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 6005 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 6006 }
whismanoid 9:45f98573eb6d 6007 field_index++;
whismanoid 4:d9b05924ad4c 6008 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 6009 cmdLine.serial().printf("\"A%d", channel_index);
whismanoid 9:45f98573eb6d 6010 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 9:45f98573eb6d 6011 // _LSB column header suffix
whismanoid 13:184a08909405 6012 cmdLine.serial().printf("_LSB");
whismanoid 9:45f98573eb6d 6013 }
whismanoid 9:45f98573eb6d 6014 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 6015 // _V column header suffix
whismanoid 13:184a08909405 6016 cmdLine.serial().printf("_V");
whismanoid 9:45f98573eb6d 6017 }
whismanoid 13:184a08909405 6018 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 6019 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 6020 if (Platform_AIN_customChannelHeader_ch[channel_index] && Platform_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 6021 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 6022 cmdLine.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 6023 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6024 cmdLine_DAPLINKserial.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 6025 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6026 } else {
whismanoid 13:184a08909405 6027 // no custom channel name for this channel
whismanoid 13:184a08909405 6028 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 6029 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6030 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 6031 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6032 }
whismanoid 13:184a08909405 6033 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 6034 // close quote
whismanoid 13:184a08909405 6035 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 6036 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6037 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 6038 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6039 }
whismanoid 4:d9b05924ad4c 6040 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 30:07197a430869 6041 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 6042 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark -- in Datalogger_PrintHeader
whismanoid 30:07197a430869 6043 cmdLine.serial().printf(",\"%s\"", gstrRemarkHeader);
whismanoid 30:07197a430869 6044 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 4:d9b05924ad4c 6045 // end of column header line
whismanoid 4:d9b05924ad4c 6046 cmdLine.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 6047 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6048 cmdLine_DAPLINKserial.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 6049 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6050 } // void Datalogger_PrintHeader()
whismanoid 4:d9b05924ad4c 6051
whismanoid 5:aaf8b5f5fda1 6052 //--------------------------------------------------
whismanoid 5:aaf8b5f5fda1 6053 void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 6054 {
whismanoid 5:aaf8b5f5fda1 6055 // CODE GENERATOR: example code: has no member function ScanStandardExternalClock
whismanoid 5:aaf8b5f5fda1 6056 // CODE GENERATOR: example code: has no member function ReadAINcode
whismanoid 5:aaf8b5f5fda1 6057 // CODE GENERATOR: example code: member function Read_All_Voltages
whismanoid 5:aaf8b5f5fda1 6058 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6059 // Measure ADC channels in sequence from AIN0 to channelNumber_0_9.
whismanoid 5:aaf8b5f5fda1 6060 // @param[in] g_MAX11410_device.channelNumber_0_15: AIN Channel Number
whismanoid 5:aaf8b5f5fda1 6061 // @param[in] g_MAX11410_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 5:aaf8b5f5fda1 6062 // @param[in] g_MAX11410_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 10:04022a61b527 6063 //~ int channelId_0_9 = NUM_DUT_ANALOG_IN_CHANNELS-1+1;
whismanoid 5:aaf8b5f5fda1 6064 //g_MAX11410_device.channelNumber_0_15 = channelId_0_9;
whismanoid 5:aaf8b5f5fda1 6065 //g_MAX11410_device.PowerManagement_0_2 = 0;
whismanoid 5:aaf8b5f5fda1 6066 //g_MAX11410_device.chan_id_0_1 = 1;
whismanoid 5:aaf8b5f5fda1 6067 //----------------------------------------
whismanoid 5:aaf8b5f5fda1 6068 // scan AIN0..AIN9
whismanoid 5:aaf8b5f5fda1 6069 //
whismanoid 10:04022a61b527 6070 #if 1
whismanoid 10:04022a61b527 6071 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 6072 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 6073 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 6074 //
whismanoid 10:04022a61b527 6075 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6076 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc3); // GP1 = 0
whismanoid 10:04022a61b527 6077 //
whismanoid 10:04022a61b527 6078 int field_index = 0;
whismanoid 10:04022a61b527 6079 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 6080 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 10:04022a61b527 6081 continue;
whismanoid 10:04022a61b527 6082 }
whismanoid 10:04022a61b527 6083 field_index++;
whismanoid 10:04022a61b527 6084 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[channel_index];
whismanoid 10:04022a61b527 6085 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[channel_index];
whismanoid 10:04022a61b527 6086 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[channel_index];
whismanoid 10:04022a61b527 6087 //
whismanoid 10:04022a61b527 6088 // WIP SampleRate_of_FILTER_CONV_START() MAX11410EMC-FW slow ODR 10Sps #262
whismanoid 10:04022a61b527 6089 // adjust the MAX11410.loop_limit value if the sample rate is set to a value slower than 20sps
whismanoid 10:04022a61b527 6090 // SampleRate_of_FILTER_CONV_START(uint8_t FILTER_RegValue, uint8_t CONV_START_RegValue)
whismanoid 10:04022a61b527 6091 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 6092 if (SampleRate < 20.0) {
whismanoid 10:04022a61b527 6093 g_MAX11410_device.loop_limit = 32767; // TODO: is this timeout long enough for the slow output data rates?
whismanoid 10:04022a61b527 6094 }
whismanoid 10:04022a61b527 6095 //
whismanoid 10:04022a61b527 6096 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6097 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc3); // GP0 = 0
whismanoid 10:04022a61b527 6098 //
whismanoid 10:04022a61b527 6099 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 6100 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 10:04022a61b527 6101 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 10:04022a61b527 6102 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 6103 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = (MAX11410::MAX11410_AINN_SEL_enum_t)(channel_index^1);
whismanoid 10:04022a61b527 6104 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 6105 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 6106 }
whismanoid 10:04022a61b527 6107 else {
whismanoid 10:04022a61b527 6108 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 6109 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = MAX11410::AINN_SEL_1010_GND;
whismanoid 10:04022a61b527 6110 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 6111 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 6112 }
whismanoid 10:04022a61b527 6113 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 6114 //
whismanoid 10:04022a61b527 6115 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6116 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc4); // GP0 = 1
whismanoid 10:04022a61b527 6117 //
whismanoid 10:04022a61b527 6118 }
whismanoid 10:04022a61b527 6119 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6120 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc4); // GP1 = 1
whismanoid 10:04022a61b527 6121 #else
whismanoid 5:aaf8b5f5fda1 6122 g_MAX11410_device.Read_All_Voltages();
whismanoid 10:04022a61b527 6123 #endif
whismanoid 10:04022a61b527 6124 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6125 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 6126 // mbed
whismanoid 5:aaf8b5f5fda1 6127 // Platform board uses simple analog inputs
whismanoid 5:aaf8b5f5fda1 6128 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 5:aaf8b5f5fda1 6129 Platform_LSB[0] = analogIn0.read();
whismanoid 5:aaf8b5f5fda1 6130 Platform_LSB[1] = analogIn1.read();
whismanoid 5:aaf8b5f5fda1 6131 Platform_LSB[2] = analogIn2.read();
whismanoid 5:aaf8b5f5fda1 6132 Platform_LSB[3] = analogIn3.read();
whismanoid 5:aaf8b5f5fda1 6133 Platform_LSB[4] = analogIn4.read();
whismanoid 5:aaf8b5f5fda1 6134 Platform_LSB[5] = analogIn5.read();
whismanoid 10:04022a61b527 6135 #endif
whismanoid 10:04022a61b527 6136 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 37:3f369235e5bc 6137 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 6138 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogIn012345.read()
whismanoid 37:3f369235e5bc 6139 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 6140 float analogIn0_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6141 float analogIn1_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6142 float analogIn2_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6143 float analogIn3_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6144 float analogIn4_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6145 float analogIn5_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6146 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 6147 analogIn0_normValue_0_1 = analogIn0_normValue_0_1 + analogIn0.read();
whismanoid 37:3f369235e5bc 6148 analogIn1_normValue_0_1 = analogIn1_normValue_0_1 + analogIn1.read();
whismanoid 37:3f369235e5bc 6149 analogIn2_normValue_0_1 = analogIn2_normValue_0_1 + analogIn2.read();
whismanoid 37:3f369235e5bc 6150 analogIn3_normValue_0_1 = analogIn3_normValue_0_1 + analogIn3.read();
whismanoid 37:3f369235e5bc 6151 analogIn4_normValue_0_1 = analogIn4_normValue_0_1 + analogIn4.read();
whismanoid 37:3f369235e5bc 6152 analogIn5_normValue_0_1 = analogIn5_normValue_0_1 + analogIn5.read();
whismanoid 37:3f369235e5bc 6153 }
whismanoid 37:3f369235e5bc 6154 analogIn0_normValue_0_1 = analogIn0_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6155 analogIn1_normValue_0_1 = analogIn1_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6156 analogIn2_normValue_0_1 = analogIn2_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6157 analogIn3_normValue_0_1 = analogIn3_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6158 analogIn4_normValue_0_1 = analogIn4_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6159 analogIn5_normValue_0_1 = analogIn5_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6160 #else // USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 6161 float analogIn0_normValue_0_1 = analogIn0.read();
whismanoid 37:3f369235e5bc 6162 float analogIn1_normValue_0_1 = analogIn1.read();
whismanoid 37:3f369235e5bc 6163 float analogIn2_normValue_0_1 = analogIn2.read();
whismanoid 37:3f369235e5bc 6164 float analogIn3_normValue_0_1 = analogIn3.read();
whismanoid 37:3f369235e5bc 6165 float analogIn4_normValue_0_1 = analogIn4.read();
whismanoid 37:3f369235e5bc 6166 float analogIn5_normValue_0_1 = analogIn5.read();
whismanoid 37:3f369235e5bc 6167 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 6168 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 6169 // apply calibration to normValue_0_1 value
whismanoid 37:3f369235e5bc 6170 Platform_Voltage[0] = CalibratedNormValue(0, analogIn0_normValue_0_1) * adc_full_scale_voltage[0];
whismanoid 37:3f369235e5bc 6171 Platform_Voltage[1] = CalibratedNormValue(1, analogIn1_normValue_0_1) * adc_full_scale_voltage[1];
whismanoid 37:3f369235e5bc 6172 Platform_Voltage[2] = CalibratedNormValue(2, analogIn2_normValue_0_1) * adc_full_scale_voltage[2];
whismanoid 37:3f369235e5bc 6173 Platform_Voltage[3] = CalibratedNormValue(3, analogIn3_normValue_0_1) * adc_full_scale_voltage[3];
whismanoid 37:3f369235e5bc 6174 Platform_Voltage[4] = CalibratedNormValue(4, analogIn4_normValue_0_1) * adc_full_scale_voltage[4];
whismanoid 37:3f369235e5bc 6175 Platform_Voltage[5] = CalibratedNormValue(5, analogIn5_normValue_0_1) * adc_full_scale_voltage[5];
whismanoid 34:a1993a1ee904 6176 #else // HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 6177 Platform_Voltage[0] = analogIn0_normValue_0_1 * adc_full_scale_voltage[0];
whismanoid 37:3f369235e5bc 6178 Platform_Voltage[1] = analogIn1_normValue_0_1 * adc_full_scale_voltage[1];
whismanoid 37:3f369235e5bc 6179 Platform_Voltage[2] = analogIn2_normValue_0_1 * adc_full_scale_voltage[2];
whismanoid 37:3f369235e5bc 6180 Platform_Voltage[3] = analogIn3_normValue_0_1 * adc_full_scale_voltage[3];
whismanoid 37:3f369235e5bc 6181 Platform_Voltage[4] = analogIn4_normValue_0_1 * adc_full_scale_voltage[4];
whismanoid 37:3f369235e5bc 6182 Platform_Voltage[5] = analogIn5_normValue_0_1 * adc_full_scale_voltage[5];
whismanoid 34:a1993a1ee904 6183 #endif // HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 6184 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 5:aaf8b5f5fda1 6185 #endif // defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 6186
whismanoid 5:aaf8b5f5fda1 6187 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6188 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 6189 const uint32_t part_id_expect = 0x000F02;
whismanoid 5:aaf8b5f5fda1 6190 uint32_t part_id_readback;
whismanoid 5:aaf8b5f5fda1 6191 g_MAX11410_device.RegRead(MAX11410::CMD_r001_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xddd_PART_ID, &part_id_readback);
whismanoid 5:aaf8b5f5fda1 6192 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6193 } // void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 6194
whismanoid 17:9397ea3ea7e9 6195 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 6196 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 6197 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 6198 void Datalogger_RunActionTable()
whismanoid 17:9397ea3ea7e9 6199 {
whismanoid 17:9397ea3ea7e9 6200 if (Datalogger_action_table_enabled == false) {
whismanoid 17:9397ea3ea7e9 6201 return;
whismanoid 17:9397ea3ea7e9 6202 }
whismanoid 17:9397ea3ea7e9 6203 // TODO: verbose Datalogger_RunActionTable() emit a csv column ,"Action"
whismanoid 17:9397ea3ea7e9 6204 // TODO: assert Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX
whismanoid 17:9397ea3ea7e9 6205 // for Datalogger_action_table[0..Datalogger_action_table_row_count]
whismanoid 17:9397ea3ea7e9 6206 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 6207 {
whismanoid 17:9397ea3ea7e9 6208 // skip if Datalogger_action_table[i].action == action_noop
whismanoid 17:9397ea3ea7e9 6209 if (Datalogger_action_table[i].action == action_noop) {
whismanoid 17:9397ea3ea7e9 6210 continue;
whismanoid 17:9397ea3ea7e9 6211 }
whismanoid 17:9397ea3ea7e9 6212 // TODO: test Datalogger_action_table[i].condition "if="
whismanoid 17:9397ea3ea7e9 6213 // TODO: Could the .condition field also distinguish Platform ADC from SPI ADC?
whismanoid 17:9397ea3ea7e9 6214 // That way we keep both sets of ADC channels in separate lists
whismanoid 17:9397ea3ea7e9 6215 // if=0 -- always
whismanoid 17:9397ea3ea7e9 6216 // if=1,2,3,4,5,6 -- Platform_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 6217 // if=7,8,9,10,11,12 -- SPI_AIN_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 6218 // also, are we comparing code or voltage?
whismanoid 17:9397ea3ea7e9 6219 // TODO: selected Datalogger_action_table[i].condition_channel
whismanoid 17:9397ea3ea7e9 6220 // Datalogger could have both platform ADC and external SPI ADC channels
whismanoid 17:9397ea3ea7e9 6221 // if SPI_ADC_DeviceName
whismanoid 17:9397ea3ea7e9 6222 // NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 6223 // SPI_AIN_Enable_ch[]
whismanoid 17:9397ea3ea7e9 6224 // SPI_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 6225 // SPI_AIN_Voltage[]
whismanoid 17:9397ea3ea7e9 6226 // if LOG_PLATFORM_AIN
whismanoid 17:9397ea3ea7e9 6227 // NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 6228 // analogInPin_fullScaleVoltage[]
whismanoid 17:9397ea3ea7e9 6229 // Platform_Enable_ch[]
whismanoid 17:9397ea3ea7e9 6230 // Platform_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 6231 // Platform_Voltage[]
whismanoid 17:9397ea3ea7e9 6232 // TODO: selected Datalogger_action_table[i].condition_threshold
whismanoid 17:9397ea3ea7e9 6233 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 6234 {
whismanoid 17:9397ea3ea7e9 6235 case condition_always:
whismanoid 17:9397ea3ea7e9 6236 //~ cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 6237 break;
whismanoid 17:9397ea3ea7e9 6238 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 6239 //~ cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6240 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6241 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6242 continue;
whismanoid 17:9397ea3ea7e9 6243 }
whismanoid 17:9397ea3ea7e9 6244 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6245 break;
whismanoid 17:9397ea3ea7e9 6246 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 6247 //~ cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6248 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6249 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6250 continue;
whismanoid 17:9397ea3ea7e9 6251 }
whismanoid 17:9397ea3ea7e9 6252 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6253 break;
whismanoid 17:9397ea3ea7e9 6254 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 6255 //~ cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6256 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6257 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6258 continue;
whismanoid 17:9397ea3ea7e9 6259 }
whismanoid 17:9397ea3ea7e9 6260 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6261 break;
whismanoid 17:9397ea3ea7e9 6262 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 6263 //~ cmdLine.serial().printf(" if A%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6264 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6265 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6266 continue;
whismanoid 17:9397ea3ea7e9 6267 }
whismanoid 17:9397ea3ea7e9 6268 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6269 break;
whismanoid 17:9397ea3ea7e9 6270 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 6271 //~ cmdLine.serial().printf(" if A%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6272 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6273 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6274 continue;
whismanoid 17:9397ea3ea7e9 6275 }
whismanoid 17:9397ea3ea7e9 6276 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6277 break;
whismanoid 17:9397ea3ea7e9 6278 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 6279 //~ cmdLine.serial().printf(" if A%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6280 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6281 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6282 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6283 continue;
whismanoid 17:9397ea3ea7e9 6284 }
whismanoid 17:9397ea3ea7e9 6285 break;
whismanoid 17:9397ea3ea7e9 6286 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 6287 //~ cmdLine.serial().printf(" if AIN%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6288 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6289 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6290 continue;
whismanoid 17:9397ea3ea7e9 6291 }
whismanoid 17:9397ea3ea7e9 6292 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6293 break;
whismanoid 17:9397ea3ea7e9 6294 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 6295 //~ cmdLine.serial().printf(" if AIN%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6296 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6297 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6298 continue;
whismanoid 17:9397ea3ea7e9 6299 }
whismanoid 17:9397ea3ea7e9 6300 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6301 break;
whismanoid 17:9397ea3ea7e9 6302 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 6303 //~ cmdLine.serial().printf(" if AIN%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6304 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6305 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6306 continue;
whismanoid 17:9397ea3ea7e9 6307 }
whismanoid 17:9397ea3ea7e9 6308 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6309 break;
whismanoid 17:9397ea3ea7e9 6310 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 6311 //~ cmdLine.serial().printf(" if AIN%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6312 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6313 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6314 continue;
whismanoid 17:9397ea3ea7e9 6315 }
whismanoid 17:9397ea3ea7e9 6316 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6317 break;
whismanoid 17:9397ea3ea7e9 6318 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 6319 //~ cmdLine.serial().printf(" if AIN%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6320 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6321 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6322 continue;
whismanoid 17:9397ea3ea7e9 6323 }
whismanoid 17:9397ea3ea7e9 6324 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6325 break;
whismanoid 17:9397ea3ea7e9 6326 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 6327 //~ cmdLine.serial().printf(" if AIN%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6328 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6329 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6330 continue;
whismanoid 17:9397ea3ea7e9 6331 }
whismanoid 17:9397ea3ea7e9 6332 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6333 break;
whismanoid 17:9397ea3ea7e9 6334 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 6335 // selected Datalogger_action_table[i].digitalOutPin
whismanoid 17:9397ea3ea7e9 6336 // perform selected Datalogger_action_table[i].action
whismanoid 17:9397ea3ea7e9 6337 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 6338 {
whismanoid 17:9397ea3ea7e9 6339 case action_noop:
whismanoid 17:9397ea3ea7e9 6340 //~ cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 6341 break;
whismanoid 17:9397ea3ea7e9 6342 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 6343 {
whismanoid 17:9397ea3ea7e9 6344 //~ cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 6345 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 6346 // perform action digitalOutLow
whismanoid 17:9397ea3ea7e9 6347 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 6348 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 6349 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6350 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6351 #else
whismanoid 17:9397ea3ea7e9 6352 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 6353 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 6354 digitalInOutPin.write(0);
whismanoid 17:9397ea3ea7e9 6355 #endif
whismanoid 17:9397ea3ea7e9 6356 }
whismanoid 17:9397ea3ea7e9 6357 break;
whismanoid 17:9397ea3ea7e9 6358 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 6359 {
whismanoid 17:9397ea3ea7e9 6360 //~ cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 6361 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 6362 // perform action digitalOutHigh
whismanoid 17:9397ea3ea7e9 6363 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 6364 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 6365 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6366 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6367 #else
whismanoid 17:9397ea3ea7e9 6368 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 6369 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 6370 digitalInOutPin.write(1);
whismanoid 17:9397ea3ea7e9 6371 #endif
whismanoid 17:9397ea3ea7e9 6372 }
whismanoid 17:9397ea3ea7e9 6373 break;
whismanoid 29:6a9edb6e973b 6374 case action_button: // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 6375 {
whismanoid 30:07197a430869 6376 // don't allow onButton1FallingEdge() command processing to halt the datalog
whismanoid 30:07197a430869 6377 Datalogger_Trigger_enum_t saved_Datalogger_Trigger = Datalogger_Trigger;
whismanoid 29:6a9edb6e973b 6378 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6379 switch (Datalogger_action_table[i].digitalOutPin) // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 6380 {
whismanoid 29:6a9edb6e973b 6381 case 1:
whismanoid 29:6a9edb6e973b 6382 onButton1FallingEdge();
whismanoid 29:6a9edb6e973b 6383 break;
whismanoid 29:6a9edb6e973b 6384 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6385 case 2:
whismanoid 29:6a9edb6e973b 6386 onButton2FallingEdge();
whismanoid 29:6a9edb6e973b 6387 break;
whismanoid 29:6a9edb6e973b 6388 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6389 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6390 case 3:
whismanoid 29:6a9edb6e973b 6391 onButton3FallingEdge();
whismanoid 29:6a9edb6e973b 6392 break;
whismanoid 29:6a9edb6e973b 6393 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6394 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6395 case 4:
whismanoid 29:6a9edb6e973b 6396 onButton4FallingEdge();
whismanoid 29:6a9edb6e973b 6397 break;
whismanoid 29:6a9edb6e973b 6398 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6399 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6400 case 5:
whismanoid 29:6a9edb6e973b 6401 onButton5FallingEdge();
whismanoid 29:6a9edb6e973b 6402 break;
whismanoid 29:6a9edb6e973b 6403 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6404 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6405 case 6:
whismanoid 29:6a9edb6e973b 6406 onButton6FallingEdge();
whismanoid 29:6a9edb6e973b 6407 break;
whismanoid 29:6a9edb6e973b 6408 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6409 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6410 case 7:
whismanoid 29:6a9edb6e973b 6411 onButton7FallingEdge();
whismanoid 29:6a9edb6e973b 6412 break;
whismanoid 29:6a9edb6e973b 6413 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6414 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6415 case 8:
whismanoid 29:6a9edb6e973b 6416 onButton8FallingEdge();
whismanoid 29:6a9edb6e973b 6417 break;
whismanoid 29:6a9edb6e973b 6418 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6419 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6420 case 9:
whismanoid 29:6a9edb6e973b 6421 onButton9FallingEdge();
whismanoid 29:6a9edb6e973b 6422 break;
whismanoid 29:6a9edb6e973b 6423 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6424 } // switch (Datalogger_action_table[i].digitalOutPin) // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 6425 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 30:07197a430869 6426 // don't allow onButton1FallingEdge() command processing to halt the datalog
whismanoid 30:07197a430869 6427 Datalogger_Trigger = saved_Datalogger_Trigger;
whismanoid 29:6a9edb6e973b 6428 } // case action_button
whismanoid 29:6a9edb6e973b 6429 break;
whismanoid 17:9397ea3ea7e9 6430 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 6431 //~ cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 6432 // perform action trigger_Halt
whismanoid 17:9397ea3ea7e9 6433 Datalogger_Trigger = trigger_Halt;
whismanoid 17:9397ea3ea7e9 6434 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6435 break;
whismanoid 17:9397ea3ea7e9 6436 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 6437 //~ cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 6438 // perform action trigger_FreeRun
whismanoid 17:9397ea3ea7e9 6439 Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 6440 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6441 break;
whismanoid 17:9397ea3ea7e9 6442 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 6443 //~ cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 6444 //~ // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 6445 //~ cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 6446 // perform action trigger_Timer
whismanoid 17:9397ea3ea7e9 6447 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 6448 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6449 break;
whismanoid 17:9397ea3ea7e9 6450 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 6451 //~ cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 6452 //~ // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 6453 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 6454 // TODO: perform action action_trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 6455 Datalogger_Trigger = trigger_PlatformDigitalInput;
whismanoid 17:9397ea3ea7e9 6456 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6457 break;
whismanoid 17:9397ea3ea7e9 6458 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 6459 //~ cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 6460 //~ // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 6461 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 6462 // TODO: perform action action_trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 6463 Datalogger_Trigger = trigger_SPIDeviceRegRead;
whismanoid 17:9397ea3ea7e9 6464 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6465 break;
whismanoid 17:9397ea3ea7e9 6466 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 6467 // consider next row of action table
whismanoid 17:9397ea3ea7e9 6468 } // for ...Datalogger_action_table_row_count
whismanoid 17:9397ea3ea7e9 6469 }
whismanoid 17:9397ea3ea7e9 6470 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 6471
whismanoid 5:aaf8b5f5fda1 6472 //--------------------------------------------------
whismanoid 8:dffee7509bfb 6473 void Datalogger_PrintRow(CmdLine& cmdLine)
whismanoid 5:aaf8b5f5fda1 6474 {
whismanoid 5:aaf8b5f5fda1 6475 int field_index = 0;
whismanoid 5:aaf8b5f5fda1 6476 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 6477 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 6478 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 5:aaf8b5f5fda1 6479 continue;
whismanoid 5:aaf8b5f5fda1 6480 }
whismanoid 5:aaf8b5f5fda1 6481 // comma between fields
whismanoid 5:aaf8b5f5fda1 6482 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 6483 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 6484 }
whismanoid 10:04022a61b527 6485 field_index++;
whismanoid 10:04022a61b527 6486 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 10:04022a61b527 6487 cmdLine.serial().printf("%d", g_MAX11410_device.AINcode[channel_index]);
whismanoid 10:04022a61b527 6488 }
whismanoid 10:04022a61b527 6489 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 10:04022a61b527 6490 // TODO: report Voltage instead of LSB
whismanoid 10:04022a61b527 6491 // Serial.print(SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 6492 static char strOutLineBuffer[16];
whismanoid 10:04022a61b527 6493 cmdLine.serial().printf("%6.6f", SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 6494 }
whismanoid 5:aaf8b5f5fda1 6495 }
whismanoid 5:aaf8b5f5fda1 6496 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6497 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 6498 if (part_id_readback != part_id_expect) {
whismanoid 5:aaf8b5f5fda1 6499 cmdLine.serial().printf(",\"FAIL\"");
whismanoid 9:45f98573eb6d 6500 need_reinit = true;
whismanoid 5:aaf8b5f5fda1 6501 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6502 g_MAX11410_device.Init();
whismanoid 5:aaf8b5f5fda1 6503 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 5:aaf8b5f5fda1 6504 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 5:aaf8b5f5fda1 6505 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 5:aaf8b5f5fda1 6506 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6507 }
whismanoid 5:aaf8b5f5fda1 6508 else {
whismanoid 5:aaf8b5f5fda1 6509 cmdLine.serial().printf(",\"OK\"");
whismanoid 5:aaf8b5f5fda1 6510 }
whismanoid 5:aaf8b5f5fda1 6511 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6512 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6513 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 6514 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 6515 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 6516 continue;
whismanoid 9:45f98573eb6d 6517 }
whismanoid 5:aaf8b5f5fda1 6518 // comma between fields
whismanoid 5:aaf8b5f5fda1 6519 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 6520 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 6521 }
whismanoid 9:45f98573eb6d 6522 field_index++;
whismanoid 9:45f98573eb6d 6523 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 5:aaf8b5f5fda1 6524 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 6525 cmdLine.serial().printf("%u", Platform_LSB[channel_index]);
whismanoid 9:45f98573eb6d 6526 #endif
whismanoid 9:45f98573eb6d 6527 }
whismanoid 9:45f98573eb6d 6528 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 6529 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 11:2b8adc78618a 6530 // Datalog Volts omit V suffix from numbers #275
whismanoid 11:2b8adc78618a 6531 // because Excel graphs can't handle numbers that have a suffix.
whismanoid 11:2b8adc78618a 6532 cmdLine.serial().printf("%6.6f", Platform_Voltage[channel_index]);
whismanoid 9:45f98573eb6d 6533 #endif
whismanoid 9:45f98573eb6d 6534 }
whismanoid 5:aaf8b5f5fda1 6535 }
whismanoid 5:aaf8b5f5fda1 6536 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 6537 if (need_reinit) {
whismanoid 9:45f98573eb6d 6538 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 6539 if (g_MAX11410_device.Init() == 0) {
whismanoid 9:45f98573eb6d 6540 //~ cmdLine.serial().printf(",\"Init() failed\"");
whismanoid 9:45f98573eb6d 6541 } else {
whismanoid 9:45f98573eb6d 6542 //~ cmdLine.serial().printf(",\"Init() success\"");
whismanoid 9:45f98573eb6d 6543 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 6544 // in Datalogger_PrintRow(), when part_id test fails,
whismanoid 9:45f98573eb6d 6545 // apply list of custom register writes after re-init
whismanoid 9:45f98573eb6d 6546 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 6547 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 9:45f98573eb6d 6548 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 9:45f98573eb6d 6549 uint32_t regData = custom_reg_init_data[index];
whismanoid 9:45f98573eb6d 6550 cmdLine.serial().printf("*%s=0x%06.6x", g_MAX11410_device.RegName(regAddress), regData);
whismanoid 9:45f98573eb6d 6551 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 9:45f98573eb6d 6552 }
whismanoid 9:45f98573eb6d 6553 #endif // USE_CUSTOM_REG_INIT
whismanoid 9:45f98573eb6d 6554 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 9:45f98573eb6d 6555 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 9:45f98573eb6d 6556 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 9:45f98573eb6d 6557 need_reinit = false;
whismanoid 9:45f98573eb6d 6558 }
whismanoid 9:45f98573eb6d 6559 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 6560 need_reinit = false;
whismanoid 9:45f98573eb6d 6561 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 6562 }
whismanoid 30:07197a430869 6563 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 6564 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark -- in void Datalogger_PrintRow()
whismanoid 30:07197a430869 6565 cmdLine.serial().printf(",\"%s\"", gstrRemarkText);
whismanoid 30:07197a430869 6566 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 5:aaf8b5f5fda1 6567 cmdLine.serial().printf("\r\n");
whismanoid 9:45f98573eb6d 6568 if (need_reinit) {
whismanoid 9:45f98573eb6d 6569 //~ delay(500); // platform_delay_ms 500ms timing delay function
whismanoid 9:45f98573eb6d 6570 }
whismanoid 5:aaf8b5f5fda1 6571 } // void Datalogger_PrintRow()
whismanoid 5:aaf8b5f5fda1 6572
whismanoid 0:cb44e2e9ec4c 6573 // example code main function
whismanoid 0:cb44e2e9ec4c 6574 int main()
whismanoid 0:cb44e2e9ec4c 6575 {
whismanoid 0:cb44e2e9ec4c 6576 // setup: put your setup code here, to run once
whismanoid 4:d9b05924ad4c 6577 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 6578 // Configure serial ports
whismanoid 4:d9b05924ad4c 6579 cmdLine.clear();
whismanoid 4:d9b05924ad4c 6580 //~ cmdLine.serial().printf("\r\n cmdLine.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 6581 cmdLine.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 6582 //~ cmdLine.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 4:d9b05924ad4c 6583 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 4:d9b05924ad4c 6584 //~ cmdLine.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 6585 //~ cmdLine.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 6586 //~ cmdLine.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 6587 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 6588 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6589 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 6590 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 6591 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 6592 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 6593 # else
whismanoid 10:04022a61b527 6594 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 6595 DAPLINKserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 6596 # endif
whismanoid 10:04022a61b527 6597 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 6598 cmdLine_DAPLINKserial.clear();
whismanoid 4:d9b05924ad4c 6599 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 6600 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 6601 //~ cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 6602 //~ cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 6603 //~ cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 6604 # endif
whismanoid 6:f6d16658342b 6605 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6606 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 10:04022a61b527 6607 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6608 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 6609 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 6610 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 6611 AUXserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 6612 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 6:f6d16658342b 6613 cmdLine_AUXserial.clear();
whismanoid 6:f6d16658342b 6614 //~ cmdLine_AUXserial.serial().printf("\r\n cmdLine_AUXserial.serial().printf test\r\n");
whismanoid 6:f6d16658342b 6615 cmdLine_AUXserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 6:f6d16658342b 6616 //~ cmdLine_AUXserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 6:f6d16658342b 6617 //~ cmdLine_AUXserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 6:f6d16658342b 6618 //~ cmdLine_AUXserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 6:f6d16658342b 6619 # endif // HAS_AUX_SERIAL
whismanoid 4:d9b05924ad4c 6620 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 0:cb44e2e9ec4c 6621
whismanoid 0:cb44e2e9ec4c 6622 // example code: serial port banner message
whismanoid 0:cb44e2e9ec4c 6623 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 6624 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6625 cmdLine.serial().printf("\r\nDataLogger_MAX11410\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 6626 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6627 cmdLine.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 6628 # if HAS_DAPLINK_SERIAL
whismanoid 3:9055e17e181a 6629 cmdLine_DAPLINKserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 6630 # endif // HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 6631 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6632 cmdLine_AUXserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 6:f6d16658342b 6633 # endif // HAS_AUX_SERIAL
whismanoid 3:9055e17e181a 6634 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 6635
whismanoid 1:747f1602abfc 6636 // CODE GENERATOR: get spi properties from device
whismanoid 3:9055e17e181a 6637 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6638 if (g_SPI_SCLK_Hz > g_MAX11410_device.get_spi_frequency())
whismanoid 3:9055e17e181a 6639 { // Device limits SPI SCLK frequency
whismanoid 3:9055e17e181a 6640 g_SPI_SCLK_Hz = g_MAX11410_device.get_spi_frequency();
whismanoid 3:9055e17e181a 6641 cmdLine.serial().printf("\r\nMAX11410 limits SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 6642
whismanoid 3:9055e17e181a 6643 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 6644 }
whismanoid 3:9055e17e181a 6645 if (g_MAX11410_device.get_spi_frequency() > g_SPI_SCLK_Hz)
whismanoid 3:9055e17e181a 6646 { // Platform limits SPI SCLK frequency
whismanoid 3:9055e17e181a 6647 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 6648 cmdLine.serial().printf("\r\nPlatform limits MAX11410 SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 6649
whismanoid 3:9055e17e181a 6650 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 6651 }
whismanoid 0:cb44e2e9ec4c 6652 // g_SPI_dataMode = g_MAX11410_device.get_spi_dataMode();
whismanoid 3:9055e17e181a 6653 while (g_MAX11410_device.Init() == 0)
whismanoid 3:9055e17e181a 6654 {
whismanoid 3:9055e17e181a 6655 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 6656 cmdLine.serial().printf("\r\nMAX11410 Init failed; retry...\r\n");
whismanoid 3:9055e17e181a 6657
whismanoid 3:9055e17e181a 6658 }
whismanoid 0:cb44e2e9ec4c 6659
whismanoid 0:cb44e2e9ec4c 6660 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 3:9055e17e181a 6661 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6662 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 3:9055e17e181a 6663 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 3:9055e17e181a 6664 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 3:9055e17e181a 6665 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6666 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 3:9055e17e181a 6667 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6668 // CODE GENERATOR: example code: has no member function REF
whismanoid 0:cb44e2e9ec4c 6669 // CODE GENERATOR: example code for ADC: repeat-forever convert and print conversion result, one record per line
whismanoid 0:cb44e2e9ec4c 6670 // CODE GENERATOR: ResolutionBits = 24
whismanoid 0:cb44e2e9ec4c 6671 // CODE GENERATOR: FScode = 0xffffff
whismanoid 0:cb44e2e9ec4c 6672 // CODE GENERATOR: NumChannels = 10
whismanoid 0:cb44e2e9ec4c 6673 // CODE GENERATOR: banner before DataLogHelloCppCodeList while(1)
whismanoid 3:9055e17e181a 6674 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6675 cmdLine.serial().printf("v_filter = 0x%2.2x\r\n", g_MAX11410_device.v_filter);
whismanoid 0:cb44e2e9ec4c 6676
whismanoid 3:9055e17e181a 6677 cmdLine.serial().printf("v_pga = 0x%2.2x\r\n", g_MAX11410_device.v_pga);
whismanoid 0:cb44e2e9ec4c 6678
whismanoid 3:9055e17e181a 6679 cmdLine.serial().printf("v_ctrl = 0x%2.2x\r\n", g_MAX11410_device.v_ctrl);
whismanoid 3:9055e17e181a 6680
whismanoid 3:9055e17e181a 6681 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6682
whismanoid 3:9055e17e181a 6683 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 6684 Datalogger_Need_PrintHeader = true;
whismanoid 10:04022a61b527 6685
whismanoid 12:2dfc1f2009e0 6686 #if USE_LEDS
whismanoid 12:2dfc1f2009e0 6687 #if defined(TARGET_MAX32630)
whismanoid 12:2dfc1f2009e0 6688 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 6689 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6690 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 6691 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6692 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 6693 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6694 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 6695 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6696 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 6697 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6698 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 6699 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6700 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 6701 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6702 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 6703 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 19:5ff09c8e9daf 6704 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 12:2dfc1f2009e0 6705 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 6706 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6707 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 6708 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6709 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 6710 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6711 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 6712 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6713 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 6714 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6715 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 6716 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6717 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 6718 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6719 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 6720 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6721 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 12:2dfc1f2009e0 6722 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 6723 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6724 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6725 led4 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6726 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6727 //led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 6728 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 6729 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6730 led1 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6731 //led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 6732 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 6733 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6734 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6735 //led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 6736 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 6737 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6738 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6739 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 6740 //
whismanoid 12:2dfc1f2009e0 6741 #endif // target definition
whismanoid 12:2dfc1f2009e0 6742 #endif
whismanoid 12:2dfc1f2009e0 6743
whismanoid 12:2dfc1f2009e0 6744 if (led1.is_connected()) {
whismanoid 12:2dfc1f2009e0 6745 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 6746 }
whismanoid 12:2dfc1f2009e0 6747 if (led2.is_connected()) {
whismanoid 12:2dfc1f2009e0 6748 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 6749 }
whismanoid 12:2dfc1f2009e0 6750 if (led3.is_connected()) {
whismanoid 12:2dfc1f2009e0 6751 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 6752 }
whismanoid 12:2dfc1f2009e0 6753
whismanoid 4:d9b05924ad4c 6754 while(1) { // this code repeats forever
whismanoid 4:d9b05924ad4c 6755 // this code repeats forever
whismanoid 4:d9b05924ad4c 6756
whismanoid 21:ac062a97a71d 6757 #if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 6758 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 6759 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 6760 # if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 6761 static int button1_value_prev = 1;
whismanoid 21:ac062a97a71d 6762 static int button1_value_now = 1;
whismanoid 21:ac062a97a71d 6763 button1_value_prev = button1_value_now;
whismanoid 21:ac062a97a71d 6764 button1_value_now = button1.read();
whismanoid 21:ac062a97a71d 6765 if ((button1_value_prev - button1_value_now) == 1)
whismanoid 21:ac062a97a71d 6766 {
whismanoid 21:ac062a97a71d 6767 // on button1 falling edge (button1 press)
whismanoid 21:ac062a97a71d 6768 onButton1FallingEdge();
whismanoid 21:ac062a97a71d 6769 }
whismanoid 21:ac062a97a71d 6770 # endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6771 # if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6772 static int button2_value_prev = 1;
whismanoid 24:032f3683cb2a 6773 static int button2_value_now = 1;
whismanoid 24:032f3683cb2a 6774 button2_value_prev = button2_value_now;
whismanoid 24:032f3683cb2a 6775 button2_value_now = button2.read();
whismanoid 24:032f3683cb2a 6776 if ((button2_value_prev - button2_value_now) == 1)
whismanoid 24:032f3683cb2a 6777 {
whismanoid 24:032f3683cb2a 6778 // on button2 falling edge (button2 press)
whismanoid 24:032f3683cb2a 6779 onButton2FallingEdge();
whismanoid 24:032f3683cb2a 6780 }
whismanoid 24:032f3683cb2a 6781 # endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6782 # if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6783 static int button3_value_prev = 1;
whismanoid 24:032f3683cb2a 6784 static int button3_value_now = 1;
whismanoid 24:032f3683cb2a 6785 button3_value_prev = button3_value_now;
whismanoid 24:032f3683cb2a 6786 button3_value_now = button3.read();
whismanoid 24:032f3683cb2a 6787 if ((button3_value_prev - button3_value_now) == 1)
whismanoid 24:032f3683cb2a 6788 {
whismanoid 24:032f3683cb2a 6789 // on button3 falling edge (button3 press)
whismanoid 26:13cba69d88eb 6790 onButton3FallingEdge();
whismanoid 24:032f3683cb2a 6791 }
whismanoid 24:032f3683cb2a 6792 # endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 6793 #endif // HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 4:d9b05924ad4c 6794 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 6795 // TODO support CmdLine command menus (like on Serial_Tester); help and usual boilerplate
whismanoid 10:04022a61b527 6796 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6797 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 6798 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 6799 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6800 // Accept commands from Auxiliary serial port
whismanoid 6:f6d16658342b 6801 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6802 if (AUXserial.readable()) {
whismanoid 6:f6d16658342b 6803 cmdLine_AUXserial.append(AUXserial.getc());
whismanoid 6:f6d16658342b 6804 }
whismanoid 6:f6d16658342b 6805 # endif // HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6806 # if HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 6807 if (DAPLINKserial.readable()) {
whismanoid 6:f6d16658342b 6808 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 6:f6d16658342b 6809 }
whismanoid 6:f6d16658342b 6810 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 6811 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 6812 if (serial.readable()) {
whismanoid 4:d9b05924ad4c 6813 int c = serial.getc(); // instead of getc() or fgetc()
whismanoid 4:d9b05924ad4c 6814 cmdLine.append(c);
whismanoid 4:d9b05924ad4c 6815 // cmdLine.onEOLcommandParser handler implements menus
whismanoid 4:d9b05924ad4c 6816 } // if (Serial.available())
whismanoid 4:d9b05924ad4c 6817 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 6818
whismanoid 4:d9b05924ad4c 6819 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 32:80f3e5eb77d4 6820 // Datalog trigger
whismanoid 4:d9b05924ad4c 6821 if (Datalogger_Trigger == trigger_Halt) {
whismanoid 4:d9b05924ad4c 6822 // halt the datalogger; continue accepting commands
whismanoid 3:9055e17e181a 6823 continue;
whismanoid 3:9055e17e181a 6824 }
whismanoid 4:d9b05924ad4c 6825 if (Datalogger_Trigger == trigger_FreeRun) {
whismanoid 4:d9b05924ad4c 6826 // free run as fast as possible
whismanoid 3:9055e17e181a 6827 }
whismanoid 4:d9b05924ad4c 6828 if (Datalogger_Trigger == trigger_Timer) {
whismanoid 4:d9b05924ad4c 6829 // timer (configure interval)
whismanoid 32:80f3e5eb77d4 6830 // if Datalogger_Trigger == trigger_Timer sleep(g_timer_interval_msec)
whismanoid 39:4d285e961435 6831 //
whismanoid 39:4d285e961435 6832 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 6833 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 6834 // TODO: Sleep Mode vs Deep Sleep Mode
whismanoid 39:4d285e961435 6835 // See documentation https://os.mbed.com/docs/mbed-os/v5.15/apis/power-management-sleep.html
whismanoid 41:13a6a097502c 6836 // ThisThread::sleep_for(uint32_t millisec)
whismanoid 41:13a6a097502c 6837 // sleep_manager_can_deep_sleep() // tests whether deep_sleep is locked or not
whismanoid 41:13a6a097502c 6838 // sleep_manager_lock_deep_sleep() // begin section that prevents deep_sleep
whismanoid 41:13a6a097502c 6839 // sleep_manager_unlock_deep_sleep() // end section that prevents deep_sleep
whismanoid 39:4d285e961435 6840 switch(g_timer_sleepmode)
whismanoid 39:4d285e961435 6841 {
whismanoid 39:4d285e961435 6842 case datalogger_Sleep_LP0_Stop: // LT sleep = 0,
whismanoid 39:4d285e961435 6843 break;
whismanoid 39:4d285e961435 6844 case datalogger_Sleep_LP1_DeepSleep: // LT sleep = 1,
whismanoid 42:89607d5d4e6d 6845 //
whismanoid 42:89607d5d4e6d 6846 // mbed-os\targets\TARGET_Maxim\TARGET_MAX32625\sleep.c -- hal_deepsleep() just calls hal_sleep(), NO ACTUAL DEEP SLEEP MODE SUPPORT?
whismanoid 42:89607d5d4e6d 6847 // tried overriding hal_deepsleep() in
whismanoid 42:89607d5d4e6d 6848 // TARGET_MAX40108DEMOP2U9\sleep.c --
whismanoid 42:89607d5d4e6d 6849 // can't compile, multiple sleep.o files --
whismanoid 42:89607d5d4e6d 6850 // TARGET_MAX32625\sleep.c interference
whismanoid 42:89607d5d4e6d 6851 // Can I try using LP_EnterLP1() directly?
whismanoid 42:89607d5d4e6d 6852 // #include "lp.h"
whismanoid 42:89607d5d4e6d 6853 // #include "rtc.h"
whismanoid 42:89607d5d4e6d 6854 // LP_ConfigRTCWakeUp(unsigned int comp0_en, unsigned int comp1_en, unsigned int prescale_cmp_en, unsigned int rollover_en);
whismanoid 42:89607d5d4e6d 6855 // get current RTC time, set wakeup alarm time?
whismanoid 42:89607d5d4e6d 6856 // LP_EnterLP1(); // #include "lp.h"
whismanoid 42:89607d5d4e6d 6857 // clear RTC alarm?
whismanoid 42:89607d5d4e6d 6858 //
whismanoid 41:13a6a097502c 6859 // sleep_manager_can_deep_sleep(); // tests whether deep_sleep is locked or not
whismanoid 41:13a6a097502c 6860 // TODO: USE_DATALOGGER_SLEEP -- ThisThread::sleep_for(uint32_t millisec) instead of wait_ms(g_timer_interval_msec)
whismanoid 41:13a6a097502c 6861 // mbed_file_handle(STDIN_FILENO)->enable_input(false); // (mbed-os-5.15) platform.stdio-buffered-serial prevents deep sleep
whismanoid 41:13a6a097502c 6862 cmdLine.serial().enable_input(false); // (mbed-os-5.15) platform.stdio-buffered-serial prevents deep sleep
whismanoid 41:13a6a097502c 6863 // serial.enable_input(false); // (mbed-os-5.15) platform.stdio-buffered-serial prevents deep sleep
whismanoid 42:89607d5d4e6d 6864 //
whismanoid 42:89607d5d4e6d 6865 LP_EnterLP1(); // #include "lp.h"
whismanoid 42:89607d5d4e6d 6866 // TODO: LP_EnterLP1() immediately reboots U9,
whismanoid 42:89607d5d4e6d 6867 // even though LP_EnterLP1() properly clears 'first boot' bit...
whismanoid 42:89607d5d4e6d 6868 //
whismanoid 41:13a6a097502c 6869 ThisThread::sleep_for(g_timer_interval_msec); // wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 41:13a6a097502c 6870 // mbed_file_handle(STDIN_FILENO)->enable_input(true); // (mbed-os-5.15)
whismanoid 41:13a6a097502c 6871 cmdLine.serial().enable_input(true); // (mbed-os-5.15)
whismanoid 41:13a6a097502c 6872 // serial.enable_input(true); // (mbed-os-5.15)
whismanoid 39:4d285e961435 6873 break;
whismanoid 39:4d285e961435 6874 case datalogger_Sleep_LP2_Sleep: // LT sleep = 2,
whismanoid 41:13a6a097502c 6875 sleep_manager_lock_deep_sleep(); // begin section that prevents deep_sleep
whismanoid 41:13a6a097502c 6876 // TODO: USE_DATALOGGER_SLEEP -- ThisThread::sleep_for(uint32_t millisec) instead of wait_ms(g_timer_interval_msec)
whismanoid 41:13a6a097502c 6877 ThisThread::sleep_for(g_timer_interval_msec); // wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 41:13a6a097502c 6878 sleep_manager_unlock_deep_sleep(); // end section that prevents deep_sleep
whismanoid 39:4d285e961435 6879 break;
whismanoid 39:4d285e961435 6880 case datalogger_Sleep_LP3_Run: // LT sleep = 3,
whismanoid 41:13a6a097502c 6881 // TODO: USE_DATALOGGER_SLEEP -- ThisThread::sleep_for(uint32_t millisec) instead of wait_ms(g_timer_interval_msec)
whismanoid 41:13a6a097502c 6882 wait_ms(g_timer_interval_msec);
whismanoid 39:4d285e961435 6883 break;
whismanoid 39:4d285e961435 6884 }
whismanoid 39:4d285e961435 6885 #else // USE_DATALOGGER_SLEEP
whismanoid 17:9397ea3ea7e9 6886 wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 39:4d285e961435 6887 #endif // USE_DATALOGGER_SLEEP
whismanoid 39:4d285e961435 6888 //
whismanoid 17:9397ea3ea7e9 6889 if (g_timer_interval_counter > 0) {
whismanoid 17:9397ea3ea7e9 6890 g_timer_interval_counter--;
whismanoid 17:9397ea3ea7e9 6891 continue;
whismanoid 17:9397ea3ea7e9 6892 }
whismanoid 17:9397ea3ea7e9 6893 // if time interval not yet reached, continue (continue accepting commands)
whismanoid 32:80f3e5eb77d4 6894 g_timer_interval_counter = g_timer_interval_count-1;
whismanoid 3:9055e17e181a 6895 }
whismanoid 4:d9b05924ad4c 6896 if (Datalogger_Trigger == trigger_PlatformDigitalInput) {
whismanoid 4:d9b05924ad4c 6897 // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 6898 // TODO: read selected input pin, test value
whismanoid 17:9397ea3ea7e9 6899 // TODO: if no match, continue (continue accepting commands)
whismanoid 3:9055e17e181a 6900 }
whismanoid 4:d9b05924ad4c 6901 if (Datalogger_Trigger == trigger_SPIDeviceRegRead) {
whismanoid 4:d9b05924ad4c 6902 // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 6903 // TODO: SPI transfer regAddr
whismanoid 17:9397ea3ea7e9 6904 // TODO: apply dataMask, compare with testValue
whismanoid 17:9397ea3ea7e9 6905 // TODO: if no match, continue (continue accepting commands)
whismanoid 4:d9b05924ad4c 6906 }
whismanoid 4:d9b05924ad4c 6907 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 0:cb44e2e9ec4c 6908
whismanoid 8:dffee7509bfb 6909 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 6910 if (Datalogger_Need_PrintHeader) {
whismanoid 8:dffee7509bfb 6911 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 6912 Datalogger_PrintHeader(cmdLine);
whismanoid 8:dffee7509bfb 6913 }
whismanoid 8:dffee7509bfb 6914 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 6915 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 6916 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 6917 }
whismanoid 8:dffee7509bfb 6918 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 6919 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 6920 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 6921 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 6922 }
whismanoid 8:dffee7509bfb 6923 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 6924 Datalogger_Need_PrintHeader = false;
whismanoid 8:dffee7509bfb 6925 }
whismanoid 5:aaf8b5f5fda1 6926 Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 6927 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 6928 // Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 6929 Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 6930 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 0:cb44e2e9ec4c 6931 // wait(3.0);
whismanoid 0:cb44e2e9ec4c 6932 // CODE GENERATOR: print conversion result
whismanoid 0:cb44e2e9ec4c 6933 // Use Arduino Serial Plotter to view output: Tools | Serial Plotter
whismanoid 8:dffee7509bfb 6934 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 6935 Datalogger_PrintRow(cmdLine);
whismanoid 8:dffee7509bfb 6936 }
whismanoid 8:dffee7509bfb 6937 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 6938 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 6939 Datalogger_PrintRow(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 6940 }
whismanoid 8:dffee7509bfb 6941 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 6942 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 6943 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 6944 Datalogger_PrintRow(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 6945 }
whismanoid 8:dffee7509bfb 6946 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:cb44e2e9ec4c 6947
whismanoid 0:cb44e2e9ec4c 6948 } // this code repeats forever
whismanoid 0:cb44e2e9ec4c 6949 }
whismanoid 0:cb44e2e9ec4c 6950 //---------- CODE GENERATOR: end DataLogHelloCppCodeList