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 20:11:25 2021 -0700
Revision:
45:74bf1fe021e5
Parent:
44:84402faa8eb9
Child:
46:469d0061df5d
LT count=10 base=1000 sleep=1 -- LP1 deep sleep works (mbed-os-5.15)
MAX40108p2 demo buttons business logic SW1=DeepSleep, J91.3=Halt, J91.2=run

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