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:
Tue May 18 16:17:42 2021 -0700
Revision:
44:84402faa8eb9
Parent:
43:4c4733760d4c
Child:
45:74bf1fe021e5
WIP LT sleep=1 use MAX32625 LP1 deep sleep and RTC timer; signs of life
0.1mA in LP1 leds off, fixed the garbled serial port before/after LP1 sleep,
but still but trouble getting out of LT sleep=1 mode to other commands.

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 43:4c4733760d4c 2043 #include "rtc.h"
whismanoid 39:4d285e961435 2044 #endif
whismanoid 39:4d285e961435 2045 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 44:84402faa8eb9 2046 // wait until UART_Busy indicates no ongoing transactions (both ports)
whismanoid 44:84402faa8eb9 2047 #include "uart.h"
whismanoid 44:84402faa8eb9 2048 int Console_PrepForSleep(void)
whismanoid 44:84402faa8eb9 2049 {
whismanoid 44:84402faa8eb9 2050 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX40108DEMOP2U9: P0_1,P0_0 (J90.1/J90.0 to console)
whismanoid 44:84402faa8eb9 2051 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK)
whismanoid 44:84402faa8eb9 2052 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX40108DEMOP2U9: P3_1,P3_0 (unavailable)
whismanoid 44:84402faa8eb9 2053 return (
whismanoid 44:84402faa8eb9 2054 (UART_PrepForSleep(MXC_UART_GET_UART(0)) == E_NO_ERROR)
whismanoid 44:84402faa8eb9 2055 && (UART_PrepForSleep(MXC_UART_GET_UART(1)) == E_NO_ERROR)
whismanoid 44:84402faa8eb9 2056 )
whismanoid 44:84402faa8eb9 2057 ? E_NO_ERROR
whismanoid 44:84402faa8eb9 2058 : E_BUSY;
whismanoid 44:84402faa8eb9 2059 }
whismanoid 44:84402faa8eb9 2060 #endif // USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 44:84402faa8eb9 2061 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 2062 typedef enum Datalogger_Sleep_enum_t {
whismanoid 39:4d285e961435 2063 datalogger_Sleep_LP0_Stop = 0,
whismanoid 39:4d285e961435 2064 datalogger_Sleep_LP1_DeepSleep = 1,
whismanoid 39:4d285e961435 2065 datalogger_Sleep_LP2_Sleep = 2,
whismanoid 39:4d285e961435 2066 datalogger_Sleep_LP3_Run = 3,
whismanoid 39:4d285e961435 2067 } Datalogger_Sleep_enum_t;
whismanoid 39:4d285e961435 2068 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 2069 Datalogger_Sleep_enum_t g_timer_sleepmode = datalogger_Sleep_LP3_Run;
whismanoid 39:4d285e961435 2070 #endif
whismanoid 39:4d285e961435 2071
whismanoid 39:4d285e961435 2072 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2073 // Datalog trigger types
whismanoid 4:d9b05924ad4c 2074 #ifndef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 2075 #define USE_DATALOGGER_TRIGGER 1
whismanoid 4:d9b05924ad4c 2076 //~ #undef USE_DATALOGGER_TRIGGER
whismanoid 4:d9b05924ad4c 2077 #endif
whismanoid 4:d9b05924ad4c 2078 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 2079 typedef enum Datalogger_Trigger_enum_t {
whismanoid 4:d9b05924ad4c 2080 trigger_Halt = 0, //!< halt
whismanoid 4:d9b05924ad4c 2081 trigger_FreeRun = 1, //!< free run as fast as possible
whismanoid 4:d9b05924ad4c 2082 trigger_Timer = 2, //!< timer (configure interval)
whismanoid 4:d9b05924ad4c 2083 trigger_PlatformDigitalInput, //!< platform digital input (configure digital input pin reference)
whismanoid 4:d9b05924ad4c 2084 trigger_SPIDeviceRegRead, //!< SPI device register read (configure regaddr, mask value, match value)
whismanoid 4:d9b05924ad4c 2085 } Datalogger_Trigger_enum_t;
whismanoid 4:d9b05924ad4c 2086 Datalogger_Trigger_enum_t Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 2087 //
whismanoid 17:9397ea3ea7e9 2088 // configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 2089 int g_timer_interval_msec = 500; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2090 int g_timer_interval_count = 10; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2091 int g_timer_interval_counter = 0; // trigger_Timer
whismanoid 17:9397ea3ea7e9 2092 //
whismanoid 17:9397ea3ea7e9 2093 // TODO: configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 2094 //
whismanoid 17:9397ea3ea7e9 2095 // TODO: configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2096 //
whismanoid 4:d9b05924ad4c 2097 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 2098
whismanoid 4:d9b05924ad4c 2099 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 2100 // support trigger_SPIDeviceRegRead: Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 2101 #ifndef USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2102 #define USE_DATALOGGER_SPIDeviceRegRead 0
whismanoid 17:9397ea3ea7e9 2103 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2104 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2105 // TODO: uint16_t regAddr;
whismanoid 17:9397ea3ea7e9 2106 // TODO: uint16_t regDataMask;
whismanoid 17:9397ea3ea7e9 2107 // TODO: uint16_t regDataTest;
whismanoid 17:9397ea3ea7e9 2108 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 2109
whismanoid 17:9397ea3ea7e9 2110 //--------------------------------------------------
whismanoid 30:07197a430869 2111 // support Datalogger_PrintRow() print gstrRemarkText field from recent #remark
whismanoid 30:07197a430869 2112 #ifndef USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2113 #define USE_DATALOGGER_REMARK_FIELD 1
whismanoid 30:07197a430869 2114 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2115 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2116 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark
whismanoid 30:07197a430869 2117 const size_t gstrRemarkTextLASTINDEX = 40; // gstrRemarkText buffer size - 1
whismanoid 30:07197a430869 2118 char gstrRemarkText[gstrRemarkTextLASTINDEX+1] = "";
whismanoid 30:07197a430869 2119 char gstrRemarkHeader[] = "comment"; // comment or remark?
whismanoid 30:07197a430869 2120 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 2121
whismanoid 30:07197a430869 2122 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 2123 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2124 #ifndef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 2125 #define USE_DATALOGGER_ActionTable 1
whismanoid 17:9397ea3ea7e9 2126 //~ #undef USE_DATALOGGER_ActionTable
whismanoid 17:9397ea3ea7e9 2127 #endif
whismanoid 17:9397ea3ea7e9 2128 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2129 //
whismanoid 17:9397ea3ea7e9 2130 // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2131 typedef enum action_type_enum_t {
whismanoid 17:9397ea3ea7e9 2132 action_noop = 0, // no operation
whismanoid 30:07197a430869 2133 action_digitalOutLow = 1, // pin = low if condition
whismanoid 30:07197a430869 2134 action_digitalOutHigh = 2, // pin = high if condition
whismanoid 30:07197a430869 2135 action_button = 3, // pin = button event index 1, 2, 3
whismanoid 30:07197a430869 2136 action_trigger_Halt = 4,
whismanoid 30:07197a430869 2137 action_trigger_FreeRun = 5,
whismanoid 30:07197a430869 2138 action_trigger_Timer = 6,
whismanoid 30:07197a430869 2139 action_trigger_PlatformDigitalInput = 7,
whismanoid 30:07197a430869 2140 action_trigger_SPIDeviceRegRead = 8,
whismanoid 17:9397ea3ea7e9 2141 } action_type_enum_t;
whismanoid 17:9397ea3ea7e9 2142 //
whismanoid 17:9397ea3ea7e9 2143 // Datalogger_RunActionTable() supported conditions
whismanoid 17:9397ea3ea7e9 2144 typedef enum action_condition_enum_t {
whismanoid 17:9397ea3ea7e9 2145 condition_always = 0, // ( true )
whismanoid 17:9397ea3ea7e9 2146 condition_if_An_gt_threshold, // (Platform_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 2147 condition_if_An_lt_threshold, // (Platform_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 2148 condition_if_An_eq_threshold, // (Platform_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 2149 condition_if_An_ge_threshold, // (Platform_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 2150 condition_if_An_le_threshold, // (Platform_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 2151 condition_if_An_ne_threshold, // (Platform_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 2152 condition_if_AINn_gt_threshold, // (SPI_AIN_Voltage[channel] > threhsold)
whismanoid 17:9397ea3ea7e9 2153 condition_if_AINn_lt_threshold, // (SPI_AIN_Voltage[channel] < threhsold)
whismanoid 17:9397ea3ea7e9 2154 condition_if_AINn_eq_threshold, // (SPI_AIN_Voltage[channel] == threhsold)
whismanoid 17:9397ea3ea7e9 2155 condition_if_AINn_ge_threshold, // (SPI_AIN_Voltage[channel] >= threhsold)
whismanoid 17:9397ea3ea7e9 2156 condition_if_AINn_le_threshold, // (SPI_AIN_Voltage[channel] <= threhsold)
whismanoid 17:9397ea3ea7e9 2157 condition_if_AINn_ne_threshold, // (SPI_AIN_Voltage[channel] != threhsold)
whismanoid 17:9397ea3ea7e9 2158 } condition_enum_t;
whismanoid 17:9397ea3ea7e9 2159 //
whismanoid 17:9397ea3ea7e9 2160 // Datalogger_RunActionTable() structure
whismanoid 17:9397ea3ea7e9 2161 typedef struct action_table_row_t {
whismanoid 17:9397ea3ea7e9 2162 action_type_enum_t action;
whismanoid 17:9397ea3ea7e9 2163 int digitalOutPin;
whismanoid 17:9397ea3ea7e9 2164 action_condition_enum_t condition;
whismanoid 17:9397ea3ea7e9 2165 int condition_channel;
whismanoid 17:9397ea3ea7e9 2166 double condition_threshold;
whismanoid 17:9397ea3ea7e9 2167 } action_table_row_t;
whismanoid 17:9397ea3ea7e9 2168 #if MAX40108_DEMO
whismanoid 39:4d285e961435 2169 # ifdef BOARD_SERIAL_NUMBER
whismanoid 39:4d285e961435 2170 // data unique to certain boards based on serial number
whismanoid 39:4d285e961435 2171 // channels A0/A4(CSA*100/3.34=mA), A1/A5(1V0), A2(WE), A3(CE)
whismanoid 39:4d285e961435 2172 # if (BOARD_SERIAL_NUMBER) == 1
whismanoid 39:4d285e961435 2173 #warning "(BOARD_SERIAL_NUMBER) == 1 -- logic uses A3(CE) instead of A2(WE)"
whismanoid 39:4d285e961435 2174 const int channel_WE = 3; // use channel_CE instead on proto board s/n 1 for diagnostics; easier to sweep values
whismanoid 39:4d285e961435 2175 # elif (BOARD_SERIAL_NUMBER) == 5
whismanoid 39:4d285e961435 2176 #warning "(BOARD_SERIAL_NUMBER) == 5 -- logic uses A3(CE) instead of A2(WE)"
whismanoid 39:4d285e961435 2177 const int channel_WE = 3; // use channel_CE instead on proto board s/n 1 for diagnostics; easier to sweep values
whismanoid 39:4d285e961435 2178 # else // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 17:9397ea3ea7e9 2179 const int channel_WE = 2;
whismanoid 39:4d285e961435 2180 # endif
whismanoid 39:4d285e961435 2181 # endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 17:9397ea3ea7e9 2182 const double threshold_WE_0V5 = 0.5;
whismanoid 17:9397ea3ea7e9 2183 const double threshold_WE_0V6 = 0.6;
whismanoid 17:9397ea3ea7e9 2184 const double threshold_WE_0V7 = 0.7;
whismanoid 18:1235c17b451e 2185 const int pin_LED_1 = 91; // support find_digitalInOutPin(91) return DigitalInOut of led1_RFailLED
whismanoid 18:1235c17b451e 2186 const int pin_LED_2 = 92; // support find_digitalInOutPin(92) return DigitalInOut of led2_GPassLED
whismanoid 18:1235c17b451e 2187 const int pin_LED_3 = 93; // support find_digitalInOutPin(93) return DigitalInOut of led3_BBusyLED
whismanoid 17:9397ea3ea7e9 2188 #endif
whismanoid 17:9397ea3ea7e9 2189 const int ACTION_TABLE_ROW_MAX = 20;
whismanoid 17:9397ea3ea7e9 2190 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2191 bool Datalogger_action_table_enabled = true;
whismanoid 30:07197a430869 2192 int Datalogger_action_table_row_count = 8; // assert (Datalogger_action_table_row_count <= ACTION_TABLE_ROW_MAX)
whismanoid 17:9397ea3ea7e9 2193 #else // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2194 int Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 2195 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2196 action_table_row_t Datalogger_action_table[ACTION_TABLE_ROW_MAX] = {
whismanoid 17:9397ea3ea7e9 2197 #if MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2198 // LED indicator show (WE > 0.5V)
whismanoid 18:1235c17b451e 2199 // L@0 act=1 pin=92 if=1 ch=2 x=0.500000 -- digitalOutLow D92 if A2 > 0.500000
whismanoid 18:1235c17b451e 2200 {action_digitalOutLow, pin_LED_2, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V5},
whismanoid 17:9397ea3ea7e9 2201 //
whismanoid 17:9397ea3ea7e9 2202 // LED indicator show (WE > 0.6V)
whismanoid 18:1235c17b451e 2203 // L@1 act=1 pin=93 if=1 ch=2 x=0.600000 -- digitalOutLow D93 if A2 > 0.600000
whismanoid 18:1235c17b451e 2204 {action_digitalOutLow, pin_LED_3, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 17:9397ea3ea7e9 2205 //
whismanoid 17:9397ea3ea7e9 2206 // switch to always-on mode `trigger_FreeRun` if (WE > 0.7V)
whismanoid 29:6a9edb6e973b 2207 // L@2 act=5 if=1 ch=2 x=0.700000 -- trigger_FreeRun if A2 > 0.700000
whismanoid 17:9397ea3ea7e9 2208 {action_trigger_FreeRun, 0, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 17:9397ea3ea7e9 2209 //
whismanoid 17:9397ea3ea7e9 2210 // switch to intermittent-sleep-mode `trigger_Timer` if (WE < 0.6V)
whismanoid 29:6a9edb6e973b 2211 // L@3 act=6 if=2 ch=2 x=0.600000 -- trigger_Timer(10 x 500msec) if A2 < 0.600000
whismanoid 17:9397ea3ea7e9 2212 {action_trigger_Timer, 0, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 2213 //
whismanoid 18:1235c17b451e 2214 // LED indicator show (`Datalogger_Trigger` == `trigger_FreeRun`)
whismanoid 18:1235c17b451e 2215 // {action_noop, 0, condition_always, 0, 0},
whismanoid 18:1235c17b451e 2216 // L@4 act=1 pin=91 if=1 ch=2 x=0.700000 -- digitalOutLow D91 if A2 > 0.700000
whismanoid 18:1235c17b451e 2217 {action_digitalOutLow, pin_LED_1, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 18:1235c17b451e 2218 //
whismanoid 18:1235c17b451e 2219 // L@5 act=2 pin=91 if=2 ch=2 x=0.600000 -- digitalOutHigh D91 if A2 < 0.600000
whismanoid 18:1235c17b451e 2220 {action_digitalOutHigh, pin_LED_1, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 18:1235c17b451e 2221 //
whismanoid 30:07197a430869 2222 // L@6 act=3 pin=4 if=1 ch=2 x=0.700000 -- button 4 event if A2 > 0.700000
whismanoid 30:07197a430869 2223 {action_button, 4, condition_if_An_gt_threshold, channel_WE, threshold_WE_0V7},
whismanoid 29:6a9edb6e973b 2224 //
whismanoid 30:07197a430869 2225 // L@7 act=3 pin=5 if=2 ch=2 x=0.600000 -- button 5 event if A2 < 0.600000
whismanoid 30:07197a430869 2226 {action_button, 5, condition_if_An_lt_threshold, channel_WE, threshold_WE_0V6},
whismanoid 29:6a9edb6e973b 2227 //
whismanoid 17:9397ea3ea7e9 2228 #endif // MAX40108_DEMO
whismanoid 17:9397ea3ea7e9 2229 //
whismanoid 17:9397ea3ea7e9 2230 {action_noop, 0, condition_always, 0, 0},
whismanoid 17:9397ea3ea7e9 2231 };
whismanoid 17:9397ea3ea7e9 2232 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2233
whismanoid 17:9397ea3ea7e9 2234 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 2235 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 2236 uint8_t Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 2237 uint8_t need_reinit = true;
whismanoid 8:dffee7509bfb 2238 void Datalogger_PrintHeader(CmdLine& cmdLine);
whismanoid 5:aaf8b5f5fda1 2239 void Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 2240 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 2241 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 2242 void Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 2243 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 8:dffee7509bfb 2244 void Datalogger_PrintRow(CmdLine& cmdLine);
whismanoid 4:d9b05924ad4c 2245
whismanoid 4:d9b05924ad4c 2246 //--------------------------------------------------
whismanoid 0:cb44e2e9ec4c 2247 // Option to validate SPI link by reading PART_ID register
whismanoid 0:cb44e2e9ec4c 2248 #ifndef VERIFY_PART_ID_IN_LOOP
whismanoid 3:9055e17e181a 2249 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2250 #define VERIFY_PART_ID_IN_LOOP 1
whismanoid 3:9055e17e181a 2251 #else
whismanoid 0:cb44e2e9ec4c 2252 #define VERIFY_PART_ID_IN_LOOP 0
whismanoid 3:9055e17e181a 2253 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2254 #endif
whismanoid 0:cb44e2e9ec4c 2255
whismanoid 3:9055e17e181a 2256 //--------------------------------------------------
whismanoid 3:9055e17e181a 2257 #define NUM_DUT_ANALOG_IN_CHANNELS 10
whismanoid 3:9055e17e181a 2258
whismanoid 3:9055e17e181a 2259 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 2260 // MAX11410 individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 3:9055e17e181a 2261 typedef enum SPI_AIN_Enable_t {
whismanoid 10:04022a61b527 2262 SPI_AIN_Disable = 0,
whismanoid 10:04022a61b527 2263 SPI_AIN_Enable_LSB = 1,
whismanoid 10:04022a61b527 2264 SPI_AIN_Enable_Volt = 2,
whismanoid 3:9055e17e181a 2265 } SPI_AIN_Enable_t;
whismanoid 3:9055e17e181a 2266 uint8_t SPI_AIN_Enable_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2267 SPI_AIN_Enable_LSB, // AIN0 1=LSB
whismanoid 10:04022a61b527 2268 SPI_AIN_Enable_LSB, // AIN1 1=LSB
whismanoid 10:04022a61b527 2269 SPI_AIN_Enable_LSB, // AIN2 1=LSB
whismanoid 10:04022a61b527 2270 SPI_AIN_Enable_LSB, // AIN3 1=LSB
whismanoid 10:04022a61b527 2271 SPI_AIN_Enable_LSB, // AIN4 1=LSB
whismanoid 10:04022a61b527 2272 SPI_AIN_Enable_LSB, // AIN5 1=LSB
whismanoid 10:04022a61b527 2273 SPI_AIN_Enable_LSB, // AIN6 1=LSB
whismanoid 10:04022a61b527 2274 SPI_AIN_Enable_LSB, // AIN7 1=LSB
whismanoid 10:04022a61b527 2275 SPI_AIN_Enable_LSB, // AIN8 1=LSB
whismanoid 10:04022a61b527 2276 SPI_AIN_Enable_LSB, // AIN9 1=LSB
whismanoid 3:9055e17e181a 2277 };
whismanoid 3:9055e17e181a 2278 //
whismanoid 10:04022a61b527 2279 double SPI_AIN_Voltage[NUM_DUT_ANALOG_IN_CHANNELS];
whismanoid 13:184a08909405 2280 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2281 #ifndef HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 2282 #define HAS_SPI_AIN_customChannelHeader 0
whismanoid 13:184a08909405 2283 #endif
whismanoid 13:184a08909405 2284 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2285 const char* const SPI_AIN_customChannelHeader_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2286 "", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2287 "", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2288 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2289 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2290 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2291 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2292 };
whismanoid 13:184a08909405 2293 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 3:9055e17e181a 2294 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2295 // ---------- Measure_Voltage_custom_props in Measure_Voltage @pre and in class properties ----------
whismanoid 3:9055e17e181a 2296 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 2297 // MAX11410 specific per-channel config register v_filter
whismanoid 3:9055e17e181a 2298 uint8_t SPI_AIN_Cfg_v_filter_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2299 0x34, // AIN0 @ v_filter=0x34
whismanoid 3:9055e17e181a 2300 0x34, // AIN1 @ v_filter=0x34
whismanoid 3:9055e17e181a 2301 0x34, // AIN2 @ v_filter=0x34
whismanoid 3:9055e17e181a 2302 0x34, // AIN3 @ v_filter=0x34
whismanoid 3:9055e17e181a 2303 0x34, // AIN4 @ v_filter=0x34
whismanoid 3:9055e17e181a 2304 0x34, // AIN5 @ v_filter=0x34
whismanoid 3:9055e17e181a 2305 0x34, // AIN6 @ v_filter=0x34
whismanoid 3:9055e17e181a 2306 0x34, // AIN7 @ v_filter=0x34
whismanoid 3:9055e17e181a 2307 0x34, // AIN8 @ v_filter=0x34
whismanoid 3:9055e17e181a 2308 0x34, // AIN9 @ v_filter=0x34
whismanoid 3:9055e17e181a 2309 };
whismanoid 3:9055e17e181a 2310 //
whismanoid 4:d9b05924ad4c 2311 // MAX11410 specific per-channel config register v_ctrl
whismanoid 3:9055e17e181a 2312 uint8_t SPI_AIN_Cfg_v_ctrl_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2313 0x42, // AIN0 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2314 0x42, // AIN1 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2315 0x42, // AIN2 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2316 0x42, // AIN3 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2317 0x42, // AIN4 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2318 0x42, // AIN5 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2319 0x42, // AIN6 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2320 0x42, // AIN7 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2321 0x42, // AIN8 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2322 0x42, // AIN9 @ v_ctrl=0x42
whismanoid 3:9055e17e181a 2323 };
whismanoid 3:9055e17e181a 2324 //
whismanoid 4:d9b05924ad4c 2325 // MAX11410 specific per-channel config register v_pga
whismanoid 3:9055e17e181a 2326 uint8_t SPI_AIN_Cfg_v_pga_ch[NUM_DUT_ANALOG_IN_CHANNELS] = {
whismanoid 3:9055e17e181a 2327 0x00, // AIN0 @ v_pga=0x00
whismanoid 3:9055e17e181a 2328 0x00, // AIN1 @ v_pga=0x00
whismanoid 3:9055e17e181a 2329 0x00, // AIN2 @ v_pga=0x00
whismanoid 3:9055e17e181a 2330 0x00, // AIN3 @ v_pga=0x00
whismanoid 3:9055e17e181a 2331 0x00, // AIN4 @ v_pga=0x00
whismanoid 3:9055e17e181a 2332 0x00, // AIN5 @ v_pga=0x00
whismanoid 3:9055e17e181a 2333 0x00, // AIN6 @ v_pga=0x00
whismanoid 3:9055e17e181a 2334 0x00, // AIN7 @ v_pga=0x00
whismanoid 3:9055e17e181a 2335 0x00, // AIN8 @ v_pga=0x00
whismanoid 3:9055e17e181a 2336 0x00, // AIN9 @ v_pga=0x00
whismanoid 3:9055e17e181a 2337 };
whismanoid 3:9055e17e181a 2338 //
whismanoid 3:9055e17e181a 2339 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2340 // ---------- Measure_Voltage_custom_props ----------
whismanoid 0:cb44e2e9ec4c 2341 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2342 // filter register configuration in Measure_Voltage and Read_All_Voltages CONV_TYPE_01_Continuous
whismanoid 0:cb44e2e9ec4c 2343 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2344 //~ const uint8_t custom_v_filter = 0x00; // @ v_filter=0x00 -- LINEF_00_50Hz_60Hz_FIR RATE_0000 | 1.1SPS
whismanoid 0:cb44e2e9ec4c 2345 //~ const uint8_t custom_v_filter = 0x01; // @ v_filter=0x01 -- LINEF_00_50Hz_60Hz_FIR RATE_0001 | 2.1SPS
whismanoid 0:cb44e2e9ec4c 2346 //~ const uint8_t custom_v_filter = 0x02; // @ v_filter=0x02 -- LINEF_00_50Hz_60Hz_FIR RATE_0010 | 4.2SPS
whismanoid 0:cb44e2e9ec4c 2347 //~ const uint8_t custom_v_filter = 0x03; // @ v_filter=0x03 -- LINEF_00_50Hz_60Hz_FIR RATE_0011 | 8.4SPS
whismanoid 0:cb44e2e9ec4c 2348 //~ const uint8_t custom_v_filter = 0x04; // @ v_filter=0x04 -- LINEF_00_50Hz_60Hz_FIR RATE_0100 | 16.8SPS
whismanoid 0:cb44e2e9ec4c 2349 //~ const uint8_t custom_v_filter = 0x10; // @ v_filter=0x10 -- LINEF_01_50Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2350 //~ const uint8_t custom_v_filter = 0x11; // @ v_filter=0x11 -- LINEF_01_50Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2351 //~ const uint8_t custom_v_filter = 0x12; // @ v_filter=0x12 -- LINEF_01_50Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2352 //~ const uint8_t custom_v_filter = 0x13; // @ v_filter=0x13 -- LINEF_01_50Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2353 //~ const uint8_t custom_v_filter = 0x14; // @ v_filter=0x14 -- LINEF_01_50Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2354 //~ const uint8_t custom_v_filter = 0x15; // @ v_filter=0x15 -- LINEF_01_50Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2355 //~ const uint8_t custom_v_filter = 0x20; // @ v_filter=0x20 -- LINEF_10_60Hz_FIR RATE_0000 | 1.3SPS
whismanoid 0:cb44e2e9ec4c 2356 //~ const uint8_t custom_v_filter = 0x21; // @ v_filter=0x21 -- LINEF_10_60Hz_FIR RATE_0001 | 2.7SPS
whismanoid 0:cb44e2e9ec4c 2357 //~ const uint8_t custom_v_filter = 0x22; // @ v_filter=0x22 -- LINEF_10_60Hz_FIR RATE_0010 | 5.3SPS
whismanoid 0:cb44e2e9ec4c 2358 //~ const uint8_t custom_v_filter = 0x23; // @ v_filter=0x23 -- LINEF_10_60Hz_FIR RATE_0011 | 10.7SPS
whismanoid 0:cb44e2e9ec4c 2359 //~ const uint8_t custom_v_filter = 0x24; // @ v_filter=0x24 -- LINEF_10_60Hz_FIR RATE_0100 | 21.3SPS
whismanoid 0:cb44e2e9ec4c 2360 //~ const uint8_t custom_v_filter = 0x25; // @ v_filter=0x25 -- LINEF_10_60Hz_FIR RATE_0101 | 40.0SPS
whismanoid 0:cb44e2e9ec4c 2361 //~ const uint8_t custom_v_filter = 0x30; // @ v_filter=0x30 -- LINEF_11_SINC4 RATE_0000 | 4SPS
whismanoid 0:cb44e2e9ec4c 2362 //~ const uint8_t custom_v_filter = 0x31; // @ v_filter=0x31 -- LINEF_11_SINC4 RATE_0001 | 10SPS
whismanoid 0:cb44e2e9ec4c 2363 //~ const uint8_t custom_v_filter = 0x32; // @ v_filter=0x32 -- LINEF_11_SINC4 RATE_0010 | 20SPS
whismanoid 0:cb44e2e9ec4c 2364 //~ const uint8_t custom_v_filter = 0x33; // @ v_filter=0x33 -- LINEF_11_SINC4 RATE_0011 | 40SPS
whismanoid 0:cb44e2e9ec4c 2365 //~ const uint8_t custom_v_filter = 0x34; // @ v_filter=0x34 --*LINEF_11_SINC4 RATE_0100 | 60SPS
whismanoid 0:cb44e2e9ec4c 2366 //~ const uint8_t custom_v_filter = 0x35; // @ v_filter=0x35 -- LINEF_11_SINC4 RATE_0101 | 120SPS
whismanoid 0:cb44e2e9ec4c 2367 //~ const uint8_t custom_v_filter = 0x36; // @ v_filter=0x36 -- LINEF_11_SINC4 RATE_0110 | 240SPS
whismanoid 0:cb44e2e9ec4c 2368 //~ const uint8_t custom_v_filter = 0x37; // @ v_filter=0x37 -- LINEF_11_SINC4 RATE_0111 | 480SPS
whismanoid 0:cb44e2e9ec4c 2369 //~ const uint8_t custom_v_filter = 0x38; // @ v_filter=0x38 -- LINEF_11_SINC4 RATE_1000 | 960SPS
whismanoid 0:cb44e2e9ec4c 2370 //~ const uint8_t custom_v_filter = 0x39; // @ v_filter=0x39 -- LINEF_11_SINC4 RATE_1001 | 1920SPS
whismanoid 0:cb44e2e9ec4c 2371 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2372 //
whismanoid 0:cb44e2e9ec4c 2373 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2374 // pga register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 0:cb44e2e9ec4c 2375 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2376 //~ const uint8_t custom_v_pga = 0x00; // @ v_pga=0x00 -- 0x00 SIG_PATH_00_BUFFERED
whismanoid 0:cb44e2e9ec4c 2377 //~ const uint8_t custom_v_pga = 0x10; // @ v_pga=0x10 -- 0x10 SIG_PATH_01_BYPASS
whismanoid 0:cb44e2e9ec4c 2378 //~ const uint8_t custom_v_pga = 0x20; // @ v_pga=0x20 -- 0x20 SIG_PATH_10_PGA GAIN_000_1
whismanoid 0:cb44e2e9ec4c 2379 //~ const uint8_t custom_v_pga = 0x21; // @ v_pga=0x21 --*0x21 SIG_PATH_10_PGA GAIN_001_2
whismanoid 0:cb44e2e9ec4c 2380 //~ const uint8_t custom_v_pga = 0x22; // @ v_pga=0x22 -- 0x22 SIG_PATH_10_PGA GAIN_010_4
whismanoid 0:cb44e2e9ec4c 2381 //~ const uint8_t custom_v_pga = 0x23; // @ v_pga=0x23 -- 0x23 SIG_PATH_10_PGA GAIN_011_8
whismanoid 0:cb44e2e9ec4c 2382 //~ const uint8_t custom_v_pga = 0x24; // @ v_pga=0x24 -- 0x24 SIG_PATH_10_PGA GAIN_100_16
whismanoid 0:cb44e2e9ec4c 2383 //~ const uint8_t custom_v_pga = 0x25; // @ v_pga=0x25 -- 0x25 SIG_PATH_10_PGA GAIN_101_32
whismanoid 0:cb44e2e9ec4c 2384 //~ const uint8_t custom_v_pga = 0x26; // @ v_pga=0x26 -- 0x26 SIG_PATH_10_PGA GAIN_110_64
whismanoid 0:cb44e2e9ec4c 2385 //~ const uint8_t custom_v_pga = 0x27; // @ v_pga=0x27 -- 0x27 SIG_PATH_10_PGA GAIN_111_128
whismanoid 0:cb44e2e9ec4c 2386 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2387 //
whismanoid 0:cb44e2e9ec4c 2388 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 0:cb44e2e9ec4c 2389 // ctrl register configuration in Measure_Voltage and Read_All_Voltages
whismanoid 3:9055e17e181a 2390 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2391 //~ const uint8_t custom_v_ctrl = 0x40; // @ v_ctrl=0x40 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1
whismanoid 0:cb44e2e9ec4c 2392 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2393 //~ const uint8_t custom_v_ctrl = 0x58; // @ v_ctrl=0x58 -- 0x40 unipolar, 0x00 REF_SEL_000_AIN0_AIN1, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2394 //
whismanoid 0:cb44e2e9ec4c 2395 //~ const uint8_t custom_v_ctrl = 0x41; // @ v_ctrl=0x41 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N
whismanoid 0:cb44e2e9ec4c 2396 //~ const uint8_t custom_v_ctrl = 0x45; // @ v_ctrl=0x45 -- 0x40 unipolar, 0x05 REF_SEL_101_REF1P_AGND
whismanoid 0:cb44e2e9ec4c 2397 //~ const uint8_t custom_v_ctrl = 0x59; // @ v_ctrl=0x59 -- 0x40 unipolar, 0x01 REF_SEL_001_REF1P_REF1N, 0x18 refbuf
whismanoid 0:cb44e2e9ec4c 2398 //
whismanoid 0:cb44e2e9ec4c 2399 //~ const uint8_t custom_v_ctrl = 0x42; // @ v_ctrl=0x42 -- 0x40 unipolar, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2400 //~ const uint8_t custom_v_ctrl = 0x46; // @ v_ctrl=0x46 -- 0x40 unipolar, 0x06 REF_SEL_110_REF2P_AGND
whismanoid 0:cb44e2e9ec4c 2401 //~ const uint8_t custom_v_ctrl = 0x22; // @ v_ctrl=0x22 -- 0x20 bipolar offset binary, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2402 //~ const uint8_t custom_v_ctrl = 0x02; // @ v_ctrl=0x02 -- 0x00 bipolar 2's complement, 0x02 REF_SEL_010_REF2P_REF2N
whismanoid 0:cb44e2e9ec4c 2403 //
whismanoid 0:cb44e2e9ec4c 2404 //~ const uint8_t custom_v_ctrl = 0x44; // @ v_ctrl=0x44 -- 0x40 unipolar, 0x04 REF_SEL_100_AIN0_AGND
whismanoid 0:cb44e2e9ec4c 2405 //~ const uint8_t custom_v_ctrl = 0x47; // @ v_ctrl=0x47 -- 0x40 unipolar, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2406 //~ const uint8_t custom_v_ctrl = 0x27; // @ v_ctrl=0x27 -- 0x20 bipolar offset binary, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2407 //~ const uint8_t custom_v_ctrl = 0x07; // @ v_ctrl=0x07 -- 0x00 bipolar 2's complement, 0x07 REF_SEL_111_AVDD_AGND
whismanoid 0:cb44e2e9ec4c 2408 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 0:cb44e2e9ec4c 2409
whismanoid 3:9055e17e181a 2410 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2411 // example code declare SPI interface (GPIO controlled CS)
whismanoid 0:cb44e2e9ec4c 2412 #if defined(TARGET_MAX32625MBED)
whismanoid 0:cb44e2e9ec4c 2413 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 2414 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 19:5ff09c8e9daf 2415 #elif defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 0:cb44e2e9ec4c 2416 #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 0:cb44e2e9ec4c 2417 SPI spi(SPI0_MOSI, SPI0_MISO, SPI0_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625PICO: pin P0_5 P0_6 P0_4
whismanoid 0:cb44e2e9ec4c 2418 DigitalOut spi_cs(SPI0_SS); // TARGET_MAX32625PICO: pin P0_7
whismanoid 0:cb44e2e9ec4c 2419 #elif defined(TARGET_MAX32600MBED)
whismanoid 0:cb44e2e9ec4c 2420 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 0:cb44e2e9ec4c 2421 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2422 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 0:cb44e2e9ec4c 2423 // TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
whismanoid 0:cb44e2e9ec4c 2424 // void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
whismanoid 0:cb44e2e9ec4c 2425 //
whismanoid 0:cb44e2e9ec4c 2426 // TODO1: NUCLEO_F446RE SPI not working; CS and MOSI data looks OK but no SCLK clock pulses.
whismanoid 0:cb44e2e9ec4c 2427 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 2428 DigitalOut spi_cs(SPI_CS); // TARGET_NUCLEO_F446RE: PB_6 Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2429 //
whismanoid 0:cb44e2e9ec4c 2430 #else
whismanoid 3:9055e17e181a 2431 SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 3:9055e17e181a 2432 DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 0:cb44e2e9ec4c 2433 #endif
whismanoid 0:cb44e2e9ec4c 2434
whismanoid 0:cb44e2e9ec4c 2435 // example code declare GPIO interface pins
whismanoid 0:cb44e2e9ec4c 2436 // example code declare device instance
whismanoid 3:9055e17e181a 2437 MAX11410 g_MAX11410_device(spi, spi_cs, MAX11410::MAX11410_IC);
whismanoid 3:9055e17e181a 2438 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 2439
whismanoid 1:747f1602abfc 2440 //--------------------------------------------------
whismanoid 3:9055e17e181a 2441 // Option to Datalog Arduino platform analog inputs
whismanoid 3:9055e17e181a 2442 #ifndef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2443 #define LOG_PLATFORM_AIN 6
whismanoid 3:9055e17e181a 2444 //~ #undef LOG_PLATFORM_AIN
whismanoid 3:9055e17e181a 2445 #endif
whismanoid 3:9055e17e181a 2446 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 1:747f1602abfc 2447 //#ifndef NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 1:747f1602abfc 2448 //#define NUM_PLATFORM_ANALOG_IN_CHANNELS 6
whismanoid 1:747f1602abfc 2449 //#endif
whismanoid 1:747f1602abfc 2450 const int NUM_PLATFORM_ANALOG_IN_CHANNELS = 6;
whismanoid 1:747f1602abfc 2451 const double adc_full_scale_voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 10:04022a61b527 2452 analogInPin_fullScaleVoltage[0], // 1.2,
whismanoid 10:04022a61b527 2453 analogInPin_fullScaleVoltage[1], // 1.2,
whismanoid 10:04022a61b527 2454 analogInPin_fullScaleVoltage[2], // 1.2,
whismanoid 10:04022a61b527 2455 analogInPin_fullScaleVoltage[3], // 1.2,
whismanoid 10:04022a61b527 2456 analogInPin_fullScaleVoltage[4], // 6.0
whismanoid 10:04022a61b527 2457 analogInPin_fullScaleVoltage[5], // 6.0
whismanoid 0:cb44e2e9ec4c 2458 };
whismanoid 9:45f98573eb6d 2459 // Platform ADC individual channels 1=LSB, 2=Volt, 0=Disabled
whismanoid 9:45f98573eb6d 2460 typedef enum Platform_AIN_Enable_t {
whismanoid 9:45f98573eb6d 2461 Platform_AIN_Disable = 0,
whismanoid 9:45f98573eb6d 2462 Platform_AIN_Enable_LSB = 1,
whismanoid 9:45f98573eb6d 2463 Platform_AIN_Enable_Volt = 2,
whismanoid 9:45f98573eb6d 2464 } Platform_AIN_Enable_t;
whismanoid 13:184a08909405 2465 uint8_t Platform_Enable_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 9:45f98573eb6d 2466 Platform_AIN_Enable_Volt, // AIN0 2=Volt
whismanoid 9:45f98573eb6d 2467 Platform_AIN_Enable_Volt, // AIN1 2=Volt
whismanoid 9:45f98573eb6d 2468 Platform_AIN_Enable_Volt, // AIN2 2=Volt
whismanoid 9:45f98573eb6d 2469 Platform_AIN_Enable_Volt, // AIN3 2=Volt
whismanoid 9:45f98573eb6d 2470 Platform_AIN_Enable_Volt, // AIN4 2=Volt
whismanoid 9:45f98573eb6d 2471 Platform_AIN_Enable_Volt, // AIN5 2=Volt
whismanoid 9:45f98573eb6d 2472 };
whismanoid 37:3f369235e5bc 2473 // Option to report average value of Arduino platform analog inputs
whismanoid 37:3f369235e5bc 2474 #ifndef USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2475 #define USE_Platform_AIN_Average 1
whismanoid 37:3f369235e5bc 2476 //~ #undef USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2477 #endif
whismanoid 37:3f369235e5bc 2478 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2479 #endif // USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2480 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 2481 int Platform_AIN_Average_N = 16;
whismanoid 37:3f369235e5bc 2482 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 2483 // Option to apply calibration to Arduino platform analog inputs
whismanoid 34:a1993a1ee904 2484 #ifndef HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2485 #define HAS_Platform_AIN_Calibration 1
whismanoid 34:a1993a1ee904 2486 //~ #undef HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2487 #endif
whismanoid 34:a1993a1ee904 2488 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2489 double CalibratedNormValue(int channel_0_5, double raw_normValue_0_1);
whismanoid 34:a1993a1ee904 2490 // Calibration is between two points for each channel, defined by
whismanoid 34:a1993a1ee904 2491 // a normalized value between 0% and 100%, and the corresponding voltage.
whismanoid 34:a1993a1ee904 2492 // nominal 5% fullscale point; normValue_0_1 < 0.5
whismanoid 34:a1993a1ee904 2493 // calibration_05_normValue_0_1, calibration_05_V should be around 5% or 25%
whismanoid 42:89607d5d4e6d 2494 extern double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 42:89607d5d4e6d 2495 extern double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 34:a1993a1ee904 2496 // nominal 95% fullscale point; normValue_0_1 > 0.5
whismanoid 34:a1993a1ee904 2497 // calibration_95_normValue_0_1, calibration_95_V should be around 95% or 75%
whismanoid 42:89607d5d4e6d 2498 extern double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 42:89607d5d4e6d 2499 extern double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 34:a1993a1ee904 2500 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2501 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2502 double CalibratedNormValue(int channel_0_5, double raw_normValue_0_1)
whismanoid 34:a1993a1ee904 2503 {
whismanoid 34:a1993a1ee904 2504 // TODO: return corrected normValue_0_1 using two-point linear calibration
whismanoid 34:a1993a1ee904 2505 // point 1: calibration_05_normValue_0_1[ch], calibration_05_V[ch]
whismanoid 34:a1993a1ee904 2506 // point 2: calibration_95_normValue_0_1[ch], calibration_95_V[ch]
whismanoid 34:a1993a1ee904 2507 // validate that there is enough span to get sensible results
whismanoid 34:a1993a1ee904 2508 //
whismanoid 34:a1993a1ee904 2509 int ch = channel_0_5;
whismanoid 34:a1993a1ee904 2510 // 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 2511 // ch, calibration_05_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 2512 // ch, calibration_05_V[ch],
whismanoid 34:a1993a1ee904 2513 // ch, calibration_95_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 2514 // ch, calibration_95_V[ch]
whismanoid 34:a1993a1ee904 2515 // );
whismanoid 34:a1993a1ee904 2516 // cmdLine.serial().printf("\r\n adc_full_scale_voltage[%d] = %1.6fV",
whismanoid 34:a1993a1ee904 2517 // ch,
whismanoid 34:a1993a1ee904 2518 // adc_full_scale_voltage[ch]
whismanoid 34:a1993a1ee904 2519 // );
whismanoid 34:a1993a1ee904 2520 // raw normValue nominal 5% and 95% points
whismanoid 34:a1993a1ee904 2521 double raw_05_normValue = calibration_05_normValue_0_1[ch];
whismanoid 34:a1993a1ee904 2522 double raw_95_normValue = calibration_95_normValue_0_1[ch];
whismanoid 34:a1993a1ee904 2523 // calibrated normValue nominal 5% and 95% points
whismanoid 34:a1993a1ee904 2524 // divide V/adc_full_scale_voltage[0] to get normValue_0_1
whismanoid 34:a1993a1ee904 2525 double cal_05_normValue = calibration_05_V[ch] / adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 2526 double cal_95_normValue = calibration_95_V[ch] / adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 2527 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) cal_05_normValue = %1.6f",
whismanoid 34:a1993a1ee904 2528 // ch,
whismanoid 34:a1993a1ee904 2529 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2530 // cal_05_normValue
whismanoid 34:a1993a1ee904 2531 // );
whismanoid 34:a1993a1ee904 2532 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) cal_95_normValue = %1.6f",
whismanoid 34:a1993a1ee904 2533 // ch,
whismanoid 34:a1993a1ee904 2534 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2535 // cal_95_normValue
whismanoid 34:a1993a1ee904 2536 // );
whismanoid 34:a1993a1ee904 2537 //
whismanoid 34:a1993a1ee904 2538 double span_raw = raw_95_normValue - raw_05_normValue;
whismanoid 34:a1993a1ee904 2539 double span_cal = cal_95_normValue - cal_05_normValue;
whismanoid 34:a1993a1ee904 2540 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) span_raw = %1.6f",
whismanoid 34:a1993a1ee904 2541 // ch,
whismanoid 34:a1993a1ee904 2542 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2543 // span_raw
whismanoid 34:a1993a1ee904 2544 // );
whismanoid 34:a1993a1ee904 2545 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) span_cal = %1.6f",
whismanoid 34:a1993a1ee904 2546 // ch,
whismanoid 34:a1993a1ee904 2547 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2548 // span_cal
whismanoid 34:a1993a1ee904 2549 // );
whismanoid 34:a1993a1ee904 2550 // if calibration is not valid, return unmodified normValue_0_1 and print a warning
whismanoid 34:a1993a1ee904 2551 if (span_raw < 0.001) {
whismanoid 34:a1993a1ee904 2552 cmdLine.serial().printf("\r\n! CalibratedNormValue(%d, %1.6f) ERRRRRR span_raw = %1.6f",
whismanoid 34:a1993a1ee904 2553 ch,
whismanoid 34:a1993a1ee904 2554 raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2555 span_raw
whismanoid 34:a1993a1ee904 2556 );
whismanoid 34:a1993a1ee904 2557 return raw_normValue_0_1;
whismanoid 34:a1993a1ee904 2558 }
whismanoid 34:a1993a1ee904 2559 if (span_cal < 0.001) {
whismanoid 34:a1993a1ee904 2560 cmdLine.serial().printf("\r\n! CalibratedNormValue(%d, %1.6f) ERRRRRR span_cal = %1.6f",
whismanoid 34:a1993a1ee904 2561 ch,
whismanoid 34:a1993a1ee904 2562 raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2563 span_cal
whismanoid 34:a1993a1ee904 2564 );
whismanoid 34:a1993a1ee904 2565 return raw_normValue_0_1;
whismanoid 34:a1993a1ee904 2566 }
whismanoid 34:a1993a1ee904 2567 double slope_correction = span_cal / span_raw;
whismanoid 34:a1993a1ee904 2568 double corrected_normValue_0_1 = cal_05_normValue + ((raw_normValue_0_1 - raw_05_normValue) * slope_correction);
whismanoid 34:a1993a1ee904 2569 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) slope_correction = %1.6f",
whismanoid 34:a1993a1ee904 2570 // ch,
whismanoid 34:a1993a1ee904 2571 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2572 // slope_correction
whismanoid 34:a1993a1ee904 2573 // );
whismanoid 34:a1993a1ee904 2574 // cmdLine.serial().printf("\r\n CalibratedNormValue(%d, %1.6f) corrected_normValue_0_1 = %1.6f\r\n",
whismanoid 34:a1993a1ee904 2575 // ch,
whismanoid 34:a1993a1ee904 2576 // raw_normValue_0_1,
whismanoid 34:a1993a1ee904 2577 // corrected_normValue_0_1
whismanoid 34:a1993a1ee904 2578 // );
whismanoid 34:a1993a1ee904 2579 return corrected_normValue_0_1;
whismanoid 34:a1993a1ee904 2580 }
whismanoid 34:a1993a1ee904 2581 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 2582 // Option to customize channel names in datalog header line
whismanoid 13:184a08909405 2583 #ifndef HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 2584 #define HAS_Platform_AIN_customChannelHeader 1
whismanoid 13:184a08909405 2585 #endif
whismanoid 13:184a08909405 2586 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 2587 const char* const Platform_AIN_customChannelHeader_ch[NUM_PLATFORM_ANALOG_IN_CHANNELS] = {
whismanoid 13:184a08909405 2588 "=AIN4", // MAX40108: AIN0_1V0_current_ 0.591202*100/3.34 = 17.70065868263473mA
whismanoid 13:184a08909405 2589 "=AIN5", // MAX40108: AIN1_1V0_voltage
whismanoid 13:184a08909405 2590 "WE", // MAX40108: AIN2_WE
whismanoid 13:184a08909405 2591 "CE", // MAX40108: AIN3_CE
whismanoid 13:184a08909405 2592 "*100/3.34=mA", // MAX40108: AIN4_*100/3.34=mA
whismanoid 13:184a08909405 2593 "CELL_VOLTAGE", // MAX40108: AIN5_CELL_VOLTAGE
whismanoid 13:184a08909405 2594 };
whismanoid 13:184a08909405 2595 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 1:747f1602abfc 2596 //--------------------------------------------------
whismanoid 1:747f1602abfc 2597 // Option to log platform analog inputs as raw LSB code
whismanoid 1:747f1602abfc 2598 #ifndef LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2599 #define LOG_PLATFORM_ANALOG_IN_LSB 0
whismanoid 1:747f1602abfc 2600 #endif
whismanoid 1:747f1602abfc 2601 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 1:747f1602abfc 2602 int Platform_LSB[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2603 #endif
whismanoid 1:747f1602abfc 2604
whismanoid 1:747f1602abfc 2605 //--------------------------------------------------
whismanoid 1:747f1602abfc 2606 // Option to use platform analog inputs as Voltage
whismanoid 1:747f1602abfc 2607 #ifndef LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2608 #define LOG_PLATFORM_ANALOG_IN_VOLTS 1
whismanoid 1:747f1602abfc 2609 #endif
whismanoid 1:747f1602abfc 2610 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 1:747f1602abfc 2611 double Platform_Voltage[NUM_PLATFORM_ANALOG_IN_CHANNELS];
whismanoid 1:747f1602abfc 2612 #endif
whismanoid 3:9055e17e181a 2613 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 0:cb44e2e9ec4c 2614
whismanoid 10:04022a61b527 2615 //--------------------------------------------------
whismanoid 10:04022a61b527 2616 // Option to use Command forwarding to Auxiliary serial port
whismanoid 10:04022a61b527 2617 // Command forwarding to Auxiliary serial port TX/RX
whismanoid 10:04022a61b527 2618 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial
whismanoid 10:04022a61b527 2619 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial
whismanoid 10:04022a61b527 2620 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2621 #ifndef USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2622 #define USE_AUX_SERIAL_CMD_FORWARDING 1
whismanoid 10:04022a61b527 2623 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2624 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2625 // Command forwarding to Auxiliary serial port TX/RX #257 -- global parameters
whismanoid 10:04022a61b527 2626 const size_t RX_STRING_BUF_SIZE = 1000;
whismanoid 10:04022a61b527 2627 int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 2628 // transmit command string by AUX TX
whismanoid 10:04022a61b527 2629 #if 0
whismanoid 10:04022a61b527 2630 int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 2631 int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 2632 int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 2633 #endif
whismanoid 10:04022a61b527 2634 // capture received string from AUX RX
whismanoid 10:04022a61b527 2635 Timer g_auxSerialCom_Timer;
whismanoid 10:04022a61b527 2636 int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 2637 int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 2638 int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 2639 int g_auxSerialCom_rx_idle_ms = 500; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 2640 int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 2641 const int aux_serial_cmd_forwarding_rx_eot_not_used = 'x';
whismanoid 10:04022a61b527 2642 int g_auxSerialCom_rx_eot = aux_serial_cmd_forwarding_rx_eot_not_used; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 2643 //~ int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text string?
whismanoid 10:04022a61b527 2644 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2645 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2646 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257
whismanoid 10:04022a61b527 2647 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 2648 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2649 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2650 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2651 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2652 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2653 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 2654 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2655 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2656 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 2657 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 2658 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2659 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 2660 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 2661 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2662
whismanoid 8:dffee7509bfb 2663 // CODE GENERATOR: example code for ADC: serial port declaration
whismanoid 8:dffee7509bfb 2664 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2665 // Declare the Serial driver
whismanoid 8:dffee7509bfb 2666 // default baud rate settings are 9600 8N1
whismanoid 8:dffee7509bfb 2667 // install device driver from http://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe
whismanoid 8:dffee7509bfb 2668 // see docs https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/getting_started/what_need/
whismanoid 8:dffee7509bfb 2669 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2670 #if defined(TARGET_MAX32630)
whismanoid 8:dffee7509bfb 2671 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2672 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2673 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2674 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2675 //
whismanoid 8:dffee7509bfb 2676 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2677 Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32630FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2678 //Serial J3AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32630FTHR: P5_4,P5_3 (J3.7,J3.8)
whismanoid 8:dffee7509bfb 2679 //Serial BTAUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32630FTHR: P0_1,P0_0 (Bluetooth PAN1326B)
whismanoid 8:dffee7509bfb 2680 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2681 //
whismanoid 8:dffee7509bfb 2682 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2683 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2684 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32630FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2685 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2686 //
whismanoid 8:dffee7509bfb 2687 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2688 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2689 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2690 USBSerial serial;
whismanoid 8:dffee7509bfb 2691 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2692 #elif defined(TARGET_MAX32625MBED)
whismanoid 8:dffee7509bfb 2693 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625MBED: P0_1,P0_0 (Arduino D1,D0)
whismanoid 8:dffee7509bfb 2694 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2695 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625MBED: P3_1,P3_0 (J15-LEDgreen,LEDred)
whismanoid 8:dffee7509bfb 2696 //
whismanoid 8:dffee7509bfb 2697 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2698 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2699 Serial DAPLINKserial(P2_1,P2_0); // tx,rx UART1 MAX32625MBED: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2700 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2701 //
whismanoid 8:dffee7509bfb 2702 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2703 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2704 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2705 USBSerial serial;
whismanoid 8:dffee7509bfb 2706 //--------------------------------------------------
whismanoid 22:d6dc8a85f435 2707 #elif defined(TARGET_MAX32625PICO)
whismanoid 8:dffee7509bfb 2708 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2709 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32625PICO: P2_1,P2_0 (underside?)
whismanoid 8:dffee7509bfb 2710 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2711 //
whismanoid 8:dffee7509bfb 2712 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2713 Serial AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32625PICO: P0_1,P0_0 (pin 19/20)
whismanoid 8:dffee7509bfb 2714 #define HAS_AUX_SERIAL 1
whismanoid 8:dffee7509bfb 2715 //
whismanoid 8:dffee7509bfb 2716 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2717 Serial DAPLINKserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32625PICO: P3_1,P3_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2718 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2719 //
whismanoid 8:dffee7509bfb 2720 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2721 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2722 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2723 USBSerial serial;
whismanoid 22:d6dc8a85f435 2724 //--------------------------------------------------
whismanoid 22:d6dc8a85f435 2725 #elif defined(TARGET_MAX40108DEMOP2U9)
whismanoid 22:d6dc8a85f435 2726 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX40108DEMOP2U9: P0_1,P0_0 (J90.1/J90.0 to console)
whismanoid 22:d6dc8a85f435 2727 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK)
whismanoid 22:d6dc8a85f435 2728 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX40108DEMOP2U9: P3_1,P3_0 (unavailable)
whismanoid 22:d6dc8a85f435 2729 //
whismanoid 22:d6dc8a85f435 2730 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial is used as main serial port in MAX40108 Demo board
whismanoid 22:d6dc8a85f435 2731 Serial serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX40108DEMOP2U9: P0_1,P0_0 (J90.1/J90.0 to console)
whismanoid 22:d6dc8a85f435 2732 // #define HAS_AUX_SERIAL 1
whismanoid 22:d6dc8a85f435 2733 //
whismanoid 22:d6dc8a85f435 2734 // Hardware serial port over DAPLink
whismanoid 22:d6dc8a85f435 2735 // connection to external MAX32625PICO(DAPLINK) needed TX/RX swap in firmware.
whismanoid 22:d6dc8a85f435 2736 // MAX32625PICO(DAPLINK) drives DAPLINK.8, listens on DAPLINK.6.
whismanoid 22:d6dc8a85f435 2737 // See AN6350 MAX32625 Users Guide 7.5.2.3.1 TX and RX Pin Mapping for UART 1 -- Mapping Option B
whismanoid 39:4d285e961435 2738 #ifdef BOARD_SERIAL_NUMBER
whismanoid 39:4d285e961435 2739 // data unique to certain boards based on serial number
whismanoid 39:4d285e961435 2740 # if (BOARD_SERIAL_NUMBER) == 0
whismanoid 39:4d285e961435 2741 #warning "(BOARD_SERIAL_NUMBER) == 0"
whismanoid 39:4d285e961435 2742 // s/n 0 is not really a MAX40108 board, it's actually a MAX32625PICO used for early development. So no swap.
whismanoid 39:4d285e961435 2743 Serial DAPLINKserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option A (normal)
whismanoid 39:4d285e961435 2744 //Serial DAPLINKserial(UART1_RX,UART1_TX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option B (TX/RX-swap)
whismanoid 39:4d285e961435 2745 #define HAS_DAPLINK_SERIAL 1
whismanoid 39:4d285e961435 2746 //
whismanoid 39:4d285e961435 2747 // # elif (BOARD_SERIAL_NUMBER) == 1
whismanoid 39:4d285e961435 2748 // #warning "(BOARD_SERIAL_NUMBER) == 1"
whismanoid 39:4d285e961435 2749 // //
whismanoid 39:4d285e961435 2750 // # elif (BOARD_SERIAL_NUMBER) == 2
whismanoid 39:4d285e961435 2751 // #warning "(BOARD_SERIAL_NUMBER) == 2"
whismanoid 39:4d285e961435 2752 // //
whismanoid 39:4d285e961435 2753 // # elif (BOARD_SERIAL_NUMBER) == 3
whismanoid 39:4d285e961435 2754 // #warning "(BOARD_SERIAL_NUMBER) == 3"
whismanoid 39:4d285e961435 2755 // //
whismanoid 39:4d285e961435 2756 // # elif (BOARD_SERIAL_NUMBER) == 4
whismanoid 39:4d285e961435 2757 // #warning "(BOARD_SERIAL_NUMBER) == 4"
whismanoid 39:4d285e961435 2758 // //
whismanoid 39:4d285e961435 2759 // # elif (BOARD_SERIAL_NUMBER) == 5
whismanoid 39:4d285e961435 2760 // #warning "(BOARD_SERIAL_NUMBER) == 5"
whismanoid 39:4d285e961435 2761 // //
whismanoid 39:4d285e961435 2762 // # elif (BOARD_SERIAL_NUMBER) == 6
whismanoid 39:4d285e961435 2763 // #warning "(BOARD_SERIAL_NUMBER) == 6"
whismanoid 39:4d285e961435 2764 // //
whismanoid 39:4d285e961435 2765 # else
whismanoid 39:4d285e961435 2766 // #warning "BOARD_SERIAL_NUMBER defined but not recognized"
whismanoid 22:d6dc8a85f435 2767 //Serial DAPLINKserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option A (normal)
whismanoid 22:d6dc8a85f435 2768 Serial DAPLINKserial(UART1_RX,UART1_TX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option B (TX/RX-swap)
whismanoid 22:d6dc8a85f435 2769 #define HAS_DAPLINK_SERIAL 1
whismanoid 39:4d285e961435 2770 # endif
whismanoid 39:4d285e961435 2771 #else // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 39:4d285e961435 2772 #warning "BOARD_SERIAL_NUMBER not defined; using default values"
whismanoid 39:4d285e961435 2773 //Serial DAPLINKserial(UART1_TX,UART1_RX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option A (normal)
whismanoid 39:4d285e961435 2774 Serial DAPLINKserial(UART1_RX,UART1_TX); // tx,rx UART1 MAX40108DEMOP2U9: P2_1,P2_0 (DAPLINK) Mapping Option B (TX/RX-swap)
whismanoid 39:4d285e961435 2775 #define HAS_DAPLINK_SERIAL 1
whismanoid 39:4d285e961435 2776 //
whismanoid 39:4d285e961435 2777 #endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 22:d6dc8a85f435 2778 //
whismanoid 22:d6dc8a85f435 2779 // Serial AUXserial(UART1_TX,UART1_RX); // tx,rx UART2 MAX40108DEMOP2U9: P3_1,P3_0 (unavailable)
whismanoid 22:d6dc8a85f435 2780 // #define HAS_AUX_SERIAL 1
whismanoid 22:d6dc8a85f435 2781 //
whismanoid 22:d6dc8a85f435 2782 // Virtual serial port over USB
whismanoid 22:d6dc8a85f435 2783 // #include "USBSerial.h"
whismanoid 22:d6dc8a85f435 2784 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 22:d6dc8a85f435 2785 //USBSerial serial;
whismanoid 8:dffee7509bfb 2786 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2787 #elif defined(TARGET_MAX32620FTHR)
whismanoid 8:dffee7509bfb 2788 #warning "TARGET_MAX32620FTHR not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2789 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2790 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART1 MAX32620FTHR: P2_1,P2_0 (DAPLINK)
whismanoid 8:dffee7509bfb 2791 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2792 //Serial UART3serial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2793 //
whismanoid 8:dffee7509bfb 2794 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2795 Serial serial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2796 //Serial AUXserial(UART2_TX,UART2_RX); // tx,rx UART2 MAX32620FTHR: P3_1,P3_0 (J1.15,J1.14)
whismanoid 8:dffee7509bfb 2797 Serial AUXserial(UART3_TX,UART3_RX); // tx,rx UART3 MAX32620FTHR: P5_4,P5_3 (J2.7,J2.8)
whismanoid 8:dffee7509bfb 2798 //Serial PMOD0AUXserial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32620FTHR: P0_1,P0_0 (PMOD0.2,PMOD0.3)
whismanoid 8:dffee7509bfb 2799 #define HAS_AUX_SERIAL 1
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(USBTX, USBRX); // tx,rx MAX32620FTHR: P2_1,P2_0
whismanoid 8:dffee7509bfb 2804 //Serial DAPLINKserial(STDIO_UART_TX, STDIO_UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2805 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2806 //
whismanoid 8:dffee7509bfb 2807 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2808 // #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2809 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2810 //USBSerial serial; // MAX32620FTHR: USBSerial crash??
whismanoid 8:dffee7509bfb 2811 #warning "TARGET_MAX32620FTHR not previously tested; USBSerial crash?"
whismanoid 8:dffee7509bfb 2812 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2813 #elif defined(TARGET_MAX32600)
whismanoid 8:dffee7509bfb 2814 //Serial UART0serial(UART0_TX,UART0_RX); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2815 //Serial UART1serial(UART1_TX,UART1_RX); // tx,rx UART2 MAX32625MBED: P1_3,P1_2 (Arduino D3,D2)
whismanoid 8:dffee7509bfb 2816 //Serial UART2serial(UART2_TX,UART2_RX); // tx,rx UART1 MAX32625MBED: P7_3,P7_2 ( ?? )
whismanoid 8:dffee7509bfb 2817 //
whismanoid 8:dffee7509bfb 2818 // Hardware serial port over DAPLink
whismanoid 8:dffee7509bfb 2819 // The default baud rate for the DapLink UART is 9600
whismanoid 8:dffee7509bfb 2820 Serial DAPLINKserial(P1_1,P1_0); // tx,rx UART0 MAX32600MBED: P1_1,P1_0 (Arduino D1,D0)(DAPLINK)
whismanoid 8:dffee7509bfb 2821 #define HAS_DAPLINK_SERIAL 1
whismanoid 8:dffee7509bfb 2822 //
whismanoid 8:dffee7509bfb 2823 // Virtual serial port over USB
whismanoid 8:dffee7509bfb 2824 #include "USBSerial.h"
whismanoid 8:dffee7509bfb 2825 // The baud rate does not affect the virtual USBSerial UART.
whismanoid 8:dffee7509bfb 2826 USBSerial serial;
whismanoid 8:dffee7509bfb 2827 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2828 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 8:dffee7509bfb 2829 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2830 //--------------------------------------------------
whismanoid 8:dffee7509bfb 2831 #else
whismanoid 8:dffee7509bfb 2832 #if defined(SERIAL_TX)
whismanoid 8:dffee7509bfb 2833 #warning "target not previously tested; guess serial pins are SERIAL_TX, SERIAL_RX..."
whismanoid 8:dffee7509bfb 2834 Serial serial(SERIAL_TX, SERIAL_RX); // tx, rx
whismanoid 8:dffee7509bfb 2835 #elif defined(USBTX)
whismanoid 8:dffee7509bfb 2836 #warning "target not previously tested; guess serial pins are USBTX, USBRX..."
whismanoid 8:dffee7509bfb 2837 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 8:dffee7509bfb 2838 #elif defined(UART_TX)
whismanoid 8:dffee7509bfb 2839 #warning "target not previously tested; guess serial pins are UART_TX, UART_RX..."
whismanoid 8:dffee7509bfb 2840 Serial serial(UART_TX, UART_RX); // tx, rx
whismanoid 8:dffee7509bfb 2841 #else
whismanoid 8:dffee7509bfb 2842 #warning "target not previously tested; need to define serial pins..."
whismanoid 8:dffee7509bfb 2843 #endif
whismanoid 8:dffee7509bfb 2844 #endif
whismanoid 8:dffee7509bfb 2845 //
whismanoid 8:dffee7509bfb 2846 #include "CmdLine.h"
whismanoid 8:dffee7509bfb 2847
whismanoid 8:dffee7509bfb 2848 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2849 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 8:dffee7509bfb 2850 CmdLine cmdLine_AUXserial(AUXserial, "AUXserial");
whismanoid 10:04022a61b527 2851 uint8_t Datalogger_enable_AUXserial = {
whismanoid 10:04022a61b527 2852 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2853 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 2854 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 2855 false
whismanoid 10:04022a61b527 2856 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2857 true
whismanoid 10:04022a61b527 2858 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 2859 };
whismanoid 8:dffee7509bfb 2860 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 2861 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2862 CmdLine cmdLine_DAPLINKserial(DAPLINKserial, "DAPLINK");
whismanoid 8:dffee7509bfb 2863 uint8_t Datalogger_enable_DAPLINKserial = true;
whismanoid 8:dffee7509bfb 2864 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 2865 CmdLine cmdLine(serial, "serial");
whismanoid 8:dffee7509bfb 2866 uint8_t Datalogger_enable_serial = true;
whismanoid 8:dffee7509bfb 2867 // CODE GENERATOR: example code for ADC: serial port declaration (end)
whismanoid 8:dffee7509bfb 2868
whismanoid 21:ac062a97a71d 2869
whismanoid 21:ac062a97a71d 2870 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 2871 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 2872 #ifndef USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2873 #define USE_DATALOGGER_CommandTable 1
whismanoid 23:c6c652bef4b9 2874 //~ #undef USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2875 #endif
whismanoid 23:c6c652bef4b9 2876 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 2877 const int COMMAND_TABLE_ROW_MAX = 10;
whismanoid 23:c6c652bef4b9 2878 const int COMMAND_TABLE_COL_MAX = 40;
whismanoid 23:c6c652bef4b9 2879 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 2880 //
whismanoid 23:c6c652bef4b9 2881 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 2882 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2883 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2884 char onButton1_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button1 event";
whismanoid 23:c6c652bef4b9 2885 char onButton1_command_table_01[COMMAND_TABLE_COL_MAX] = "%L91";
whismanoid 23:c6c652bef4b9 2886 char onButton1_command_table_02[COMMAND_TABLE_COL_MAX] = "%H92";
whismanoid 23:c6c652bef4b9 2887 char onButton1_command_table_03[COMMAND_TABLE_COL_MAX] = "%L93";
whismanoid 23:c6c652bef4b9 2888 char onButton1_command_table_04[COMMAND_TABLE_COL_MAX] = "%H91";
whismanoid 23:c6c652bef4b9 2889 char onButton1_command_table_05[COMMAND_TABLE_COL_MAX] = "%L92";
whismanoid 23:c6c652bef4b9 2890 char onButton1_command_table_06[COMMAND_TABLE_COL_MAX] = "%H93";
whismanoid 23:c6c652bef4b9 2891 char onButton1_command_table_07[COMMAND_TABLE_COL_MAX] = "LR";
whismanoid 23:c6c652bef4b9 2892 char onButton1_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2893 char onButton1_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2894 static char* onButton1_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 23:c6c652bef4b9 2895 onButton1_command_table_00,
whismanoid 23:c6c652bef4b9 2896 onButton1_command_table_01,
whismanoid 23:c6c652bef4b9 2897 onButton1_command_table_02,
whismanoid 23:c6c652bef4b9 2898 onButton1_command_table_03,
whismanoid 23:c6c652bef4b9 2899 onButton1_command_table_04,
whismanoid 23:c6c652bef4b9 2900 onButton1_command_table_05,
whismanoid 23:c6c652bef4b9 2901 onButton1_command_table_06,
whismanoid 23:c6c652bef4b9 2902 onButton1_command_table_07,
whismanoid 23:c6c652bef4b9 2903 onButton1_command_table_08,
whismanoid 23:c6c652bef4b9 2904 onButton1_command_table_09,
whismanoid 23:c6c652bef4b9 2905 };
whismanoid 23:c6c652bef4b9 2906 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2907 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 2908 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2909 char onButton2_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button2 event";
whismanoid 23:c6c652bef4b9 2910 char onButton2_command_table_01[COMMAND_TABLE_COL_MAX] = "%H91";
whismanoid 23:c6c652bef4b9 2911 char onButton2_command_table_02[COMMAND_TABLE_COL_MAX] = "%H92";
whismanoid 23:c6c652bef4b9 2912 char onButton2_command_table_03[COMMAND_TABLE_COL_MAX] = "%L93";
whismanoid 23:c6c652bef4b9 2913 char onButton2_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2914 char onButton2_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2915 char onButton2_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2916 char onButton2_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2917 char onButton2_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2918 char onButton2_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 23:c6c652bef4b9 2919 static char* onButton2_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 23:c6c652bef4b9 2920 onButton2_command_table_00,
whismanoid 23:c6c652bef4b9 2921 onButton2_command_table_01,
whismanoid 23:c6c652bef4b9 2922 onButton2_command_table_02,
whismanoid 23:c6c652bef4b9 2923 onButton2_command_table_03,
whismanoid 23:c6c652bef4b9 2924 onButton2_command_table_04,
whismanoid 23:c6c652bef4b9 2925 onButton2_command_table_05,
whismanoid 23:c6c652bef4b9 2926 onButton2_command_table_06,
whismanoid 23:c6c652bef4b9 2927 onButton2_command_table_07,
whismanoid 23:c6c652bef4b9 2928 onButton2_command_table_08,
whismanoid 23:c6c652bef4b9 2929 onButton2_command_table_09,
whismanoid 23:c6c652bef4b9 2930 };
whismanoid 23:c6c652bef4b9 2931 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2932 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 2933 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2934 char onButton3_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button3 event";
whismanoid 24:032f3683cb2a 2935 char onButton3_command_table_01[COMMAND_TABLE_COL_MAX] = "%L91";
whismanoid 24:032f3683cb2a 2936 char onButton3_command_table_02[COMMAND_TABLE_COL_MAX] = "%L92";
whismanoid 24:032f3683cb2a 2937 char onButton3_command_table_03[COMMAND_TABLE_COL_MAX] = "%H93";
whismanoid 24:032f3683cb2a 2938 char onButton3_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2939 char onButton3_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2940 char onButton3_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2941 char onButton3_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2942 char onButton3_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2943 char onButton3_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 24:032f3683cb2a 2944 static char* onButton3_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 24:032f3683cb2a 2945 onButton3_command_table_00,
whismanoid 24:032f3683cb2a 2946 onButton3_command_table_01,
whismanoid 24:032f3683cb2a 2947 onButton3_command_table_02,
whismanoid 24:032f3683cb2a 2948 onButton3_command_table_03,
whismanoid 24:032f3683cb2a 2949 onButton3_command_table_04,
whismanoid 24:032f3683cb2a 2950 onButton3_command_table_05,
whismanoid 24:032f3683cb2a 2951 onButton3_command_table_06,
whismanoid 24:032f3683cb2a 2952 onButton3_command_table_07,
whismanoid 24:032f3683cb2a 2953 onButton3_command_table_08,
whismanoid 24:032f3683cb2a 2954 onButton3_command_table_09,
whismanoid 24:032f3683cb2a 2955 };
whismanoid 24:032f3683cb2a 2956 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2957 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2958 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2959 char onButton4_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button4 event";
whismanoid 30:07197a430869 2960 char onButton4_command_table_01[COMMAND_TABLE_COL_MAX] = "# WE>0.7:active";
whismanoid 29:6a9edb6e973b 2961 char onButton4_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2962 char onButton4_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2963 char onButton4_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2964 char onButton4_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2965 char onButton4_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2966 char onButton4_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2967 char onButton4_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2968 char onButton4_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2969 static char* onButton4_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2970 onButton4_command_table_00,
whismanoid 29:6a9edb6e973b 2971 onButton4_command_table_01,
whismanoid 29:6a9edb6e973b 2972 onButton4_command_table_02,
whismanoid 29:6a9edb6e973b 2973 onButton4_command_table_03,
whismanoid 29:6a9edb6e973b 2974 onButton4_command_table_04,
whismanoid 29:6a9edb6e973b 2975 onButton4_command_table_05,
whismanoid 29:6a9edb6e973b 2976 onButton4_command_table_06,
whismanoid 29:6a9edb6e973b 2977 onButton4_command_table_07,
whismanoid 29:6a9edb6e973b 2978 onButton4_command_table_08,
whismanoid 29:6a9edb6e973b 2979 onButton4_command_table_09,
whismanoid 29:6a9edb6e973b 2980 };
whismanoid 29:6a9edb6e973b 2981 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2982 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 2983 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 2984 char onButton5_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button5 event";
whismanoid 30:07197a430869 2985 char onButton5_command_table_01[COMMAND_TABLE_COL_MAX] = "# WE<0.6:sleep";
whismanoid 29:6a9edb6e973b 2986 char onButton5_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2987 char onButton5_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2988 char onButton5_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2989 char onButton5_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2990 char onButton5_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2991 char onButton5_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2992 char onButton5_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2993 char onButton5_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 2994 static char* onButton5_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 2995 onButton5_command_table_00,
whismanoid 29:6a9edb6e973b 2996 onButton5_command_table_01,
whismanoid 29:6a9edb6e973b 2997 onButton5_command_table_02,
whismanoid 29:6a9edb6e973b 2998 onButton5_command_table_03,
whismanoid 29:6a9edb6e973b 2999 onButton5_command_table_04,
whismanoid 29:6a9edb6e973b 3000 onButton5_command_table_05,
whismanoid 29:6a9edb6e973b 3001 onButton5_command_table_06,
whismanoid 29:6a9edb6e973b 3002 onButton5_command_table_07,
whismanoid 29:6a9edb6e973b 3003 onButton5_command_table_08,
whismanoid 29:6a9edb6e973b 3004 onButton5_command_table_09,
whismanoid 29:6a9edb6e973b 3005 };
whismanoid 29:6a9edb6e973b 3006 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3007 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3008 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 3009 char onButton6_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button6 event";
whismanoid 29:6a9edb6e973b 3010 char onButton6_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3011 char onButton6_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3012 char onButton6_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3013 char onButton6_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3014 char onButton6_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3015 char onButton6_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3016 char onButton6_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3017 char onButton6_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3018 char onButton6_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3019 static char* onButton6_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3020 onButton6_command_table_00,
whismanoid 29:6a9edb6e973b 3021 onButton6_command_table_01,
whismanoid 29:6a9edb6e973b 3022 onButton6_command_table_02,
whismanoid 29:6a9edb6e973b 3023 onButton6_command_table_03,
whismanoid 29:6a9edb6e973b 3024 onButton6_command_table_04,
whismanoid 29:6a9edb6e973b 3025 onButton6_command_table_05,
whismanoid 29:6a9edb6e973b 3026 onButton6_command_table_06,
whismanoid 29:6a9edb6e973b 3027 onButton6_command_table_07,
whismanoid 29:6a9edb6e973b 3028 onButton6_command_table_08,
whismanoid 29:6a9edb6e973b 3029 onButton6_command_table_09,
whismanoid 29:6a9edb6e973b 3030 };
whismanoid 29:6a9edb6e973b 3031 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3032 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3033 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 3034 char onButton7_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button7 event";
whismanoid 29:6a9edb6e973b 3035 char onButton7_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3036 char onButton7_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3037 char onButton7_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3038 char onButton7_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3039 char onButton7_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3040 char onButton7_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3041 char onButton7_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3042 char onButton7_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3043 char onButton7_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3044 static char* onButton7_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3045 onButton7_command_table_00,
whismanoid 29:6a9edb6e973b 3046 onButton7_command_table_01,
whismanoid 29:6a9edb6e973b 3047 onButton7_command_table_02,
whismanoid 29:6a9edb6e973b 3048 onButton7_command_table_03,
whismanoid 29:6a9edb6e973b 3049 onButton7_command_table_04,
whismanoid 29:6a9edb6e973b 3050 onButton7_command_table_05,
whismanoid 29:6a9edb6e973b 3051 onButton7_command_table_06,
whismanoid 29:6a9edb6e973b 3052 onButton7_command_table_07,
whismanoid 29:6a9edb6e973b 3053 onButton7_command_table_08,
whismanoid 29:6a9edb6e973b 3054 onButton7_command_table_09,
whismanoid 29:6a9edb6e973b 3055 };
whismanoid 29:6a9edb6e973b 3056 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3057 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3058 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 3059 char onButton8_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button8 event";
whismanoid 29:6a9edb6e973b 3060 char onButton8_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3061 char onButton8_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3062 char onButton8_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3063 char onButton8_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3064 char onButton8_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3065 char onButton8_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3066 char onButton8_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3067 char onButton8_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3068 char onButton8_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3069 static char* onButton8_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3070 onButton8_command_table_00,
whismanoid 29:6a9edb6e973b 3071 onButton8_command_table_01,
whismanoid 29:6a9edb6e973b 3072 onButton8_command_table_02,
whismanoid 29:6a9edb6e973b 3073 onButton8_command_table_03,
whismanoid 29:6a9edb6e973b 3074 onButton8_command_table_04,
whismanoid 29:6a9edb6e973b 3075 onButton8_command_table_05,
whismanoid 29:6a9edb6e973b 3076 onButton8_command_table_06,
whismanoid 29:6a9edb6e973b 3077 onButton8_command_table_07,
whismanoid 29:6a9edb6e973b 3078 onButton8_command_table_08,
whismanoid 29:6a9edb6e973b 3079 onButton8_command_table_09,
whismanoid 29:6a9edb6e973b 3080 };
whismanoid 29:6a9edb6e973b 3081 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3082 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3083 // command_table: list of commands to perform on button press
whismanoid 29:6a9edb6e973b 3084 char onButton9_command_table_00[COMMAND_TABLE_COL_MAX] = "# Button9 event";
whismanoid 29:6a9edb6e973b 3085 char onButton9_command_table_01[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3086 char onButton9_command_table_02[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3087 char onButton9_command_table_03[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3088 char onButton9_command_table_04[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3089 char onButton9_command_table_05[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3090 char onButton9_command_table_06[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3091 char onButton9_command_table_07[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3092 char onButton9_command_table_08[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3093 char onButton9_command_table_09[COMMAND_TABLE_COL_MAX] = "";
whismanoid 29:6a9edb6e973b 3094 static char* onButton9_command_table[COMMAND_TABLE_ROW_MAX] = {
whismanoid 29:6a9edb6e973b 3095 onButton9_command_table_00,
whismanoid 29:6a9edb6e973b 3096 onButton9_command_table_01,
whismanoid 29:6a9edb6e973b 3097 onButton9_command_table_02,
whismanoid 29:6a9edb6e973b 3098 onButton9_command_table_03,
whismanoid 29:6a9edb6e973b 3099 onButton9_command_table_04,
whismanoid 29:6a9edb6e973b 3100 onButton9_command_table_05,
whismanoid 29:6a9edb6e973b 3101 onButton9_command_table_06,
whismanoid 29:6a9edb6e973b 3102 onButton9_command_table_07,
whismanoid 29:6a9edb6e973b 3103 onButton9_command_table_08,
whismanoid 29:6a9edb6e973b 3104 onButton9_command_table_09,
whismanoid 29:6a9edb6e973b 3105 };
whismanoid 29:6a9edb6e973b 3106 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 3107 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3108 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3109 #if USE_DATALOGGER_CommandTable
whismanoid 31:47eee7e0cc2d 3110 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3111 bool g_Run_command_table_running = false;
whismanoid 23:c6c652bef4b9 3112 void Run_command_table(char* command_table[])
whismanoid 23:c6c652bef4b9 3113 {
whismanoid 23:c6c652bef4b9 3114 // command_table: perform list of commands
whismanoid 31:47eee7e0cc2d 3115 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3116 if (g_Run_command_table_running) {
whismanoid 31:47eee7e0cc2d 3117 // TODO: button event chaining is not supported at this time
whismanoid 31:47eee7e0cc2d 3118 } // if (g_Run_command_table_running)
whismanoid 31:47eee7e0cc2d 3119 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3120 g_Run_command_table_running = true;
whismanoid 23:c6c652bef4b9 3121 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3122 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3123 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 23:c6c652bef4b9 3124 cmdLine.clear();
whismanoid 31:47eee7e0cc2d 3125 cmdLine.quiet = g_Run_command_table_running;
whismanoid 23:c6c652bef4b9 3126 //~ char* strIndex = command_table[lineIndex];
whismanoid 23:c6c652bef4b9 3127 for (char* strIndex = command_table[lineIndex]; *strIndex != '\0'; strIndex++)
whismanoid 23:c6c652bef4b9 3128 {
whismanoid 23:c6c652bef4b9 3129 cmdLine.append(*strIndex);
whismanoid 23:c6c652bef4b9 3130 }
whismanoid 23:c6c652bef4b9 3131 cmdLine.append('\r'); // append \r invokes onEOLcommandParser to handle command
whismanoid 23:c6c652bef4b9 3132 }
whismanoid 31:47eee7e0cc2d 3133 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 3134 g_Run_command_table_running = false;
whismanoid 31:47eee7e0cc2d 3135 cmdLine.quiet = g_Run_command_table_running;
whismanoid 23:c6c652bef4b9 3136 }
whismanoid 23:c6c652bef4b9 3137 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3138 //--------------------------------------------------
whismanoid 21:ac062a97a71d 3139 // When user presses button BUTTON1, perform actions
whismanoid 21:ac062a97a71d 3140 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3141 void onButton1FallingEdge(void)
whismanoid 21:ac062a97a71d 3142 {
whismanoid 21:ac062a97a71d 3143 //~ void SelfTest(CmdLine & cmdLine);
whismanoid 21:ac062a97a71d 3144 //~ SelfTest(cmdLine_serial);
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(onButton1_command_table);
whismanoid 23:c6c652bef4b9 3150 #endif // USE_DATALOGGER_CommandTable
whismanoid 21:ac062a97a71d 3151 }
whismanoid 21:ac062a97a71d 3152 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3153
whismanoid 21:ac062a97a71d 3154 //--------------------------------------------------
whismanoid 21:ac062a97a71d 3155 // When user presses button BUTTON2, perform actions
whismanoid 21:ac062a97a71d 3156 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3157 void onButton2FallingEdge(void)
whismanoid 21:ac062a97a71d 3158 {
whismanoid 21:ac062a97a71d 3159 // TBD demo configuration
whismanoid 21:ac062a97a71d 3160 // TODO diagnostic LED
whismanoid 21:ac062a97a71d 3161 // led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 22:d6dc8a85f435 3162 //
whismanoid 23:c6c652bef4b9 3163 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 22:d6dc8a85f435 3164 // command_table: list of commands to perform on button press
whismanoid 22:d6dc8a85f435 3165 // command_table: perform list of commands
whismanoid 23:c6c652bef4b9 3166 Run_command_table(onButton2_command_table);
whismanoid 23:c6c652bef4b9 3167 #endif // USE_DATALOGGER_CommandTable
whismanoid 21:ac062a97a71d 3168 }
whismanoid 21:ac062a97a71d 3169 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 3170
whismanoid 24:032f3683cb2a 3171 //--------------------------------------------------
whismanoid 29:6a9edb6e973b 3172 // When user presses button BUTTON3, perform actions
whismanoid 24:032f3683cb2a 3173 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3174 void onButton3FallingEdge(void)
whismanoid 24:032f3683cb2a 3175 {
whismanoid 24:032f3683cb2a 3176 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 24:032f3683cb2a 3177 // command_table: list of commands to perform on button press
whismanoid 24:032f3683cb2a 3178 // command_table: perform list of commands
whismanoid 24:032f3683cb2a 3179 Run_command_table(onButton3_command_table);
whismanoid 24:032f3683cb2a 3180 #endif // USE_DATALOGGER_CommandTable
whismanoid 24:032f3683cb2a 3181 }
whismanoid 24:032f3683cb2a 3182 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3183 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3184 void onButton4FallingEdge(void)
whismanoid 29:6a9edb6e973b 3185 {
whismanoid 29:6a9edb6e973b 3186 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3187 Run_command_table(onButton4_command_table);
whismanoid 29:6a9edb6e973b 3188 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3189 }
whismanoid 29:6a9edb6e973b 3190 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3191 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3192 void onButton5FallingEdge(void)
whismanoid 29:6a9edb6e973b 3193 {
whismanoid 29:6a9edb6e973b 3194 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3195 Run_command_table(onButton5_command_table);
whismanoid 29:6a9edb6e973b 3196 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3197 }
whismanoid 29:6a9edb6e973b 3198 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3199 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3200 void onButton6FallingEdge(void)
whismanoid 29:6a9edb6e973b 3201 {
whismanoid 29:6a9edb6e973b 3202 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3203 Run_command_table(onButton6_command_table);
whismanoid 29:6a9edb6e973b 3204 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3205 }
whismanoid 29:6a9edb6e973b 3206 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3207 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3208 void onButton7FallingEdge(void)
whismanoid 29:6a9edb6e973b 3209 {
whismanoid 29:6a9edb6e973b 3210 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3211 Run_command_table(onButton7_command_table);
whismanoid 29:6a9edb6e973b 3212 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3213 }
whismanoid 29:6a9edb6e973b 3214 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3215 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3216 void onButton8FallingEdge(void)
whismanoid 29:6a9edb6e973b 3217 {
whismanoid 29:6a9edb6e973b 3218 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3219 Run_command_table(onButton8_command_table);
whismanoid 29:6a9edb6e973b 3220 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3221 }
whismanoid 29:6a9edb6e973b 3222 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3223 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3224 void onButton9FallingEdge(void)
whismanoid 29:6a9edb6e973b 3225 {
whismanoid 29:6a9edb6e973b 3226 #if USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3227 Run_command_table(onButton9_command_table);
whismanoid 29:6a9edb6e973b 3228 #endif // USE_DATALOGGER_CommandTable
whismanoid 29:6a9edb6e973b 3229 }
whismanoid 29:6a9edb6e973b 3230 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3231
whismanoid 4:d9b05924ad4c 3232 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3233 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3234 inline void print_command_prompt()
whismanoid 4:d9b05924ad4c 3235 {
whismanoid 4:d9b05924ad4c 3236 //~ Serial.println(F(">"));
whismanoid 4:d9b05924ad4c 3237 cmdLine.serial().printf("\r\n> ");
whismanoid 4:d9b05924ad4c 3238 }
whismanoid 4:d9b05924ad4c 3239 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3240
whismanoid 4:d9b05924ad4c 3241 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3242 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3243 void main_menu_status(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 3244 {
whismanoid 4:d9b05924ad4c 3245 cmdLine.serial().printf("\r\nMain menu");
whismanoid 4:d9b05924ad4c 3246 #if APPLICATION_MAX5715 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3247 cmdLine.serial().printf(" MAX5715 12-bit 4-ch SPI VOUT DAC");
whismanoid 4:d9b05924ad4c 3248 #elif APPLICATION_MAX11131 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3249 cmdLine.serial().printf(" MAX11131 12-bit 3MSps 16-ch ADC");
whismanoid 4:d9b05924ad4c 3250 #elif APPLICATION_MAX5171 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3251 cmdLine.serial().printf(" MAX5171 14-bit Force/Sense VOUT DAC");
whismanoid 4:d9b05924ad4c 3252 #elif APPLICATION_MAX11410 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3253 cmdLine.serial().printf(" MAX11410 24-bit 1.9ksps Delta-Sigma ADC");
whismanoid 4:d9b05924ad4c 3254 #elif APPLICATION_MAX12345 // main_menu_status banner
whismanoid 4:d9b05924ad4c 3255 cmdLine.serial().printf(" MAX12345");
whismanoid 16:819c5aaf5271 3256 #elif MAX40108_DEMO // main_menu_status banner
whismanoid 17:9397ea3ea7e9 3257 cmdLine.serial().printf(" MAX40108_U%d", MAX40108_DEMO);
whismanoid 36:e7aac874b8be 3258 #ifdef BOARD_SERIAL_NUMBER
whismanoid 36:e7aac874b8be 3259 // data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 3260 cmdLine.serial().printf(" [s/n %d]", BOARD_SERIAL_NUMBER);
whismanoid 36:e7aac874b8be 3261 #else // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 36:e7aac874b8be 3262 #warning "BOARD_SERIAL_NUMBER not defined; using default values"
whismanoid 36:e7aac874b8be 3263 //
whismanoid 36:e7aac874b8be 3264 #endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 3265 #ifdef FW_REV
whismanoid 37:3f369235e5bc 3266 cmdLine.serial().printf(" [FW_REV %d]", FW_REV);
whismanoid 37:3f369235e5bc 3267 #endif // FW_REV
whismanoid 4:d9b05924ad4c 3268 #else
whismanoid 4:d9b05924ad4c 3269 //cmdLine.serial().printf(" ");
whismanoid 4:d9b05924ad4c 3270 #endif
whismanoid 4:d9b05924ad4c 3271 //cmdLine.serial().printf(" %s", TARGET_NAME);
whismanoid 4:d9b05924ad4c 3272 if (cmdLine.nameStr())
whismanoid 4:d9b05924ad4c 3273 {
whismanoid 4:d9b05924ad4c 3274 cmdLine.serial().printf(" [%s]", cmdLine.nameStr());
whismanoid 4:d9b05924ad4c 3275 }
whismanoid 4:d9b05924ad4c 3276 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3277 cmdLine.serial().printf(" [Button1");
whismanoid 4:d9b05924ad4c 3278 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3279 cmdLine.serial().printf("2");
whismanoid 24:032f3683cb2a 3280 #endif
whismanoid 24:032f3683cb2a 3281 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3282 cmdLine.serial().printf("3");
whismanoid 29:6a9edb6e973b 3283 #endif
whismanoid 29:6a9edb6e973b 3284 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3285 cmdLine.serial().printf("4");
whismanoid 29:6a9edb6e973b 3286 #endif
whismanoid 29:6a9edb6e973b 3287 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3288 cmdLine.serial().printf("5");
whismanoid 29:6a9edb6e973b 3289 #endif
whismanoid 29:6a9edb6e973b 3290 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3291 cmdLine.serial().printf("6");
whismanoid 29:6a9edb6e973b 3292 #endif
whismanoid 29:6a9edb6e973b 3293 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3294 cmdLine.serial().printf("7");
whismanoid 29:6a9edb6e973b 3295 #endif
whismanoid 29:6a9edb6e973b 3296 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3297 cmdLine.serial().printf("8");
whismanoid 29:6a9edb6e973b 3298 #endif
whismanoid 29:6a9edb6e973b 3299 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3300 cmdLine.serial().printf("9");
whismanoid 29:6a9edb6e973b 3301 #endif
whismanoid 29:6a9edb6e973b 3302 cmdLine.serial().printf("]");
whismanoid 29:6a9edb6e973b 3303 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 4:d9b05924ad4c 3304 #if HAS_BUTTON1_DEMO
whismanoid 4:d9b05924ad4c 3305 // print BUTTON1 status
whismanoid 4:d9b05924ad4c 3306 cmdLine.serial().printf("\r\n BUTTON1 = %d", button1.read());
whismanoid 4:d9b05924ad4c 3307 #endif
whismanoid 4:d9b05924ad4c 3308 #if HAS_BUTTON2_DEMO
whismanoid 24:032f3683cb2a 3309 // print BUTTON2 status
whismanoid 4:d9b05924ad4c 3310 cmdLine.serial().printf("\r\n BUTTON2 = %d", button2.read());
whismanoid 4:d9b05924ad4c 3311 #endif
whismanoid 24:032f3683cb2a 3312 #if HAS_BUTTON3_DEMO
whismanoid 24:032f3683cb2a 3313 // print BUTTON3 status
whismanoid 24:032f3683cb2a 3314 cmdLine.serial().printf("\r\n BUTTON3 = %d", button3.read());
whismanoid 24:032f3683cb2a 3315 #endif
whismanoid 4:d9b05924ad4c 3316 cmdLine.serial().printf("\r\n ? -- help");
whismanoid 4:d9b05924ad4c 3317 }
whismanoid 4:d9b05924ad4c 3318 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3319
whismanoid 28:a9a3a9db592b 3320 //--------------------------------------------------
whismanoid 28:a9a3a9db592b 3321 #ifndef USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3322 #define USE_DATALOGGER_TRIGGER_HELP_BRIEF 1
whismanoid 28:a9a3a9db592b 3323 //~ #undef USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3324 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3325
whismanoid 4:d9b05924ad4c 3326 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 3327 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3328 void main_menu_help(CmdLine & cmdLine)
whismanoid 4:d9b05924ad4c 3329 {
whismanoid 4:d9b05924ad4c 3330 // ? -- help
whismanoid 4:d9b05924ad4c 3331 //~ cmdLine.serial().printf("\r\nMenu:");
whismanoid 10:04022a61b527 3332 //
whismanoid 4:d9b05924ad4c 3333 cmdLine.serial().printf("\r\n # -- lines beginning with # are comments");
whismanoid 10:04022a61b527 3334 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 3335 cmdLine.serial().printf("\r\n ! -- Init");
whismanoid 10:04022a61b527 3336 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 3337 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 3338 cmdLine.serial().printf("\r\n . -- SelfTest");
whismanoid 4:d9b05924ad4c 3339 #endif // USE_SELFTEST
whismanoid 9:45f98573eb6d 3340 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 9:45f98573eb6d 3341 // CODE GENERATOR: help menu if has_register_write_command: *regname? -- read register; *regname=regvalue -- write register
whismanoid 9:45f98573eb6d 3342 cmdLine.serial().printf("\r\n * -- read core registers\r\n *regname? -- read register\r\n *regname=regvalue -- write register");
whismanoid 9:45f98573eb6d 3343 // cmdLine.serial().printf("\r\n 01 23 45 67 89 ab cd ef -- write and read raw hex codes");
whismanoid 10:04022a61b527 3344 #endif // USE_STAR_REG_READWRITE
whismanoid 10:04022a61b527 3345 //
whismanoid 10:04022a61b527 3346 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3347 // Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_help
whismanoid 10:04022a61b527 3348 //~ cmdLine.serial().printf("\r\n > -- auxiliary UART port");
whismanoid 10:04022a61b527 3349 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 3350 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3351 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3352 if (cmdLine_AUXserial.nameStr())
whismanoid 10:04022a61b527 3353 {
whismanoid 10:04022a61b527 3354 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_AUXserial.nameStr());
whismanoid 10:04022a61b527 3355 }
whismanoid 10:04022a61b527 3356 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3357 // Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 3358 if (cmdLine_DAPLINKserial.nameStr())
whismanoid 10:04022a61b527 3359 {
whismanoid 10:04022a61b527 3360 cmdLine.serial().printf("\r\n > -- auxiliary UART port [%s]", cmdLine_DAPLINKserial.nameStr());
whismanoid 10:04022a61b527 3361 }
whismanoid 10:04022a61b527 3362 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3363 # if HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 3364 // WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 3365 cmdLine.serial().printf("\r\n >xyzzy -- Forward command/data 'xyzzy' to aux TX/RX");
whismanoid 10:04022a61b527 3366 cmdLine.serial().printf("\r\n >>xyzzy -- Forward 'xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 3367 cmdLine.serial().printf("\r\n >>>xyzzy -- Forward '>xyzzy' to aux TX/RX, no key=value parsing");
whismanoid 10:04022a61b527 3368 #if 0
whismanoid 10:04022a61b527 3369 cmdLine.serial().printf("\r\n >tx_wait_echo=%d -- configure TX wait for each character echo", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 3370 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 3371 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 3372 #endif
whismanoid 20:78ef670955d4 3373 #if 1 // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 3374 cmdLine.serial().printf("\r\n >baud=%d message_ms=%d rx_idle_ms=%d rx_max_count=%d rx_eot=%d",
whismanoid 20:78ef670955d4 3375 g_auxSerialCom_baud,
whismanoid 20:78ef670955d4 3376 g_auxSerialCom_message_ms,
whismanoid 20:78ef670955d4 3377 g_auxSerialCom_rx_idle_ms,
whismanoid 20:78ef670955d4 3378 g_auxSerialCom_rx_max_count,
whismanoid 20:78ef670955d4 3379 g_auxSerialCom_rx_eot);
whismanoid 20:78ef670955d4 3380 #else // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 20:78ef670955d4 3381 cmdLine.serial().printf("\r\n >baud=%d -- configure aux TX/RX port", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 3382 cmdLine.serial().printf("\r\n >message_ms=%d -- maximum RX message total response time", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 3383 cmdLine.serial().printf("\r\n >rx_idle_ms=%d -- maximum RX message idle time between characters", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 3384 cmdLine.serial().printf("\r\n >rx_max_count=%d -- maximum RX message total length", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 3385 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 3386 #endif // HAS_AUX_SERIAL_HELP_BRIEF
whismanoid 10:04022a61b527 3387 # endif // HAS_AUX_SERIAL
whismanoid 10:04022a61b527 3388 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 3389 //
whismanoid 4:d9b05924ad4c 3390 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 28:a9a3a9db592b 3391 #if USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3392 // Datalog trigger menu
whismanoid 28:a9a3a9db592b 3393 // brief toplevel heading for datalog help L
whismanoid 28:a9a3a9db592b 3394 // L -- detailed help for datalog commands
whismanoid 28:a9a3a9db592b 3395 cmdLine.serial().printf("\r\n L -- halt the datalogger; show more commands");
whismanoid 28:a9a3a9db592b 3396 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 28:a9a3a9db592b 3397 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 28:a9a3a9db592b 3398 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 28:a9a3a9db592b 3399 //
whismanoid 28:a9a3a9db592b 3400 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 28:a9a3a9db592b 3401 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 28:a9a3a9db592b 3402 //
whismanoid 39:4d285e961435 3403 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 3404 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 3405 cmdLine.serial().printf("\r\n LT count=%d base=%dms sleep=%d -- Datalog timer",
whismanoid 39:4d285e961435 3406 g_timer_interval_count,
whismanoid 39:4d285e961435 3407 g_timer_interval_msec,
whismanoid 39:4d285e961435 3408 (int)g_timer_sleepmode
whismanoid 39:4d285e961435 3409 ); // trigger_Timer
whismanoid 39:4d285e961435 3410 #else // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 3411 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 3412 #endif // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 3413 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3414 //~ cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 28:a9a3a9db592b 3415 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3416 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 4:d9b05924ad4c 3417 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 3418 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 3419 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 9:45f98573eb6d 3420 // cmdLine.serial().print(F("\r\n L -- halt the datalogger; continue accepting commands"));
whismanoid 9:45f98573eb6d 3421 //
whismanoid 17:9397ea3ea7e9 3422 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 4:d9b05924ad4c 3423 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 9:45f98573eb6d 3424 //
whismanoid 17:9397ea3ea7e9 3425 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 3426 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 17:9397ea3ea7e9 3427 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 3428 //
whismanoid 9:45f98573eb6d 3429 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 3430 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3431 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 3432 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 9:45f98573eb6d 3433 //
whismanoid 17:9397ea3ea7e9 3434 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 9:45f98573eb6d 3435 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 3436 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 27:b4ac095b83b3 3437 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 3438 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 3439 //
whismanoid 17:9397ea3ea7e9 3440 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 3441 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 17:9397ea3ea7e9 3442 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 9:45f98573eb6d 3443 //
whismanoid 9:45f98573eb6d 3444 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3445 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 3446 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3447 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3448 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 9:45f98573eb6d 3449 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 9:45f98573eb6d 3450 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 9:45f98573eb6d 3451 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 9:45f98573eb6d 3452 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 9:45f98573eb6d 3453 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 9:45f98573eb6d 3454 //
whismanoid 9:45f98573eb6d 3455 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 3456 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 9:45f98573eb6d 3457 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 9:45f98573eb6d 3458 //
whismanoid 9:45f98573eb6d 3459 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3460 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 3461 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 9:45f98573eb6d 3462 //
whismanoid 9:45f98573eb6d 3463 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3464 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 9:45f98573eb6d 3465 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 3466 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 9:45f98573eb6d 3467 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3468 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 9:45f98573eb6d 3469 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 3470 //
whismanoid 9:45f98573eb6d 3471 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 3472 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 9:45f98573eb6d 3473 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 9:45f98573eb6d 3474 //
whismanoid 9:45f98573eb6d 3475 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 3476 //
whismanoid 9:45f98573eb6d 3477 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 3478 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 3479 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 3480 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 3481 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 9:45f98573eb6d 3482 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3483 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 9:45f98573eb6d 3484 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3485 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3486 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 9:45f98573eb6d 3487 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3488 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 9:45f98573eb6d 3489 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3490 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 9:45f98573eb6d 3491 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 3492 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3493 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 9:45f98573eb6d 3494 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 3495 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 28:a9a3a9db592b 3496 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 4:d9b05924ad4c 3497 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 28:a9a3a9db592b 3498 #if USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 3499 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 8:dffee7509bfb 3500 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 3501 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 3502 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 3503 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 3504 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 8:dffee7509bfb 3505 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 3506 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 3507 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF -----------------------------------------------
whismanoid 8:dffee7509bfb 3508 //
whismanoid 4:d9b05924ad4c 3509 //cmdLine.serial().print(F("\r\n ! -- Initial Configuration"));
whismanoid 4:d9b05924ad4c 3510 //
whismanoid 4:d9b05924ad4c 3511 // % standardize diagnostic commands
whismanoid 4:d9b05924ad4c 3512 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 3513 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 3514 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 3515 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 3516 // %Ppin df=xx -- pwm output
whismanoid 4:d9b05924ad4c 3517 // %Wpin -- measure high pulsewidth input in usec
whismanoid 4:d9b05924ad4c 3518 // %wpin -- measure low pulsewidth input in usec
whismanoid 4:d9b05924ad4c 3519 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 3520 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 3521 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 3522 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 4:d9b05924ad4c 3523 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 3524 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3525 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 3526 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 3527 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 3528 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 3529 // A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 3530 //
whismanoid 23:c6c652bef4b9 3531 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3532 #if USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3533 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 3534 // TODO: %B1 submenu for Button1
whismanoid 23:c6c652bef4b9 3535 // TODO: future: %B2 submenu for Button2
whismanoid 23:c6c652bef4b9 3536 // TODO: future: %B3 submenu for Button3
whismanoid 23:c6c652bef4b9 3537 // TODO: %B1@ view command table, similar to L@ for action table
whismanoid 23:c6c652bef4b9 3538 // TODO: %B1@+ command add new row (if there is room to add) (ignore one space before command)
whismanoid 23:c6c652bef4b9 3539 // TODO: %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 23:c6c652bef4b9 3540 // TODO: %B1@-~~~ clear entire command table
whismanoid 23:c6c652bef4b9 3541 // TODO: %B1@nnn command replace row number nnn (ignore one space before command)
whismanoid 23:c6c652bef4b9 3542 // TODO: %B1@! disable button response but keep command table contents
whismanoid 23:c6c652bef4b9 3543 // TODO: %B1@@ enable button response
whismanoid 23:c6c652bef4b9 3544 // TODO: %B1! trigger onButton1FallingEdge() immediately (for test development)
whismanoid 30:07197a430869 3545 cmdLine.serial().printf("\r\n %%B1! trigger Button1 event; %%B1@ -- view/edit command table");
whismanoid 23:c6c652bef4b9 3546 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3547 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 3548 #if HAS_digitalInOuts
whismanoid 4:d9b05924ad4c 3549 // %Hpin -- digital output high
whismanoid 4:d9b05924ad4c 3550 // %Lpin -- digital output low
whismanoid 4:d9b05924ad4c 3551 // %?pin -- digital input
whismanoid 4:d9b05924ad4c 3552 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 4:d9b05924ad4c 3553 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3554 cmdLine.serial().printf("} -- High Output");
whismanoid 4:d9b05924ad4c 3555 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 4:d9b05924ad4c 3556 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3557 cmdLine.serial().printf("} -- Low Output");
whismanoid 4:d9b05924ad4c 3558 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 4:d9b05924ad4c 3559 list_digitalInOutPins(cmdLine.serial());
whismanoid 4:d9b05924ad4c 3560 cmdLine.serial().printf("} -- Input");
whismanoid 4:d9b05924ad4c 3561 #endif
whismanoid 4:d9b05924ad4c 3562
whismanoid 4:d9b05924ad4c 3563 #if HAS_analogIns
whismanoid 4:d9b05924ad4c 3564 // Menu A) analogRead A0..7
whismanoid 4:d9b05924ad4c 3565 // %A %Apin -- analog input
whismanoid 4:d9b05924ad4c 3566 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 37:3f369235e5bc 3567 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 37:3f369235e5bc 3568 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 3569 // %A avg=%d -- help string display Platform_AIN_Average_N
whismanoid 37:3f369235e5bc 3570 cmdLine.serial().printf("; %%A avg=%d -- average", Platform_AIN_Average_N);
whismanoid 37:3f369235e5bc 3571 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 3572 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 3573 // %A cal? view/export raw calibration values for all channels
whismanoid 37:3f369235e5bc 3574 cmdLine.serial().printf("; %%A cal? -- calibration");
whismanoid 34:a1993a1ee904 3575 #endif // HAS_Platform_AIN_Calibration
whismanoid 4:d9b05924ad4c 3576 #endif
whismanoid 4:d9b05924ad4c 3577
whismanoid 4:d9b05924ad4c 3578 #if HAS_SPI2_MAX541
whismanoid 4:d9b05924ad4c 3579 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 4:d9b05924ad4c 3580 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 4:d9b05924ad4c 3581 #endif
whismanoid 4:d9b05924ad4c 3582
whismanoid 4:d9b05924ad4c 3583 #if HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3584 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3585 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3586 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 4:d9b05924ad4c 3587 // %I... -- I2C diagnostics
whismanoid 4:d9b05924ad4c 3588 // %IP -- I2C probe
whismanoid 4:d9b05924ad4c 3589 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 4:d9b05924ad4c 3590 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 4:d9b05924ad4c 3591 // %IR ADDR=? RD=? -- read
whismanoid 4:d9b05924ad4c 3592 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3593 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 4:d9b05924ad4c 3594 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 4:d9b05924ad4c 3595 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 4:d9b05924ad4c 3596 (g_I2C_SCL_Hz / 1000.));
whismanoid 4:d9b05924ad4c 3597 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 4:d9b05924ad4c 3598 g_I2C_deviceAddress7);
whismanoid 4:d9b05924ad4c 3599 //
whismanoid 4:d9b05924ad4c 3600 #if SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3601 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3602 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 4:d9b05924ad4c 3603 // test low-level I2C i2c_smbus_read_word_data
whismanoid 4:d9b05924ad4c 3604 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3605 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 4:d9b05924ad4c 3606 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 4:d9b05924ad4c 3607 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 4:d9b05924ad4c 3608 #endif // SUPPORT_I2C
whismanoid 4:d9b05924ad4c 3609
whismanoid 4:d9b05924ad4c 3610 #if HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3611 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3612 // SPI test command S (mosiData)+
whismanoid 4:d9b05924ad4c 3613 // %S... -- SPI diagnostics
whismanoid 4:d9b05924ad4c 3614 // %SC sclk=1Mhz -- SPI configure
whismanoid 4:d9b05924ad4c 3615 // %SW -- write (write and read)
whismanoid 4:d9b05924ad4c 3616 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 4:d9b05924ad4c 3617 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 4:d9b05924ad4c 3618 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 4:d9b05924ad4c 3619 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 4:d9b05924ad4c 3620 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 4:d9b05924ad4c 3621 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 4:d9b05924ad4c 3622 // mode | POL PHA
whismanoid 4:d9b05924ad4c 3623 // -----+--------
whismanoid 4:d9b05924ad4c 3624 // 0 | 0 0
whismanoid 4:d9b05924ad4c 3625 // 1 | 0 1
whismanoid 4:d9b05924ad4c 3626 // 2 | 1 0
whismanoid 4:d9b05924ad4c 3627 // 3 | 1 1
whismanoid 4:d9b05924ad4c 3628 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 4:d9b05924ad4c 3629 // 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 3630 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 4:d9b05924ad4c 3631 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 4:d9b05924ad4c 3632 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 4:d9b05924ad4c 3633 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 4:d9b05924ad4c 3634 cmdLine.serial().printf("\r\n %%SD -- SPI diagnostic messages ");
whismanoid 4:d9b05924ad4c 3635 if (g_MAX11410_device.onSPIprint) {
whismanoid 4:d9b05924ad4c 3636 cmdLine.serial().printf("hide");
whismanoid 4:d9b05924ad4c 3637 }
whismanoid 4:d9b05924ad4c 3638 else {
whismanoid 4:d9b05924ad4c 3639 cmdLine.serial().printf("show");
whismanoid 4:d9b05924ad4c 3640 }
whismanoid 4:d9b05924ad4c 3641 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 4:d9b05924ad4c 3642 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 4:d9b05924ad4c 3643 #endif // SUPPORT_SPI
whismanoid 4:d9b05924ad4c 3644 //
whismanoid 4:d9b05924ad4c 3645 // Application-specific commands (help text) here
whismanoid 4:d9b05924ad4c 3646 //
whismanoid 4:d9b05924ad4c 3647 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3648 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3649 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 3650 //
whismanoid 4:d9b05924ad4c 3651
whismanoid 4:d9b05924ad4c 3652 //~ extern void MAX11410_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp\n
whismanoid 4:d9b05924ad4c 3653 //~ MAX11410_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 3654 }
whismanoid 4:d9b05924ad4c 3655 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 3656
whismanoid 4:d9b05924ad4c 3657 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 15:37c83ec50ea0 3658
whismanoid 15:37c83ec50ea0 3659 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 3660 void pinsMonitor_submenu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 15:37c83ec50ea0 3661 {
whismanoid 15:37c83ec50ea0 3662 // % diagnostic commands submenu
whismanoid 15:37c83ec50ea0 3663 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 3664 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 3665 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 3666 // %A %Apin -- analog input
whismanoid 15:37c83ec50ea0 3667 // %Ppin df=xx -- pwm output
whismanoid 15:37c83ec50ea0 3668 // %Wpin -- measure high pulsewidth input in usec
whismanoid 15:37c83ec50ea0 3669 // %wpin -- measure low pulsewidth input in usec
whismanoid 15:37c83ec50ea0 3670 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 3671 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 3672 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 3673 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 3674 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 3675 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 3676 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 3677 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 3678 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 3679 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 3680 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 3681 //
whismanoid 15:37c83ec50ea0 3682 char strPinIndex[3];
whismanoid 15:37c83ec50ea0 3683 strPinIndex[0] = cmdLine[2];
whismanoid 15:37c83ec50ea0 3684 strPinIndex[1] = cmdLine[3];
whismanoid 15:37c83ec50ea0 3685 strPinIndex[2] = '\0';
whismanoid 15:37c83ec50ea0 3686 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 15:37c83ec50ea0 3687 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 15:37c83ec50ea0 3688 //
whismanoid 15:37c83ec50ea0 3689 // get next character
whismanoid 15:37c83ec50ea0 3690 switch (cmdLine[1])
whismanoid 15:37c83ec50ea0 3691 {
whismanoid 23:c6c652bef4b9 3692 //--------------------------------------------------
whismanoid 23:c6c652bef4b9 3693 #if USE_DATALOGGER_CommandTable // Run_command_table(onButton1_command_table)
whismanoid 23:c6c652bef4b9 3694 // command_table: list of commands to perform on button press
whismanoid 23:c6c652bef4b9 3695 case 'B': case 'b':
whismanoid 23:c6c652bef4b9 3696 {
whismanoid 24:032f3683cb2a 3697 int command_table_button_index = 1;
whismanoid 23:c6c652bef4b9 3698 // %B1 submenu for Button1
whismanoid 23:c6c652bef4b9 3699 // future: %B2 submenu for Button2
whismanoid 23:c6c652bef4b9 3700 // future: %B3 submenu for Button3
whismanoid 23:c6c652bef4b9 3701 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 23:c6c652bef4b9 3702 // cmdLine[2] == '1' selects onButton1_command_table
whismanoid 23:c6c652bef4b9 3703 char** command_table = onButton1_command_table;
whismanoid 23:c6c652bef4b9 3704 #endif
whismanoid 24:032f3683cb2a 3705 switch(cmdLine[2])
whismanoid 24:032f3683cb2a 3706 {
whismanoid 24:032f3683cb2a 3707 default:
whismanoid 24:032f3683cb2a 3708 case '1': case 'A': case 'a': case '!':
whismanoid 24:032f3683cb2a 3709 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3710 command_table_button_index = 1;
whismanoid 24:032f3683cb2a 3711 command_table = onButton1_command_table;
whismanoid 24:032f3683cb2a 3712 #endif
whismanoid 24:032f3683cb2a 3713 break;
whismanoid 24:032f3683cb2a 3714 case '2': case 'B': case 'b': case '@':
whismanoid 23:c6c652bef4b9 3715 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3716 command_table_button_index = 2;
whismanoid 24:032f3683cb2a 3717 command_table = onButton2_command_table;
whismanoid 24:032f3683cb2a 3718 #endif
whismanoid 24:032f3683cb2a 3719 break;
whismanoid 24:032f3683cb2a 3720 case '3': case 'C': case 'c': case '#':
whismanoid 23:c6c652bef4b9 3721 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 3722 command_table_button_index = 3;
whismanoid 24:032f3683cb2a 3723 command_table = onButton3_command_table;
whismanoid 24:032f3683cb2a 3724 #endif
whismanoid 24:032f3683cb2a 3725 break;
whismanoid 29:6a9edb6e973b 3726 case '4':
whismanoid 29:6a9edb6e973b 3727 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3728 command_table_button_index = 4;
whismanoid 29:6a9edb6e973b 3729 command_table = onButton4_command_table;
whismanoid 29:6a9edb6e973b 3730 #endif
whismanoid 29:6a9edb6e973b 3731 break;
whismanoid 29:6a9edb6e973b 3732 case '5':
whismanoid 29:6a9edb6e973b 3733 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3734 command_table_button_index = 5;
whismanoid 29:6a9edb6e973b 3735 command_table = onButton5_command_table;
whismanoid 29:6a9edb6e973b 3736 #endif
whismanoid 29:6a9edb6e973b 3737 break;
whismanoid 29:6a9edb6e973b 3738 case '6':
whismanoid 29:6a9edb6e973b 3739 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3740 command_table_button_index = 6;
whismanoid 29:6a9edb6e973b 3741 command_table = onButton6_command_table;
whismanoid 29:6a9edb6e973b 3742 #endif
whismanoid 29:6a9edb6e973b 3743 break;
whismanoid 29:6a9edb6e973b 3744 case '7':
whismanoid 29:6a9edb6e973b 3745 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3746 command_table_button_index = 7;
whismanoid 29:6a9edb6e973b 3747 command_table = onButton7_command_table;
whismanoid 29:6a9edb6e973b 3748 #endif
whismanoid 29:6a9edb6e973b 3749 break;
whismanoid 29:6a9edb6e973b 3750 case '8':
whismanoid 29:6a9edb6e973b 3751 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3752 command_table_button_index = 8;
whismanoid 29:6a9edb6e973b 3753 command_table = onButton8_command_table;
whismanoid 29:6a9edb6e973b 3754 #endif
whismanoid 29:6a9edb6e973b 3755 break;
whismanoid 29:6a9edb6e973b 3756 case '9':
whismanoid 29:6a9edb6e973b 3757 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 3758 command_table_button_index = 9;
whismanoid 29:6a9edb6e973b 3759 command_table = onButton9_command_table;
whismanoid 29:6a9edb6e973b 3760 #endif
whismanoid 29:6a9edb6e973b 3761 break;
whismanoid 24:032f3683cb2a 3762 }
whismanoid 24:032f3683cb2a 3763 //
whismanoid 23:c6c652bef4b9 3764 switch(cmdLine[3])
whismanoid 23:c6c652bef4b9 3765 {
whismanoid 23:c6c652bef4b9 3766 case '@':
whismanoid 23:c6c652bef4b9 3767 {
whismanoid 23:c6c652bef4b9 3768 // %B1@ view/edit command table, similar to L@ for action table
whismanoid 23:c6c652bef4b9 3769 int editRowIndex = 0;
whismanoid 23:c6c652bef4b9 3770 int command_table_row_count = 0;
whismanoid 23:c6c652bef4b9 3771 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3772 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3773 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 24:032f3683cb2a 3774 command_table_row_count = lineIndex+1;
whismanoid 24:032f3683cb2a 3775 }
whismanoid 24:032f3683cb2a 3776 //
whismanoid 24:032f3683cb2a 3777 // ignore extra spaces before the command
whismanoid 24:032f3683cb2a 3778 // find argIndex such that cmdLine[argIndex] is the start of the second word
whismanoid 24:032f3683cb2a 3779 int argIndex;
whismanoid 24:032f3683cb2a 3780 for (argIndex = 5; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 24:032f3683cb2a 3781 {
whismanoid 24:032f3683cb2a 3782 if (cmdLine[argIndex] == ' ') break;
whismanoid 24:032f3683cb2a 3783 }
whismanoid 24:032f3683cb2a 3784 for (; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 24:032f3683cb2a 3785 {
whismanoid 24:032f3683cb2a 3786 if (cmdLine[argIndex] != ' ') break;
whismanoid 23:c6c652bef4b9 3787 }
whismanoid 23:c6c652bef4b9 3788 //
whismanoid 23:c6c652bef4b9 3789 // Edit the contents of command_table
whismanoid 23:c6c652bef4b9 3790 switch (cmdLine[4]) // %B1@... -- Edit the contents of command_table
whismanoid 23:c6c652bef4b9 3791 {
whismanoid 23:c6c652bef4b9 3792 case '0': case '1': case '2': case '3': case '4':
whismanoid 23:c6c652bef4b9 3793 case '5': case '6': case '7': case '8': case '9':
whismanoid 24:032f3683cb2a 3794 // %B1@nnn command replace row number nnn
whismanoid 23:c6c652bef4b9 3795 // edit row data
whismanoid 33:70a28cfe9e01 3796 // get row number to edit from cmdLine[4]
whismanoid 33:70a28cfe9e01 3797 editRowIndex = atoi(cmdLine.str()+4);
whismanoid 23:c6c652bef4b9 3798 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3799 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 24:032f3683cb2a 3800 if ((editRowIndex >= 0) && (editRowIndex < command_table_row_count)) {
whismanoid 28:a9a3a9db592b 3801 // avoid replacing with null because that would truncate the table
whismanoid 28:a9a3a9db592b 3802 if (*(cmdLine.str()+argIndex)=='\0') {
whismanoid 28:a9a3a9db592b 3803 cmdLine.serial().printf("\r\n cannot replace row %d with nothing",
whismanoid 28:a9a3a9db592b 3804 editRowIndex);
whismanoid 28:a9a3a9db592b 3805 }
whismanoid 28:a9a3a9db592b 3806 else
whismanoid 28:a9a3a9db592b 3807 {
whismanoid 28:a9a3a9db592b 3808 // update row
whismanoid 28:a9a3a9db592b 3809 cmdLine.serial().printf("\r\n replace row %d with \"%s\"",
whismanoid 28:a9a3a9db592b 3810 editRowIndex, cmdLine.str()+argIndex);
whismanoid 28:a9a3a9db592b 3811 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3812 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 28:a9a3a9db592b 3813 }
whismanoid 24:032f3683cb2a 3814 }
whismanoid 33:70a28cfe9e01 3815 } // end if (command_table_row_count > 0)
whismanoid 33:70a28cfe9e01 3816 if ((editRowIndex == command_table_row_count) && (command_table_row_count < COMMAND_TABLE_ROW_MAX)) {
whismanoid 33:70a28cfe9e01 3817 // %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 3818 //
whismanoid 33:70a28cfe9e01 3819 command_table_row_count++;
whismanoid 33:70a28cfe9e01 3820 cmdLine.serial().printf("\r\n add next row %d containing \"%s\"",
whismanoid 33:70a28cfe9e01 3821 editRowIndex, cmdLine.str()+argIndex);
whismanoid 33:70a28cfe9e01 3822 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 33:70a28cfe9e01 3823 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 33:70a28cfe9e01 3824 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 33:70a28cfe9e01 3825 //
whismanoid 23:c6c652bef4b9 3826 }
whismanoid 33:70a28cfe9e01 3827 //
whismanoid 23:c6c652bef4b9 3828 break;
whismanoid 23:c6c652bef4b9 3829 case '+':
whismanoid 24:032f3683cb2a 3830 // %B1@+ command add new row (if there is room to add)
whismanoid 23:c6c652bef4b9 3831 // add a new row at end of table
whismanoid 23:c6c652bef4b9 3832 if (command_table_row_count < COMMAND_TABLE_ROW_MAX) {
whismanoid 23:c6c652bef4b9 3833 // if command_table_row_count => COMMAND_TABLE_ROW_MAX then the table is full
whismanoid 23:c6c652bef4b9 3834 editRowIndex = command_table_row_count;
whismanoid 28:a9a3a9db592b 3835 // avoid replacing with null because that would truncate the table
whismanoid 28:a9a3a9db592b 3836 if (*(cmdLine.str()+argIndex)=='\0') {
whismanoid 28:a9a3a9db592b 3837 cmdLine.serial().printf("\r\n cannot add new row %d containing nothing",
whismanoid 28:a9a3a9db592b 3838 editRowIndex);
whismanoid 28:a9a3a9db592b 3839 }
whismanoid 28:a9a3a9db592b 3840 else
whismanoid 28:a9a3a9db592b 3841 {
whismanoid 28:a9a3a9db592b 3842 command_table_row_count++;
whismanoid 28:a9a3a9db592b 3843 cmdLine.serial().printf("\r\n add new row %d containing \"%s\"",
whismanoid 28:a9a3a9db592b 3844 editRowIndex, cmdLine.str()+argIndex);
whismanoid 28:a9a3a9db592b 3845 strncpy(command_table[editRowIndex], cmdLine.str()+argIndex, COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3846 command_table[editRowIndex][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 28:a9a3a9db592b 3847 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 28:a9a3a9db592b 3848 }
whismanoid 23:c6c652bef4b9 3849 }
whismanoid 23:c6c652bef4b9 3850 break;
whismanoid 23:c6c652bef4b9 3851 case '-':
whismanoid 24:032f3683cb2a 3852 // %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 23:c6c652bef4b9 3853 // delete row from table
whismanoid 23:c6c652bef4b9 3854 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3855 // if command_table_row_count == 0 then the table is empty
whismanoid 23:c6c652bef4b9 3856 if ((cmdLine[5] == '~') && (cmdLine[6] == '~') && (cmdLine[7] == '~')) {
whismanoid 23:c6c652bef4b9 3857 // %B1@-~~~ clear entire command table
whismanoid 24:032f3683cb2a 3858 cmdLine.serial().printf("\r\n clear entire command table");
whismanoid 23:c6c652bef4b9 3859 command_table_row_count = 0;
whismanoid 28:a9a3a9db592b 3860 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 23:c6c652bef4b9 3861 break;
whismanoid 23:c6c652bef4b9 3862 }
whismanoid 24:032f3683cb2a 3863 else
whismanoid 23:c6c652bef4b9 3864 {
whismanoid 24:032f3683cb2a 3865 // %B1@-nnn delete row number nnn (if list is not empty)
whismanoid 24:032f3683cb2a 3866 editRowIndex = atoi(cmdLine.str()+5);
whismanoid 24:032f3683cb2a 3867 if ((editRowIndex >= 0) && (editRowIndex < command_table_row_count)) {
whismanoid 24:032f3683cb2a 3868 cmdLine.serial().printf("\r\n delete row %d", editRowIndex);
whismanoid 24:032f3683cb2a 3869 // delete row editRowIndex from Datalogger_action_table
whismanoid 24:032f3683cb2a 3870 for (int i = editRowIndex; i < (command_table_row_count-1); i++)
whismanoid 24:032f3683cb2a 3871 {
whismanoid 24:032f3683cb2a 3872 // copy row i+1 into row i
whismanoid 24:032f3683cb2a 3873 cmdLine.serial().printf("\r\n copy row %d into row %d: \"%s\"",
whismanoid 24:032f3683cb2a 3874 i+1, i, command_table[i+1]);
whismanoid 24:032f3683cb2a 3875 strncpy(command_table[i], command_table[i+1], COMMAND_TABLE_COL_MAX-1);
whismanoid 28:a9a3a9db592b 3876 command_table[i][COMMAND_TABLE_COL_MAX-1]='\0'; // null character at end of line
whismanoid 24:032f3683cb2a 3877 }
whismanoid 24:032f3683cb2a 3878 command_table_row_count--;
whismanoid 28:a9a3a9db592b 3879 command_table[command_table_row_count][0]='\0'; // empty string marks end of command_table
whismanoid 24:032f3683cb2a 3880 }
whismanoid 23:c6c652bef4b9 3881 }
whismanoid 23:c6c652bef4b9 3882 }
whismanoid 23:c6c652bef4b9 3883 break;
whismanoid 30:07197a430869 3884 case '.': // something other than ! because %B1! means trigger event
whismanoid 30:07197a430869 3885 // pause the button event
whismanoid 30:07197a430869 3886 // TODO: %B1@. disable button response but keep command table contents
whismanoid 23:c6c652bef4b9 3887 //~ Datalogger_action_table_enabled = false;
whismanoid 23:c6c652bef4b9 3888 break;
whismanoid 23:c6c652bef4b9 3889 case '@':
whismanoid 30:07197a430869 3890 // enable the button event
whismanoid 23:c6c652bef4b9 3891 // TODO: %B1@@ enable button response
whismanoid 23:c6c652bef4b9 3892 //~ Datalogger_action_table_enabled = true;
whismanoid 23:c6c652bef4b9 3893 break;
whismanoid 23:c6c652bef4b9 3894 }
whismanoid 23:c6c652bef4b9 3895 //
whismanoid 23:c6c652bef4b9 3896 // Print the contents of command_table
whismanoid 23:c6c652bef4b9 3897 for (int lineIndex = 0; lineIndex < COMMAND_TABLE_ROW_MAX; lineIndex++) {
whismanoid 23:c6c652bef4b9 3898 if (command_table[lineIndex] == NULL) { break; }
whismanoid 23:c6c652bef4b9 3899 if (command_table[lineIndex][0] == '\0') { break; }
whismanoid 24:032f3683cb2a 3900 command_table_row_count = lineIndex+1;
whismanoid 24:032f3683cb2a 3901 cmdLine.serial().printf("\r\n %%B%1d@%d %s",
whismanoid 24:032f3683cb2a 3902 command_table_button_index,
whismanoid 24:032f3683cb2a 3903 lineIndex,
whismanoid 24:032f3683cb2a 3904 command_table[lineIndex]);
whismanoid 23:c6c652bef4b9 3905 }
whismanoid 30:07197a430869 3906 //~ cmdLine.serial().printf("\r\n command_table_row_count = %d/%d",
whismanoid 30:07197a430869 3907 //~ command_table_row_count, COMMAND_TABLE_ROW_MAX);
whismanoid 30:07197a430869 3908 cmdLine.serial().printf("\r\n\r\nEdit Button%d event (used %d/%d, %d free):",
whismanoid 30:07197a430869 3909 command_table_button_index,
whismanoid 30:07197a430869 3910 command_table_row_count,
whismanoid 30:07197a430869 3911 COMMAND_TABLE_ROW_MAX,
whismanoid 30:07197a430869 3912 (COMMAND_TABLE_ROW_MAX - command_table_row_count)
whismanoid 30:07197a430869 3913 );
whismanoid 23:c6c652bef4b9 3914 if (command_table_row_count < COMMAND_TABLE_ROW_MAX) {
whismanoid 23:c6c652bef4b9 3915 // if command_table_row_count => COMMAND_TABLE_ROW_MAX then the table is full
whismanoid 24:032f3683cb2a 3916 cmdLine.serial().printf("\r\n %%B%1d@+ command -- add new row %d at end of table",
whismanoid 24:032f3683cb2a 3917 command_table_button_index,
whismanoid 24:032f3683cb2a 3918 command_table_row_count);
whismanoid 23:c6c652bef4b9 3919 }
whismanoid 23:c6c652bef4b9 3920 if (command_table_row_count > 0) {
whismanoid 23:c6c652bef4b9 3921 // if command_table_row_count == 0 then the table is empty
whismanoid 24:032f3683cb2a 3922 cmdLine.serial().printf("\r\n %%B%1d@%d command -- replace row %d",
whismanoid 24:032f3683cb2a 3923 command_table_button_index,
whismanoid 23:c6c652bef4b9 3924 command_table_row_count-1,
whismanoid 23:c6c652bef4b9 3925 command_table_row_count-1);
whismanoid 24:032f3683cb2a 3926 cmdLine.serial().printf("\r\n %%B%1d@-%d -- delete row %d",
whismanoid 24:032f3683cb2a 3927 command_table_button_index,
whismanoid 24:032f3683cb2a 3928 command_table_row_count-1,
whismanoid 24:032f3683cb2a 3929 command_table_row_count-1);
whismanoid 24:032f3683cb2a 3930 cmdLine.serial().printf("\r\n %%B%1d@-~~~ -- delete all rows",
whismanoid 24:032f3683cb2a 3931 command_table_button_index);
whismanoid 30:07197a430869 3932 //~ cmdLine.serial().printf("\r\n %%B%1d@. -- pause entire command table",
whismanoid 30:07197a430869 3933 //~ command_table_button_index);
whismanoid 30:07197a430869 3934 //~ cmdLine.serial().printf("\r\n %%B%1d@@ -- enable command table",
whismanoid 30:07197a430869 3935 //~ command_table_button_index);
whismanoid 30:07197a430869 3936 cmdLine.serial().printf("\r\n %%B%1d! -- trigger Button%d event",
whismanoid 30:07197a430869 3937 command_table_button_index,
whismanoid 24:032f3683cb2a 3938 command_table_button_index);
whismanoid 23:c6c652bef4b9 3939 }
whismanoid 23:c6c652bef4b9 3940 //
whismanoid 23:c6c652bef4b9 3941 } // case '@' -- %B1@ view/edit command table
whismanoid 23:c6c652bef4b9 3942 break;
whismanoid 23:c6c652bef4b9 3943 case '!':
whismanoid 23:c6c652bef4b9 3944 // TODO: %B1! trigger onButton1FallingEdge() immediately (for test development)
whismanoid 23:c6c652bef4b9 3945 Run_command_table(command_table);
whismanoid 23:c6c652bef4b9 3946 break;
whismanoid 23:c6c652bef4b9 3947 }
whismanoid 23:c6c652bef4b9 3948 }
whismanoid 23:c6c652bef4b9 3949 break;
whismanoid 23:c6c652bef4b9 3950 #endif // USE_DATALOGGER_CommandTable
whismanoid 23:c6c652bef4b9 3951 //--------------------------------------------------
whismanoid 15:37c83ec50ea0 3952 #if HAS_digitalInOuts
whismanoid 15:37c83ec50ea0 3953 case 'H': case 'h':
whismanoid 15:37c83ec50ea0 3954 {
whismanoid 15:37c83ec50ea0 3955 // %Hpin -- digital output high
whismanoid 15:37c83ec50ea0 3956 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3957 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3958 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3959 #else
whismanoid 15:37c83ec50ea0 3960 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3961 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 3962 digitalInOutPin.write(1);
whismanoid 15:37c83ec50ea0 3963 #endif
whismanoid 15:37c83ec50ea0 3964 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 15:37c83ec50ea0 3965 }
whismanoid 15:37c83ec50ea0 3966 break;
whismanoid 15:37c83ec50ea0 3967 case 'L': case 'l':
whismanoid 15:37c83ec50ea0 3968 {
whismanoid 15:37c83ec50ea0 3969 // %Lpin -- digital output low
whismanoid 15:37c83ec50ea0 3970 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3971 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3972 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3973 #else
whismanoid 15:37c83ec50ea0 3974 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3975 digitalInOutPin.output();
whismanoid 15:37c83ec50ea0 3976 digitalInOutPin.write(0);
whismanoid 15:37c83ec50ea0 3977 #endif
whismanoid 15:37c83ec50ea0 3978 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 15:37c83ec50ea0 3979 }
whismanoid 15:37c83ec50ea0 3980 break;
whismanoid 15:37c83ec50ea0 3981 case '?':
whismanoid 15:37c83ec50ea0 3982 {
whismanoid 15:37c83ec50ea0 3983 // %?pin -- digital input
whismanoid 15:37c83ec50ea0 3984 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3985 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 15:37c83ec50ea0 3986 #else
whismanoid 15:37c83ec50ea0 3987 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 15:37c83ec50ea0 3988 digitalInOutPin.input();
whismanoid 15:37c83ec50ea0 3989 #endif
whismanoid 15:37c83ec50ea0 3990 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 15:37c83ec50ea0 3991 #if ARDUINO_STYLE
whismanoid 15:37c83ec50ea0 3992 int value = digitalRead(pinIndex);
whismanoid 15:37c83ec50ea0 3993 #else
whismanoid 15:37c83ec50ea0 3994 int value = digitalInOutPin.read();
whismanoid 15:37c83ec50ea0 3995 #endif
whismanoid 15:37c83ec50ea0 3996 cmdLine.serial().printf("%d ", value);
whismanoid 15:37c83ec50ea0 3997 }
whismanoid 15:37c83ec50ea0 3998 break;
whismanoid 15:37c83ec50ea0 3999 #endif
whismanoid 15:37c83ec50ea0 4000 //
whismanoid 15:37c83ec50ea0 4001 #if HAS_analogIns
whismanoid 15:37c83ec50ea0 4002 case 'A': case 'a':
whismanoid 15:37c83ec50ea0 4003 {
whismanoid 15:37c83ec50ea0 4004 // %A %Apin -- analog input
whismanoid 37:3f369235e5bc 4005 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4006 // %A avg= -- set Platform_AIN_Average_N
whismanoid 37:3f369235e5bc 4007 if (cmdLine.parse_int_dec("avg", Platform_AIN_Average_N))
whismanoid 37:3f369235e5bc 4008 {
whismanoid 37:3f369235e5bc 4009 // Platform_AIN_Average_N was updated
whismanoid 37:3f369235e5bc 4010 }
whismanoid 37:3f369235e5bc 4011 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4012 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4013 // %A cal? view/export raw calibration values for all channels
whismanoid 34:a1993a1ee904 4014 // double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4015 // double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4016 // double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4017 // double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4018 {
whismanoid 34:a1993a1ee904 4019 char valueBuf[16];
whismanoid 34:a1993a1ee904 4020 // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 34:a1993a1ee904 4021 if (cmdLine.parse_and_remove_key("cal?", valueBuf, sizeof(valueBuf)))
whismanoid 34:a1993a1ee904 4022 {
whismanoid 34:a1993a1ee904 4023 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4024 {
whismanoid 34:a1993a1ee904 4025 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 4026 ch, calibration_05_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4027 ch, calibration_05_V[ch],
whismanoid 34:a1993a1ee904 4028 ch, calibration_95_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4029 ch, calibration_95_V[ch]
whismanoid 34:a1993a1ee904 4030 );
whismanoid 34:a1993a1ee904 4031 }
whismanoid 34:a1993a1ee904 4032 //
whismanoid 34:a1993a1ee904 4033 // print extended help for %A
whismanoid 34:a1993a1ee904 4034 // %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 4035 //~ cmdLine.serial().printf("\r\n %%A cal0n=0.02 cal0v=0.123 cal0n=0.938 cal0v=1.132 -- update calibration");
whismanoid 34:a1993a1ee904 4036 // %A cal0test=0.5 test calibration functions by calculating the calibrated voltage of specified normValue_0_1
whismanoid 34:a1993a1ee904 4037 cmdLine.serial().printf(" %%A cal0test=0.5 -- calculate voltage at 50%% of full scale");
whismanoid 34:a1993a1ee904 4038 cmdLine.serial().printf("\r\n %%A v0cal=1.000V -- calibrate channel against a known input voltage");
whismanoid 34:a1993a1ee904 4039 // TODO: %A___TBD___ save calibration values in non-volatile memory on-chip (if supported)
whismanoid 34:a1993a1ee904 4040 // TODO: %A___TBD___ load calibration values from non-volatile memory on-chip (if supported)
whismanoid 34:a1993a1ee904 4041 // %A calreset -- reset all calibration data
whismanoid 34:a1993a1ee904 4042 cmdLine.serial().printf("\r\n %%A calreset -- reset all calibration data");
whismanoid 37:3f369235e5bc 4043 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4044 // %A avg=%d -- help string display Platform_AIN_Average_N
whismanoid 37:3f369235e5bc 4045 cmdLine.serial().printf("\r\n %%A avg=%d -- average", Platform_AIN_Average_N);
whismanoid 37:3f369235e5bc 4046 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4047 cmdLine.serial().printf("\r\n\r\n");
whismanoid 34:a1993a1ee904 4048 //
whismanoid 34:a1993a1ee904 4049 } // end if (cmdLine.parse_and_remove_key("cal?", valueBuf, sizeof(valueBuf)))
whismanoid 34:a1993a1ee904 4050 }
whismanoid 34:a1993a1ee904 4051 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4052 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4053 {
whismanoid 34:a1993a1ee904 4054 // %A calreset -- reset all calibration data
whismanoid 34:a1993a1ee904 4055 char valueBuf[16];
whismanoid 34:a1993a1ee904 4056 // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 34:a1993a1ee904 4057 if (cmdLine.parse_and_remove_key("calreset", valueBuf, sizeof(valueBuf)))
whismanoid 34:a1993a1ee904 4058 {
whismanoid 34:a1993a1ee904 4059 // nominal 5% fullscale point; normValue_0_1 < 0.5
whismanoid 34:a1993a1ee904 4060 calibration_05_normValue_0_1[0] = 0.25; calibration_05_V[0] = 0.3;
whismanoid 34:a1993a1ee904 4061 calibration_05_normValue_0_1[1] = 0.25; calibration_05_V[1] = 0.3;
whismanoid 34:a1993a1ee904 4062 calibration_05_normValue_0_1[2] = 0.25; calibration_05_V[2] = 0.3;
whismanoid 34:a1993a1ee904 4063 calibration_05_normValue_0_1[3] = 0.25; calibration_05_V[3] = 0.3;
whismanoid 34:a1993a1ee904 4064 calibration_05_normValue_0_1[4] = 0.25; calibration_05_V[4] = 1.5;
whismanoid 34:a1993a1ee904 4065 calibration_05_normValue_0_1[5] = 0.25; calibration_05_V[5] = 1.5;
whismanoid 34:a1993a1ee904 4066 //
whismanoid 34:a1993a1ee904 4067 // nominal 95% fullscale point; normValue_0_1 > 0.5
whismanoid 34:a1993a1ee904 4068 calibration_95_normValue_0_1[0] = 0.75; calibration_95_V[0] = 0.9;
whismanoid 34:a1993a1ee904 4069 calibration_95_normValue_0_1[1] = 0.75; calibration_95_V[1] = 0.9;
whismanoid 34:a1993a1ee904 4070 calibration_95_normValue_0_1[2] = 0.75; calibration_95_V[2] = 0.9;
whismanoid 34:a1993a1ee904 4071 calibration_95_normValue_0_1[3] = 0.75; calibration_95_V[3] = 0.9;
whismanoid 34:a1993a1ee904 4072 calibration_95_normValue_0_1[4] = 0.75; calibration_95_V[4] = 4.5;
whismanoid 34:a1993a1ee904 4073 calibration_95_normValue_0_1[5] = 0.75; calibration_95_V[5] = 4.5;
whismanoid 34:a1993a1ee904 4074 //
whismanoid 34:a1993a1ee904 4075 }
whismanoid 34:a1993a1ee904 4076 }
whismanoid 34:a1993a1ee904 4077 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4078 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4079 // %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 4080 // %A cal4n=0.135874882 cal4v=0.800000012V cal4n=0.286168128 cal4v=1.700000048V
whismanoid 34:a1993a1ee904 4081 // double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4082 // double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4083 // double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4084 // double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4085 {
whismanoid 34:a1993a1ee904 4086 double normValue_0_1, V;
whismanoid 34:a1993a1ee904 4087 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4088 {
whismanoid 34:a1993a1ee904 4089 static char key_can0n[8] = "cal0n__";
whismanoid 34:a1993a1ee904 4090 sprintf(key_can0n, "cal%1dn", ch);
whismanoid 34:a1993a1ee904 4091 static char key_cal0v[8] = "cal0v__";
whismanoid 34:a1993a1ee904 4092 sprintf(key_cal0v, "cal%1dv", ch);
whismanoid 35:c9549b5c01de 4093 // first point could be the 5% point or the 95% point
whismanoid 35:c9549b5c01de 4094 double norm_threshold = (calibration_05_normValue_0_1[ch] + calibration_95_normValue_0_1[ch]) / 2.0;
whismanoid 35:c9549b5c01de 4095 bool updated_05 = false;
whismanoid 35:c9549b5c01de 4096 //~ bool updated_95 = false;
whismanoid 35:c9549b5c01de 4097 if (cmdLine.parse_double(key_can0n, normValue_0_1)) {
whismanoid 34:a1993a1ee904 4098 if (cmdLine.parse_double(key_cal0v, V))
whismanoid 34:a1993a1ee904 4099 {
whismanoid 35:c9549b5c01de 4100 if (normValue_0_1 < norm_threshold) {
whismanoid 35:c9549b5c01de 4101 // store first calibration point in the 5% slot
whismanoid 35:c9549b5c01de 4102 calibration_05_normValue_0_1[ch] = normValue_0_1;
whismanoid 34:a1993a1ee904 4103 calibration_05_V[ch] = V;
whismanoid 35:c9549b5c01de 4104 updated_05 = true;
whismanoid 34:a1993a1ee904 4105 }
whismanoid 34:a1993a1ee904 4106 else {
whismanoid 35:c9549b5c01de 4107 // store first calibration point in the 95% slot
whismanoid 35:c9549b5c01de 4108 calibration_95_normValue_0_1[ch] = normValue_0_1;
whismanoid 34:a1993a1ee904 4109 calibration_95_V[ch] = V;
whismanoid 35:c9549b5c01de 4110 //~ updated_95 = true;
whismanoid 34:a1993a1ee904 4111 }
whismanoid 34:a1993a1ee904 4112 }
whismanoid 35:c9549b5c01de 4113 }
whismanoid 35:c9549b5c01de 4114 // handle the optional second calibration point
whismanoid 35:c9549b5c01de 4115 if (cmdLine.parse_double(key_can0n, normValue_0_1))
whismanoid 35:c9549b5c01de 4116 {
whismanoid 35:c9549b5c01de 4117 if (cmdLine.parse_double(key_cal0v, V))
whismanoid 35:c9549b5c01de 4118 {
whismanoid 35:c9549b5c01de 4119 if (updated_05) {
whismanoid 35:c9549b5c01de 4120 // we already stored the first point here
whismanoid 35:c9549b5c01de 4121 // calibration_05_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4122 // calibration_05_V[ch] = V;
whismanoid 35:c9549b5c01de 4123 // store the second point in the other slot
whismanoid 35:c9549b5c01de 4124 calibration_95_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4125 calibration_95_V[ch] = V;
whismanoid 35:c9549b5c01de 4126 }
whismanoid 35:c9549b5c01de 4127 else {
whismanoid 35:c9549b5c01de 4128 // we already stored the first point here
whismanoid 35:c9549b5c01de 4129 // calibration_95_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4130 // calibration_95_V[ch] = V;
whismanoid 35:c9549b5c01de 4131 // store the second point in the other slot
whismanoid 35:c9549b5c01de 4132 calibration_05_normValue_0_1[ch] = normValue_0_1;
whismanoid 35:c9549b5c01de 4133 calibration_05_V[ch] = V;
whismanoid 35:c9549b5c01de 4134 }
whismanoid 35:c9549b5c01de 4135 }
whismanoid 35:c9549b5c01de 4136 }
whismanoid 38:fda80a0020d1 4137 // make sure calibration_05_normValue_0_1[ch] < calibration_95_normValue_0_1[ch]
whismanoid 38:fda80a0020d1 4138 if (calibration_05_normValue_0_1[ch] > calibration_95_normValue_0_1[ch])
whismanoid 38:fda80a0020d1 4139 {
whismanoid 38:fda80a0020d1 4140 // swap to make sure calibration_05_normValue_0_1[ch] < calibration_95_normValue_0_1[ch]
whismanoid 38:fda80a0020d1 4141 double n05 = calibration_95_normValue_0_1[ch];
whismanoid 38:fda80a0020d1 4142 double V05 = calibration_95_V[ch];
whismanoid 38:fda80a0020d1 4143 double n95 = calibration_05_normValue_0_1[ch];
whismanoid 38:fda80a0020d1 4144 double V95 = calibration_05_V[ch];
whismanoid 38:fda80a0020d1 4145 calibration_05_normValue_0_1[ch] = n05;
whismanoid 38:fda80a0020d1 4146 calibration_05_V[ch] = V05;
whismanoid 38:fda80a0020d1 4147 calibration_95_normValue_0_1[ch] = n95;
whismanoid 38:fda80a0020d1 4148 calibration_95_V[ch] = V95;
whismanoid 38:fda80a0020d1 4149 }
whismanoid 34:a1993a1ee904 4150 } // end for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4151 }
whismanoid 34:a1993a1ee904 4152 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4153 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4154 // %A cal0test=0.5 test calibration functions by calculating the calibrated voltage of specified normValue_0_1
whismanoid 34:a1993a1ee904 4155 // double CalibratedNormValue(int channel_0_5, double raw_normValue_0_1);
whismanoid 34:a1993a1ee904 4156 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4157 {
whismanoid 34:a1993a1ee904 4158 static char key_cal0test[12] = "cal0test__";
whismanoid 34:a1993a1ee904 4159 sprintf(key_cal0test, "cal%1dtest", ch);
whismanoid 34:a1993a1ee904 4160 double normValue_0_1, Vtest;
whismanoid 34:a1993a1ee904 4161 if (cmdLine.parse_double(key_cal0test, Vtest))
whismanoid 34:a1993a1ee904 4162 {
whismanoid 34:a1993a1ee904 4163 // divide Vtest/adc_full_scale_voltage[0] to get normValue_0_1
whismanoid 34:a1993a1ee904 4164 normValue_0_1 = Vtest/adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 4165 //
whismanoid 34:a1993a1ee904 4166 cmdLine.serial().printf(" CalibratedNormValue(%d, %1.6f) = %1.6f = %1.6fV\r\n",
whismanoid 34:a1993a1ee904 4167 ch,
whismanoid 34:a1993a1ee904 4168 normValue_0_1,
whismanoid 34:a1993a1ee904 4169 CalibratedNormValue(ch, normValue_0_1),
whismanoid 34:a1993a1ee904 4170 (CalibratedNormValue(ch, normValue_0_1) * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4171 );
whismanoid 34:a1993a1ee904 4172 //
whismanoid 34:a1993a1ee904 4173 // sweep CalibratedNormValue argument
whismanoid 34:a1993a1ee904 4174 double normValue_0_1_start = -0.05;
whismanoid 34:a1993a1ee904 4175 double normValue_0_1_step = 0.05;
whismanoid 34:a1993a1ee904 4176 double normValue_0_1_end = 1.07;
whismanoid 34:a1993a1ee904 4177 for (normValue_0_1 = normValue_0_1_start;
whismanoid 34:a1993a1ee904 4178 normValue_0_1 <= normValue_0_1_end;
whismanoid 34:a1993a1ee904 4179 normValue_0_1 = normValue_0_1 + normValue_0_1_step)
whismanoid 34:a1993a1ee904 4180 {
whismanoid 34:a1993a1ee904 4181 cmdLine.serial().printf(" CalibratedNormValue(%d, %1.6f) = %1.6f = %1.6fV\r\n",
whismanoid 34:a1993a1ee904 4182 ch,
whismanoid 34:a1993a1ee904 4183 normValue_0_1,
whismanoid 34:a1993a1ee904 4184 CalibratedNormValue(ch, normValue_0_1),
whismanoid 34:a1993a1ee904 4185 (CalibratedNormValue(ch, normValue_0_1) * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4186 );
whismanoid 34:a1993a1ee904 4187 }
whismanoid 34:a1993a1ee904 4188 }
whismanoid 34:a1993a1ee904 4189 } // end for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4190 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4191 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4192 // %A v0cal=1.000V -- calibrate channel against a known input voltage
whismanoid 34:a1993a1ee904 4193 // double calibration_05_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4194 // double calibration_05_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4195 // double calibration_95_normValue_0_1 [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4196 // double calibration_95_V [NUM_PLATFORM_ANALOG_IN_CHANNELS] = {0.0, ... }
whismanoid 34:a1993a1ee904 4197 for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4198 {
whismanoid 34:a1993a1ee904 4199 static char key_v0cal[10] = "v0cal__";
whismanoid 34:a1993a1ee904 4200 sprintf(key_v0cal, "v%1dcal", ch);
whismanoid 34:a1993a1ee904 4201 double Vtest;
whismanoid 34:a1993a1ee904 4202 if (cmdLine.parse_double(key_v0cal, Vtest))
whismanoid 34:a1993a1ee904 4203 {
whismanoid 34:a1993a1ee904 4204 // divide Vtest/adc_full_scale_voltage[0] to get normValue_0_1
whismanoid 34:a1993a1ee904 4205 double Vtest_normValue_0_1 = Vtest/adc_full_scale_voltage[ch];
whismanoid 34:a1993a1ee904 4206 //
whismanoid 34:a1993a1ee904 4207 // %A v0cal=1.000 calibrate one channel by measuring against a known input voltage
whismanoid 34:a1993a1ee904 4208 //
whismanoid 34:a1993a1ee904 4209 cmdLine.serial().printf("\r\n Measuring against input voltage of %1.6fV...", Vtest);
whismanoid 37:3f369235e5bc 4210 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4211 const int numberOfMeasurements = 16 * Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4212 #else // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4213 const int numberOfMeasurements = 16;
whismanoid 37:3f369235e5bc 4214 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4215 double Sx_measure_normValue_0_1 = 0; // sum of values
whismanoid 34:a1993a1ee904 4216 double Sxx_measure_normValue_0_1 = 0; // sum of the squares of the values
whismanoid 34:a1993a1ee904 4217 for (int count = 0; count < numberOfMeasurements; count++)
whismanoid 34:a1993a1ee904 4218 {
whismanoid 34:a1993a1ee904 4219 double measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4220 switch(ch)
whismanoid 34:a1993a1ee904 4221 {
whismanoid 34:a1993a1ee904 4222 case 0: measure_normValue_0_1 = analogIn0.read(); break;
whismanoid 34:a1993a1ee904 4223 case 1: measure_normValue_0_1 = analogIn1.read(); break;
whismanoid 34:a1993a1ee904 4224 case 2: measure_normValue_0_1 = analogIn2.read(); break;
whismanoid 34:a1993a1ee904 4225 case 3: measure_normValue_0_1 = analogIn3.read(); break;
whismanoid 34:a1993a1ee904 4226 case 4: measure_normValue_0_1 = analogIn4.read(); break;
whismanoid 34:a1993a1ee904 4227 case 5: measure_normValue_0_1 = analogIn5.read(); break;
whismanoid 34:a1993a1ee904 4228 }
whismanoid 34:a1993a1ee904 4229 Sx_measure_normValue_0_1 = Sx_measure_normValue_0_1 + measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4230 Sxx_measure_normValue_0_1 = Sxx_measure_normValue_0_1 + (measure_normValue_0_1 * measure_normValue_0_1);
whismanoid 38:fda80a0020d1 4231 if ((count < 3) || (count >= numberOfMeasurements - 3)) {
whismanoid 38:fda80a0020d1 4232 cmdLine.serial().printf("\r\n raw: %7.6f%% = %1.6fV",
whismanoid 38:fda80a0020d1 4233 measure_normValue_0_1 * 100.0,
whismanoid 38:fda80a0020d1 4234 (measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 38:fda80a0020d1 4235 );
whismanoid 38:fda80a0020d1 4236 }
whismanoid 34:a1993a1ee904 4237 }
whismanoid 34:a1993a1ee904 4238 cmdLine.serial().printf("\r\n numberOfMeasurements = %d", numberOfMeasurements);
whismanoid 34:a1993a1ee904 4239 cmdLine.serial().printf("\r\n Sx_measure_normValue_0_1 = %1.6f", Sx_measure_normValue_0_1);
whismanoid 34:a1993a1ee904 4240 cmdLine.serial().printf("\r\n Sxx_measure_normValue_0_1 = %1.6f", Sxx_measure_normValue_0_1);
whismanoid 34:a1993a1ee904 4241 //
whismanoid 34:a1993a1ee904 4242 // calculate mean_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 mean_measure_normValue_0_1 = Sx_measure_normValue_0_1 / numberOfMeasurements;
whismanoid 34:a1993a1ee904 4245 cmdLine.serial().printf("\r\n mean = %7.6f%% = %1.6fV",
whismanoid 34:a1993a1ee904 4246 mean_measure_normValue_0_1 * 100.0,
whismanoid 34:a1993a1ee904 4247 (mean_measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4248 );
whismanoid 34:a1993a1ee904 4249 //
whismanoid 34:a1993a1ee904 4250 // TODO: calculate sample variance_measure_normValue_0_1 from
whismanoid 34:a1993a1ee904 4251 // Sxx_measure_normValue_0_1, Sx_measure_normValue_0_1, numberOfMeasurements
whismanoid 34:a1993a1ee904 4252 // variance_measure_normValue_0_1 = (Sxx - ( Sx * Sx / nWords) ) / (nWords - 1);
whismanoid 34:a1993a1ee904 4253 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 4254 cmdLine.serial().printf("\r\n variance = %7.6f%% = %1.6fV",
whismanoid 34:a1993a1ee904 4255 variance_measure_normValue_0_1 * 100.0,
whismanoid 34:a1993a1ee904 4256 (variance_measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4257 );
whismanoid 34:a1993a1ee904 4258 //
whismanoid 34:a1993a1ee904 4259 // calculate sample stddev_measure_normValue_0_1 from
whismanoid 34:a1993a1ee904 4260 // Sxx_measure_normValue_0_1, Sx_measure_normValue_0_1, numberOfMeasurements
whismanoid 34:a1993a1ee904 4261 double stddev_measure_normValue_0_1 = sqrt(variance_measure_normValue_0_1);
whismanoid 34:a1993a1ee904 4262 cmdLine.serial().printf("\r\n stddev = %7.6f%% = %1.6fV",
whismanoid 34:a1993a1ee904 4263 stddev_measure_normValue_0_1 * 100.0,
whismanoid 34:a1993a1ee904 4264 (stddev_measure_normValue_0_1 * adc_full_scale_voltage[ch])
whismanoid 34:a1993a1ee904 4265 );
whismanoid 34:a1993a1ee904 4266 //
whismanoid 34:a1993a1ee904 4267 // Validate the measurements:
whismanoid 34:a1993a1ee904 4268 // is the mean near the expected value?
whismanoid 34:a1993a1ee904 4269 // is the standard deviation not too high?
whismanoid 34:a1993a1ee904 4270 bool isCalibrationValid = true;
whismanoid 34:a1993a1ee904 4271 if ((Vtest_normValue_0_1 - mean_measure_normValue_0_1) > 0.1) {
whismanoid 34:a1993a1ee904 4272 isCalibrationValid = false;
whismanoid 34:a1993a1ee904 4273 cmdLine.serial().printf(" mean value too far from expected.\r\n");
whismanoid 34:a1993a1ee904 4274 }
whismanoid 34:a1993a1ee904 4275 if ((Vtest_normValue_0_1 - mean_measure_normValue_0_1) < -0.1) {
whismanoid 34:a1993a1ee904 4276 isCalibrationValid = false;
whismanoid 34:a1993a1ee904 4277 cmdLine.serial().printf(" mean value too far from expected.\r\n");
whismanoid 34:a1993a1ee904 4278 }
whismanoid 34:a1993a1ee904 4279 if ((stddev_measure_normValue_0_1) > 10) {
whismanoid 34:a1993a1ee904 4280 isCalibrationValid = false;
whismanoid 34:a1993a1ee904 4281 cmdLine.serial().printf(" stddev too high.\r\n");
whismanoid 34:a1993a1ee904 4282 }
whismanoid 34:a1993a1ee904 4283 if (isCalibrationValid)
whismanoid 34:a1993a1ee904 4284 {
whismanoid 34:a1993a1ee904 4285 // update calibration point (mean_measure_normValue_0_1, Vtest)
whismanoid 34:a1993a1ee904 4286 if (Vtest_normValue_0_1 < 0.5) {
whismanoid 34:a1993a1ee904 4287 calibration_05_normValue_0_1[ch] = mean_measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4288 calibration_05_V[ch] = Vtest;
whismanoid 34:a1993a1ee904 4289 } else {
whismanoid 34:a1993a1ee904 4290 calibration_95_normValue_0_1[ch] = mean_measure_normValue_0_1;
whismanoid 34:a1993a1ee904 4291 calibration_95_V[ch] = Vtest;
whismanoid 34:a1993a1ee904 4292 }
whismanoid 34:a1993a1ee904 4293 //
whismanoid 34:a1993a1ee904 4294 // print updated calibration values
whismanoid 34:a1993a1ee904 4295 cmdLine.serial().printf("\r\n");
whismanoid 34:a1993a1ee904 4296 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 4297 ch, calibration_05_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4298 ch, calibration_05_V[ch],
whismanoid 34:a1993a1ee904 4299 ch, calibration_95_normValue_0_1[ch],
whismanoid 34:a1993a1ee904 4300 ch, calibration_95_V[ch]
whismanoid 34:a1993a1ee904 4301 );
whismanoid 34:a1993a1ee904 4302 // print corrected value of mean of measurements (should be close to Vtest)
whismanoid 34:a1993a1ee904 4303 cmdLine.serial().printf(" CalibratedNormValue(%d, %1.6f) = %1.6f = %1.6fV vs %1.6fV\r\n",
whismanoid 34:a1993a1ee904 4304 ch,
whismanoid 34:a1993a1ee904 4305 mean_measure_normValue_0_1,
whismanoid 34:a1993a1ee904 4306 CalibratedNormValue(ch, mean_measure_normValue_0_1),
whismanoid 34:a1993a1ee904 4307 (CalibratedNormValue(ch, mean_measure_normValue_0_1) * adc_full_scale_voltage[ch]),
whismanoid 34:a1993a1ee904 4308 Vtest
whismanoid 34:a1993a1ee904 4309 );
whismanoid 34:a1993a1ee904 4310 } // end if (isCalibrationValid)
whismanoid 34:a1993a1ee904 4311 else {
whismanoid 34:a1993a1ee904 4312 cmdLine.serial().printf("\r\n");
whismanoid 34:a1993a1ee904 4313 cmdLine.serial().printf(" Measurement Error: Calibration will not be updated.\r\n");
whismanoid 34:a1993a1ee904 4314 } // end if (isCalibrationValid)
whismanoid 34:a1993a1ee904 4315 } // end if key_v0cal
whismanoid 34:a1993a1ee904 4316 } // end for (int ch = 0; ch < NUM_PLATFORM_ANALOG_IN_CHANNELS; ch++)
whismanoid 34:a1993a1ee904 4317 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4318 #if HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 4319 // // TODO: %A___TBD___ save calibration values in non-volatile memory on-chip (if supported)
whismanoid 37:3f369235e5bc 4320 // {
whismanoid 37:3f369235e5bc 4321 // char valueBuf[16];
whismanoid 37:3f369235e5bc 4322 // // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 37:3f369235e5bc 4323 // if (cmdLine.parse_and_remove_key("__TBD_saveCal__", valueBuf, sizeof(valueBuf)))
whismanoid 37:3f369235e5bc 4324 // {
whismanoid 37:3f369235e5bc 4325 // // handle %A __TBD_saveCal__ -- command
whismanoid 37:3f369235e5bc 4326 // }
whismanoid 37:3f369235e5bc 4327 // }
whismanoid 34:a1993a1ee904 4328 #endif // HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4329 #if HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 4330 // // TODO: %A___TBD___ load calibration values from non-volatile memory on-chip (if supported)
whismanoid 37:3f369235e5bc 4331 // {
whismanoid 37:3f369235e5bc 4332 // char valueBuf[16];
whismanoid 37:3f369235e5bc 4333 // // bool parse_and_remove_key(const char *key, char *valueBuf, int valueBufLen);
whismanoid 37:3f369235e5bc 4334 // if (cmdLine.parse_and_remove_key("__TBD_loadCal__", valueBuf, sizeof(valueBuf)))
whismanoid 37:3f369235e5bc 4335 // {
whismanoid 37:3f369235e5bc 4336 // // handle %A __TBD_loadCal__ -- command
whismanoid 37:3f369235e5bc 4337 // }
whismanoid 37:3f369235e5bc 4338 // }
whismanoid 34:a1993a1ee904 4339 #endif // HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 4340 // %A -- report analog input voltages
whismanoid 37:3f369235e5bc 4341 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4342 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4343 #endif // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4344 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 4345 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 15:37c83ec50ea0 4346 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 15:37c83ec50ea0 4347 {
whismanoid 15:37c83ec50ea0 4348 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 4349 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 4350 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 37:3f369235e5bc 4351 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4352 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4353 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4354 float normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 4355 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4356 normValue_0_1 = normValue_0_1 + analogInPin.read();
whismanoid 37:3f369235e5bc 4357 }
whismanoid 37:3f369235e5bc 4358 normValue_0_1 = normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4359 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4360 float normValue_0_1 = analogInPin.read();
whismanoid 37:3f369235e5bc 4361 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4362 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4363 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4364 normValue_0_1 = CalibratedNormValue(pinIndex, normValue_0_1);
whismanoid 34:a1993a1ee904 4365 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4366 //
whismanoid 15:37c83ec50ea0 4367 int pinIndexH = pinIndex + 4;
whismanoid 15:37c83ec50ea0 4368 int cPinIndexH = '0' + pinIndexH;
whismanoid 15:37c83ec50ea0 4369 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 15:37c83ec50ea0 4370 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 37:3f369235e5bc 4371 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4372 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4373 // float normValueH_0_1 = analogInPinH.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4374 float normValueH_0_1 = 0;
whismanoid 37:3f369235e5bc 4375 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4376 normValueH_0_1 = normValueH_0_1 + analogInPinH.read();
whismanoid 37:3f369235e5bc 4377 }
whismanoid 37:3f369235e5bc 4378 normValueH_0_1 = normValueH_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4379 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4380 float normValueH_0_1 = analogInPinH.read();
whismanoid 37:3f369235e5bc 4381 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4382 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4383 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4384 normValueH_0_1 = CalibratedNormValue(pinIndex, normValueH_0_1);
whismanoid 34:a1993a1ee904 4385 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4386 //
whismanoid 37:3f369235e5bc 4387 cmdLine.serial().printf("A%c = %7.3f%% = %1.3fV high range A%c = %7.3f%% = %1.3fV \r\n",
whismanoid 15:37c83ec50ea0 4388 cPinIndex,
whismanoid 15:37c83ec50ea0 4389 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4390 normValue_0_1 * adc_full_scale_voltage,
whismanoid 15:37c83ec50ea0 4391 cPinIndexH,
whismanoid 15:37c83ec50ea0 4392 normValueH_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4393 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 15:37c83ec50ea0 4394 );
whismanoid 15:37c83ec50ea0 4395 }
whismanoid 15:37c83ec50ea0 4396 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 15:37c83ec50ea0 4397 {
whismanoid 15:37c83ec50ea0 4398 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 4399 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 4400 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 37:3f369235e5bc 4401 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4402 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4403 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4404 float normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 4405 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4406 normValue_0_1 = normValue_0_1 + analogInPin.read();
whismanoid 37:3f369235e5bc 4407 }
whismanoid 37:3f369235e5bc 4408 normValue_0_1 = normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4409 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4410 float normValue_0_1 = analogInPin.read();
whismanoid 37:3f369235e5bc 4411 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4412 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4413 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4414 normValue_0_1 = CalibratedNormValue(pinIndex, normValue_0_1);
whismanoid 34:a1993a1ee904 4415 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4416 //
whismanoid 37:3f369235e5bc 4417 cmdLine.serial().printf("A%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 4418 cPinIndex,
whismanoid 15:37c83ec50ea0 4419 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4420 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 4421 );
whismanoid 15:37c83ec50ea0 4422 }
whismanoid 15:37c83ec50ea0 4423 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 4424 // Platform board uses simple analog inputs
whismanoid 15:37c83ec50ea0 4425 // assume standard Arduino analog inputs A0-A5
whismanoid 15:37c83ec50ea0 4426 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 15:37c83ec50ea0 4427 {
whismanoid 15:37c83ec50ea0 4428 int cPinIndex = '0' + pinIndex;
whismanoid 15:37c83ec50ea0 4429 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 15:37c83ec50ea0 4430 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 37:3f369235e5bc 4431 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 4432 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogInPin.read()
whismanoid 37:3f369235e5bc 4433 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 4434 float normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 4435 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 4436 normValue_0_1 = normValue_0_1 + analogInPin.read();
whismanoid 37:3f369235e5bc 4437 }
whismanoid 37:3f369235e5bc 4438 normValue_0_1 = normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 4439 #else // USE_Platform_AIN_Average
whismanoid 15:37c83ec50ea0 4440 float normValue_0_1 = analogInPin.read();
whismanoid 37:3f369235e5bc 4441 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 4442 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 4443 // apply calibration to normValue_0_1 value
whismanoid 34:a1993a1ee904 4444 normValue_0_1 = CalibratedNormValue(pinIndex, normValue_0_1);
whismanoid 34:a1993a1ee904 4445 #endif // HAS_Platform_AIN_Calibration
whismanoid 15:37c83ec50ea0 4446 //
whismanoid 37:3f369235e5bc 4447 cmdLine.serial().printf("A%c = %7.3f%% = %1.3fV\r\n",
whismanoid 15:37c83ec50ea0 4448 cPinIndex,
whismanoid 15:37c83ec50ea0 4449 normValue_0_1 * 100.0,
whismanoid 15:37c83ec50ea0 4450 normValue_0_1 * adc_full_scale_voltage
whismanoid 15:37c83ec50ea0 4451 );
whismanoid 15:37c83ec50ea0 4452 }
whismanoid 15:37c83ec50ea0 4453 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 15:37c83ec50ea0 4454 }
whismanoid 15:37c83ec50ea0 4455 break;
whismanoid 15:37c83ec50ea0 4456 #endif
whismanoid 15:37c83ec50ea0 4457 //
whismanoid 15:37c83ec50ea0 4458 #if HAS_SPI2_MAX541
whismanoid 15:37c83ec50ea0 4459 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 4460 {
whismanoid 15:37c83ec50ea0 4461 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 15:37c83ec50ea0 4462 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 15:37c83ec50ea0 4463 float voltageV = max541.Get_Voltage();
whismanoid 15:37c83ec50ea0 4464 // if (cmdLine[2] == '+') {
whismanoid 15:37c83ec50ea0 4465 // // %D+
whismanoid 15:37c83ec50ea0 4466 // voltageV = voltageV * 1.25f;
whismanoid 15:37c83ec50ea0 4467 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 15:37c83ec50ea0 4468 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4469 // }
whismanoid 15:37c83ec50ea0 4470 // else if (cmdLine[2] == '-') {
whismanoid 15:37c83ec50ea0 4471 // // %D-
whismanoid 15:37c83ec50ea0 4472 // voltageV = voltageV * 0.75f;
whismanoid 15:37c83ec50ea0 4473 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 15:37c83ec50ea0 4474 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4475 // }
whismanoid 15:37c83ec50ea0 4476 if (cmdLine.parse_float("V", voltageV))
whismanoid 15:37c83ec50ea0 4477 {
whismanoid 15:37c83ec50ea0 4478 // %D V=1.234 -- set voltage
whismanoid 15:37c83ec50ea0 4479 max541.Set_Voltage(voltageV);
whismanoid 15:37c83ec50ea0 4480 }
whismanoid 15:37c83ec50ea0 4481 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 15:37c83ec50ea0 4482 {
whismanoid 15:37c83ec50ea0 4483 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 15:37c83ec50ea0 4484 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4485 }
whismanoid 15:37c83ec50ea0 4486 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 15:37c83ec50ea0 4487 {
whismanoid 15:37c83ec50ea0 4488 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 15:37c83ec50ea0 4489
whismanoid 15:37c83ec50ea0 4490 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 15:37c83ec50ea0 4491 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 4492 const int average_count = 100;
whismanoid 15:37c83ec50ea0 4493 const double average_K = 0.25;
whismanoid 15:37c83ec50ea0 4494 for (int count = 0; count < average_count; count++) {
whismanoid 15:37c83ec50ea0 4495 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 15:37c83ec50ea0 4496 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 15:37c83ec50ea0 4497 }
whismanoid 15:37c83ec50ea0 4498 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 15:37c83ec50ea0 4499 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4500 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 15:37c83ec50ea0 4501 max541_midscale_V, max541.VRef);
whismanoid 15:37c83ec50ea0 4502 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 15:37c83ec50ea0 4503 voltageV = 1.0f;
whismanoid 15:37c83ec50ea0 4504 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 15:37c83ec50ea0 4505 }
whismanoid 15:37c83ec50ea0 4506 else {
whismanoid 15:37c83ec50ea0 4507 // %D -- print MAX541 DAC status
whismanoid 15:37c83ec50ea0 4508 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 15:37c83ec50ea0 4509 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 15:37c83ec50ea0 4510 }
whismanoid 15:37c83ec50ea0 4511 }
whismanoid 15:37c83ec50ea0 4512 break;
whismanoid 15:37c83ec50ea0 4513 #endif
whismanoid 15:37c83ec50ea0 4514
whismanoid 15:37c83ec50ea0 4515 //
whismanoid 15:37c83ec50ea0 4516 #if HAS_I2C // SUPPORT_I2C
whismanoid 15:37c83ec50ea0 4517 case 'I': case 'i':
whismanoid 15:37c83ec50ea0 4518 // %I... -- I2C diagnostics
whismanoid 15:37c83ec50ea0 4519 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 4520 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 4521 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 4522 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 4523 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 4524 // get next character
whismanoid 15:37c83ec50ea0 4525 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 15:37c83ec50ea0 4526 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 15:37c83ec50ea0 4527 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 15:37c83ec50ea0 4528 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 15:37c83ec50ea0 4529 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 15:37c83ec50ea0 4530 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 15:37c83ec50ea0 4531 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 15:37c83ec50ea0 4532 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 4533 {
whismanoid 15:37c83ec50ea0 4534 case 'P': case 'p':
whismanoid 15:37c83ec50ea0 4535 {
whismanoid 15:37c83ec50ea0 4536 // %IP -- I2C probe
whismanoid 15:37c83ec50ea0 4537 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 15:37c83ec50ea0 4538 }
whismanoid 15:37c83ec50ea0 4539 break;
whismanoid 15:37c83ec50ea0 4540 case 'C': case 'c':
whismanoid 15:37c83ec50ea0 4541 {
whismanoid 15:37c83ec50ea0 4542 bool isUpdatedI2CConfig = false;
whismanoid 15:37c83ec50ea0 4543 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 15:37c83ec50ea0 4544 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 15:37c83ec50ea0 4545 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 15:37c83ec50ea0 4546 {
whismanoid 15:37c83ec50ea0 4547 isUpdatedI2CConfig = true;
whismanoid 15:37c83ec50ea0 4548 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 4549 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 4550 {
whismanoid 15:37c83ec50ea0 4551 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 4552 }
whismanoid 15:37c83ec50ea0 4553 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 15:37c83ec50ea0 4554 {
whismanoid 15:37c83ec50ea0 4555 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 15:37c83ec50ea0 4556 }
whismanoid 15:37c83ec50ea0 4557 }
whismanoid 15:37c83ec50ea0 4558 if (isUpdatedI2CConfig)
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 i2cMaster.start();
whismanoid 15:37c83ec50ea0 4564 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 4565 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4566 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4567 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 15:37c83ec50ea0 4568 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 15:37c83ec50ea0 4569 (g_I2C_SCL_Hz / 1000.));
whismanoid 15:37c83ec50ea0 4570 i2cMaster.start();
whismanoid 15:37c83ec50ea0 4571 i2cMaster.stop();
whismanoid 15:37c83ec50ea0 4572 }
whismanoid 15:37c83ec50ea0 4573 }
whismanoid 15:37c83ec50ea0 4574 break;
whismanoid 15:37c83ec50ea0 4575 case 'W': case 'w':
whismanoid 15:37c83ec50ea0 4576 {
whismanoid 15:37c83ec50ea0 4577 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 4578 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 4579 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4580 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 15:37c83ec50ea0 4581 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4582 #define MAX_I2C_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 4583 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 4584 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4585 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4586 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 4587 MAX_I2C_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 4588 {
whismanoid 15:37c83ec50ea0 4589 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4590 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4591 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 15:37c83ec50ea0 4592 g_I2C_deviceAddress7,
whismanoid 15:37c83ec50ea0 4593 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 15:37c83ec50ea0 4594 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 4595 {
whismanoid 15:37c83ec50ea0 4596 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 4597 }
whismanoid 15:37c83ec50ea0 4598 //
whismanoid 15:37c83ec50ea0 4599 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 4600 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 4601 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4602 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 4603 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 4604 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 4605 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 4606 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4607 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4608 // /* 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 4609 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 4610 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4611 unsigned int misoLength = 0;
whismanoid 15:37c83ec50ea0 4612 bool repeated = (g_I2C_read_count > 0);
whismanoid 15:37c83ec50ea0 4613 //
whismanoid 15:37c83ec50ea0 4614 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 15:37c83ec50ea0 4615 switch (writeStatus)
whismanoid 15:37c83ec50ea0 4616 {
whismanoid 15:37c83ec50ea0 4617 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 4618 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 4619 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 4620 writeStatus);
whismanoid 15:37c83ec50ea0 4621 }
whismanoid 15:37c83ec50ea0 4622 if (repeated)
whismanoid 15:37c83ec50ea0 4623 {
whismanoid 15:37c83ec50ea0 4624 int readStatus =
whismanoid 15:37c83ec50ea0 4625 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 15:37c83ec50ea0 4626 switch (readStatus)
whismanoid 15:37c83ec50ea0 4627 {
whismanoid 15:37c83ec50ea0 4628 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 15:37c83ec50ea0 4629 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 15:37c83ec50ea0 4630 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 15:37c83ec50ea0 4631 readStatus);
whismanoid 15:37c83ec50ea0 4632 }
whismanoid 15:37c83ec50ea0 4633 }
whismanoid 15:37c83ec50ea0 4634 //
whismanoid 15:37c83ec50ea0 4635 if (misoLength > 0)
whismanoid 15:37c83ec50ea0 4636 {
whismanoid 15:37c83ec50ea0 4637 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4638 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 4639 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 15:37c83ec50ea0 4640 byteIndex++)
whismanoid 15:37c83ec50ea0 4641 {
whismanoid 15:37c83ec50ea0 4642 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 4643 }
whismanoid 15:37c83ec50ea0 4644 }
whismanoid 15:37c83ec50ea0 4645 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 4646 }
whismanoid 15:37c83ec50ea0 4647 }
whismanoid 15:37c83ec50ea0 4648 break;
whismanoid 15:37c83ec50ea0 4649 case 'R': case 'r':
whismanoid 15:37c83ec50ea0 4650 {
whismanoid 15:37c83ec50ea0 4651 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 4652 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 4653 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4654 // %IR ADDR=? RD=? -- read
whismanoid 15:37c83ec50ea0 4655 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 4656 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 4657 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4658 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 4659 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 4660 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 4661 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 4662 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4663 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4664 // /* 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 4665 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 4666 }
whismanoid 15:37c83ec50ea0 4667 break;
whismanoid 15:37c83ec50ea0 4668 case '^':
whismanoid 15:37c83ec50ea0 4669 {
whismanoid 15:37c83ec50ea0 4670 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 15:37c83ec50ea0 4671 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 15:37c83ec50ea0 4672 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 15:37c83ec50ea0 4673 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 15:37c83ec50ea0 4674 // TODO: i2c transfer
whismanoid 15:37c83ec50ea0 4675 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 15:37c83ec50ea0 4676 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 15:37c83ec50ea0 4677 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 15:37c83ec50ea0 4678 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 15:37c83ec50ea0 4679 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 15:37c83ec50ea0 4680 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 15:37c83ec50ea0 4681 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4682 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 15:37c83ec50ea0 4683 // /* 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 4684 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 15:37c83ec50ea0 4685 }
whismanoid 15:37c83ec50ea0 4686 break;
whismanoid 15:37c83ec50ea0 4687 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 4688 break;
whismanoid 15:37c83ec50ea0 4689 #endif
whismanoid 15:37c83ec50ea0 4690 //
whismanoid 15:37c83ec50ea0 4691 #if HAS_SPI // SUPPORT_SPI
whismanoid 15:37c83ec50ea0 4692 case 'S': case 's':
whismanoid 15:37c83ec50ea0 4693 {
whismanoid 15:37c83ec50ea0 4694 // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 4695 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4696 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 4697 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 4698 //
whismanoid 15:37c83ec50ea0 4699 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 15:37c83ec50ea0 4700 bool isUpdatedSPIConfig = false;
whismanoid 15:37c83ec50ea0 4701 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 15:37c83ec50ea0 4702 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 15:37c83ec50ea0 4703 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 15:37c83ec50ea0 4704 {
whismanoid 15:37c83ec50ea0 4705 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4706 }
whismanoid 15:37c83ec50ea0 4707 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 15:37c83ec50ea0 4708 {
whismanoid 15:37c83ec50ea0 4709 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4710 }
whismanoid 15:37c83ec50ea0 4711 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 15:37c83ec50ea0 4712 {
whismanoid 15:37c83ec50ea0 4713 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4714 }
whismanoid 15:37c83ec50ea0 4715 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 15:37c83ec50ea0 4716 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 15:37c83ec50ea0 4717 {
whismanoid 15:37c83ec50ea0 4718 isUpdatedSPIConfig = true;
whismanoid 15:37c83ec50ea0 4719 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 15:37c83ec50ea0 4720 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 4721 {
whismanoid 15:37c83ec50ea0 4722 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4723 }
whismanoid 15:37c83ec50ea0 4724 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 15:37c83ec50ea0 4725 {
whismanoid 15:37c83ec50ea0 4726 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4727 }
whismanoid 15:37c83ec50ea0 4728 }
whismanoid 15:37c83ec50ea0 4729 // Update SPI configuration
whismanoid 15:37c83ec50ea0 4730 if (isUpdatedSPIConfig)
whismanoid 15:37c83ec50ea0 4731 {
whismanoid 15:37c83ec50ea0 4732 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4733 spi_cs = g_SPI_cs_state;
whismanoid 15:37c83ec50ea0 4734 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 15:37c83ec50ea0 4735 #if APPLICATION_MAX5715
whismanoid 15:37c83ec50ea0 4736 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4737 #elif APPLICATION_MAX11131
whismanoid 15:37c83ec50ea0 4738 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4739 #elif APPLICATION_MAX5171
whismanoid 15:37c83ec50ea0 4740 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4741 #elif APPLICATION_MAX11410
whismanoid 15:37c83ec50ea0 4742 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4743 #elif APPLICATION_MAX12345
whismanoid 15:37c83ec50ea0 4744 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 15:37c83ec50ea0 4745 #else
whismanoid 15:37c83ec50ea0 4746 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 15:37c83ec50ea0 4747 #endif
whismanoid 15:37c83ec50ea0 4748 //
whismanoid 15:37c83ec50ea0 4749 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 15:37c83ec50ea0 4750 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 15:37c83ec50ea0 4751 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 15:37c83ec50ea0 4752 //
whismanoid 15:37c83ec50ea0 4753 // 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 4754 cmdLine.serial().printf(
whismanoid 15:37c83ec50ea0 4755 "\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 4756 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 15:37c83ec50ea0 4757 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 15:37c83ec50ea0 4758 g_SPI_cs_state,
whismanoid 15:37c83ec50ea0 4759 g_SPI_SCLK_Hz,
whismanoid 15:37c83ec50ea0 4760 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 15:37c83ec50ea0 4761 ((double)(SystemCoreClock / 1000000.)),
whismanoid 15:37c83ec50ea0 4762 ideal_divisor,
whismanoid 15:37c83ec50ea0 4763 (actual_SCLK_Hz / 1000000.)
whismanoid 15:37c83ec50ea0 4764 );
whismanoid 15:37c83ec50ea0 4765 }
whismanoid 15:37c83ec50ea0 4766 // get next character
whismanoid 15:37c83ec50ea0 4767 switch (cmdLine[2])
whismanoid 15:37c83ec50ea0 4768 {
whismanoid 15:37c83ec50ea0 4769 case 'C': case 's':
whismanoid 15:37c83ec50ea0 4770 // %SC sclk=1Mhz -- SPI configure
whismanoid 15:37c83ec50ea0 4771 break;
whismanoid 15:37c83ec50ea0 4772 case 'D': case 'd':
whismanoid 15:37c83ec50ea0 4773 // %SD -- SPI diagnostic messages enable
whismanoid 15:37c83ec50ea0 4774 if (g_MAX5719_device.onSPIprint) {
whismanoid 15:37c83ec50ea0 4775 g_MAX5719_device.onSPIprint = NULL;
whismanoid 15:37c83ec50ea0 4776 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') != None is false
whismanoid 15:37c83ec50ea0 4777 }
whismanoid 15:37c83ec50ea0 4778 else {
whismanoid 15:37c83ec50ea0 4779 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[]);
whismanoid 15:37c83ec50ea0 4780 g_MAX5719_device.onSPIprint = onSPIprint_handler;
whismanoid 15:37c83ec50ea0 4781 // no g_MAX5719_device.loop_limit property; device_has_property(Device, 'loop_limit') is false
whismanoid 15:37c83ec50ea0 4782 }
whismanoid 15:37c83ec50ea0 4783 break;
whismanoid 15:37c83ec50ea0 4784 case 'W': case 'R': case 'w': case 'r':
whismanoid 15:37c83ec50ea0 4785 {
whismanoid 15:37c83ec50ea0 4786 // %SW -- write (write and read)
whismanoid 15:37c83ec50ea0 4787 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 15:37c83ec50ea0 4788 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4789 #define MAX_SPI_BYTE_COUNT 32
whismanoid 15:37c83ec50ea0 4790 size_t byteCount = byteCount;
whismanoid 15:37c83ec50ea0 4791 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4792 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 15:37c83ec50ea0 4793 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 15:37c83ec50ea0 4794 MAX_SPI_BYTE_COUNT))
whismanoid 15:37c83ec50ea0 4795 {
whismanoid 15:37c83ec50ea0 4796 // hex dump mosiData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4797 cmdLine.serial().printf("\r\nSPI");
whismanoid 15:37c83ec50ea0 4798 if (byteCount > 7) {
whismanoid 15:37c83ec50ea0 4799 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 15:37c83ec50ea0 4800 }
whismanoid 15:37c83ec50ea0 4801 cmdLine.serial().printf(" MOSI->");
whismanoid 15:37c83ec50ea0 4802 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 15:37c83ec50ea0 4803 {
whismanoid 15:37c83ec50ea0 4804 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 15:37c83ec50ea0 4805 }
whismanoid 15:37c83ec50ea0 4806 spi_cs = 0;
whismanoid 15:37c83ec50ea0 4807 unsigned int numBytesTransferred =
whismanoid 15:37c83ec50ea0 4808 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 15:37c83ec50ea0 4809 spi_cs = 1;
whismanoid 15:37c83ec50ea0 4810 // hex dump misoData[0..byteCount-1]
whismanoid 15:37c83ec50ea0 4811 cmdLine.serial().printf(" MISO<-");
whismanoid 15:37c83ec50ea0 4812 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 15:37c83ec50ea0 4813 byteIndex++)
whismanoid 15:37c83ec50ea0 4814 {
whismanoid 15:37c83ec50ea0 4815 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 15:37c83ec50ea0 4816 }
whismanoid 15:37c83ec50ea0 4817 cmdLine.serial().printf(" ");
whismanoid 15:37c83ec50ea0 4818 }
whismanoid 15:37c83ec50ea0 4819 }
whismanoid 15:37c83ec50ea0 4820 break;
whismanoid 15:37c83ec50ea0 4821 } // switch(cmdLine[2])
whismanoid 15:37c83ec50ea0 4822 } // case 'S': // %S... -- SPI diagnostics
whismanoid 15:37c83ec50ea0 4823 break;
whismanoid 15:37c83ec50ea0 4824 #endif
whismanoid 15:37c83ec50ea0 4825 //
whismanoid 15:37c83ec50ea0 4826 // A-Z,a-z,0-9 reserved for application use
whismanoid 15:37c83ec50ea0 4827 } // switch(cmdLine[1])
whismanoid 15:37c83ec50ea0 4828 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 15:37c83ec50ea0 4829 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 15:37c83ec50ea0 4830
whismanoid 15:37c83ec50ea0 4831 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 4832 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 4833 void main_menu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 4834 {
whismanoid 9:45f98573eb6d 4835 // process command line
whismanoid 31:47eee7e0cc2d 4836 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4837 if (g_Run_command_table_running == false) {
whismanoid 31:47eee7e0cc2d 4838 cmdLine.serial().printf("\r\nCmdLine buf:\"%s\"\r\n", cmdLine.str());
whismanoid 31:47eee7e0cc2d 4839 } // if (g_Run_command_table_running)
whismanoid 31:47eee7e0cc2d 4840 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4841 if (g_Run_command_table_running == false) {
whismanoid 31:47eee7e0cc2d 4842 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 4843
whismanoid 4:d9b05924ad4c 4844 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 31:47eee7e0cc2d 4845 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4846 if (g_Run_command_table_running == false) {
whismanoid 4:d9b05924ad4c 4847 // If datalog is free running, halt on any possible received command
whismanoid 17:9397ea3ea7e9 4848 if (Datalogger_Trigger != trigger_Halt) {
whismanoid 4:d9b05924ad4c 4849 Datalogger_Trigger = trigger_Halt;
whismanoid 9:45f98573eb6d 4850 cmdLine.serial().printf("Datalog stopped by USB command input\r\n");
whismanoid 9:45f98573eb6d 4851 cmdLine.serial().printf("Restart datalog by sending LR\r\n");
whismanoid 4:d9b05924ad4c 4852 }
whismanoid 31:47eee7e0cc2d 4853 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 4854 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 4855
whismanoid 4:d9b05924ad4c 4856 // DIAGNOSTIC: print line buffer
whismanoid 4:d9b05924ad4c 4857 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 4:d9b05924ad4c 4858 //
whismanoid 4:d9b05924ad4c 4859 switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 4860 {
whismanoid 4:d9b05924ad4c 4861 case '?':
whismanoid 4:d9b05924ad4c 4862 main_menu_status(cmdLine);
whismanoid 4:d9b05924ad4c 4863 main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 4864 // print command prompt
whismanoid 4:d9b05924ad4c 4865 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 4866 break;
whismanoid 4:d9b05924ad4c 4867 case '\r': case '\n': // ignore blank line
whismanoid 4:d9b05924ad4c 4868 case '\0': // ignore empty line
whismanoid 30:07197a430869 4869 main_menu_status(cmdLine);
whismanoid 30:07197a430869 4870 //~ main_menu_help(cmdLine);
whismanoid 30:07197a430869 4871 // print command prompt
whismanoid 30:07197a430869 4872 //cmdLine.serial().printf("\r\n>");
whismanoid 30:07197a430869 4873 break;
whismanoid 4:d9b05924ad4c 4874 case '#': // ignore comment line
whismanoid 4:d9b05924ad4c 4875 // # -- lines beginning with # are comments
whismanoid 30:07197a430869 4876 //
whismanoid 30:07197a430869 4877 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 4878 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark -- in main_menu_onEOLcommandParser
whismanoid 30:07197a430869 4879 // # command handler update gstrRemarkText buffer instead of just ignoring the remark
whismanoid 30:07197a430869 4880 //
whismanoid 30:07197a430869 4881 // ignore extra spaces before the remark
whismanoid 30:07197a430869 4882 // find argIndex such that cmdLine[argIndex] is the start of the second word
whismanoid 30:07197a430869 4883 int argIndex;
whismanoid 30:07197a430869 4884 for (argIndex = 1; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 30:07197a430869 4885 {
whismanoid 30:07197a430869 4886 if (cmdLine[argIndex] == ' ') break;
whismanoid 30:07197a430869 4887 }
whismanoid 30:07197a430869 4888 for (; cmdLine[argIndex] != '\0'; argIndex++)
whismanoid 30:07197a430869 4889 {
whismanoid 30:07197a430869 4890 if (cmdLine[argIndex] != ' ') break;
whismanoid 30:07197a430869 4891 }
whismanoid 30:07197a430869 4892 //
whismanoid 30:07197a430869 4893 strncpy(gstrRemarkText, cmdLine.str()+argIndex, gstrRemarkTextLASTINDEX+1);
whismanoid 30:07197a430869 4894 // do not exceed string buffer limit; keep sentinel null character at end of buffer
whismanoid 30:07197a430869 4895 gstrRemarkText[gstrRemarkTextLASTINDEX] = '\0';
whismanoid 41:13a6a097502c 4896 for (unsigned int index = 0; index < gstrRemarkTextLASTINDEX; index++)
whismanoid 30:07197a430869 4897 {
whismanoid 30:07197a430869 4898 if ((gstrRemarkText[index]) == '\0') break; // null character at end of string
whismanoid 30:07197a430869 4899 if ((gstrRemarkText[index]) < 0x20) {
whismanoid 30:07197a430869 4900 // replace non-printing characters with _
whismanoid 30:07197a430869 4901 gstrRemarkText[index] = '_';
whismanoid 30:07197a430869 4902 continue;
whismanoid 30:07197a430869 4903 }
whismanoid 30:07197a430869 4904 if ((gstrRemarkText[index]) >= 0x7F) {
whismanoid 30:07197a430869 4905 // replace non-printing characters with _
whismanoid 30:07197a430869 4906 gstrRemarkText[index] = '_';
whismanoid 30:07197a430869 4907 continue;
whismanoid 30:07197a430869 4908 }
whismanoid 30:07197a430869 4909 switch(gstrRemarkText[index])
whismanoid 30:07197a430869 4910 {
whismanoid 30:07197a430869 4911 case ',':
whismanoid 30:07197a430869 4912 // replace , with ;
whismanoid 30:07197a430869 4913 gstrRemarkText[index] = ';';
whismanoid 30:07197a430869 4914 break;
whismanoid 30:07197a430869 4915 case '"':
whismanoid 30:07197a430869 4916 // replace " with '
whismanoid 30:07197a430869 4917 gstrRemarkText[index] = '\'';
whismanoid 30:07197a430869 4918 break;
whismanoid 30:07197a430869 4919 case '\\':
whismanoid 30:07197a430869 4920 // replace \ with /
whismanoid 30:07197a430869 4921 gstrRemarkText[index] = '/';
whismanoid 30:07197a430869 4922 break;
whismanoid 30:07197a430869 4923 }
whismanoid 30:07197a430869 4924 }
whismanoid 30:07197a430869 4925 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 4926 //
whismanoid 31:47eee7e0cc2d 4927 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 4928 if (g_Run_command_table_running == false) {
whismanoid 4:d9b05924ad4c 4929 main_menu_status(cmdLine);
whismanoid 31:47eee7e0cc2d 4930 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 4931 //~ main_menu_help(cmdLine);
whismanoid 4:d9b05924ad4c 4932 // print command prompt
whismanoid 4:d9b05924ad4c 4933 //cmdLine.serial().printf("\r\n>");
whismanoid 4:d9b05924ad4c 4934 break;
whismanoid 4:d9b05924ad4c 4935 #if ECHO_EOF_ON_EOL
whismanoid 4:d9b05924ad4c 4936 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 4:d9b05924ad4c 4937 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 4938 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 4939 break;
whismanoid 4:d9b05924ad4c 4940 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 4:d9b05924ad4c 4941 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 4:d9b05924ad4c 4942 diagnostic_led_EOF();
whismanoid 4:d9b05924ad4c 4943 break;
whismanoid 4:d9b05924ad4c 4944 #endif
whismanoid 10:04022a61b527 4945 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 4946 case '!': // device init
whismanoid 10:04022a61b527 4947 {
whismanoid 10:04022a61b527 4948 cmdLine.serial().printf("Init");
whismanoid 10:04022a61b527 4949 // call function Init
whismanoid 10:04022a61b527 4950 uint8_t result = g_MAX11410_device.Init();
whismanoid 10:04022a61b527 4951 // cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 4952 cmdLine.serial().printf(" =%d\r\n", result);
whismanoid 10:04022a61b527 4953 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 4954 // in command '!' device init, apply list of custom register writes after init
whismanoid 10:04022a61b527 4955 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 10:04022a61b527 4956 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 10:04022a61b527 4957 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 10:04022a61b527 4958 uint32_t regData = custom_reg_init_data[index];
whismanoid 10:04022a61b527 4959 cmdLine.serial().printf("*%s=0x%06.6x",
whismanoid 10:04022a61b527 4960 g_MAX11410_device.RegName((MAX11410::MAX11410_CMD_enum_t)regAddress),
whismanoid 10:04022a61b527 4961 regData
whismanoid 10:04022a61b527 4962 );
whismanoid 10:04022a61b527 4963 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 10:04022a61b527 4964 }
whismanoid 10:04022a61b527 4965 #endif // USE_CUSTOM_REG_INIT
whismanoid 10:04022a61b527 4966 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 4967 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 4968 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 4969 }
whismanoid 10:04022a61b527 4970 break;
whismanoid 10:04022a61b527 4971 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 4972 #if USE_SELFTEST
whismanoid 4:d9b05924ad4c 4973 case '.':
whismanoid 4:d9b05924ad4c 4974 {
whismanoid 4:d9b05924ad4c 4975 // . -- SelfTest
whismanoid 4:d9b05924ad4c 4976 cmdLine.serial().printf("SelfTest()");
whismanoid 4:d9b05924ad4c 4977 SelfTest(cmdLine);
whismanoid 4:d9b05924ad4c 4978 }
whismanoid 4:d9b05924ad4c 4979 break;
whismanoid 4:d9b05924ad4c 4980 #endif // USE_SELFTEST
whismanoid 15:37c83ec50ea0 4981 #if 1 // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 4982 case '%':
whismanoid 4:d9b05924ad4c 4983 {
whismanoid 4:d9b05924ad4c 4984 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 4:d9b05924ad4c 4985 }
whismanoid 4:d9b05924ad4c 4986 break; // case '%'
whismanoid 4:d9b05924ad4c 4987 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 9:45f98573eb6d 4988 #if USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4989 // reuse the Serial_Tester command *regName=regValue
whismanoid 10:04022a61b527 4990 // CODE GENERATOR: generate * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4991 case '*':
whismanoid 10:04022a61b527 4992 {
whismanoid 10:04022a61b527 4993 // if buffer starts with a regName:
whismanoid 10:04022a61b527 4994 // for each reg value (0..n) if(cmdLine.has_keyword(device.regName(r))):
whismanoid 10:04022a61b527 4995 // cmdLine.serial().printf(" scan RegName...\r\n");
whismanoid 10:04022a61b527 4996 }
whismanoid 10:04022a61b527 4997 break;
whismanoid 9:45f98573eb6d 4998 #endif // USE_STAR_REG_READWRITE // * command read/write reg *reg? *reg=value
whismanoid 10:04022a61b527 4999 //
whismanoid 10:04022a61b527 5000 #if 1 // USE_AUX_SERIAL_CMD_FORWARDING && (HAS_AUX_SERIAL || HAS_DAPLINK_SERIAL)
whismanoid 10:04022a61b527 5001 // TODO WIP Command forwarding to Auxiliary serial port TX/RX #257 -- main_menu_onEOLcommandParser
whismanoid 40:330b28116178 5002 case '>': case '<': // > send and receive; < receive without sending anything
whismanoid 10:04022a61b527 5003 {
whismanoid 10:04022a61b527 5004 // prefer cmdLine_AUXserial if available, else cmdLine_DAPLINKserial; else we don't have this feature
whismanoid 10:04022a61b527 5005 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 5006 // TODO WIP Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257
whismanoid 10:04022a61b527 5007 CmdLine& cmdLine_AuxSerial = cmdLine_AUXserial;
whismanoid 10:04022a61b527 5008 Serial& AuxSerial = AUXserial;
whismanoid 10:04022a61b527 5009 # elif HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 5010 // TODO WIP Command forwarding to DAPLINK serial TX/RX cmdLine_DAPLINKserial #257
whismanoid 10:04022a61b527 5011 CmdLine& cmdLine_AuxSerial = cmdLine_DAPLINKserial;
whismanoid 10:04022a61b527 5012 Serial& AuxSerial = DAPLINKserial;
whismanoid 10:04022a61b527 5013 # else // neither HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 5014 #warning "USE_AUX_SERIAL_CMD_FORWARDING should not be enabled without HAS_AUX_SERIAL or HAS_DAPLINK_SERIAL"
whismanoid 10:04022a61b527 5015 # endif // HAS_AUX_SERIAL HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 5016 //
whismanoid 40:330b28116178 5017 int g_auxSerialCom_outgoing_string_cr = 1; // option to send CR after outgoing_string
whismanoid 40:330b28116178 5018 int g_auxSerialCom_outgoing_string_lf = 0; // option to send LF after outgoing_string (breaks remote datalogger LR!)
whismanoid 40:330b28116178 5019 int g_auxSerialCom_rx_string_verbose_crlf = 0; // option to display \r\n as "\\r\\n" in rx_string_buf
whismanoid 40:330b28116178 5020 int g_auxSerialCom_rx_string_verbose_ctrl = 1; // option to display control codes as \xXX
whismanoid 40:330b28116178 5021 const char* g_auxSerialCom_display_tx_prefix = "\r\n->|"; // "\r\n >";
whismanoid 40:330b28116178 5022 const char* g_auxSerialCom_display_rx_prefix = "\r\n<-|"; // "\r\n< ";
whismanoid 40:330b28116178 5023 //
whismanoid 40:330b28116178 5024 bool need_g_auxSerialCom_display_rx_prefix = 1; // temp
whismanoid 40:330b28116178 5025 //
whismanoid 10:04022a61b527 5026 // >> suppress key=value parsing
whismanoid 10:04022a61b527 5027 bool suppress_parsing = (cmdLine[1] == '>');
whismanoid 10:04022a61b527 5028 if (suppress_parsing == false) {
whismanoid 10:04022a61b527 5029 // int g_auxSerialCom_baud = 9600; //!< baud rate Auxiliary serial port
whismanoid 10:04022a61b527 5030 if (cmdLine.parse_int_dec("baud", g_auxSerialCom_baud))
whismanoid 10:04022a61b527 5031 {
whismanoid 10:04022a61b527 5032 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- baud rate
whismanoid 10:04022a61b527 5033 cmdLine_AuxSerial.serial().printf("\r\n*** New Baud Rate %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5034 AuxSerial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5035 cmdLine_AuxSerial.serial().printf("\r\n*** Baud Rate was set to %d ***\r\n", g_auxSerialCom_baud);
whismanoid 10:04022a61b527 5036 }
whismanoid 10:04022a61b527 5037 #if 0
whismanoid 10:04022a61b527 5038 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 5039 if (cmdLine.parse_int_dec("tx_wait_echo", g_auxSerialCom_tx_wait_echo))
whismanoid 10:04022a61b527 5040 {
whismanoid 10:04022a61b527 5041 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_wait_echo
whismanoid 10:04022a61b527 5042 //~ cmdLine_AuxSerial.serial().printf("\r\n*** tx_wait_echo was set to %d ***\r\n", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 5043 cmdLine.serial().printf("\r\n tx_wait_echo=%d", g_auxSerialCom_tx_wait_echo);
whismanoid 10:04022a61b527 5044 }
whismanoid 10:04022a61b527 5045 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 5046 if (cmdLine.parse_int_dec("tx_char_delay_ms", g_auxSerialCom_tx_char_delay_ms))
whismanoid 10:04022a61b527 5047 {
whismanoid 10:04022a61b527 5048 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_char_delay_ms
whismanoid 10:04022a61b527 5049 //~ 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 5050 cmdLine.serial().printf("\r\n tx_char_delay_ms=%dms", g_auxSerialCom_tx_char_delay_ms);
whismanoid 10:04022a61b527 5051 }
whismanoid 10:04022a61b527 5052 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 5053 if (cmdLine.parse_int_dec("tx_line_delay_ms", g_auxSerialCom_tx_line_delay_ms))
whismanoid 10:04022a61b527 5054 {
whismanoid 10:04022a61b527 5055 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- tx_line_delay_ms
whismanoid 10:04022a61b527 5056 //~ 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 5057 cmdLine.serial().printf("\r\n tx_line_delay_ms=%dms", g_auxSerialCom_tx_line_delay_ms);
whismanoid 10:04022a61b527 5058 }
whismanoid 10:04022a61b527 5059 #endif
whismanoid 10:04022a61b527 5060 // int g_auxSerialCom_message_ms = 0; //!< capture RX until response timeout?
whismanoid 10:04022a61b527 5061 if (cmdLine.parse_int_dec("message_ms", g_auxSerialCom_message_ms))
whismanoid 10:04022a61b527 5062 {
whismanoid 10:04022a61b527 5063 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 10:04022a61b527 5064 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 5065 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 5066 }
whismanoid 10:04022a61b527 5067 // int g_auxSerialCom_rx_idle_ms = 0; //!< capture RX until idle timeout?
whismanoid 10:04022a61b527 5068 if (cmdLine.parse_int_dec("rx_idle_ms", g_auxSerialCom_rx_idle_ms))
whismanoid 10:04022a61b527 5069 {
whismanoid 10:04022a61b527 5070 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_idle_ms
whismanoid 10:04022a61b527 5071 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_idle_ms was set to %d ***\r\n", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 5072 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 5073 }
whismanoid 10:04022a61b527 5074 // int g_auxSerialCom_rx_max_count = 0; //!< capture RX until max character count?
whismanoid 10:04022a61b527 5075 if (cmdLine.parse_int_dec("rx_max_count", g_auxSerialCom_rx_max_count))
whismanoid 10:04022a61b527 5076 {
whismanoid 10:04022a61b527 5077 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_max_count
whismanoid 10:04022a61b527 5078 //~ cmdLine_AuxSerial.serial().printf("\r\n*** rx_max_count was set to %d ***\r\n", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 5079 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 5080 }
whismanoid 10:04022a61b527 5081 // int g_auxSerialCom_rx_eot = 0; //!< capture RX until match end of text char?
whismanoid 10:04022a61b527 5082 if (cmdLine.parse_int_dec("rx_eot", g_auxSerialCom_rx_eot))
whismanoid 10:04022a61b527 5083 {
whismanoid 10:04022a61b527 5084 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- rx_eot
whismanoid 10:04022a61b527 5085 //~ cmdLine_AUXserial.serial().printf("\r\n*** rx_eot was set to %d ***\r\n", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 5086 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 5087 }
whismanoid 10:04022a61b527 5088 }
whismanoid 10:04022a61b527 5089 // Command forwarding to AUX serial TX/RX cmdLine_AuxSerial #257 -- send outgoing_string
whismanoid 41:13a6a097502c 5090 char* outgoing_string = ""; // warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
whismanoid 40:330b28116178 5091 if (cmdLine[0] == '>') {
whismanoid 40:330b28116178 5092 outgoing_string = (char*)cmdLine.str();
whismanoid 40:330b28116178 5093 // > use key=value parsing
whismanoid 40:330b28116178 5094 // >> suppress key=value parsing
whismanoid 40:330b28116178 5095 if (suppress_parsing) {
whismanoid 40:330b28116178 5096 cmdLine.serial().printf("\r\n suppress_parsing outgoing_string=\"%s\"", outgoing_string);
whismanoid 40:330b28116178 5097 outgoing_string++; // skip the first '>'
whismanoid 40:330b28116178 5098 outgoing_string++; // skip the second '>'
whismanoid 40:330b28116178 5099 } else {
whismanoid 40:330b28116178 5100 // TODO: after parsing, key=value pairs should be deleted, but outgoing_string=">xyzzy abc=def"
whismanoid 40:330b28116178 5101 cmdLine.serial().printf("\r\n after parsing, outgoing_string=\"%s\"", outgoing_string);
whismanoid 40:330b28116178 5102 outgoing_string++; // skip the first '>'
whismanoid 40:330b28116178 5103 }
whismanoid 40:330b28116178 5104 } // if (cmdLine[0] == '>')
whismanoid 10:04022a61b527 5105 static char rx_string_buf[RX_STRING_BUF_SIZE];
whismanoid 10:04022a61b527 5106 unsigned int rx_string_length = 0;
whismanoid 40:330b28116178 5107 //cmdLine.serial().printf("\r\n >%s\r\n <", outgoing_string);
whismanoid 40:330b28116178 5108 //char* g_auxSerialCom_display_tx_prefix = "\r\n >";
whismanoid 40:330b28116178 5109 //char* g_auxSerialCom_display_rx_prefix = "\r\n< ";
whismanoid 40:330b28116178 5110 cmdLine.serial().printf("%s%s%s",
whismanoid 40:330b28116178 5111 g_auxSerialCom_display_tx_prefix, // "\r\n >"
whismanoid 40:330b28116178 5112 outgoing_string,
whismanoid 40:330b28116178 5113 g_auxSerialCom_display_rx_prefix // "\r\n <"
whismanoid 40:330b28116178 5114 );
whismanoid 10:04022a61b527 5115 rx_string_buf[0] = '\0';
whismanoid 10:04022a61b527 5116 rx_string_length = 0;
whismanoid 10:04022a61b527 5117 //
whismanoid 10:04022a61b527 5118 // int g_auxSerialCom_tx_wait_echo = 0; //!< TX wait for each character echo?
whismanoid 10:04022a61b527 5119 // int g_auxSerialCom_tx_char_delay_ms = 0; //!< TX delay after each char?
whismanoid 10:04022a61b527 5120 // int g_auxSerialCom_tx_line_delay_ms = 0; //!< TX delay after each CR/LF?
whismanoid 10:04022a61b527 5121 //
whismanoid 10:04022a61b527 5122 // int g_auxSerialCom_Timer_begin_message_ms = 0; //!< start of message
whismanoid 10:04022a61b527 5123 // int g_auxSerialCom_Timer_begin_rx_idle_ms = 0; //!< recent RX character timestamp
whismanoid 10:04022a61b527 5124 // int g_auxSerialCom_message_ms = 10000; //!< maximum RX message total response time
whismanoid 10:04022a61b527 5125 // int g_auxSerialCom_rx_idle_ms = 2000; //!< maximum RX message idle time between characters
whismanoid 10:04022a61b527 5126 // int g_auxSerialCom_rx_max_count = RX_STRING_BUF_SIZE-1; //!< maximum RX message total length
whismanoid 10:04022a61b527 5127 // int g_auxSerialCom_rx_eot = '\r'; //!< capture RX until match end of text char
whismanoid 10:04022a61b527 5128 //~ cmdLine_AuxSerial.serial().printf("\r\n*** TODO forward %s ***\r\n", outgoing_string);
whismanoid 10:04022a61b527 5129 //
whismanoid 10:04022a61b527 5130 // TODO: send whole string or send character-by-character?
whismanoid 40:330b28116178 5131 if (cmdLine[0] == '>') {
whismanoid 40:330b28116178 5132 cmdLine_AuxSerial.serial().printf("%s", outgoing_string);
whismanoid 40:330b28116178 5133 //
whismanoid 40:330b28116178 5134 // TODO: send CRLF or just send CR line end?
whismanoid 40:330b28116178 5135 if (g_auxSerialCom_outgoing_string_cr) { cmdLine_AuxSerial.serial().printf("\r"); }
whismanoid 40:330b28116178 5136 if (g_auxSerialCom_outgoing_string_lf) { cmdLine_AuxSerial.serial().printf("\n"); }
whismanoid 40:330b28116178 5137 // cmdLine_AuxSerial.serial().printf("\r\n");
whismanoid 40:330b28116178 5138 } // if (cmdLine[0] == '>')
whismanoid 40:330b28116178 5139 //
whismanoid 10:04022a61b527 5140 g_auxSerialCom_Timer.start();
whismanoid 10:04022a61b527 5141 g_auxSerialCom_Timer_begin_message_ms = g_auxSerialCom_Timer.read_ms(); // start of message
whismanoid 10:04022a61b527 5142 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 5143 while (rx_string_length < (RX_STRING_BUF_SIZE-1)) {
whismanoid 10:04022a61b527 5144 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_message_ms) > g_auxSerialCom_message_ms) {
whismanoid 10:04022a61b527 5145 cmdLine.serial().printf("\r\n message_ms timeout %dms", g_auxSerialCom_message_ms);
whismanoid 10:04022a61b527 5146 break;
whismanoid 10:04022a61b527 5147 }
whismanoid 10:04022a61b527 5148 if ((g_auxSerialCom_Timer.read_ms() - g_auxSerialCom_Timer_begin_rx_idle_ms) > g_auxSerialCom_rx_idle_ms) {
whismanoid 10:04022a61b527 5149 cmdLine.serial().printf("\r\n rx_idle_ms timeout %dms", g_auxSerialCom_rx_idle_ms);
whismanoid 10:04022a61b527 5150 break;
whismanoid 10:04022a61b527 5151 }
whismanoid 41:13a6a097502c 5152 if ((int)rx_string_length >= g_auxSerialCom_rx_max_count) {
whismanoid 10:04022a61b527 5153 cmdLine.serial().printf("\r\n rx_max_count %d bytes", g_auxSerialCom_rx_max_count);
whismanoid 10:04022a61b527 5154 break;
whismanoid 10:04022a61b527 5155 }
whismanoid 10:04022a61b527 5156 if (AuxSerial.readable()) {
whismanoid 10:04022a61b527 5157 g_auxSerialCom_Timer_begin_rx_idle_ms = g_auxSerialCom_Timer.read_ms(); // recent RX character timestamp
whismanoid 10:04022a61b527 5158 char ch = AuxSerial.getc();
whismanoid 10:04022a61b527 5159 rx_string_buf[rx_string_length++] = ch;
whismanoid 10:04022a61b527 5160 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 40:330b28116178 5161 //
whismanoid 40:330b28116178 5162 #if 1
whismanoid 40:330b28116178 5163 // immediate character echo
whismanoid 40:330b28116178 5164 for (char* cp = &(rx_string_buf[rx_string_length-1]); *cp != '\0'; cp++)
whismanoid 40:330b28116178 5165 {
whismanoid 40:330b28116178 5166 //cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 40:330b28116178 5167 if (need_g_auxSerialCom_display_rx_prefix) {
whismanoid 40:330b28116178 5168 cmdLine.serial().printf(g_auxSerialCom_display_rx_prefix); // "\r\n< " g_auxSerialCom_rx_string display prefix
whismanoid 40:330b28116178 5169 need_g_auxSerialCom_display_rx_prefix = 0;
whismanoid 40:330b28116178 5170 }
whismanoid 40:330b28116178 5171 if ((*cp) == '\r') {
whismanoid 40:330b28116178 5172 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\r"); }
whismanoid 40:330b28116178 5173 // if (*(cp+1) != '\n') { need_g_auxSerialCom_display_rx_prefix = 1; }
whismanoid 40:330b28116178 5174 } else if ((*cp) == '\n') {
whismanoid 40:330b28116178 5175 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\n"); }
whismanoid 40:330b28116178 5176 need_g_auxSerialCom_display_rx_prefix = 1;
whismanoid 40:330b28116178 5177 if (*(cp-1) != '\r') { need_g_auxSerialCom_display_rx_prefix = 1; }
whismanoid 40:330b28116178 5178 } else if ((*cp) < 0x20) {
whismanoid 40:330b28116178 5179 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5180 } else if ((*cp) >= 0x7f) {
whismanoid 40:330b28116178 5181 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5182 } else {
whismanoid 40:330b28116178 5183 cmdLine.serial().printf("%c", *cp);
whismanoid 40:330b28116178 5184 }
whismanoid 40:330b28116178 5185 }
whismanoid 40:330b28116178 5186 #else
whismanoid 40:330b28116178 5187 // immediate character echo
whismanoid 40:330b28116178 5188 cmdLine.serial().printf("%s", &(rx_string_buf[rx_string_length-1]) );
whismanoid 40:330b28116178 5189 #endif
whismanoid 40:330b28116178 5190 //
whismanoid 10:04022a61b527 5191 if (g_auxSerialCom_rx_eot != aux_serial_cmd_forwarding_rx_eot_not_used) {
whismanoid 10:04022a61b527 5192 if (ch == g_auxSerialCom_rx_eot) {
whismanoid 10:04022a61b527 5193 cmdLine.serial().printf("\r\n rx_eot %d", g_auxSerialCom_rx_eot);
whismanoid 10:04022a61b527 5194 break;
whismanoid 10:04022a61b527 5195 }
whismanoid 10:04022a61b527 5196 }
whismanoid 10:04022a61b527 5197 }
whismanoid 10:04022a61b527 5198 } // end while (rx_string_length < (RX_STRING_BUF_SIZE-1))
whismanoid 40:330b28116178 5199 #if 0
whismanoid 10:04022a61b527 5200 // print summary. is this needed? we already print aux rx as it is received.
whismanoid 10:04022a61b527 5201 rx_string_buf[rx_string_length] = '\0'; // null terminate buffer
whismanoid 40:330b28116178 5202 # if 1 // support multi-line rx_string_buf response
whismanoid 40:330b28116178 5203 if (cmdLine[0] == '>') {
whismanoid 40:330b28116178 5204 cmdLine.serial().printf("%s%s", g_auxSerialCom_display_tx_prefix, outgoing_string);
whismanoid 40:330b28116178 5205 } // if (cmdLine[0] == '>')
whismanoid 40:330b28116178 5206 // cmdLine.serial().printf("\r\n <"); // prefix
whismanoid 40:330b28116178 5207 need_g_auxSerialCom_display_rx_prefix = 1;
whismanoid 40:330b28116178 5208 for (char* cp = rx_string_buf; *cp != '\0'; cp++)
whismanoid 40:330b28116178 5209 {
whismanoid 40:330b28116178 5210 //cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 40:330b28116178 5211 if (need_g_auxSerialCom_display_rx_prefix) {
whismanoid 40:330b28116178 5212 cmdLine.serial().printf(g_auxSerialCom_display_rx_prefix); // "\r\n< " g_auxSerialCom_rx_string display prefix
whismanoid 40:330b28116178 5213 need_g_auxSerialCom_display_rx_prefix = 0;
whismanoid 40:330b28116178 5214 }
whismanoid 40:330b28116178 5215 if ((*cp) == '\r') {
whismanoid 40:330b28116178 5216 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\r"); }
whismanoid 40:330b28116178 5217 if (*(cp+1) != '\n') { need_g_auxSerialCom_display_rx_prefix = 1; }
whismanoid 40:330b28116178 5218 } else if ((*cp) == '\n') {
whismanoid 40:330b28116178 5219 if (g_auxSerialCom_rx_string_verbose_crlf) { cmdLine.serial().printf("\\n"); }
whismanoid 40:330b28116178 5220 need_g_auxSerialCom_display_rx_prefix = 1;
whismanoid 40:330b28116178 5221 } else if ((*cp) < 0x20) {
whismanoid 40:330b28116178 5222 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5223 } else if ((*cp) >= 0x7f) {
whismanoid 40:330b28116178 5224 if (g_auxSerialCom_rx_string_verbose_ctrl) { cmdLine.serial().printf("\\x%2.2x", *cp); }
whismanoid 40:330b28116178 5225 } else {
whismanoid 40:330b28116178 5226 cmdLine.serial().printf("%c", *cp);
whismanoid 40:330b28116178 5227 }
whismanoid 40:330b28116178 5228 }
whismanoid 40:330b28116178 5229 cmdLine.serial().printf("\r\n");
whismanoid 40:330b28116178 5230 # else
whismanoid 10:04022a61b527 5231 cmdLine.serial().printf("\r\n >%s", outgoing_string);
whismanoid 10:04022a61b527 5232 cmdLine.serial().printf("\r\n <%s\r\n", rx_string_buf);
whismanoid 40:330b28116178 5233 # endif
whismanoid 10:04022a61b527 5234 #endif
whismanoid 10:04022a61b527 5235 //
whismanoid 10:04022a61b527 5236 }
whismanoid 10:04022a61b527 5237 break; // case '>'
whismanoid 10:04022a61b527 5238 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 5239 //
whismanoid 4:d9b05924ad4c 5240 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 4:d9b05924ad4c 5241 // TODO Datalog trigger menu
whismanoid 4:d9b05924ad4c 5242 // set Datalogger_Trigger to trigger_Halt or trigger_FreeRun
whismanoid 4:d9b05924ad4c 5243 // Datalogger_Trigger = trigger_Halt // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 5244 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible
whismanoid 9:45f98573eb6d 5245 case 'L': case 'l':
whismanoid 4:d9b05924ad4c 5246 {
whismanoid 4:d9b05924ad4c 5247 // halt the datalogger; continue accepting commands
whismanoid 4:d9b05924ad4c 5248 Datalogger_Trigger = trigger_Halt;
whismanoid 4:d9b05924ad4c 5249 switch (cmdLine[1])
whismanoid 4:d9b05924ad4c 5250 {
whismanoid 17:9397ea3ea7e9 5251 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 5252 case 'T': case 't':
whismanoid 17:9397ea3ea7e9 5253 {
whismanoid 17:9397ea3ea7e9 5254 // timer (configure interval) "intermittent-sleep-mode"
whismanoid 17:9397ea3ea7e9 5255 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 5256 Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 5257 g_timer_interval_counter = 0;
whismanoid 39:4d285e961435 5258 // get g_timer_interval_msec from cmdLine
whismanoid 17:9397ea3ea7e9 5259 // g_timer_interval_msec = 500;
whismanoid 17:9397ea3ea7e9 5260 // g_timer_interval_count = 10;
whismanoid 17:9397ea3ea7e9 5261 if (cmdLine.parse_int_dec("count", g_timer_interval_count))
whismanoid 17:9397ea3ea7e9 5262 {
whismanoid 32:80f3e5eb77d4 5263 if (g_timer_interval_count < 1) { g_timer_interval_count = 1; }
whismanoid 17:9397ea3ea7e9 5264 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 5265 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 5266 cmdLine.serial().printf("\r\n g_timer_interval_count=%d", g_timer_interval_count);
whismanoid 17:9397ea3ea7e9 5267 }
whismanoid 17:9397ea3ea7e9 5268 if (cmdLine.parse_int_dec("base", g_timer_interval_msec))
whismanoid 17:9397ea3ea7e9 5269 {
whismanoid 17:9397ea3ea7e9 5270 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 17:9397ea3ea7e9 5271 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 17:9397ea3ea7e9 5272 cmdLine.serial().printf("\r\n g_timer_interval_msec=%d", g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 5273 }
whismanoid 39:4d285e961435 5274 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5275 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5276 int int_timer_sleepmode = g_timer_sleepmode;
whismanoid 39:4d285e961435 5277 if (cmdLine.parse_int_dec("sleep", int_timer_sleepmode))
whismanoid 39:4d285e961435 5278 {
whismanoid 39:4d285e961435 5279 g_timer_sleepmode = (Datalogger_Sleep_enum_t)int_timer_sleepmode;
whismanoid 39:4d285e961435 5280 //~ if (g_timer_interval_count < 1) { g_timer_interval_count = 1; }
whismanoid 39:4d285e961435 5281 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- message_ms
whismanoid 39:4d285e961435 5282 //~ cmdLine_AuxSerial.serial().printf("\r\n*** message_ms was set to %d ***\r\n", g_auxSerialCom_message_ms);
whismanoid 39:4d285e961435 5283 cmdLine.serial().printf("\r\n g_timer_sleepmode=%d", (int)g_timer_sleepmode);
whismanoid 39:4d285e961435 5284 }
whismanoid 39:4d285e961435 5285 #else // USE_DATALOGGER_SLEEP
whismanoid 39:4d285e961435 5286 #endif // USE_DATALOGGER_SLEEP
whismanoid 17:9397ea3ea7e9 5287 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 17:9397ea3ea7e9 5288 }
whismanoid 17:9397ea3ea7e9 5289 break;
whismanoid 17:9397ea3ea7e9 5290 // LIH3 -- Datalog when input high D3
whismanoid 17:9397ea3ea7e9 5291 // LIL6 -- Datalog when input low D6
whismanoid 17:9397ea3ea7e9 5292 case 'I': case 'i':
whismanoid 17:9397ea3ea7e9 5293 {
whismanoid 17:9397ea3ea7e9 5294 // TODO: switch cmdLine[2] configure High or Low, configure input pin
whismanoid 17:9397ea3ea7e9 5295 }
whismanoid 17:9397ea3ea7e9 5296 break;
whismanoid 17:9397ea3ea7e9 5297 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 27:b4ac095b83b3 5298 // L$ count=10 base=500ms addr=xxx data=xxx mask=xxx -- Datalog when SPI read of address matches mask
whismanoid 17:9397ea3ea7e9 5299 case '$':
whismanoid 17:9397ea3ea7e9 5300 {
whismanoid 17:9397ea3ea7e9 5301 // TODO: scan cmdLine for regAddr, dataMask, testValue
whismanoid 17:9397ea3ea7e9 5302 }
whismanoid 17:9397ea3ea7e9 5303 break;
whismanoid 17:9397ea3ea7e9 5304 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 5305 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 5306 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5307 case '@':
whismanoid 17:9397ea3ea7e9 5308 {
whismanoid 17:9397ea3ea7e9 5309 // L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5310 int editRowIndex = 0;
whismanoid 17:9397ea3ea7e9 5311 int edit_action = (int)action_noop;
whismanoid 17:9397ea3ea7e9 5312 int edit_digitalOutPin = 0;
whismanoid 17:9397ea3ea7e9 5313 int edit_condition = (int)condition_always;
whismanoid 17:9397ea3ea7e9 5314 int edit_condition_channel = 0;
whismanoid 17:9397ea3ea7e9 5315 double edit_condition_threshold = 0;
whismanoid 17:9397ea3ea7e9 5316 //
whismanoid 17:9397ea3ea7e9 5317 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 17:9397ea3ea7e9 5318 {
whismanoid 17:9397ea3ea7e9 5319 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 17:9397ea3ea7e9 5320 }
whismanoid 17:9397ea3ea7e9 5321 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 17:9397ea3ea7e9 5322 {
whismanoid 17:9397ea3ea7e9 5323 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 17:9397ea3ea7e9 5324 }
whismanoid 17:9397ea3ea7e9 5325 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 17:9397ea3ea7e9 5326 {
whismanoid 17:9397ea3ea7e9 5327 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 17:9397ea3ea7e9 5328 }
whismanoid 17:9397ea3ea7e9 5329 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 17:9397ea3ea7e9 5330 {
whismanoid 17:9397ea3ea7e9 5331 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 17:9397ea3ea7e9 5332 }
whismanoid 17:9397ea3ea7e9 5333 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 17:9397ea3ea7e9 5334 {
whismanoid 17:9397ea3ea7e9 5335 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 17:9397ea3ea7e9 5336 }
whismanoid 17:9397ea3ea7e9 5337 //
whismanoid 17:9397ea3ea7e9 5338 // Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5339 switch (cmdLine[2]) // L@... -- Edit the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5340 {
whismanoid 17:9397ea3ea7e9 5341 // LT%1.0fs -- Datalog timer sleep=%1.3f seconds g_timer_interval_msec
whismanoid 17:9397ea3ea7e9 5342 case '0': case '1': case '2': case '3': case '4':
whismanoid 17:9397ea3ea7e9 5343 case '5': case '6': case '7': case '8': case '9':
whismanoid 17:9397ea3ea7e9 5344 // edit row data
whismanoid 30:07197a430869 5345 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 5346 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 5347 // get row number to edit from cmdLine[2]
whismanoid 17:9397ea3ea7e9 5348 editRowIndex = atoi(cmdLine.str()+2);
whismanoid 30:07197a430869 5349 if ((editRowIndex >= 0) && (editRowIndex < Datalogger_action_table_row_count)) {
whismanoid 30:07197a430869 5350 // update row
whismanoid 30:07197a430869 5351 cmdLine.serial().printf("\r\n replace row %d", editRowIndex);
whismanoid 30:07197a430869 5352 // rescan cmdLine[2] for key=value of what fields to change (now that we have got defaults from the existing line
whismanoid 30:07197a430869 5353 edit_action = Datalogger_action_table[editRowIndex].action;
whismanoid 30:07197a430869 5354 edit_digitalOutPin = Datalogger_action_table[editRowIndex].digitalOutPin;
whismanoid 30:07197a430869 5355 edit_condition = Datalogger_action_table[editRowIndex].condition;
whismanoid 30:07197a430869 5356 edit_condition_channel = Datalogger_action_table[editRowIndex].condition_channel;
whismanoid 30:07197a430869 5357 edit_condition_threshold = Datalogger_action_table[editRowIndex].condition_threshold;
whismanoid 30:07197a430869 5358 // rescan cmdLine[2] for key=value of what fields to change (now that we have got defaults from the existing line
whismanoid 30:07197a430869 5359 if (cmdLine.parse_int_dec("act", edit_action))
whismanoid 30:07197a430869 5360 {
whismanoid 30:07197a430869 5361 //~ cmdLine.serial().printf("\r\n act=%d", edit_action);
whismanoid 30:07197a430869 5362 }
whismanoid 30:07197a430869 5363 if (cmdLine.parse_int_dec("pin", edit_digitalOutPin))
whismanoid 30:07197a430869 5364 {
whismanoid 30:07197a430869 5365 //~ cmdLine.serial().printf("\r\n pin=%d", edit_digitalOutPin);
whismanoid 30:07197a430869 5366 }
whismanoid 30:07197a430869 5367 if (cmdLine.parse_int_dec("if", edit_condition))
whismanoid 30:07197a430869 5368 {
whismanoid 30:07197a430869 5369 //~ cmdLine.serial().printf("\r\n if=%d", edit_condition);
whismanoid 30:07197a430869 5370 }
whismanoid 30:07197a430869 5371 if (cmdLine.parse_int_dec("ch", edit_condition_channel))
whismanoid 30:07197a430869 5372 {
whismanoid 30:07197a430869 5373 //~ cmdLine.serial().printf("\r\n ch=%d", edit_condition_channel);
whismanoid 30:07197a430869 5374 }
whismanoid 30:07197a430869 5375 if (cmdLine.parse_double("x", edit_condition_threshold))
whismanoid 30:07197a430869 5376 {
whismanoid 30:07197a430869 5377 //~ cmdLine.serial().printf("\r\n x=%d", edit_condition_threshold);
whismanoid 30:07197a430869 5378 }
whismanoid 30:07197a430869 5379 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 30:07197a430869 5380 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 30:07197a430869 5381 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 30:07197a430869 5382 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 30:07197a430869 5383 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 5384 }
whismanoid 30:07197a430869 5385 else if ((editRowIndex == Datalogger_action_table_row_count) && (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX)) {
whismanoid 30:07197a430869 5386 // %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 5387 Datalogger_action_table_row_count++;
whismanoid 30:07197a430869 5388 cmdLine.serial().printf("\r\n add next row %d", editRowIndex);
whismanoid 30:07197a430869 5389 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 30:07197a430869 5390 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 30:07197a430869 5391 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 30:07197a430869 5392 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 30:07197a430869 5393 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 30:07197a430869 5394 //
whismanoid 17:9397ea3ea7e9 5395 }
whismanoid 17:9397ea3ea7e9 5396 }
whismanoid 17:9397ea3ea7e9 5397 break;
whismanoid 17:9397ea3ea7e9 5398 case '+':
whismanoid 17:9397ea3ea7e9 5399 // add a new row at end of table
whismanoid 17:9397ea3ea7e9 5400 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 5401 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 5402 editRowIndex = Datalogger_action_table_row_count;
whismanoid 17:9397ea3ea7e9 5403 Datalogger_action_table_row_count++;
whismanoid 30:07197a430869 5404 cmdLine.serial().printf("\r\n add new row %d", editRowIndex);
whismanoid 17:9397ea3ea7e9 5405 Datalogger_action_table[editRowIndex].action = (action_type_enum_t)edit_action;
whismanoid 17:9397ea3ea7e9 5406 Datalogger_action_table[editRowIndex].digitalOutPin = edit_digitalOutPin;
whismanoid 17:9397ea3ea7e9 5407 Datalogger_action_table[editRowIndex].condition = (action_condition_enum_t)edit_condition;
whismanoid 17:9397ea3ea7e9 5408 Datalogger_action_table[editRowIndex].condition_channel = edit_condition_channel;
whismanoid 17:9397ea3ea7e9 5409 Datalogger_action_table[editRowIndex].condition_threshold = edit_condition_threshold;
whismanoid 17:9397ea3ea7e9 5410 }
whismanoid 17:9397ea3ea7e9 5411 break;
whismanoid 17:9397ea3ea7e9 5412 case '-':
whismanoid 17:9397ea3ea7e9 5413 // delete row from table
whismanoid 17:9397ea3ea7e9 5414 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 5415 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 5416 if ((cmdLine[3] == '~') && (cmdLine[4] == '~') && (cmdLine[5] == '~')) {
whismanoid 17:9397ea3ea7e9 5417 // L@-~~~ -- delete all rows from table
whismanoid 30:07197a430869 5418 cmdLine.serial().printf("\r\n delete all rows");
whismanoid 17:9397ea3ea7e9 5419 Datalogger_action_table_row_count = 0;
whismanoid 17:9397ea3ea7e9 5420 break;
whismanoid 17:9397ea3ea7e9 5421 }
whismanoid 30:07197a430869 5422 else {
whismanoid 30:07197a430869 5423 editRowIndex = atoi(cmdLine.str()+3);
whismanoid 30:07197a430869 5424 cmdLine.serial().printf("\r\n delete row %d", editRowIndex);
whismanoid 30:07197a430869 5425 // delete row editRowIndex from Datalogger_action_table
whismanoid 30:07197a430869 5426 for (int i = editRowIndex; i < (Datalogger_action_table_row_count-1); i++)
whismanoid 30:07197a430869 5427 {
whismanoid 30:07197a430869 5428 // copy row i+1 into row i
whismanoid 30:07197a430869 5429 Datalogger_action_table[i].action = Datalogger_action_table[i+1].action;
whismanoid 30:07197a430869 5430 Datalogger_action_table[i].digitalOutPin = Datalogger_action_table[i+1].digitalOutPin;
whismanoid 30:07197a430869 5431 Datalogger_action_table[i].condition = Datalogger_action_table[i+1].condition;
whismanoid 30:07197a430869 5432 Datalogger_action_table[i].condition_channel = Datalogger_action_table[i+1].condition_channel;
whismanoid 30:07197a430869 5433 Datalogger_action_table[i].condition_threshold = Datalogger_action_table[i+1].condition_threshold;
whismanoid 30:07197a430869 5434 }
whismanoid 30:07197a430869 5435 Datalogger_action_table_row_count--;
whismanoid 17:9397ea3ea7e9 5436 }
whismanoid 17:9397ea3ea7e9 5437 }
whismanoid 17:9397ea3ea7e9 5438 break;
whismanoid 30:07197a430869 5439 case '.':
whismanoid 30:07197a430869 5440 // L@. pause the entire Log action table
whismanoid 30:07197a430869 5441 cmdLine.serial().printf("\r\n pause the entire Log action table");
whismanoid 17:9397ea3ea7e9 5442 Datalogger_action_table_enabled = false;
whismanoid 17:9397ea3ea7e9 5443 break;
whismanoid 17:9397ea3ea7e9 5444 case '@':
whismanoid 30:07197a430869 5445 // L@@ enable the entire Log action table
whismanoid 30:07197a430869 5446 cmdLine.serial().printf("\r\n enable the entire Log action table");
whismanoid 17:9397ea3ea7e9 5447 Datalogger_action_table_enabled = true;
whismanoid 17:9397ea3ea7e9 5448 break;
whismanoid 17:9397ea3ea7e9 5449 }
whismanoid 17:9397ea3ea7e9 5450 //
whismanoid 17:9397ea3ea7e9 5451 // Print the contents of Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5452 if (Datalogger_action_table_enabled) {
whismanoid 30:07197a430869 5453 // cmdLine.serial().printf("Log action table enabled; L@. to pause");
whismanoid 17:9397ea3ea7e9 5454 }
whismanoid 17:9397ea3ea7e9 5455 else {
whismanoid 30:07197a430869 5456 cmdLine.serial().printf("Log action table paused; L@@ to enable");
whismanoid 17:9397ea3ea7e9 5457 }
whismanoid 17:9397ea3ea7e9 5458 //~ cmdLine.serial().printf("\r\n Datalogger_action_table_row_count=%d", Datalogger_action_table_row_count);
whismanoid 17:9397ea3ea7e9 5459 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 5460 {
whismanoid 17:9397ea3ea7e9 5461 cmdLine.serial().printf("\r\n L@%d", i);
whismanoid 17:9397ea3ea7e9 5462 cmdLine.serial().printf(" act=%d", Datalogger_action_table[i].action);
whismanoid 17:9397ea3ea7e9 5463 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5464 {
whismanoid 17:9397ea3ea7e9 5465 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 5466 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 5467 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5468 break;
whismanoid 29:6a9edb6e973b 5469 case action_button: // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 5470 cmdLine.serial().printf(" pin=%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 29:6a9edb6e973b 5471 break;
whismanoid 17:9397ea3ea7e9 5472 default:
whismanoid 17:9397ea3ea7e9 5473 case action_noop:
whismanoid 17:9397ea3ea7e9 5474 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 5475 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 5476 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 5477 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 5478 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 5479 break;
whismanoid 17:9397ea3ea7e9 5480 }
whismanoid 17:9397ea3ea7e9 5481 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5482 {
whismanoid 17:9397ea3ea7e9 5483 case condition_always:
whismanoid 17:9397ea3ea7e9 5484 break;
whismanoid 17:9397ea3ea7e9 5485 default:
whismanoid 17:9397ea3ea7e9 5486 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 5487 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 5488 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 5489 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 5490 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 5491 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 5492 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 5493 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 5494 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 5495 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 5496 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 5497 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 5498 cmdLine.serial().printf(" if=%d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 5499 cmdLine.serial().printf(" ch=%d", Datalogger_action_table[i].condition_channel);
whismanoid 40:330b28116178 5500 // our voltage measurement is around 1mV at best
whismanoid 40:330b28116178 5501 cmdLine.serial().printf(" x=%1.4f", Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5502 break;
whismanoid 17:9397ea3ea7e9 5503 }
whismanoid 17:9397ea3ea7e9 5504 cmdLine.serial().printf(" -- ");
whismanoid 17:9397ea3ea7e9 5505 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5506 {
whismanoid 17:9397ea3ea7e9 5507 case action_noop:
whismanoid 17:9397ea3ea7e9 5508 cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 5509 break;
whismanoid 17:9397ea3ea7e9 5510 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 5511 cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 5512 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5513 break;
whismanoid 17:9397ea3ea7e9 5514 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 5515 cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 5516 cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 5517 break;
whismanoid 29:6a9edb6e973b 5518 case action_button: // pin = button index 1, 2, 3
whismanoid 40:330b28116178 5519 cmdLine.serial().printf("button %%B%d!", Datalogger_action_table[i].digitalOutPin);
whismanoid 29:6a9edb6e973b 5520 break;
whismanoid 17:9397ea3ea7e9 5521 case action_trigger_Halt:
whismanoid 40:330b28116178 5522 cmdLine.serial().printf("Halt");
whismanoid 17:9397ea3ea7e9 5523 break;
whismanoid 17:9397ea3ea7e9 5524 case action_trigger_FreeRun:
whismanoid 40:330b28116178 5525 cmdLine.serial().printf("LR");
whismanoid 17:9397ea3ea7e9 5526 break;
whismanoid 17:9397ea3ea7e9 5527 case action_trigger_Timer:
whismanoid 40:330b28116178 5528 cmdLine.serial().printf("LT count=%d base=%dms sleep=%d", g_timer_interval_count, g_timer_interval_msec, g_timer_sleepmode);
whismanoid 17:9397ea3ea7e9 5529 break;
whismanoid 17:9397ea3ea7e9 5530 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 5531 cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 5532 // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 5533 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 5534 break;
whismanoid 17:9397ea3ea7e9 5535 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 5536 cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 5537 // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 5538 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 5539 break;
whismanoid 17:9397ea3ea7e9 5540 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 5541 //~ cmdLine.serial().printf(" condition %d", Datalogger_action_table[i].condition);
whismanoid 17:9397ea3ea7e9 5542 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5543 {
whismanoid 17:9397ea3ea7e9 5544 case condition_always:
whismanoid 17:9397ea3ea7e9 5545 cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 5546 break;
whismanoid 17:9397ea3ea7e9 5547 case condition_if_An_gt_threshold:
whismanoid 40:330b28116178 5548 cmdLine.serial().printf(" if A%d > %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5549 break;
whismanoid 17:9397ea3ea7e9 5550 case condition_if_An_lt_threshold:
whismanoid 40:330b28116178 5551 cmdLine.serial().printf(" if A%d < %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5552 break;
whismanoid 17:9397ea3ea7e9 5553 case condition_if_An_eq_threshold:
whismanoid 40:330b28116178 5554 cmdLine.serial().printf(" if A%d == %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5555 break;
whismanoid 17:9397ea3ea7e9 5556 case condition_if_An_ge_threshold:
whismanoid 40:330b28116178 5557 cmdLine.serial().printf(" if A%d >= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5558 break;
whismanoid 17:9397ea3ea7e9 5559 case condition_if_An_le_threshold:
whismanoid 40:330b28116178 5560 cmdLine.serial().printf(" if A%d <= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5561 break;
whismanoid 17:9397ea3ea7e9 5562 case condition_if_An_ne_threshold:
whismanoid 40:330b28116178 5563 cmdLine.serial().printf(" if A%d != %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5564 break;
whismanoid 17:9397ea3ea7e9 5565 case condition_if_AINn_gt_threshold:
whismanoid 40:330b28116178 5566 cmdLine.serial().printf(" if AIN%d > %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5567 break;
whismanoid 17:9397ea3ea7e9 5568 case condition_if_AINn_lt_threshold:
whismanoid 40:330b28116178 5569 cmdLine.serial().printf(" if AIN%d < %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5570 break;
whismanoid 17:9397ea3ea7e9 5571 case condition_if_AINn_eq_threshold:
whismanoid 40:330b28116178 5572 cmdLine.serial().printf(" if AIN%d == %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5573 break;
whismanoid 17:9397ea3ea7e9 5574 case condition_if_AINn_ge_threshold:
whismanoid 40:330b28116178 5575 cmdLine.serial().printf(" if AIN%d >= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5576 break;
whismanoid 17:9397ea3ea7e9 5577 case condition_if_AINn_le_threshold:
whismanoid 40:330b28116178 5578 cmdLine.serial().printf(" if AIN%d <= %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5579 break;
whismanoid 17:9397ea3ea7e9 5580 case condition_if_AINn_ne_threshold:
whismanoid 40:330b28116178 5581 cmdLine.serial().printf(" if AIN%d != %1.2f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 5582 break;
whismanoid 17:9397ea3ea7e9 5583 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 5584 } // for ...Datalogger_action_table_row_count // Print the contents of Datalogger_action_table
whismanoid 30:07197a430869 5585 cmdLine.serial().printf("\r\n\r\nEdit Log action table (used %d/%d, %d free):",
whismanoid 30:07197a430869 5586 Datalogger_action_table_row_count,
whismanoid 30:07197a430869 5587 ACTION_TABLE_ROW_MAX,
whismanoid 30:07197a430869 5588 (ACTION_TABLE_ROW_MAX - Datalogger_action_table_row_count)
whismanoid 30:07197a430869 5589 );
whismanoid 17:9397ea3ea7e9 5590 if (Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX) {
whismanoid 17:9397ea3ea7e9 5591 // if Datalogger_action_table_row_count => ACTION_TABLE_ROW_MAX then the table is full
whismanoid 17:9397ea3ea7e9 5592 cmdLine.serial().printf("\r\n L@+ act=4 if=1 ch=5 x=12345 -- add new entry at end of table");
whismanoid 17:9397ea3ea7e9 5593 }
whismanoid 17:9397ea3ea7e9 5594 if (Datalogger_action_table_row_count > 0) {
whismanoid 17:9397ea3ea7e9 5595 // if Datalogger_action_table_row_count == 0 then the table is empty
whismanoid 17:9397ea3ea7e9 5596 cmdLine.serial().printf("\r\n L@%d act=4 if=1 ch=5 x=12345 -- edit row %d",
whismanoid 17:9397ea3ea7e9 5597 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 5598 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 5599 cmdLine.serial().printf("\r\n L@-%d -- delete row %d",
whismanoid 17:9397ea3ea7e9 5600 Datalogger_action_table_row_count-1,
whismanoid 17:9397ea3ea7e9 5601 Datalogger_action_table_row_count-1);
whismanoid 17:9397ea3ea7e9 5602 cmdLine.serial().printf("\r\n L@-~~~ -- delete all rows");
whismanoid 30:07197a430869 5603 if (Datalogger_action_table_enabled) cmdLine.serial().printf("\r\n L@. -- pause entire Log action table");
whismanoid 30:07197a430869 5604 if (!Datalogger_action_table_enabled) cmdLine.serial().printf("\r\n L@@ -- enable Log action table");
whismanoid 17:9397ea3ea7e9 5605 }
whismanoid 17:9397ea3ea7e9 5606 //
whismanoid 17:9397ea3ea7e9 5607 } // case L@ -- configures Datalogger_action_table
whismanoid 17:9397ea3ea7e9 5608 break;
whismanoid 17:9397ea3ea7e9 5609 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 5610 // LR -- Datalog free run as fast as possible
whismanoid 4:d9b05924ad4c 5611 case 'R': case 'r':
whismanoid 4:d9b05924ad4c 5612 // free run as fast as possible
whismanoid 8:dffee7509bfb 5613 Datalogger_Trigger = trigger_FreeRun;
whismanoid 8:dffee7509bfb 5614 Datalogger_Need_PrintHeader = true;
whismanoid 4:d9b05924ad4c 5615 return; // instead of break; avoid falling through to print_command_prompt();
whismanoid 9:45f98573eb6d 5616 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 5617 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 9:45f98573eb6d 5618 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 5619 // verb: D for disable, V for Voltage, L for LSB
whismanoid 9:45f98573eb6d 5620 case 'S': case 's':
whismanoid 9:45f98573eb6d 5621 {
whismanoid 9:45f98573eb6d 5622 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 5623 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 5624 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 5625 )
whismanoid 9:45f98573eb6d 5626 {
whismanoid 9:45f98573eb6d 5627 // it's me
whismanoid 9:45f98573eb6d 5628 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 5629 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 5630 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 5631 {
whismanoid 9:45f98573eb6d 5632 case 'D': case 'd':
whismanoid 9:45f98573eb6d 5633 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Disable;
whismanoid 9:45f98573eb6d 5634 break;
whismanoid 9:45f98573eb6d 5635 case 'L': case 'l':
whismanoid 9:45f98573eb6d 5636 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 5637 break;
whismanoid 9:45f98573eb6d 5638 case 'V': case 'v':
whismanoid 9:45f98573eb6d 5639 SPI_AIN_Enable_ch[channel_index] = SPI_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 5640 break;
whismanoid 9:45f98573eb6d 5641 //
whismanoid 9:45f98573eb6d 5642 //
whismanoid 9:45f98573eb6d 5643 // TODO: MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 5644 case 'C': case 'c':
whismanoid 9:45f98573eb6d 5645 {
whismanoid 9:45f98573eb6d 5646 uint8_t hexValue = 0;
whismanoid 9:45f98573eb6d 5647 hexValue = hexValueOfChar(cmdLine[5]) * 0x10 + hexValueOfChar(cmdLine[6]);
whismanoid 9:45f98573eb6d 5648 switch (cmdLine[4])
whismanoid 9:45f98573eb6d 5649 {
whismanoid 9:45f98573eb6d 5650 //
whismanoid 9:45f98573eb6d 5651 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 9:45f98573eb6d 5652 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34"));
whismanoid 9:45f98573eb6d 5653 case 'F': case 'f':
whismanoid 9:45f98573eb6d 5654 SPI_AIN_Cfg_v_filter_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 5655 break;
whismanoid 9:45f98573eb6d 5656 //
whismanoid 9:45f98573eb6d 5657 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 9:45f98573eb6d 5658 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 9:45f98573eb6d 5659 case 'C': case 'c':
whismanoid 9:45f98573eb6d 5660 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 5661 break;
whismanoid 9:45f98573eb6d 5662 //
whismanoid 9:45f98573eb6d 5663 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 9:45f98573eb6d 5664 // cmdLine.serial().print(F("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00"));
whismanoid 9:45f98573eb6d 5665 case 'P': case 'p':
whismanoid 9:45f98573eb6d 5666 SPI_AIN_Cfg_v_pga_ch[channel_index] = hexValue;
whismanoid 9:45f98573eb6d 5667 break;
whismanoid 9:45f98573eb6d 5668 //
whismanoid 9:45f98573eb6d 5669 // cmdLine.serial().print(F("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar"));
whismanoid 9:45f98573eb6d 5670 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 5671 case 'U': case 'u':
whismanoid 9:45f98573eb6d 5672 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] | 0x40;
whismanoid 9:45f98573eb6d 5673 break;
whismanoid 9:45f98573eb6d 5674 //
whismanoid 9:45f98573eb6d 5675 // cmdLine.serial().print(F("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar"));
whismanoid 9:45f98573eb6d 5676 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 9:45f98573eb6d 5677 case 'B': case 'b':
whismanoid 9:45f98573eb6d 5678 SPI_AIN_Cfg_v_ctrl_ch[channel_index] = SPI_AIN_Cfg_v_ctrl_ch[channel_index] &~ 0x40;
whismanoid 9:45f98573eb6d 5679 break;
whismanoid 9:45f98573eb6d 5680 }
whismanoid 9:45f98573eb6d 5681 break;
whismanoid 9:45f98573eb6d 5682 }
whismanoid 9:45f98573eb6d 5683 //
whismanoid 9:45f98573eb6d 5684 //
whismanoid 9:45f98573eb6d 5685 }
whismanoid 9:45f98573eb6d 5686 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 5687 } // end for channel_index
whismanoid 9:45f98573eb6d 5688 Datalogger_PrintHeader();
whismanoid 9:45f98573eb6d 5689 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5690 }
whismanoid 9:45f98573eb6d 5691 break;
whismanoid 9:45f98573eb6d 5692 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 5693 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 5694 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 9:45f98573eb6d 5695 // channel ID: 0,1,2,... or - for all channels
whismanoid 9:45f98573eb6d 5696 // verb: D for disable, V for Voltage, L for LSB
whismanoid 8:dffee7509bfb 5697 case 'A': case 'a':
whismanoid 9:45f98573eb6d 5698 {
whismanoid 9:45f98573eb6d 5699 // all-channel: loop through all valid channel_index, test cmdLine[2] 'is it me'?
whismanoid 9:45f98573eb6d 5700 // for channel_index loop through 0..NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 9:45f98573eb6d 5701 // if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 5702 // || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 5703 // ) {
whismanoid 9:45f98573eb6d 5704 // // it's me
whismanoid 9:45f98573eb6d 5705 // // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 5706 // // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 5707 // } end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 5708 // } end for channel_index
whismanoid 9:45f98573eb6d 5709 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 5710 if ((cmdLine[2] == '-' /* all channels */)
whismanoid 9:45f98573eb6d 5711 || (cmdLine[2] == '0'+channel_index)
whismanoid 9:45f98573eb6d 5712 )
whismanoid 9:45f98573eb6d 5713 {
whismanoid 9:45f98573eb6d 5714 // it's me
whismanoid 9:45f98573eb6d 5715 // test cmdLine[3] to determine action
whismanoid 9:45f98573eb6d 5716 // Platform_Enable_ch[channel_index] = Platform_AIN_xxxxx;
whismanoid 9:45f98573eb6d 5717 switch (cmdLine[3])
whismanoid 9:45f98573eb6d 5718 {
whismanoid 9:45f98573eb6d 5719 case 'D': case 'd':
whismanoid 9:45f98573eb6d 5720 Platform_Enable_ch[channel_index] = Platform_AIN_Disable;
whismanoid 9:45f98573eb6d 5721 break;
whismanoid 9:45f98573eb6d 5722 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 5723 case 'L': case 'l':
whismanoid 9:45f98573eb6d 5724 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_LSB;
whismanoid 9:45f98573eb6d 5725 break;
whismanoid 9:45f98573eb6d 5726 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 5727 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 5728 case 'V': case 'v':
whismanoid 9:45f98573eb6d 5729 Platform_Enable_ch[channel_index] = Platform_AIN_Enable_Volt;
whismanoid 9:45f98573eb6d 5730 break;
whismanoid 9:45f98573eb6d 5731 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 9:45f98573eb6d 5732 }
whismanoid 9:45f98573eb6d 5733 } // end if cmdLine[2] channel_index
whismanoid 9:45f98573eb6d 5734 } // end for channel_index
whismanoid 10:04022a61b527 5735 // Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 5736 if (Datalogger_enable_serial) {
whismanoid 9:45f98573eb6d 5737 Datalogger_PrintHeader(cmdLine);
whismanoid 9:45f98573eb6d 5738 }
whismanoid 9:45f98573eb6d 5739 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 5740 if (Datalogger_enable_AUXserial) {
whismanoid 9:45f98573eb6d 5741 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 9:45f98573eb6d 5742 }
whismanoid 9:45f98573eb6d 5743 # endif // HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 5744 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5745 if (Datalogger_enable_DAPLINKserial) {
whismanoid 9:45f98573eb6d 5746 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 9:45f98573eb6d 5747 }
whismanoid 9:45f98573eb6d 5748 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5749 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5750 }
whismanoid 8:dffee7509bfb 5751 break;
whismanoid 9:45f98573eb6d 5752 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 5753 case '>':
whismanoid 9:45f98573eb6d 5754 // L>A -- Datalogger_enable_AUXserial
whismanoid 9:45f98573eb6d 5755 // L>D -- Datalogger_enable_DAPLINKserial
whismanoid 9:45f98573eb6d 5756 // L>S -- Datalogger_enable_serial
whismanoid 9:45f98573eb6d 5757 switch (cmdLine[2])
whismanoid 9:45f98573eb6d 5758 {
whismanoid 9:45f98573eb6d 5759 # if HAS_AUX_SERIAL
whismanoid 9:45f98573eb6d 5760 case 'A': case 'a':
whismanoid 9:45f98573eb6d 5761 Datalogger_enable_AUXserial = !Datalogger_enable_AUXserial;
whismanoid 9:45f98573eb6d 5762 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5763 break;
whismanoid 8:dffee7509bfb 5764 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 5765 # if HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5766 case 'D': case 'd':
whismanoid 9:45f98573eb6d 5767 Datalogger_enable_DAPLINKserial = !Datalogger_enable_DAPLINKserial;
whismanoid 9:45f98573eb6d 5768 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5769 break;
whismanoid 8:dffee7509bfb 5770 # endif // HAS_DAPLINK_SERIAL
whismanoid 9:45f98573eb6d 5771 case 'S': case 's':
whismanoid 9:45f98573eb6d 5772 Datalogger_enable_serial = !Datalogger_enable_serial;
whismanoid 9:45f98573eb6d 5773 Datalogger_Need_PrintHeader = true;
whismanoid 9:45f98573eb6d 5774 break;
whismanoid 9:45f98573eb6d 5775 }
whismanoid 9:45f98573eb6d 5776 break; // case '>' L>S serial enable toggle
whismanoid 28:a9a3a9db592b 5777 default:
whismanoid 28:a9a3a9db592b 5778 // TODO: L -- detailed help for datalog commands
whismanoid 28:a9a3a9db592b 5779 //
whismanoid 28:a9a3a9db592b 5780 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 28:a9a3a9db592b 5781 #if 1 // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 5782 // Datalogger_Trigger = trigger_FreeRun // free run as fast as possible "always-on mode"
whismanoid 28:a9a3a9db592b 5783 cmdLine.serial().printf("\r\n LR -- Datalog free run as fast as possible");
whismanoid 28:a9a3a9db592b 5784 //
whismanoid 28:a9a3a9db592b 5785 // Datalogger_Trigger = trigger_Timer // timer (configure interval) "intermittent-sleep-mode"
whismanoid 28:a9a3a9db592b 5786 //~ cmdLine.serial().printf("\r\n LT -- Datalog timer"); // trigger_Timer
whismanoid 39:4d285e961435 5787 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5788 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 5789 cmdLine.serial().printf("\r\n LT count=%d base=%dms sleep=%d -- Datalog timer",
whismanoid 39:4d285e961435 5790 g_timer_interval_count,
whismanoid 39:4d285e961435 5791 g_timer_interval_msec,
whismanoid 39:4d285e961435 5792 (int)g_timer_sleepmode
whismanoid 39:4d285e961435 5793 ); // trigger_Timer
whismanoid 39:4d285e961435 5794 #else // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 5795 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 5796 #endif // USE_DATALOGGER_SLEEP
whismanoid 28:a9a3a9db592b 5797 //
whismanoid 28:a9a3a9db592b 5798 // TODO: Datalogger_Trigger = trigger_PlatformDigitalInput // platform digital input (configure digital input pin reference)
whismanoid 28:a9a3a9db592b 5799 //~ cmdLine.serial().printf("\r\n LI -- Datalog _______"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 5800 // TODO: cmdLine.serial().printf("\r\n LIH3 -- Datalog when input high D3"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 5801 // TODO: cmdLine.serial().printf("\r\n LIL6 -- Datalog when input low D6"); // trigger_PlatformDigitalInput
whismanoid 28:a9a3a9db592b 5802 //
whismanoid 28:a9a3a9db592b 5803 #if USE_DATALOGGER_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 5804 // TODO: Datalogger_Trigger = trigger_SPIDeviceRegRead // SPI device register read (configure regaddr, mask value, match value)
whismanoid 28:a9a3a9db592b 5805 //~ cmdLine.serial().printf("\r\n L$ -- Datalog _______"); // trigger_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 5806 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 5807 #endif // USE_DATALOGGER_SPIDeviceRegRead
whismanoid 28:a9a3a9db592b 5808 //
whismanoid 28:a9a3a9db592b 5809 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 5810 cmdLine.serial().printf("\r\n L@ -- configures Datalogger_action_table; show more commands");
whismanoid 28:a9a3a9db592b 5811 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 28:a9a3a9db592b 5812 //
whismanoid 28:a9a3a9db592b 5813 //
whismanoid 28:a9a3a9db592b 5814 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 28:a9a3a9db592b 5815 // LS<channel ID><verb>: Configure SPI_AIN channels
whismanoid 28:a9a3a9db592b 5816 // channel ID: 0,1,2,... or - for all channels
whismanoid 28:a9a3a9db592b 5817 // verb: D for disable, V for Voltage, L for LSB
whismanoid 28:a9a3a9db592b 5818 cmdLine.serial().printf("\r\n LS-D -- Datalog SPI ADC channel '-'(all) Disable");
whismanoid 28:a9a3a9db592b 5819 cmdLine.serial().printf("\r\n LS-V -- Datalog SPI ADC channel '-'(all) Volt");
whismanoid 28:a9a3a9db592b 5820 cmdLine.serial().printf("\r\n LS-L -- Datalog SPI ADC channel '-'(all) LSB");
whismanoid 28:a9a3a9db592b 5821 cmdLine.serial().printf("\r\n LS2D -- Datalog SPI ADC channel channel 2 Disable");
whismanoid 28:a9a3a9db592b 5822 cmdLine.serial().printf("\r\n LS3V -- Datalog SPI ADC channel channel 3 Volt");
whismanoid 28:a9a3a9db592b 5823 cmdLine.serial().printf("\r\n LS4L -- Datalog SPI ADC channel channel 4 LSB");
whismanoid 28:a9a3a9db592b 5824 //
whismanoid 28:a9a3a9db592b 5825 // MAX11410 verb for configuring SPI_AIN_Cfg_v_filter_ch[channel_index]
whismanoid 28:a9a3a9db592b 5826 // cmdLine.serial().print(F("\r\n LS-CF34 -- Datalog SPI ADC channel channel 5 v_filter 0x34"));
whismanoid 28:a9a3a9db592b 5827 cmdLine.serial().printf("\r\n LS-CF34 -- Datalog SPI ADC channel '-'(all) v_filter 0x34");
whismanoid 28:a9a3a9db592b 5828 //
whismanoid 28:a9a3a9db592b 5829 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 5830 // cmdLine.serial().print(F("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42"));
whismanoid 28:a9a3a9db592b 5831 cmdLine.serial().printf("\r\n LS-CC42 -- Datalog SPI ADC channel '-'(all) v_ctrl 0x42");
whismanoid 28:a9a3a9db592b 5832 //
whismanoid 28:a9a3a9db592b 5833 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 5834 // cmdLine.serial().print(F("\r\n LS5___ -- Datalog SPI ADC channel channel 5 v_ctrl"));
whismanoid 28:a9a3a9db592b 5835 // MAX11410 verb for configuring SPI_AIN_Cfg_v_ctrl_ch[channel_index]
whismanoid 28:a9a3a9db592b 5836 cmdLine.serial().printf("\r\n LS5CU -- Datalog SPI ADC channel channel 5 v_ctrl Unipolar");
whismanoid 28:a9a3a9db592b 5837 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 28:a9a3a9db592b 5838 cmdLine.serial().printf("\r\n LS5CB -- Datalog SPI ADC channel channel 5 v_ctrl Bipolar");
whismanoid 28:a9a3a9db592b 5839 // ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) ? "BIPOLAR" : "Unipolar"
whismanoid 28:a9a3a9db592b 5840 //
whismanoid 28:a9a3a9db592b 5841 // MAX11410 verb for configuring SPI_AIN_Cfg_v_pga_ch[channel_index]
whismanoid 28:a9a3a9db592b 5842 // cmdLine.serial().print(F("\r\n LS5CP00 -- Datalog SPI ADC channel channel 5 v_pga 0x00"));
whismanoid 28:a9a3a9db592b 5843 cmdLine.serial().printf("\r\n LS-CP00 -- Datalog SPI ADC channel '-'(all) v_pga 0x00");
whismanoid 28:a9a3a9db592b 5844 //
whismanoid 28:a9a3a9db592b 5845 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 28:a9a3a9db592b 5846 //
whismanoid 28:a9a3a9db592b 5847 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 28:a9a3a9db592b 5848 // LA<channel ID><verb>: Configure Platform_AIN channels
whismanoid 28:a9a3a9db592b 5849 // channel ID: 0,1,2,... or - for all channels
whismanoid 28:a9a3a9db592b 5850 // verb: D for disable, V for Voltage, L for LSB
whismanoid 28:a9a3a9db592b 5851 cmdLine.serial().printf("\r\n LA-D -- Datalog Platform-AIN all-channel Disable");
whismanoid 28:a9a3a9db592b 5852 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5853 cmdLine.serial().printf("\r\n LA-V -- Datalog Platform-AIN all-channel Volt");
whismanoid 28:a9a3a9db592b 5854 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5855 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5856 cmdLine.serial().printf("\r\n LA-L -- Datalog Platform-AIN all-channel LSB");
whismanoid 28:a9a3a9db592b 5857 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5858 cmdLine.serial().printf("\r\n LA2D -- Datalog Platform-AIN channel 2 Disable");
whismanoid 28:a9a3a9db592b 5859 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5860 cmdLine.serial().printf("\r\n LA3V -- Datalog Platform-AIN channel 3 Volt");
whismanoid 28:a9a3a9db592b 5861 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 28:a9a3a9db592b 5862 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5863 cmdLine.serial().printf("\r\n LA4L -- Datalog Platform-AIN channel 4 LSB");
whismanoid 28:a9a3a9db592b 5864 #endif // LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 28:a9a3a9db592b 5865 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 28:a9a3a9db592b 5866 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 28:a9a3a9db592b 5867 # if HAS_AUX_SERIAL
whismanoid 28:a9a3a9db592b 5868 cmdLine.serial().printf("\r\n L>A -- Datalogger_enable_AUXserial %s", (Datalogger_enable_AUXserial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 5869 # endif // HAS_AUX_SERIAL
whismanoid 28:a9a3a9db592b 5870 # if HAS_DAPLINK_SERIAL
whismanoid 28:a9a3a9db592b 5871 cmdLine.serial().printf("\r\n L>D -- Datalogger_enable_DAPLINKserial %s", (Datalogger_enable_DAPLINKserial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 5872 # endif // HAS_DAPLINK_SERIAL
whismanoid 28:a9a3a9db592b 5873 cmdLine.serial().printf("\r\n L>S -- Datalogger_enable_serial %s", (Datalogger_enable_serial?"disable":"enable"));
whismanoid 28:a9a3a9db592b 5874 //
whismanoid 28:a9a3a9db592b 5875 #else // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 5876 #endif // USE_DATALOGGER_TRIGGER_HELP_BRIEF
whismanoid 28:a9a3a9db592b 5877 break;
whismanoid 17:9397ea3ea7e9 5878 } // switch (cmdLine[1]) inside case 'L'
whismanoid 4:d9b05924ad4c 5879 }
whismanoid 4:d9b05924ad4c 5880 break; // case 'L'
whismanoid 4:d9b05924ad4c 5881 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 4:d9b05924ad4c 5882 //
whismanoid 4:d9b05924ad4c 5883 // Application-specific commands here
whismanoid 4:d9b05924ad4c 5884 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 4:d9b05924ad4c 5885 //
whismanoid 4:d9b05924ad4c 5886 #if APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 5887 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 4:d9b05924ad4c 5888
whismanoid 4:d9b05924ad4c 5889 //
whismanoid 4:d9b05924ad4c 5890 // TODO1: add new commands here
whismanoid 4:d9b05924ad4c 5891 //
whismanoid 4:d9b05924ad4c 5892 default:
whismanoid 4:d9b05924ad4c 5893 #if APPLICATION_MAX5715 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5894 extern bool MAX5715_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5715.cpp
whismanoid 4:d9b05924ad4c 5895 if (!MAX5715_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5896 #elif APPLICATION_MAX11131 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5897 extern bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11131.cpp
whismanoid 4:d9b05924ad4c 5898 if (!MAX11131_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5899 #elif APPLICATION_MAX5171 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5900 extern bool MAX5171_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX5171.cpp
whismanoid 4:d9b05924ad4c 5901 if (!MAX5171_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5902 #elif APPLICATION_MAX11410 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5903 extern bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11410.cpp
whismanoid 4:d9b05924ad4c 5904 if (!MAX11410_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5905 #elif APPLICATION_MAX12345 // main_menu_onEOLcommandParser print command prompt
whismanoid 4:d9b05924ad4c 5906 extern bool MAX12345_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX12345.cpp
whismanoid 4:d9b05924ad4c 5907 if (!MAX12345_menu_onEOLcommandParser(cmdLine))
whismanoid 4:d9b05924ad4c 5908 #else
whismanoid 4:d9b05924ad4c 5909 if (0) // not_handled_by_device_submenu
whismanoid 4:d9b05924ad4c 5910 #endif
whismanoid 4:d9b05924ad4c 5911 {
whismanoid 4:d9b05924ad4c 5912 cmdLine.serial().printf("\r\n unknown command ");
whismanoid 4:d9b05924ad4c 5913 //~ cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 5914 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 5915 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n",
whismanoid 4:d9b05924ad4c 5916 cmdLine.str()[0], cmdLine.str());
whismanoid 4:d9b05924ad4c 5917 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5918 }
whismanoid 4:d9b05924ad4c 5919 } // switch (cmdLine[0])
whismanoid 4:d9b05924ad4c 5920 //
whismanoid 31:47eee7e0cc2d 5921 // TODO: avoid excess console noise when a Button event happens during datalogging -- quiet inside Run_command_table()
whismanoid 31:47eee7e0cc2d 5922 if (g_Run_command_table_running == false) {
whismanoid 4:d9b05924ad4c 5923 // print command prompt
whismanoid 8:dffee7509bfb 5924 // print_command_prompt();
whismanoid 8:dffee7509bfb 5925 cmdLine.serial().printf("\r\n> ");
whismanoid 31:47eee7e0cc2d 5926 } // if (g_Run_command_table_running)
whismanoid 4:d9b05924ad4c 5927 }
whismanoid 4:d9b05924ad4c 5928 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 5929
whismanoid 4:d9b05924ad4c 5930 //--------------------------------------------------
whismanoid 4:d9b05924ad4c 5931 // print column header banner for csv data columns
whismanoid 8:dffee7509bfb 5932 void Datalogger_PrintHeader(CmdLine& cmdLine)
whismanoid 4:d9b05924ad4c 5933 {
whismanoid 37:3f369235e5bc 5934 #if MAX40108_DEMO // main_menu_status banner
whismanoid 37:3f369235e5bc 5935 cmdLine.serial().printf("\r\n\r\n\"MAX40108_U%d", MAX40108_DEMO);
whismanoid 37:3f369235e5bc 5936 #ifdef BOARD_SERIAL_NUMBER
whismanoid 37:3f369235e5bc 5937 // data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 5938 cmdLine.serial().printf(" [s/n %d]", BOARD_SERIAL_NUMBER);
whismanoid 37:3f369235e5bc 5939 #endif // BOARD_SERIAL_NUMBER data unique to certain boards based on serial number
whismanoid 37:3f369235e5bc 5940 #ifdef FW_REV
whismanoid 37:3f369235e5bc 5941 cmdLine.serial().printf(" [FW_REV %d]", FW_REV);
whismanoid 37:3f369235e5bc 5942 #endif // FW_REV
whismanoid 37:3f369235e5bc 5943 cmdLine.serial().printf("\"\r\n");
whismanoid 37:3f369235e5bc 5944 #endif // MAX40108_DEMO
whismanoid 37:3f369235e5bc 5945
whismanoid 4:d9b05924ad4c 5946 // column header banner for csv data columns
whismanoid 4:d9b05924ad4c 5947 int field_index = 0;
whismanoid 4:d9b05924ad4c 5948 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 5949 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 5950 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 4:d9b05924ad4c 5951 continue;
whismanoid 4:d9b05924ad4c 5952 }
whismanoid 4:d9b05924ad4c 5953 // comma between fields
whismanoid 4:d9b05924ad4c 5954 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 5955 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 5956 }
whismanoid 10:04022a61b527 5957 field_index++;
whismanoid 4:d9b05924ad4c 5958 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 5959 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 5960 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 4:d9b05924ad4c 5961 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 4:d9b05924ad4c 5962 cmdLine.serial().printf("\"AIN%d-%d_BIP", channel_index, channel_index+1);
whismanoid 4:d9b05924ad4c 5963 }
whismanoid 4:d9b05924ad4c 5964 else {
whismanoid 4:d9b05924ad4c 5965 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 5966 }
whismanoid 4:d9b05924ad4c 5967 #else // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 4:d9b05924ad4c 5968 cmdLine.serial().printf("\"AIN%d", channel_index);
whismanoid 4:d9b05924ad4c 5969 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 5970 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_LSB) {
whismanoid 4:d9b05924ad4c 5971 // _LSB column header suffix
whismanoid 13:184a08909405 5972 cmdLine.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 5973 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5974 cmdLine_DAPLINKserial.serial().printf("_LSB");
whismanoid 4:d9b05924ad4c 5975 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5976 }
whismanoid 10:04022a61b527 5977 else if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Enable_Volt) {
whismanoid 4:d9b05924ad4c 5978 // _V column header suffix
whismanoid 13:184a08909405 5979 cmdLine.serial().printf("_V");
whismanoid 4:d9b05924ad4c 5980 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5981 cmdLine_DAPLINKserial.serial().printf("_V");
whismanoid 4:d9b05924ad4c 5982 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 5983 }
whismanoid 13:184a08909405 5984 #if HAS_SPI_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5985 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 5986 if (SPI_AIN_customChannelHeader_ch[channel_index] && SPI_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 5987 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 5988 cmdLine.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5989 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5990 cmdLine_DAPLINKserial.serial().printf("_%s", SPI_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 5991 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5992 } else {
whismanoid 13:184a08909405 5993 // no custom channel name for this channel
whismanoid 13:184a08909405 5994 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 5995 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5996 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 5997 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 5998 }
whismanoid 13:184a08909405 5999 #endif // HAS_SPI_AIN_customChannelHeader
whismanoid 13:184a08909405 6000 // close quote
whismanoid 13:184a08909405 6001 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 6002 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6003 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 6004 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6005 }
whismanoid 4:d9b05924ad4c 6006
whismanoid 4:d9b05924ad4c 6007 #if VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 6008 // PART_ID field: Device ID Validation
whismanoid 4:d9b05924ad4c 6009 cmdLine.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 6010 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6011 cmdLine_DAPLINKserial.serial().printf(",\"PART_ID\"");
whismanoid 4:d9b05924ad4c 6012 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6013 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 4:d9b05924ad4c 6014 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 4:d9b05924ad4c 6015 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 6016 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 6017 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 6018 continue;
whismanoid 9:45f98573eb6d 6019 }
whismanoid 4:d9b05924ad4c 6020 // comma between fields
whismanoid 4:d9b05924ad4c 6021 if (field_index > 0) {
whismanoid 4:d9b05924ad4c 6022 cmdLine.serial().printf(",");
whismanoid 4:d9b05924ad4c 6023 }
whismanoid 9:45f98573eb6d 6024 field_index++;
whismanoid 4:d9b05924ad4c 6025 // AIN_index column header prefix
whismanoid 4:d9b05924ad4c 6026 cmdLine.serial().printf("\"A%d", channel_index);
whismanoid 9:45f98573eb6d 6027 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 9:45f98573eb6d 6028 // _LSB column header suffix
whismanoid 13:184a08909405 6029 cmdLine.serial().printf("_LSB");
whismanoid 9:45f98573eb6d 6030 }
whismanoid 9:45f98573eb6d 6031 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 6032 // _V column header suffix
whismanoid 13:184a08909405 6033 cmdLine.serial().printf("_V");
whismanoid 9:45f98573eb6d 6034 }
whismanoid 13:184a08909405 6035 #if HAS_Platform_AIN_customChannelHeader // Optional custom per-channel header suffix
whismanoid 13:184a08909405 6036 // Optional custom per-channel header suffix
whismanoid 13:184a08909405 6037 if (Platform_AIN_customChannelHeader_ch[channel_index] && Platform_AIN_customChannelHeader_ch[channel_index][0]) {
whismanoid 13:184a08909405 6038 // not a null pointer, and not an empty string
whismanoid 13:184a08909405 6039 cmdLine.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 6040 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6041 cmdLine_DAPLINKserial.serial().printf("_%s", Platform_AIN_customChannelHeader_ch[channel_index]);
whismanoid 13:184a08909405 6042 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6043 } else {
whismanoid 13:184a08909405 6044 // no custom channel name for this channel
whismanoid 13:184a08909405 6045 //~ cmdLine.serial().printf("~");
whismanoid 13:184a08909405 6046 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6047 //~ cmdLine_DAPLINKserial.serial().printf("~");
whismanoid 13:184a08909405 6048 # endif // HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6049 }
whismanoid 13:184a08909405 6050 #endif // HAS_Platform_AIN_customChannelHeader
whismanoid 13:184a08909405 6051 // close quote
whismanoid 13:184a08909405 6052 cmdLine.serial().printf("\"");
whismanoid 13:184a08909405 6053 # if HAS_DAPLINK_SERIAL
whismanoid 13:184a08909405 6054 cmdLine_DAPLINKserial.serial().printf("\"");
whismanoid 13:184a08909405 6055 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6056 }
whismanoid 4:d9b05924ad4c 6057 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 30:07197a430869 6058 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 6059 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark -- in Datalogger_PrintHeader
whismanoid 30:07197a430869 6060 cmdLine.serial().printf(",\"%s\"", gstrRemarkHeader);
whismanoid 30:07197a430869 6061 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 4:d9b05924ad4c 6062 // end of column header line
whismanoid 4:d9b05924ad4c 6063 cmdLine.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 6064 # if HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6065 cmdLine_DAPLINKserial.serial().printf("\r\n");
whismanoid 4:d9b05924ad4c 6066 # endif // HAS_DAPLINK_SERIAL
whismanoid 4:d9b05924ad4c 6067 } // void Datalogger_PrintHeader()
whismanoid 4:d9b05924ad4c 6068
whismanoid 5:aaf8b5f5fda1 6069 //--------------------------------------------------
whismanoid 5:aaf8b5f5fda1 6070 void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 6071 {
whismanoid 5:aaf8b5f5fda1 6072 // CODE GENERATOR: example code: has no member function ScanStandardExternalClock
whismanoid 5:aaf8b5f5fda1 6073 // CODE GENERATOR: example code: has no member function ReadAINcode
whismanoid 5:aaf8b5f5fda1 6074 // CODE GENERATOR: example code: member function Read_All_Voltages
whismanoid 5:aaf8b5f5fda1 6075 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6076 // Measure ADC channels in sequence from AIN0 to channelNumber_0_9.
whismanoid 5:aaf8b5f5fda1 6077 // @param[in] g_MAX11410_device.channelNumber_0_15: AIN Channel Number
whismanoid 5:aaf8b5f5fda1 6078 // @param[in] g_MAX11410_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby
whismanoid 5:aaf8b5f5fda1 6079 // @param[in] g_MAX11410_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID
whismanoid 10:04022a61b527 6080 //~ int channelId_0_9 = NUM_DUT_ANALOG_IN_CHANNELS-1+1;
whismanoid 5:aaf8b5f5fda1 6081 //g_MAX11410_device.channelNumber_0_15 = channelId_0_9;
whismanoid 5:aaf8b5f5fda1 6082 //g_MAX11410_device.PowerManagement_0_2 = 0;
whismanoid 5:aaf8b5f5fda1 6083 //g_MAX11410_device.chan_id_0_1 = 1;
whismanoid 5:aaf8b5f5fda1 6084 //----------------------------------------
whismanoid 5:aaf8b5f5fda1 6085 // scan AIN0..AIN9
whismanoid 5:aaf8b5f5fda1 6086 //
whismanoid 10:04022a61b527 6087 #if 1
whismanoid 10:04022a61b527 6088 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 10:04022a61b527 6089 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 10:04022a61b527 6090 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 10:04022a61b527 6091 //
whismanoid 10:04022a61b527 6092 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6093 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc3); // GP1 = 0
whismanoid 10:04022a61b527 6094 //
whismanoid 10:04022a61b527 6095 int field_index = 0;
whismanoid 10:04022a61b527 6096 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 6097 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 10:04022a61b527 6098 continue;
whismanoid 10:04022a61b527 6099 }
whismanoid 10:04022a61b527 6100 field_index++;
whismanoid 10:04022a61b527 6101 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[channel_index];
whismanoid 10:04022a61b527 6102 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[channel_index];
whismanoid 10:04022a61b527 6103 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[channel_index];
whismanoid 10:04022a61b527 6104 //
whismanoid 10:04022a61b527 6105 // WIP SampleRate_of_FILTER_CONV_START() MAX11410EMC-FW slow ODR 10Sps #262
whismanoid 10:04022a61b527 6106 // adjust the MAX11410.loop_limit value if the sample rate is set to a value slower than 20sps
whismanoid 10:04022a61b527 6107 // SampleRate_of_FILTER_CONV_START(uint8_t FILTER_RegValue, uint8_t CONV_START_RegValue)
whismanoid 10:04022a61b527 6108 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 6109 if (SampleRate < 20.0) {
whismanoid 10:04022a61b527 6110 g_MAX11410_device.loop_limit = 32767; // TODO: is this timeout long enough for the slow output data rates?
whismanoid 10:04022a61b527 6111 }
whismanoid 10:04022a61b527 6112 //
whismanoid 10:04022a61b527 6113 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6114 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc3); // GP0 = 0
whismanoid 10:04022a61b527 6115 //
whismanoid 10:04022a61b527 6116 #if SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 6117 // MAX11410 v_ctrl bipolar configuration or unipolar?
whismanoid 10:04022a61b527 6118 if ((SPI_AIN_Cfg_v_ctrl_ch[channel_index] & 0x40) == 0) {
whismanoid 10:04022a61b527 6119 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 6120 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = (MAX11410::MAX11410_AINN_SEL_enum_t)(channel_index^1);
whismanoid 10:04022a61b527 6121 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 6122 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 6123 }
whismanoid 10:04022a61b527 6124 else {
whismanoid 10:04022a61b527 6125 const MAX11410::MAX11410_AINP_SEL_enum_t ainp = (MAX11410::MAX11410_AINP_SEL_enum_t)(channel_index);
whismanoid 10:04022a61b527 6126 const MAX11410::MAX11410_AINN_SEL_enum_t ainn = MAX11410::AINN_SEL_1010_GND;
whismanoid 10:04022a61b527 6127 SPI_AIN_Voltage[channel_index] = g_MAX11410_device.Measure_Voltage(ainp, ainn);
whismanoid 10:04022a61b527 6128 // @post AINcode[ainp]: measurement result LSB code
whismanoid 10:04022a61b527 6129 }
whismanoid 10:04022a61b527 6130 #endif // SPI_ADC_DeviceName == MAX11410 // SPI connected ADC
whismanoid 10:04022a61b527 6131 //
whismanoid 10:04022a61b527 6132 // diagnostic GPIO pulse on MAX11410 GP0 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6133 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0100_dddd_xddd_GP0_CTRL, 0xc4); // GP0 = 1
whismanoid 10:04022a61b527 6134 //
whismanoid 10:04022a61b527 6135 }
whismanoid 10:04022a61b527 6136 // diagnostic GPIO pulse on MAX11410 GP1 pin (0xc3 = logic 0, 0xc4 = logic 1)
whismanoid 10:04022a61b527 6137 g_MAX11410_device.RegWrite(MAX11410::CMD_r000_0101_dddd_xddd_GP1_CTRL, 0xc4); // GP1 = 1
whismanoid 10:04022a61b527 6138 #else
whismanoid 5:aaf8b5f5fda1 6139 g_MAX11410_device.Read_All_Voltages();
whismanoid 10:04022a61b527 6140 #endif
whismanoid 10:04022a61b527 6141 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6142 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 6143 // mbed
whismanoid 5:aaf8b5f5fda1 6144 // Platform board uses simple analog inputs
whismanoid 5:aaf8b5f5fda1 6145 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 5:aaf8b5f5fda1 6146 Platform_LSB[0] = analogIn0.read();
whismanoid 5:aaf8b5f5fda1 6147 Platform_LSB[1] = analogIn1.read();
whismanoid 5:aaf8b5f5fda1 6148 Platform_LSB[2] = analogIn2.read();
whismanoid 5:aaf8b5f5fda1 6149 Platform_LSB[3] = analogIn3.read();
whismanoid 5:aaf8b5f5fda1 6150 Platform_LSB[4] = analogIn4.read();
whismanoid 5:aaf8b5f5fda1 6151 Platform_LSB[5] = analogIn5.read();
whismanoid 10:04022a61b527 6152 #endif
whismanoid 10:04022a61b527 6153 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 37:3f369235e5bc 6154 #if USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 6155 // #if USE_Platform_AIN_Average -- for (i=0; i<Platform_AIN_Average_N; i++) -- analogIn012345.read()
whismanoid 37:3f369235e5bc 6156 // float normValue_0_1 = analogInPin.read(); but mean of Platform_AIN_Average_N samples
whismanoid 37:3f369235e5bc 6157 float analogIn0_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6158 float analogIn1_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6159 float analogIn2_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6160 float analogIn3_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6161 float analogIn4_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6162 float analogIn5_normValue_0_1 = 0;
whismanoid 37:3f369235e5bc 6163 for (int i = 0; i < Platform_AIN_Average_N; i++) {
whismanoid 37:3f369235e5bc 6164 analogIn0_normValue_0_1 = analogIn0_normValue_0_1 + analogIn0.read();
whismanoid 37:3f369235e5bc 6165 analogIn1_normValue_0_1 = analogIn1_normValue_0_1 + analogIn1.read();
whismanoid 37:3f369235e5bc 6166 analogIn2_normValue_0_1 = analogIn2_normValue_0_1 + analogIn2.read();
whismanoid 37:3f369235e5bc 6167 analogIn3_normValue_0_1 = analogIn3_normValue_0_1 + analogIn3.read();
whismanoid 37:3f369235e5bc 6168 analogIn4_normValue_0_1 = analogIn4_normValue_0_1 + analogIn4.read();
whismanoid 37:3f369235e5bc 6169 analogIn5_normValue_0_1 = analogIn5_normValue_0_1 + analogIn5.read();
whismanoid 37:3f369235e5bc 6170 }
whismanoid 37:3f369235e5bc 6171 analogIn0_normValue_0_1 = analogIn0_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6172 analogIn1_normValue_0_1 = analogIn1_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6173 analogIn2_normValue_0_1 = analogIn2_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6174 analogIn3_normValue_0_1 = analogIn3_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6175 analogIn4_normValue_0_1 = analogIn4_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6176 analogIn5_normValue_0_1 = analogIn5_normValue_0_1 / Platform_AIN_Average_N;
whismanoid 37:3f369235e5bc 6177 #else // USE_Platform_AIN_Average
whismanoid 37:3f369235e5bc 6178 float analogIn0_normValue_0_1 = analogIn0.read();
whismanoid 37:3f369235e5bc 6179 float analogIn1_normValue_0_1 = analogIn1.read();
whismanoid 37:3f369235e5bc 6180 float analogIn2_normValue_0_1 = analogIn2.read();
whismanoid 37:3f369235e5bc 6181 float analogIn3_normValue_0_1 = analogIn3.read();
whismanoid 37:3f369235e5bc 6182 float analogIn4_normValue_0_1 = analogIn4.read();
whismanoid 37:3f369235e5bc 6183 float analogIn5_normValue_0_1 = analogIn5.read();
whismanoid 37:3f369235e5bc 6184 #endif // USE_Platform_AIN_Average
whismanoid 34:a1993a1ee904 6185 #if HAS_Platform_AIN_Calibration
whismanoid 34:a1993a1ee904 6186 // apply calibration to normValue_0_1 value
whismanoid 37:3f369235e5bc 6187 Platform_Voltage[0] = CalibratedNormValue(0, analogIn0_normValue_0_1) * adc_full_scale_voltage[0];
whismanoid 37:3f369235e5bc 6188 Platform_Voltage[1] = CalibratedNormValue(1, analogIn1_normValue_0_1) * adc_full_scale_voltage[1];
whismanoid 37:3f369235e5bc 6189 Platform_Voltage[2] = CalibratedNormValue(2, analogIn2_normValue_0_1) * adc_full_scale_voltage[2];
whismanoid 37:3f369235e5bc 6190 Platform_Voltage[3] = CalibratedNormValue(3, analogIn3_normValue_0_1) * adc_full_scale_voltage[3];
whismanoid 37:3f369235e5bc 6191 Platform_Voltage[4] = CalibratedNormValue(4, analogIn4_normValue_0_1) * adc_full_scale_voltage[4];
whismanoid 37:3f369235e5bc 6192 Platform_Voltage[5] = CalibratedNormValue(5, analogIn5_normValue_0_1) * adc_full_scale_voltage[5];
whismanoid 34:a1993a1ee904 6193 #else // HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 6194 Platform_Voltage[0] = analogIn0_normValue_0_1 * adc_full_scale_voltage[0];
whismanoid 37:3f369235e5bc 6195 Platform_Voltage[1] = analogIn1_normValue_0_1 * adc_full_scale_voltage[1];
whismanoid 37:3f369235e5bc 6196 Platform_Voltage[2] = analogIn2_normValue_0_1 * adc_full_scale_voltage[2];
whismanoid 37:3f369235e5bc 6197 Platform_Voltage[3] = analogIn3_normValue_0_1 * adc_full_scale_voltage[3];
whismanoid 37:3f369235e5bc 6198 Platform_Voltage[4] = analogIn4_normValue_0_1 * adc_full_scale_voltage[4];
whismanoid 37:3f369235e5bc 6199 Platform_Voltage[5] = analogIn5_normValue_0_1 * adc_full_scale_voltage[5];
whismanoid 34:a1993a1ee904 6200 #endif // HAS_Platform_AIN_Calibration
whismanoid 37:3f369235e5bc 6201 #endif // LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 5:aaf8b5f5fda1 6202 #endif // defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 5:aaf8b5f5fda1 6203
whismanoid 5:aaf8b5f5fda1 6204 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6205 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 6206 const uint32_t part_id_expect = 0x000F02;
whismanoid 5:aaf8b5f5fda1 6207 uint32_t part_id_readback;
whismanoid 5:aaf8b5f5fda1 6208 g_MAX11410_device.RegRead(MAX11410::CMD_r001_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xddd_PART_ID, &part_id_readback);
whismanoid 5:aaf8b5f5fda1 6209 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6210 } // void Datalogger_AcquireRow()
whismanoid 5:aaf8b5f5fda1 6211
whismanoid 17:9397ea3ea7e9 6212 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 6213 //--------------------------------------------------
whismanoid 17:9397ea3ea7e9 6214 // TODO: Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 6215 void Datalogger_RunActionTable()
whismanoid 17:9397ea3ea7e9 6216 {
whismanoid 17:9397ea3ea7e9 6217 if (Datalogger_action_table_enabled == false) {
whismanoid 17:9397ea3ea7e9 6218 return;
whismanoid 17:9397ea3ea7e9 6219 }
whismanoid 17:9397ea3ea7e9 6220 // TODO: verbose Datalogger_RunActionTable() emit a csv column ,"Action"
whismanoid 17:9397ea3ea7e9 6221 // TODO: assert Datalogger_action_table_row_count < ACTION_TABLE_ROW_MAX
whismanoid 17:9397ea3ea7e9 6222 // for Datalogger_action_table[0..Datalogger_action_table_row_count]
whismanoid 17:9397ea3ea7e9 6223 for (int i = 0; i < Datalogger_action_table_row_count; i++)
whismanoid 17:9397ea3ea7e9 6224 {
whismanoid 17:9397ea3ea7e9 6225 // skip if Datalogger_action_table[i].action == action_noop
whismanoid 17:9397ea3ea7e9 6226 if (Datalogger_action_table[i].action == action_noop) {
whismanoid 17:9397ea3ea7e9 6227 continue;
whismanoid 17:9397ea3ea7e9 6228 }
whismanoid 17:9397ea3ea7e9 6229 // TODO: test Datalogger_action_table[i].condition "if="
whismanoid 17:9397ea3ea7e9 6230 // TODO: Could the .condition field also distinguish Platform ADC from SPI ADC?
whismanoid 17:9397ea3ea7e9 6231 // That way we keep both sets of ADC channels in separate lists
whismanoid 17:9397ea3ea7e9 6232 // if=0 -- always
whismanoid 17:9397ea3ea7e9 6233 // if=1,2,3,4,5,6 -- Platform_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 6234 // if=7,8,9,10,11,12 -- SPI_AIN_Voltage[ch] > < == >= <= != threshold
whismanoid 17:9397ea3ea7e9 6235 // also, are we comparing code or voltage?
whismanoid 17:9397ea3ea7e9 6236 // TODO: selected Datalogger_action_table[i].condition_channel
whismanoid 17:9397ea3ea7e9 6237 // Datalogger could have both platform ADC and external SPI ADC channels
whismanoid 17:9397ea3ea7e9 6238 // if SPI_ADC_DeviceName
whismanoid 17:9397ea3ea7e9 6239 // NUM_DUT_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 6240 // SPI_AIN_Enable_ch[]
whismanoid 17:9397ea3ea7e9 6241 // SPI_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 6242 // SPI_AIN_Voltage[]
whismanoid 17:9397ea3ea7e9 6243 // if LOG_PLATFORM_AIN
whismanoid 17:9397ea3ea7e9 6244 // NUM_PLATFORM_ANALOG_IN_CHANNELS
whismanoid 17:9397ea3ea7e9 6245 // analogInPin_fullScaleVoltage[]
whismanoid 17:9397ea3ea7e9 6246 // Platform_Enable_ch[]
whismanoid 17:9397ea3ea7e9 6247 // Platform_AIN_customChannelHeader_ch[]
whismanoid 17:9397ea3ea7e9 6248 // Platform_Voltage[]
whismanoid 17:9397ea3ea7e9 6249 // TODO: selected Datalogger_action_table[i].condition_threshold
whismanoid 17:9397ea3ea7e9 6250 switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 6251 {
whismanoid 17:9397ea3ea7e9 6252 case condition_always:
whismanoid 17:9397ea3ea7e9 6253 //~ cmdLine.serial().printf(" always");
whismanoid 17:9397ea3ea7e9 6254 break;
whismanoid 17:9397ea3ea7e9 6255 case condition_if_An_gt_threshold:
whismanoid 17:9397ea3ea7e9 6256 //~ cmdLine.serial().printf(" if A%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6257 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6258 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6259 continue;
whismanoid 17:9397ea3ea7e9 6260 }
whismanoid 17:9397ea3ea7e9 6261 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6262 break;
whismanoid 17:9397ea3ea7e9 6263 case condition_if_An_lt_threshold:
whismanoid 17:9397ea3ea7e9 6264 //~ cmdLine.serial().printf(" if A%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6265 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6266 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6267 continue;
whismanoid 17:9397ea3ea7e9 6268 }
whismanoid 17:9397ea3ea7e9 6269 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6270 break;
whismanoid 17:9397ea3ea7e9 6271 case condition_if_An_eq_threshold:
whismanoid 17:9397ea3ea7e9 6272 //~ cmdLine.serial().printf(" if A%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6273 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6274 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6275 continue;
whismanoid 17:9397ea3ea7e9 6276 }
whismanoid 17:9397ea3ea7e9 6277 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6278 break;
whismanoid 17:9397ea3ea7e9 6279 case condition_if_An_ge_threshold:
whismanoid 17:9397ea3ea7e9 6280 //~ cmdLine.serial().printf(" if A%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6281 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
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 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6286 break;
whismanoid 17:9397ea3ea7e9 6287 case condition_if_An_le_threshold:
whismanoid 17:9397ea3ea7e9 6288 //~ cmdLine.serial().printf(" if A%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6289 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6290 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6291 continue;
whismanoid 17:9397ea3ea7e9 6292 }
whismanoid 17:9397ea3ea7e9 6293 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6294 break;
whismanoid 17:9397ea3ea7e9 6295 case condition_if_An_ne_threshold:
whismanoid 17:9397ea3ea7e9 6296 //~ cmdLine.serial().printf(" if A%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6297 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 17:9397ea3ea7e9 6298 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 17:9397ea3ea7e9 6299 if (!(Platform_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6300 continue;
whismanoid 17:9397ea3ea7e9 6301 }
whismanoid 17:9397ea3ea7e9 6302 break;
whismanoid 17:9397ea3ea7e9 6303 case condition_if_AINn_gt_threshold:
whismanoid 17:9397ea3ea7e9 6304 //~ cmdLine.serial().printf(" if AIN%d > %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6305 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6306 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] > Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6307 continue;
whismanoid 17:9397ea3ea7e9 6308 }
whismanoid 17:9397ea3ea7e9 6309 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6310 break;
whismanoid 17:9397ea3ea7e9 6311 case condition_if_AINn_lt_threshold:
whismanoid 17:9397ea3ea7e9 6312 //~ cmdLine.serial().printf(" if AIN%d < %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6313 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6314 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] < Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6315 continue;
whismanoid 17:9397ea3ea7e9 6316 }
whismanoid 17:9397ea3ea7e9 6317 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6318 break;
whismanoid 17:9397ea3ea7e9 6319 case condition_if_AINn_eq_threshold:
whismanoid 17:9397ea3ea7e9 6320 //~ cmdLine.serial().printf(" if AIN%d == %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6321 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6322 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] == Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6323 continue;
whismanoid 17:9397ea3ea7e9 6324 }
whismanoid 17:9397ea3ea7e9 6325 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6326 break;
whismanoid 17:9397ea3ea7e9 6327 case condition_if_AINn_ge_threshold:
whismanoid 17:9397ea3ea7e9 6328 //~ cmdLine.serial().printf(" if AIN%d >= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6329 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6330 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] >= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6331 continue;
whismanoid 17:9397ea3ea7e9 6332 }
whismanoid 17:9397ea3ea7e9 6333 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6334 break;
whismanoid 17:9397ea3ea7e9 6335 case condition_if_AINn_le_threshold:
whismanoid 17:9397ea3ea7e9 6336 //~ cmdLine.serial().printf(" if AIN%d <= %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6337 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6338 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] <= Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6339 continue;
whismanoid 17:9397ea3ea7e9 6340 }
whismanoid 17:9397ea3ea7e9 6341 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6342 break;
whismanoid 17:9397ea3ea7e9 6343 case condition_if_AINn_ne_threshold:
whismanoid 17:9397ea3ea7e9 6344 //~ cmdLine.serial().printf(" if AIN%d != %f", Datalogger_action_table[i].condition_channel, Datalogger_action_table[i].condition_threshold);
whismanoid 17:9397ea3ea7e9 6345 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6346 if (!(SPI_AIN_Voltage[Datalogger_action_table[i].condition_channel] != Datalogger_action_table[i].condition_threshold)) {
whismanoid 17:9397ea3ea7e9 6347 continue;
whismanoid 17:9397ea3ea7e9 6348 }
whismanoid 17:9397ea3ea7e9 6349 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 17:9397ea3ea7e9 6350 break;
whismanoid 17:9397ea3ea7e9 6351 } // switch(Datalogger_action_table[i].condition)
whismanoid 17:9397ea3ea7e9 6352 // selected Datalogger_action_table[i].digitalOutPin
whismanoid 17:9397ea3ea7e9 6353 // perform selected Datalogger_action_table[i].action
whismanoid 17:9397ea3ea7e9 6354 switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 6355 {
whismanoid 17:9397ea3ea7e9 6356 case action_noop:
whismanoid 17:9397ea3ea7e9 6357 //~ cmdLine.serial().printf("No_Operation");
whismanoid 17:9397ea3ea7e9 6358 break;
whismanoid 17:9397ea3ea7e9 6359 case action_digitalOutLow:
whismanoid 17:9397ea3ea7e9 6360 {
whismanoid 17:9397ea3ea7e9 6361 //~ cmdLine.serial().printf("digitalOutLow");
whismanoid 17:9397ea3ea7e9 6362 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 6363 // perform action digitalOutLow
whismanoid 17:9397ea3ea7e9 6364 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 6365 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 6366 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6367 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6368 #else
whismanoid 17:9397ea3ea7e9 6369 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 6370 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 6371 digitalInOutPin.write(0);
whismanoid 17:9397ea3ea7e9 6372 #endif
whismanoid 17:9397ea3ea7e9 6373 }
whismanoid 17:9397ea3ea7e9 6374 break;
whismanoid 17:9397ea3ea7e9 6375 case action_digitalOutHigh:
whismanoid 17:9397ea3ea7e9 6376 {
whismanoid 17:9397ea3ea7e9 6377 //~ cmdLine.serial().printf("digitalOutHigh");
whismanoid 17:9397ea3ea7e9 6378 //~ cmdLine.serial().printf(" D%d", Datalogger_action_table[i].digitalOutPin);
whismanoid 17:9397ea3ea7e9 6379 // perform action digitalOutHigh
whismanoid 17:9397ea3ea7e9 6380 int pinIndex = Datalogger_action_table[i].digitalOutPin;
whismanoid 17:9397ea3ea7e9 6381 #if ARDUINO_STYLE
whismanoid 17:9397ea3ea7e9 6382 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6383 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 17:9397ea3ea7e9 6384 #else
whismanoid 17:9397ea3ea7e9 6385 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 17:9397ea3ea7e9 6386 digitalInOutPin.output();
whismanoid 17:9397ea3ea7e9 6387 digitalInOutPin.write(1);
whismanoid 17:9397ea3ea7e9 6388 #endif
whismanoid 17:9397ea3ea7e9 6389 }
whismanoid 17:9397ea3ea7e9 6390 break;
whismanoid 29:6a9edb6e973b 6391 case action_button: // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 6392 {
whismanoid 30:07197a430869 6393 // don't allow onButton1FallingEdge() command processing to halt the datalog
whismanoid 30:07197a430869 6394 Datalogger_Trigger_enum_t saved_Datalogger_Trigger = Datalogger_Trigger;
whismanoid 29:6a9edb6e973b 6395 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6396 switch (Datalogger_action_table[i].digitalOutPin) // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 6397 {
whismanoid 29:6a9edb6e973b 6398 case 1:
whismanoid 29:6a9edb6e973b 6399 onButton1FallingEdge();
whismanoid 29:6a9edb6e973b 6400 break;
whismanoid 29:6a9edb6e973b 6401 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6402 case 2:
whismanoid 29:6a9edb6e973b 6403 onButton2FallingEdge();
whismanoid 29:6a9edb6e973b 6404 break;
whismanoid 29:6a9edb6e973b 6405 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6406 #if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6407 case 3:
whismanoid 29:6a9edb6e973b 6408 onButton3FallingEdge();
whismanoid 29:6a9edb6e973b 6409 break;
whismanoid 29:6a9edb6e973b 6410 #endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6411 #if HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6412 case 4:
whismanoid 29:6a9edb6e973b 6413 onButton4FallingEdge();
whismanoid 29:6a9edb6e973b 6414 break;
whismanoid 29:6a9edb6e973b 6415 #endif // HAS_BUTTON4_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6416 #if HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6417 case 5:
whismanoid 29:6a9edb6e973b 6418 onButton5FallingEdge();
whismanoid 29:6a9edb6e973b 6419 break;
whismanoid 29:6a9edb6e973b 6420 #endif // HAS_BUTTON5_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6421 #if HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6422 case 6:
whismanoid 29:6a9edb6e973b 6423 onButton6FallingEdge();
whismanoid 29:6a9edb6e973b 6424 break;
whismanoid 29:6a9edb6e973b 6425 #endif // HAS_BUTTON6_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6426 #if HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6427 case 7:
whismanoid 29:6a9edb6e973b 6428 onButton7FallingEdge();
whismanoid 29:6a9edb6e973b 6429 break;
whismanoid 29:6a9edb6e973b 6430 #endif // HAS_BUTTON7_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6431 #if HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6432 case 8:
whismanoid 29:6a9edb6e973b 6433 onButton8FallingEdge();
whismanoid 29:6a9edb6e973b 6434 break;
whismanoid 29:6a9edb6e973b 6435 #endif // HAS_BUTTON8_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6436 #if HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6437 case 9:
whismanoid 29:6a9edb6e973b 6438 onButton9FallingEdge();
whismanoid 29:6a9edb6e973b 6439 break;
whismanoid 29:6a9edb6e973b 6440 #endif // HAS_BUTTON9_DEMO_INTERRUPT
whismanoid 29:6a9edb6e973b 6441 } // switch (Datalogger_action_table[i].digitalOutPin) // pin = button index 1, 2, 3
whismanoid 29:6a9edb6e973b 6442 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 30:07197a430869 6443 // don't allow onButton1FallingEdge() command processing to halt the datalog
whismanoid 30:07197a430869 6444 Datalogger_Trigger = saved_Datalogger_Trigger;
whismanoid 29:6a9edb6e973b 6445 } // case action_button
whismanoid 29:6a9edb6e973b 6446 break;
whismanoid 17:9397ea3ea7e9 6447 case action_trigger_Halt:
whismanoid 17:9397ea3ea7e9 6448 //~ cmdLine.serial().printf("trigger_Halt");
whismanoid 17:9397ea3ea7e9 6449 // perform action trigger_Halt
whismanoid 17:9397ea3ea7e9 6450 Datalogger_Trigger = trigger_Halt;
whismanoid 17:9397ea3ea7e9 6451 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6452 break;
whismanoid 17:9397ea3ea7e9 6453 case action_trigger_FreeRun:
whismanoid 17:9397ea3ea7e9 6454 //~ cmdLine.serial().printf("trigger_FreeRun");
whismanoid 17:9397ea3ea7e9 6455 // perform action trigger_FreeRun
whismanoid 17:9397ea3ea7e9 6456 Datalogger_Trigger = trigger_FreeRun;
whismanoid 17:9397ea3ea7e9 6457 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6458 break;
whismanoid 17:9397ea3ea7e9 6459 case action_trigger_Timer:
whismanoid 17:9397ea3ea7e9 6460 //~ cmdLine.serial().printf("trigger_Timer");
whismanoid 17:9397ea3ea7e9 6461 //~ // print configuration for trigger_Timer
whismanoid 17:9397ea3ea7e9 6462 //~ cmdLine.serial().printf("(%d x %dmsec)", g_timer_interval_count, g_timer_interval_msec);
whismanoid 17:9397ea3ea7e9 6463 // perform action trigger_Timer
whismanoid 17:9397ea3ea7e9 6464 Datalogger_Trigger = trigger_Timer;
whismanoid 17:9397ea3ea7e9 6465 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6466 break;
whismanoid 17:9397ea3ea7e9 6467 case action_trigger_PlatformDigitalInput:
whismanoid 17:9397ea3ea7e9 6468 //~ cmdLine.serial().printf("trigger_PlatformDigitalInput");
whismanoid 17:9397ea3ea7e9 6469 //~ // TODO: print configuration for trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 6470 //~ cmdLine.serial().printf("(%d)", g_config_PlatformDigitalInput);
whismanoid 17:9397ea3ea7e9 6471 // TODO: perform action action_trigger_PlatformDigitalInput
whismanoid 17:9397ea3ea7e9 6472 Datalogger_Trigger = trigger_PlatformDigitalInput;
whismanoid 17:9397ea3ea7e9 6473 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6474 break;
whismanoid 17:9397ea3ea7e9 6475 case action_trigger_SPIDeviceRegRead:
whismanoid 17:9397ea3ea7e9 6476 //~ cmdLine.serial().printf("trigger_SPIDeviceRegRead");
whismanoid 17:9397ea3ea7e9 6477 //~ // TODO: print configuration for trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 6478 //~ cmdLine.serial().printf("(%d)", g_config_SPIDeviceRegRead);
whismanoid 17:9397ea3ea7e9 6479 // TODO: perform action action_trigger_SPIDeviceRegRead
whismanoid 17:9397ea3ea7e9 6480 Datalogger_Trigger = trigger_SPIDeviceRegRead;
whismanoid 17:9397ea3ea7e9 6481 //~ Datalogger_Need_PrintHeader = true;
whismanoid 17:9397ea3ea7e9 6482 break;
whismanoid 17:9397ea3ea7e9 6483 } // switch(Datalogger_action_table[i].action)
whismanoid 17:9397ea3ea7e9 6484 // consider next row of action table
whismanoid 17:9397ea3ea7e9 6485 } // for ...Datalogger_action_table_row_count
whismanoid 17:9397ea3ea7e9 6486 }
whismanoid 17:9397ea3ea7e9 6487 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 6488
whismanoid 5:aaf8b5f5fda1 6489 //--------------------------------------------------
whismanoid 8:dffee7509bfb 6490 void Datalogger_PrintRow(CmdLine& cmdLine)
whismanoid 5:aaf8b5f5fda1 6491 {
whismanoid 5:aaf8b5f5fda1 6492 int field_index = 0;
whismanoid 5:aaf8b5f5fda1 6493 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 6494 for (int channel_index = 0; channel_index < NUM_DUT_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 10:04022a61b527 6495 if (SPI_AIN_Enable_ch[channel_index] == SPI_AIN_Disable) {
whismanoid 5:aaf8b5f5fda1 6496 continue;
whismanoid 5:aaf8b5f5fda1 6497 }
whismanoid 5:aaf8b5f5fda1 6498 // comma between fields
whismanoid 5:aaf8b5f5fda1 6499 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 6500 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 6501 }
whismanoid 10:04022a61b527 6502 field_index++;
whismanoid 10:04022a61b527 6503 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 10:04022a61b527 6504 cmdLine.serial().printf("%d", g_MAX11410_device.AINcode[channel_index]);
whismanoid 10:04022a61b527 6505 }
whismanoid 10:04022a61b527 6506 if (SPI_AIN_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 10:04022a61b527 6507 // TODO: report Voltage instead of LSB
whismanoid 10:04022a61b527 6508 // Serial.print(SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 6509 static char strOutLineBuffer[16];
whismanoid 10:04022a61b527 6510 cmdLine.serial().printf("%6.6f", SPI_AIN_Voltage[channel_index]);
whismanoid 10:04022a61b527 6511 }
whismanoid 5:aaf8b5f5fda1 6512 }
whismanoid 5:aaf8b5f5fda1 6513 #if VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6514 // PART_ID field: Device ID Validation
whismanoid 5:aaf8b5f5fda1 6515 if (part_id_readback != part_id_expect) {
whismanoid 5:aaf8b5f5fda1 6516 cmdLine.serial().printf(",\"FAIL\"");
whismanoid 9:45f98573eb6d 6517 need_reinit = true;
whismanoid 5:aaf8b5f5fda1 6518 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6519 g_MAX11410_device.Init();
whismanoid 5:aaf8b5f5fda1 6520 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 5:aaf8b5f5fda1 6521 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 5:aaf8b5f5fda1 6522 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 5:aaf8b5f5fda1 6523 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6524 }
whismanoid 5:aaf8b5f5fda1 6525 else {
whismanoid 5:aaf8b5f5fda1 6526 cmdLine.serial().printf(",\"OK\"");
whismanoid 5:aaf8b5f5fda1 6527 }
whismanoid 5:aaf8b5f5fda1 6528 #endif // VERIFY_PART_ID_IN_LOOP
whismanoid 5:aaf8b5f5fda1 6529 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 5:aaf8b5f5fda1 6530 #if defined(LOG_PLATFORM_AIN) // Datalog Arduino platform analog inputs
whismanoid 9:45f98573eb6d 6531 for (int channel_index = 0; channel_index < NUM_PLATFORM_ANALOG_IN_CHANNELS; channel_index++) {
whismanoid 9:45f98573eb6d 6532 if (Platform_Enable_ch[channel_index] == Platform_AIN_Disable) {
whismanoid 9:45f98573eb6d 6533 continue;
whismanoid 9:45f98573eb6d 6534 }
whismanoid 5:aaf8b5f5fda1 6535 // comma between fields
whismanoid 5:aaf8b5f5fda1 6536 if (field_index > 0) {
whismanoid 5:aaf8b5f5fda1 6537 cmdLine.serial().printf(",");
whismanoid 5:aaf8b5f5fda1 6538 }
whismanoid 9:45f98573eb6d 6539 field_index++;
whismanoid 9:45f98573eb6d 6540 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_LSB) {
whismanoid 5:aaf8b5f5fda1 6541 #if LOG_PLATFORM_ANALOG_IN_LSB
whismanoid 9:45f98573eb6d 6542 cmdLine.serial().printf("%u", Platform_LSB[channel_index]);
whismanoid 9:45f98573eb6d 6543 #endif
whismanoid 9:45f98573eb6d 6544 }
whismanoid 9:45f98573eb6d 6545 if (Platform_Enable_ch[channel_index] == Platform_AIN_Enable_Volt) {
whismanoid 9:45f98573eb6d 6546 #if LOG_PLATFORM_ANALOG_IN_VOLTS
whismanoid 11:2b8adc78618a 6547 // Datalog Volts omit V suffix from numbers #275
whismanoid 11:2b8adc78618a 6548 // because Excel graphs can't handle numbers that have a suffix.
whismanoid 11:2b8adc78618a 6549 cmdLine.serial().printf("%6.6f", Platform_Voltage[channel_index]);
whismanoid 9:45f98573eb6d 6550 #endif
whismanoid 9:45f98573eb6d 6551 }
whismanoid 5:aaf8b5f5fda1 6552 }
whismanoid 5:aaf8b5f5fda1 6553 #endif // defined(LOG_PLATFORM_AIN)
whismanoid 9:45f98573eb6d 6554 if (need_reinit) {
whismanoid 9:45f98573eb6d 6555 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 6556 if (g_MAX11410_device.Init() == 0) {
whismanoid 9:45f98573eb6d 6557 //~ cmdLine.serial().printf(",\"Init() failed\"");
whismanoid 9:45f98573eb6d 6558 } else {
whismanoid 9:45f98573eb6d 6559 //~ cmdLine.serial().printf(",\"Init() success\"");
whismanoid 9:45f98573eb6d 6560 #if USE_CUSTOM_REG_INIT // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 6561 // in Datalogger_PrintRow(), when part_id test fails,
whismanoid 9:45f98573eb6d 6562 // apply list of custom register writes after re-init
whismanoid 9:45f98573eb6d 6563 // custom_reg_init_addr[], custom_reg_init_data[], custom_reg_init_count
whismanoid 9:45f98573eb6d 6564 for (unsigned int index = 0; index < custom_reg_init_count; index++) {
whismanoid 9:45f98573eb6d 6565 uint8_t regAddress = custom_reg_init_addr[index];
whismanoid 9:45f98573eb6d 6566 uint32_t regData = custom_reg_init_data[index];
whismanoid 9:45f98573eb6d 6567 cmdLine.serial().printf("*%s=0x%06.6x", g_MAX11410_device.RegName(regAddress), regData);
whismanoid 9:45f98573eb6d 6568 g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData);
whismanoid 9:45f98573eb6d 6569 }
whismanoid 9:45f98573eb6d 6570 #endif // USE_CUSTOM_REG_INIT
whismanoid 9:45f98573eb6d 6571 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 9:45f98573eb6d 6572 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 9:45f98573eb6d 6573 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 9:45f98573eb6d 6574 need_reinit = false;
whismanoid 9:45f98573eb6d 6575 }
whismanoid 9:45f98573eb6d 6576 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 6577 need_reinit = false;
whismanoid 9:45f98573eb6d 6578 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 9:45f98573eb6d 6579 }
whismanoid 30:07197a430869 6580 #if USE_DATALOGGER_REMARK_FIELD
whismanoid 30:07197a430869 6581 // Datalogger_PrintRow() print gstrRemarkText field from recent #remark -- in void Datalogger_PrintRow()
whismanoid 30:07197a430869 6582 cmdLine.serial().printf(",\"%s\"", gstrRemarkText);
whismanoid 30:07197a430869 6583 #endif // USE_DATALOGGER_REMARK_FIELD
whismanoid 5:aaf8b5f5fda1 6584 cmdLine.serial().printf("\r\n");
whismanoid 9:45f98573eb6d 6585 if (need_reinit) {
whismanoid 9:45f98573eb6d 6586 //~ delay(500); // platform_delay_ms 500ms timing delay function
whismanoid 9:45f98573eb6d 6587 }
whismanoid 5:aaf8b5f5fda1 6588 } // void Datalogger_PrintRow()
whismanoid 5:aaf8b5f5fda1 6589
whismanoid 0:cb44e2e9ec4c 6590 // example code main function
whismanoid 0:cb44e2e9ec4c 6591 int main()
whismanoid 0:cb44e2e9ec4c 6592 {
whismanoid 0:cb44e2e9ec4c 6593 // setup: put your setup code here, to run once
whismanoid 4:d9b05924ad4c 6594 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 6595 // Configure serial ports
whismanoid 4:d9b05924ad4c 6596 cmdLine.clear();
whismanoid 4:d9b05924ad4c 6597 //~ cmdLine.serial().printf("\r\n cmdLine.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 6598 cmdLine.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 6599 //~ cmdLine.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 4:d9b05924ad4c 6600 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 4:d9b05924ad4c 6601 //~ cmdLine.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 6602 //~ cmdLine.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 6603 //~ cmdLine.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 6604 # if HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 6605 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6606 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 6607 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 6608 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 6609 # if HAS_AUX_SERIAL
whismanoid 10:04022a61b527 6610 # else
whismanoid 10:04022a61b527 6611 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 6612 DAPLINKserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 6613 # endif
whismanoid 10:04022a61b527 6614 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 6615 cmdLine_DAPLINKserial.clear();
whismanoid 4:d9b05924ad4c 6616 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 4:d9b05924ad4c 6617 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 4:d9b05924ad4c 6618 //~ cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 4:d9b05924ad4c 6619 //~ cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 4:d9b05924ad4c 6620 //~ cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 4:d9b05924ad4c 6621 # endif
whismanoid 6:f6d16658342b 6622 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6623 // TX/RX auxiliary UART port cmdLine_AUXserial AUXserial
whismanoid 10:04022a61b527 6624 #if 0 // HARD CRASH -- USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6625 // Command forwarding to AUX serial TX/RX cmdLine_AUXserial #257 -- init aux baud rate g_auxSerialCom_baud
whismanoid 10:04022a61b527 6626 // TODO: if g_auxSerialCom_baud is other than the default 9600 baud,
whismanoid 10:04022a61b527 6627 // then the auxiliary serial port baud rate should be updated.
whismanoid 10:04022a61b527 6628 AUXserial.baud(g_auxSerialCom_baud);
whismanoid 10:04022a61b527 6629 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 6:f6d16658342b 6630 cmdLine_AUXserial.clear();
whismanoid 6:f6d16658342b 6631 //~ cmdLine_AUXserial.serial().printf("\r\n cmdLine_AUXserial.serial().printf test\r\n");
whismanoid 6:f6d16658342b 6632 cmdLine_AUXserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 6:f6d16658342b 6633 //~ cmdLine_AUXserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 6:f6d16658342b 6634 //~ cmdLine_AUXserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 6:f6d16658342b 6635 //~ cmdLine_AUXserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 6:f6d16658342b 6636 # endif // HAS_AUX_SERIAL
whismanoid 4:d9b05924ad4c 6637 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 0:cb44e2e9ec4c 6638
whismanoid 0:cb44e2e9ec4c 6639 // example code: serial port banner message
whismanoid 0:cb44e2e9ec4c 6640 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 6641 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6642 cmdLine.serial().printf("\r\nDataLogger_MAX11410\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 6643 #else // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6644 cmdLine.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 6645 # if HAS_DAPLINK_SERIAL
whismanoid 3:9055e17e181a 6646 cmdLine_DAPLINKserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 3:9055e17e181a 6647 # endif // HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 6648 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6649 cmdLine_AUXserial.serial().printf("\r\nInternal_DataLogger\r\n"); // instead of Hello_MAX11410
whismanoid 6:f6d16658342b 6650 # endif // HAS_AUX_SERIAL
whismanoid 3:9055e17e181a 6651 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 10:04022a61b527 6652
whismanoid 1:747f1602abfc 6653 // CODE GENERATOR: get spi properties from device
whismanoid 3:9055e17e181a 6654 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6655 if (g_SPI_SCLK_Hz > g_MAX11410_device.get_spi_frequency())
whismanoid 3:9055e17e181a 6656 { // Device limits SPI SCLK frequency
whismanoid 3:9055e17e181a 6657 g_SPI_SCLK_Hz = g_MAX11410_device.get_spi_frequency();
whismanoid 3:9055e17e181a 6658 cmdLine.serial().printf("\r\nMAX11410 limits SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 6659
whismanoid 3:9055e17e181a 6660 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 6661 }
whismanoid 3:9055e17e181a 6662 if (g_MAX11410_device.get_spi_frequency() > g_SPI_SCLK_Hz)
whismanoid 3:9055e17e181a 6663 { // Platform limits SPI SCLK frequency
whismanoid 3:9055e17e181a 6664 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 6665 cmdLine.serial().printf("\r\nPlatform limits MAX11410 SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 3:9055e17e181a 6666
whismanoid 3:9055e17e181a 6667 g_MAX11410_device.Init();
whismanoid 3:9055e17e181a 6668 }
whismanoid 0:cb44e2e9ec4c 6669 // g_SPI_dataMode = g_MAX11410_device.get_spi_dataMode();
whismanoid 3:9055e17e181a 6670 while (g_MAX11410_device.Init() == 0)
whismanoid 3:9055e17e181a 6671 {
whismanoid 3:9055e17e181a 6672 wait(3); // 3000ms timing delay function, platform-specific
whismanoid 3:9055e17e181a 6673 cmdLine.serial().printf("\r\nMAX11410 Init failed; retry...\r\n");
whismanoid 3:9055e17e181a 6674
whismanoid 3:9055e17e181a 6675 }
whismanoid 0:cb44e2e9ec4c 6676
whismanoid 0:cb44e2e9ec4c 6677 // ---------- CUSTOMIZED from MAX11410_Hello after g_MAX11410_device.Init() ----------
whismanoid 3:9055e17e181a 6678 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6679 g_MAX11410_device.v_filter = SPI_AIN_Cfg_v_filter_ch[0];
whismanoid 3:9055e17e181a 6680 g_MAX11410_device.v_pga = SPI_AIN_Cfg_v_pga_ch[0];
whismanoid 3:9055e17e181a 6681 g_MAX11410_device.v_ctrl = SPI_AIN_Cfg_v_ctrl_ch[0];
whismanoid 3:9055e17e181a 6682 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6683 // ---------- CUSTOMIZED from MAX11410_Hello ----------
whismanoid 3:9055e17e181a 6684 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6685 // CODE GENERATOR: example code: has no member function REF
whismanoid 0:cb44e2e9ec4c 6686 // CODE GENERATOR: example code for ADC: repeat-forever convert and print conversion result, one record per line
whismanoid 0:cb44e2e9ec4c 6687 // CODE GENERATOR: ResolutionBits = 24
whismanoid 0:cb44e2e9ec4c 6688 // CODE GENERATOR: FScode = 0xffffff
whismanoid 0:cb44e2e9ec4c 6689 // CODE GENERATOR: NumChannels = 10
whismanoid 0:cb44e2e9ec4c 6690 // CODE GENERATOR: banner before DataLogHelloCppCodeList while(1)
whismanoid 3:9055e17e181a 6691 #if defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 3:9055e17e181a 6692 cmdLine.serial().printf("v_filter = 0x%2.2x\r\n", g_MAX11410_device.v_filter);
whismanoid 0:cb44e2e9ec4c 6693
whismanoid 3:9055e17e181a 6694 cmdLine.serial().printf("v_pga = 0x%2.2x\r\n", g_MAX11410_device.v_pga);
whismanoid 0:cb44e2e9ec4c 6695
whismanoid 3:9055e17e181a 6696 cmdLine.serial().printf("v_ctrl = 0x%2.2x\r\n", g_MAX11410_device.v_ctrl);
whismanoid 3:9055e17e181a 6697
whismanoid 3:9055e17e181a 6698 #endif // defined(SPI_ADC_DeviceName) // SPI connected ADC
whismanoid 0:cb44e2e9ec4c 6699
whismanoid 3:9055e17e181a 6700 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 6701 Datalogger_Need_PrintHeader = true;
whismanoid 10:04022a61b527 6702
whismanoid 12:2dfc1f2009e0 6703 #if USE_LEDS
whismanoid 12:2dfc1f2009e0 6704 #if defined(TARGET_MAX32630)
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 19:5ff09c8e9daf 6721 #elif defined(TARGET_MAX32625MBED) || defined(TARGET_MAX32625PICO) || defined(TARGET_MAX40108DEMOP2U9)
whismanoid 12:2dfc1f2009e0 6722 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 12:2dfc1f2009e0 6723 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6724 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 12:2dfc1f2009e0 6725 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6726 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 12:2dfc1f2009e0 6727 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6728 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 12:2dfc1f2009e0 6729 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6730 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 12:2dfc1f2009e0 6731 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6732 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 12:2dfc1f2009e0 6733 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6734 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 12:2dfc1f2009e0 6735 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6736 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 12:2dfc1f2009e0 6737 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 12:2dfc1f2009e0 6738 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 12:2dfc1f2009e0 6739 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 6740 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6741 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6742 led4 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6743 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6744 //led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 6745 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 6746 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6747 led1 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6748 //led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 6749 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 6750 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6751 led2 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6752 //led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 6753 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 6754 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 12:2dfc1f2009e0 6755 led3 = LED_OFF;
whismanoid 12:2dfc1f2009e0 6756 led4 = LED_ON;
whismanoid 12:2dfc1f2009e0 6757 //
whismanoid 12:2dfc1f2009e0 6758 #endif // target definition
whismanoid 12:2dfc1f2009e0 6759 #endif
whismanoid 12:2dfc1f2009e0 6760
whismanoid 12:2dfc1f2009e0 6761 if (led1.is_connected()) {
whismanoid 12:2dfc1f2009e0 6762 led1 = LED_ON;
whismanoid 12:2dfc1f2009e0 6763 }
whismanoid 12:2dfc1f2009e0 6764 if (led2.is_connected()) {
whismanoid 12:2dfc1f2009e0 6765 led2 = LED_ON;
whismanoid 12:2dfc1f2009e0 6766 }
whismanoid 12:2dfc1f2009e0 6767 if (led3.is_connected()) {
whismanoid 12:2dfc1f2009e0 6768 led3 = LED_ON;
whismanoid 12:2dfc1f2009e0 6769 }
whismanoid 12:2dfc1f2009e0 6770
whismanoid 4:d9b05924ad4c 6771 while(1) { // this code repeats forever
whismanoid 4:d9b05924ad4c 6772 // this code repeats forever
whismanoid 4:d9b05924ad4c 6773
whismanoid 21:ac062a97a71d 6774 #if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 21:ac062a97a71d 6775 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 21:ac062a97a71d 6776 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 21:ac062a97a71d 6777 # if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 6778 static int button1_value_prev = 1;
whismanoid 21:ac062a97a71d 6779 static int button1_value_now = 1;
whismanoid 21:ac062a97a71d 6780 button1_value_prev = button1_value_now;
whismanoid 21:ac062a97a71d 6781 button1_value_now = button1.read();
whismanoid 21:ac062a97a71d 6782 if ((button1_value_prev - button1_value_now) == 1)
whismanoid 21:ac062a97a71d 6783 {
whismanoid 21:ac062a97a71d 6784 // on button1 falling edge (button1 press)
whismanoid 21:ac062a97a71d 6785 onButton1FallingEdge();
whismanoid 21:ac062a97a71d 6786 }
whismanoid 21:ac062a97a71d 6787 # endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6788 # if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6789 static int button2_value_prev = 1;
whismanoid 24:032f3683cb2a 6790 static int button2_value_now = 1;
whismanoid 24:032f3683cb2a 6791 button2_value_prev = button2_value_now;
whismanoid 24:032f3683cb2a 6792 button2_value_now = button2.read();
whismanoid 24:032f3683cb2a 6793 if ((button2_value_prev - button2_value_now) == 1)
whismanoid 24:032f3683cb2a 6794 {
whismanoid 24:032f3683cb2a 6795 // on button2 falling edge (button2 press)
whismanoid 24:032f3683cb2a 6796 onButton2FallingEdge();
whismanoid 24:032f3683cb2a 6797 }
whismanoid 24:032f3683cb2a 6798 # endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6799 # if HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 24:032f3683cb2a 6800 static int button3_value_prev = 1;
whismanoid 24:032f3683cb2a 6801 static int button3_value_now = 1;
whismanoid 24:032f3683cb2a 6802 button3_value_prev = button3_value_now;
whismanoid 24:032f3683cb2a 6803 button3_value_now = button3.read();
whismanoid 24:032f3683cb2a 6804 if ((button3_value_prev - button3_value_now) == 1)
whismanoid 24:032f3683cb2a 6805 {
whismanoid 24:032f3683cb2a 6806 // on button3 falling edge (button3 press)
whismanoid 26:13cba69d88eb 6807 onButton3FallingEdge();
whismanoid 24:032f3683cb2a 6808 }
whismanoid 24:032f3683cb2a 6809 # endif // HAS_BUTTON3_DEMO_INTERRUPT
whismanoid 21:ac062a97a71d 6810 #endif // HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 4:d9b05924ad4c 6811 #if USE_CMDLINE_MENUS // support CmdLine command menus
whismanoid 4:d9b05924ad4c 6812 // TODO support CmdLine command menus (like on Serial_Tester); help and usual boilerplate
whismanoid 10:04022a61b527 6813 #if USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6814 // Command forwarding to Auxiliary serial port;
whismanoid 10:04022a61b527 6815 // don't accept commands from Auxiliary serial port
whismanoid 10:04022a61b527 6816 #else // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 10:04022a61b527 6817 // Accept commands from Auxiliary serial port
whismanoid 6:f6d16658342b 6818 # if HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6819 if (AUXserial.readable()) {
whismanoid 6:f6d16658342b 6820 cmdLine_AUXserial.append(AUXserial.getc());
whismanoid 6:f6d16658342b 6821 }
whismanoid 6:f6d16658342b 6822 # endif // HAS_AUX_SERIAL
whismanoid 6:f6d16658342b 6823 # if HAS_DAPLINK_SERIAL
whismanoid 6:f6d16658342b 6824 if (DAPLINKserial.readable()) {
whismanoid 6:f6d16658342b 6825 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 6:f6d16658342b 6826 }
whismanoid 6:f6d16658342b 6827 # endif // HAS_DAPLINK_SERIAL
whismanoid 10:04022a61b527 6828 #endif // USE_AUX_SERIAL_CMD_FORWARDING
whismanoid 4:d9b05924ad4c 6829 if (serial.readable()) {
whismanoid 4:d9b05924ad4c 6830 int c = serial.getc(); // instead of getc() or fgetc()
whismanoid 4:d9b05924ad4c 6831 cmdLine.append(c);
whismanoid 4:d9b05924ad4c 6832 // cmdLine.onEOLcommandParser handler implements menus
whismanoid 4:d9b05924ad4c 6833 } // if (Serial.available())
whismanoid 4:d9b05924ad4c 6834 #endif // USE_CMDLINE_MENUS support CmdLine command menus
whismanoid 4:d9b05924ad4c 6835
whismanoid 4:d9b05924ad4c 6836 #if USE_DATALOGGER_TRIGGER // support Datalog trigger
whismanoid 32:80f3e5eb77d4 6837 // Datalog trigger
whismanoid 4:d9b05924ad4c 6838 if (Datalogger_Trigger == trigger_Halt) {
whismanoid 4:d9b05924ad4c 6839 // halt the datalogger; continue accepting commands
whismanoid 3:9055e17e181a 6840 continue;
whismanoid 3:9055e17e181a 6841 }
whismanoid 4:d9b05924ad4c 6842 if (Datalogger_Trigger == trigger_FreeRun) {
whismanoid 4:d9b05924ad4c 6843 // free run as fast as possible
whismanoid 3:9055e17e181a 6844 }
whismanoid 4:d9b05924ad4c 6845 if (Datalogger_Trigger == trigger_Timer) {
whismanoid 4:d9b05924ad4c 6846 // timer (configure interval)
whismanoid 32:80f3e5eb77d4 6847 // if Datalogger_Trigger == trigger_Timer sleep(g_timer_interval_msec)
whismanoid 39:4d285e961435 6848 //
whismanoid 39:4d285e961435 6849 #if USE_DATALOGGER_SLEEP // support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 6850 // TODO: USE_DATALOGGER_SLEEP -- support sleep modes in Datalogger_Trigger
whismanoid 39:4d285e961435 6851 // TODO: Sleep Mode vs Deep Sleep Mode
whismanoid 39:4d285e961435 6852 // See documentation https://os.mbed.com/docs/mbed-os/v5.15/apis/power-management-sleep.html
whismanoid 41:13a6a097502c 6853 // ThisThread::sleep_for(uint32_t millisec)
whismanoid 41:13a6a097502c 6854 // sleep_manager_can_deep_sleep() // tests whether deep_sleep is locked or not
whismanoid 41:13a6a097502c 6855 // sleep_manager_lock_deep_sleep() // begin section that prevents deep_sleep
whismanoid 41:13a6a097502c 6856 // sleep_manager_unlock_deep_sleep() // end section that prevents deep_sleep
whismanoid 39:4d285e961435 6857 switch(g_timer_sleepmode)
whismanoid 39:4d285e961435 6858 {
whismanoid 39:4d285e961435 6859 case datalogger_Sleep_LP0_Stop: // LT sleep = 0,
whismanoid 39:4d285e961435 6860 break;
whismanoid 39:4d285e961435 6861 case datalogger_Sleep_LP1_DeepSleep: // LT sleep = 1,
whismanoid 42:89607d5d4e6d 6862 //
whismanoid 42:89607d5d4e6d 6863 // mbed-os\targets\TARGET_Maxim\TARGET_MAX32625\sleep.c -- hal_deepsleep() just calls hal_sleep(), NO ACTUAL DEEP SLEEP MODE SUPPORT?
whismanoid 42:89607d5d4e6d 6864 // tried overriding hal_deepsleep() in
whismanoid 42:89607d5d4e6d 6865 // TARGET_MAX40108DEMOP2U9\sleep.c --
whismanoid 42:89607d5d4e6d 6866 // can't compile, multiple sleep.o files --
whismanoid 42:89607d5d4e6d 6867 // TARGET_MAX32625\sleep.c interference
whismanoid 42:89607d5d4e6d 6868 // Can I try using LP_EnterLP1() directly?
whismanoid 42:89607d5d4e6d 6869 // #include "lp.h"
whismanoid 42:89607d5d4e6d 6870 // #include "rtc.h"
whismanoid 42:89607d5d4e6d 6871 // LP_ConfigRTCWakeUp(unsigned int comp0_en, unsigned int comp1_en, unsigned int prescale_cmp_en, unsigned int rollover_en);
whismanoid 42:89607d5d4e6d 6872 // get current RTC time, set wakeup alarm time?
whismanoid 42:89607d5d4e6d 6873 // LP_EnterLP1(); // #include "lp.h"
whismanoid 42:89607d5d4e6d 6874 // clear RTC alarm?
whismanoid 42:89607d5d4e6d 6875 //
whismanoid 41:13a6a097502c 6876 // sleep_manager_can_deep_sleep(); // tests whether deep_sleep is locked or not
whismanoid 41:13a6a097502c 6877 // TODO: USE_DATALOGGER_SLEEP -- ThisThread::sleep_for(uint32_t millisec) instead of wait_ms(g_timer_interval_msec)
whismanoid 41:13a6a097502c 6878 // mbed_file_handle(STDIN_FILENO)->enable_input(false); // (mbed-os-5.15) platform.stdio-buffered-serial prevents deep sleep
whismanoid 41:13a6a097502c 6879 cmdLine.serial().enable_input(false); // (mbed-os-5.15) platform.stdio-buffered-serial prevents deep sleep
whismanoid 41:13a6a097502c 6880 // serial.enable_input(false); // (mbed-os-5.15) platform.stdio-buffered-serial prevents deep sleep
whismanoid 43:4c4733760d4c 6881
whismanoid 43:4c4733760d4c 6882 // configure RTC and start
whismanoid 43:4c4733760d4c 6883 // RTC_Setup();
whismanoid 43:4c4733760d4c 6884 {
whismanoid 43:4c4733760d4c 6885 rtc_cfg_t RTCconfig;
whismanoid 43:4c4733760d4c 6886 RTCconfig.compareCount[0] = 5;//5 second timer -- override with RTC_SetCompare(0,counts)
whismanoid 43:4c4733760d4c 6887 RTCconfig.compareCount[1] = 7;//7 second timer -- override with RTC_SetCompare(1,counts)
whismanoid 43:4c4733760d4c 6888 RTCconfig.prescaler = RTC_PRESCALE_DIV_2_12; //1Hz clock
whismanoid 43:4c4733760d4c 6889 RTCconfig.prescalerMask = RTC_PRESCALE_DIV_2_12;//used for prescaler compare
whismanoid 43:4c4733760d4c 6890 RTCconfig.snoozeCount = 0;
whismanoid 43:4c4733760d4c 6891 RTCconfig.snoozeMode = RTC_SNOOZE_DISABLE;
whismanoid 43:4c4733760d4c 6892 RTC_Init(&RTCconfig);
whismanoid 43:4c4733760d4c 6893 RTC_Start();
whismanoid 43:4c4733760d4c 6894
whismanoid 43:4c4733760d4c 6895 // Clear existing wake-up config
whismanoid 43:4c4733760d4c 6896 LP_ClearWakeUpConfig();
whismanoid 43:4c4733760d4c 6897
whismanoid 43:4c4733760d4c 6898 // Clear any event flags
whismanoid 43:4c4733760d4c 6899 LP_ClearWakeUpFlags();
whismanoid 43:4c4733760d4c 6900
whismanoid 43:4c4733760d4c 6901 // configure wake-up on RTC compare 1
whismanoid 43:4c4733760d4c 6902 // LP_ConfigRTCWakeUp(unsigned int comp0_en, unsigned int comp1_en, unsigned int prescale_cmp_en, unsigned int rollover_en);
whismanoid 43:4c4733760d4c 6903 LP_ConfigRTCWakeUp(0, 1, 0, 0);
whismanoid 43:4c4733760d4c 6904
whismanoid 44:84402faa8eb9 6905 // wait until UART_Busy indicates no ongoing transactions (both ports)
whismanoid 44:84402faa8eb9 6906 while (Console_PrepForSleep() != E_NO_ERROR);
whismanoid 44:84402faa8eb9 6907
whismanoid 43:4c4733760d4c 6908 // set RTC compare 1 value
whismanoid 43:4c4733760d4c 6909 // cmp = RTC_GetCount() + LP1_WakeTime;
whismanoid 43:4c4733760d4c 6910 uint32_t cmp = RTC_GetCount() + ((g_timer_interval_msec + 500.) / 1000.);
whismanoid 43:4c4733760d4c 6911 // RTC_SetCompare(uint8_t compareIndex, uint32_t counts)
whismanoid 43:4c4733760d4c 6912 RTC_SetCompare(1, cmp);
whismanoid 43:4c4733760d4c 6913
whismanoid 43:4c4733760d4c 6914 RTC_ClearFlags(MXC_F_RTC_FLAGS_COMP1);
whismanoid 43:4c4733760d4c 6915 }
whismanoid 43:4c4733760d4c 6916
whismanoid 43:4c4733760d4c 6917 //global disable interrupt
whismanoid 43:4c4733760d4c 6918 __disable_irq();
whismanoid 43:4c4733760d4c 6919
whismanoid 43:4c4733760d4c 6920 LP_EnterLP1();
whismanoid 43:4c4733760d4c 6921
whismanoid 43:4c4733760d4c 6922 //global enable interrupt
whismanoid 43:4c4733760d4c 6923 __enable_irq();
whismanoid 43:4c4733760d4c 6924
whismanoid 43:4c4733760d4c 6925 // stop waking on RTC
whismanoid 43:4c4733760d4c 6926 // LP_ConfigRTCWakeUp(unsigned int comp0_en, unsigned int comp1_en, unsigned int prescale_cmp_en, unsigned int rollover_en);
whismanoid 43:4c4733760d4c 6927 LP_ConfigRTCWakeUp(0, 0, 0, 0);
whismanoid 43:4c4733760d4c 6928
whismanoid 43:4c4733760d4c 6929 // Clear existing wake-up config
whismanoid 43:4c4733760d4c 6930 LP_ClearWakeUpConfig();
whismanoid 43:4c4733760d4c 6931
whismanoid 43:4c4733760d4c 6932 // Clear any event flags
whismanoid 43:4c4733760d4c 6933 LP_ClearWakeUpFlags();
whismanoid 43:4c4733760d4c 6934
whismanoid 43:4c4733760d4c 6935 RTC_Stop();
whismanoid 43:4c4733760d4c 6936
whismanoid 43:4c4733760d4c 6937 // Wakeup_LP1();
whismanoid 42:89607d5d4e6d 6938 // TODO: LP_EnterLP1() immediately reboots U9,
whismanoid 42:89607d5d4e6d 6939 // even though LP_EnterLP1() properly clears 'first boot' bit...
whismanoid 42:89607d5d4e6d 6940 //
whismanoid 43:4c4733760d4c 6941 // ThisThread::sleep_for(g_timer_interval_msec); // wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 41:13a6a097502c 6942 // mbed_file_handle(STDIN_FILENO)->enable_input(true); // (mbed-os-5.15)
whismanoid 41:13a6a097502c 6943 cmdLine.serial().enable_input(true); // (mbed-os-5.15)
whismanoid 41:13a6a097502c 6944 // serial.enable_input(true); // (mbed-os-5.15)
whismanoid 39:4d285e961435 6945 break;
whismanoid 39:4d285e961435 6946 case datalogger_Sleep_LP2_Sleep: // LT sleep = 2,
whismanoid 41:13a6a097502c 6947 sleep_manager_lock_deep_sleep(); // begin section that prevents deep_sleep
whismanoid 41:13a6a097502c 6948 // TODO: USE_DATALOGGER_SLEEP -- ThisThread::sleep_for(uint32_t millisec) instead of wait_ms(g_timer_interval_msec)
whismanoid 41:13a6a097502c 6949 ThisThread::sleep_for(g_timer_interval_msec); // wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 41:13a6a097502c 6950 sleep_manager_unlock_deep_sleep(); // end section that prevents deep_sleep
whismanoid 39:4d285e961435 6951 break;
whismanoid 39:4d285e961435 6952 case datalogger_Sleep_LP3_Run: // LT sleep = 3,
whismanoid 41:13a6a097502c 6953 // TODO: USE_DATALOGGER_SLEEP -- ThisThread::sleep_for(uint32_t millisec) instead of wait_ms(g_timer_interval_msec)
whismanoid 41:13a6a097502c 6954 wait_ms(g_timer_interval_msec);
whismanoid 39:4d285e961435 6955 break;
whismanoid 39:4d285e961435 6956 }
whismanoid 39:4d285e961435 6957 #else // USE_DATALOGGER_SLEEP
whismanoid 17:9397ea3ea7e9 6958 wait_ms(g_timer_interval_msec); // sleep during delay?
whismanoid 39:4d285e961435 6959 #endif // USE_DATALOGGER_SLEEP
whismanoid 39:4d285e961435 6960 //
whismanoid 17:9397ea3ea7e9 6961 if (g_timer_interval_counter > 0) {
whismanoid 17:9397ea3ea7e9 6962 g_timer_interval_counter--;
whismanoid 17:9397ea3ea7e9 6963 continue;
whismanoid 17:9397ea3ea7e9 6964 }
whismanoid 17:9397ea3ea7e9 6965 // if time interval not yet reached, continue (continue accepting commands)
whismanoid 32:80f3e5eb77d4 6966 g_timer_interval_counter = g_timer_interval_count-1;
whismanoid 3:9055e17e181a 6967 }
whismanoid 4:d9b05924ad4c 6968 if (Datalogger_Trigger == trigger_PlatformDigitalInput) {
whismanoid 4:d9b05924ad4c 6969 // platform digital input (configure digital input pin reference)
whismanoid 17:9397ea3ea7e9 6970 // TODO: read selected input pin, test value
whismanoid 17:9397ea3ea7e9 6971 // TODO: if no match, continue (continue accepting commands)
whismanoid 3:9055e17e181a 6972 }
whismanoid 4:d9b05924ad4c 6973 if (Datalogger_Trigger == trigger_SPIDeviceRegRead) {
whismanoid 4:d9b05924ad4c 6974 // SPI device register read (configure regaddr, mask value, match value)
whismanoid 17:9397ea3ea7e9 6975 // TODO: SPI transfer regAddr
whismanoid 17:9397ea3ea7e9 6976 // TODO: apply dataMask, compare with testValue
whismanoid 17:9397ea3ea7e9 6977 // TODO: if no match, continue (continue accepting commands)
whismanoid 4:d9b05924ad4c 6978 }
whismanoid 4:d9b05924ad4c 6979 #endif // USE_DATALOGGER_TRIGGER support Datalog trigger
whismanoid 0:cb44e2e9ec4c 6980
whismanoid 8:dffee7509bfb 6981 // column header banner for csv data columns
whismanoid 8:dffee7509bfb 6982 if (Datalogger_Need_PrintHeader) {
whismanoid 8:dffee7509bfb 6983 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 6984 Datalogger_PrintHeader(cmdLine);
whismanoid 8:dffee7509bfb 6985 }
whismanoid 8:dffee7509bfb 6986 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 6987 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 6988 Datalogger_PrintHeader(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 6989 }
whismanoid 8:dffee7509bfb 6990 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 6991 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 6992 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 6993 Datalogger_PrintHeader(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 6994 }
whismanoid 8:dffee7509bfb 6995 # endif // HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 6996 Datalogger_Need_PrintHeader = false;
whismanoid 8:dffee7509bfb 6997 }
whismanoid 5:aaf8b5f5fda1 6998 Datalogger_AcquireRow();
whismanoid 17:9397ea3ea7e9 6999 #if USE_DATALOGGER_ActionTable // Datalogger_RunActionTable() supported actions
whismanoid 17:9397ea3ea7e9 7000 // Datalogger_RunActionTable() between Datalogger_AcquireRow() and Datalogger_PrintRow()
whismanoid 17:9397ea3ea7e9 7001 Datalogger_RunActionTable();
whismanoid 17:9397ea3ea7e9 7002 #endif // USE_DATALOGGER_ActionTable Datalogger_RunActionTable() supported actions
whismanoid 0:cb44e2e9ec4c 7003 // wait(3.0);
whismanoid 0:cb44e2e9ec4c 7004 // CODE GENERATOR: print conversion result
whismanoid 0:cb44e2e9ec4c 7005 // Use Arduino Serial Plotter to view output: Tools | Serial Plotter
whismanoid 8:dffee7509bfb 7006 if (Datalogger_enable_serial) {
whismanoid 8:dffee7509bfb 7007 Datalogger_PrintRow(cmdLine);
whismanoid 8:dffee7509bfb 7008 }
whismanoid 8:dffee7509bfb 7009 # if HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 7010 if (Datalogger_enable_AUXserial) {
whismanoid 8:dffee7509bfb 7011 Datalogger_PrintRow(cmdLine_AUXserial);
whismanoid 8:dffee7509bfb 7012 }
whismanoid 8:dffee7509bfb 7013 # endif // HAS_AUX_SERIAL
whismanoid 8:dffee7509bfb 7014 # if HAS_DAPLINK_SERIAL
whismanoid 8:dffee7509bfb 7015 if (Datalogger_enable_DAPLINKserial) {
whismanoid 8:dffee7509bfb 7016 Datalogger_PrintRow(cmdLine_DAPLINKserial);
whismanoid 8:dffee7509bfb 7017 }
whismanoid 8:dffee7509bfb 7018 # endif // HAS_DAPLINK_SERIAL
whismanoid 0:cb44e2e9ec4c 7019
whismanoid 0:cb44e2e9ec4c 7020 } // this code repeats forever
whismanoid 0:cb44e2e9ec4c 7021 }
whismanoid 0:cb44e2e9ec4c 7022 //---------- CODE GENERATOR: end DataLogHelloCppCodeList