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:
Sat Apr 24 02:54:22 2021 -0700
Revision:
23:c6c652bef4b9
Parent:
22:d6dc8a85f435
Child:
24:032f3683cb2a
%B1! trigger onButton1FallingEdge(); %B1@ view command table; WIP edit

Who changed what in which revision?

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