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 02:24:45 2021 -0700
Revision:
43:4c4733760d4c
Parent:
42:89607d5d4e6d
Child:
44:84402faa8eb9
WIP LT sleep=1 use MAX32625 LP1 deep sleep and RTC timer; signs of life
0.1mA in LP1 leds off, but trouble getting out of sleep=1 mode
and trouble with serial port garble when entering sleep and waking up

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