Skip to content

Commit

Permalink
Enhance <V> to display startup info
Browse files Browse the repository at this point in the history
  • Loading branch information
peteGSX committed Jul 3, 2023
1 parent 860d146 commit 155c187
Show file tree
Hide file tree
Showing 13 changed files with 55 additions and 15 deletions.
1 change: 1 addition & 0 deletions EX-IOExpander.ino
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ void setup() {
digitalWrite(I2C_SDA, LOW);
digitalWrite(I2C_SCL, LOW);
#endif
startupDisplay();
// Need to intialise every pin in INPUT mode (no pull ups) for safe start
initialisePins();
USB_SERIAL.println(F("Initialised all pins as input only"));
Expand Down
2 changes: 0 additions & 2 deletions arduino_arch_samd.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
#include <Arduino.h>
#include "globals.h"

#define BOARD_TYPE F("Arduino Zero or Clone")

pinDefinition pinMap[TOTAL_PINS] = {
{2,DIOP},{3,DIOP},{4,DIOP},{5,DIOP},{6,DIOP},{7,DIOP},{8,DIOP},{9,DIOP},{10,DIOP},{11,DIOP},
{12,DIOP},{13,DIOP},{14,DIO},{15,DIO},{16,DIO},{17,DIO},{18,DIO},{19,DIO},{22,DIO},{23,DIO},
Expand Down
1 change: 0 additions & 1 deletion arduino_avr_mega.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include <Arduino.h>
#include "globals.h"

#define BOARD_TYPE F("Mega")
pinDefinition pinMap[TOTAL_PINS] = {
{2,DIOP},{3,DIOP},{4,DIOP},{5,DIOP},{6,DIOP},{7,DIOP},{8,DIOP},{9,DIOP},{10,DIOP},{11,DIOP},
{12,DIOP},{13,DIOP},{14,DIO},{15,DIO},{16,DIO},{17,DIO},{18,DIO},{19,DIO},{22,DIO},{23,DIO},
Expand Down
5 changes: 0 additions & 5 deletions arduino_avr_nano.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@
* along with CommandStation. If not, see <https://www.gnu.org/licenses/>.
*/

#if defined(ARDUINO_AVR_NANO)
#define BOARD_TYPE F("Nano")
#elif defined(ARDUINO_AVR_PRO)
#define BOARD_TYPE F("Pro Mini")
#endif
pinDefinition pinMap[TOTAL_PINS] = {
{2,DIO},{3,DIOP},{4,DIO},{5,DIOP},{6,DIOP},{7,DIO},
{8,DIO},{9,DIOP},{10,DIOP},{11,DIOP},{12,DIO},{13,DIO},
Expand Down
1 change: 0 additions & 1 deletion arduino_avr_uno.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include <Arduino.h>
#include "globals.h"

#define BOARD_TYPE F("Uno")
pinDefinition pinMap[TOTAL_PINS] = {
{2,DIO},{3,DIOP},{4,DIO},{5,DIOP},{6,DIOP},{7,DIO},
{8,DIO},{9,DIOP},{10,DIOP},{11,DIOP},{12,DIO},{13,DIO},
Expand Down
1 change: 0 additions & 1 deletion arduino_bluepill_f103c8.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include <Arduino.h>
#include "globals.h"

#define BOARD_TYPE F("BLUEPILL-STM32F103C8")
pinDefinition pinMap[TOTAL_PINS] = {
{PC13,DIO},{PC14,DIO},{PC15,DIO},{PA0,AIDIO},{PA1,AIDIOP},{PA2,AIDIOP},{PA3,AIDIOP},{PA4,AIDIO},
{PA5,AIDIO},{PA6,AIDIOP},{PA7,AIDIOP},{PB0,AIDIOP},{PB1,AIDIOP},{PB10,DIOP},{PB11,DIOP},
Expand Down
2 changes: 0 additions & 2 deletions arduino_nucleo_f411re.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
#include <Arduino.h>
#include "globals.h"

#define BOARD_TYPE F("NUCLEO-F411RE")

pinDefinition pinMap[TOTAL_PINS] = {
{PC10,DIO},{PC11,DIO},{PC12,DIO},{PD2,DIO},{PA15,DIOP},{PB7,DIOP},{PC15,DIO}, // CN7
{PA0,AIDIOP},{PA1,AIDIOP},{PA4,AIDIO},{PB0,AIDIOP},{PC2,AIDIO},{PC1,AIDIO},{PC3,AIDIO},{PC0,AIDIO}, // CN7
Expand Down
2 changes: 0 additions & 2 deletions arduino_nucleo_f412zg.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
#include <Arduino.h>
#include "globals.h"

#define BOARD_TYPE F("NUCLEO-F412ZG")

pinDefinition pinMap[TOTAL_PINS] = {
{PC10,DIO},{PC11,DIO},{PC12,DIO},{PD2,DIO},{PF6,DIOP},{PF7,DIOP},{PA15,DIOP},{PB7,DIOP},{PC13,DIO}, // CN11
{PA0,AIDIOP},{PA1,AIDIOP},{PA4,AIDIO},{PB0,AIDIOP},{PC2,AIDIO},{PC1,AIDIO},{PC3,AIDIO},{PC0,AIDIO}, // CN11
Expand Down
11 changes: 11 additions & 0 deletions defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,29 +25,40 @@
//
// Arduino Nano or Pro Mini
#if defined(ARDUINO_AVR_NANO) || defined(ARDUINO_AVR_PRO)
#if defined(ARDUINO_AVR_NANO)
#define BOARD_TYPE F("Nano")
#elif defined(ARDUINO_AVR_PRO)
#define BOARD_TYPE F("Pro Mini")
#endif
#define TOTAL_PINS 18
#define NUM_PWM_PINS 6
#define HAS_EEPROM
// Arduino Uno
#elif defined(ARDUINO_AVR_UNO)
#define BOARD_TYPE F("Uno")
#define TOTAL_PINS 16
#define NUM_PWM_PINS 6
#define HAS_EEPROM
// Arduino Mega2560
#elif defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
#define BOARD_TYPE F("Mega")
#define TOTAL_PINS 62
#define NUM_PWM_PINS 12
#define HAS_EEPROM
#elif defined(ARDUINO_NUCLEO_F411RE)
#define BOARD_TYPE F("Nucleo-F411RE")
#define TOTAL_PINS 40
#define NUM_PWM_PINS 25
#elif defined(ARDUINO_NUCLEO_F412ZG)
#define BOARD_TYPE F("Nucleo-F412ZG")
#define TOTAL_PINS 97
#define NUM_PWM_PINS 40
#elif defined(ARDUINO_ARCH_SAMD)
#define BOARD_TYPE F("Arduino Zero or Clone")
#define TOTAL_PINS 27
#define NUM_PWM_PINS 12
#elif defined(ARDUINO_BLUEPILL_F103C8)
#define BOARD_TYPE F("BLUEPILL-STM32F103C8")
#define TOTAL_PINS 28
#define NUM_PWM_PINS 19
#endif
Expand Down
41 changes: 40 additions & 1 deletion display_functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,4 +190,43 @@ void processDisplayOutput() {
default:
break;
}
}
}

/*
* Function to display startup info
*/
void startupDisplay() {
USB_SERIAL.print(F("DCC-EX EX-IOExpander v"));
USB_SERIAL.println(VERSION);
USB_SERIAL.print(F("Detected device: "));
USB_SERIAL.println(BOARD_TYPE);
if (i2cAddress < 0x08 || i2cAddress > 0x77) {
USB_SERIAL.print(F("ERROR: Invalid I2C address configured: 0x"));
USB_SERIAL.print(i2cAddress, HEX);
USB_SERIAL.println(F(", using myConfig.h instead"));
i2cAddress = I2C_ADDRESS;
}
USB_SERIAL.print(F("Available at I2C address 0x"));
USB_SERIAL.println(i2cAddress, HEX);
#if defined(HAS_SERVO_LIB)
USB_SERIAL.print(F("Servo library support for up to "));
USB_SERIAL.print(MAX_SERVOS);
USB_SERIAL.println(F(" servos"));
#endif
#if defined(HAS_DIMMER_LIB)
USB_SERIAL.print(F("Dimmer library support for up to "));
USB_SERIAL.print(MAX_DIMMERS);
USB_SERIAL.println(F(" LEDs"));
#endif
#if !defined(HAS_SERVO_LIB)
USB_SERIAL.print(F("Use hardware PWM pins for up to "));
USB_SERIAL.print(numPWMPins);
USB_SERIAL.println(F(" servos/LEDs"));
#endif
#if defined(DISABLE_I2C_PULLUPS) && defined(I2C_SDA) && defined(I2C_SCL)
USB_SERIAL.print(F("Disabling I2C pullups on pins SDA|SCL: "));
USB_SERIAL.print(I2C_SDA);
USB_SERIAL.print(F("|"));
USB_SERIAL.println(I2C_SCL);
#endif
}
1 change: 1 addition & 0 deletions display_functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,6 @@ void setVersion();
void displayPins();
void displayVpinMap();
void processDisplayOutput();
void startupDisplay();

#endif
1 change: 1 addition & 0 deletions globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
extern pinDefinition pinMap[TOTAL_PINS];
extern pinName pinNameMap[TOTAL_PINS];
extern pinConfig exioPins[TOTAL_PINS];
extern uint8_t i2cAddress;
extern uint8_t numPins;
extern uint8_t numDigitalPins;
extern uint8_t numAnaloguePins;
Expand Down
1 change: 1 addition & 0 deletions serial_functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ void processSerialInput() {
}
break;
case 'V': // Display Vpin map
startupDisplay();
displayVpinMap();
break;
case 'W': // Write address to EEPROM
Expand Down

0 comments on commit 155c187

Please sign in to comment.