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 17 22:51:02 2021 -0700
Revision:
17:9397ea3ea7e9
Parent:
16:819c5aaf5271
Child:
18:1235c17b451e
command L@ editable business logic in Datalogger_action_table

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