1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-23 16:16:13 +01:00
This commit is contained in:
FranziHH 2024-02-01 05:58:50 +01:00 committed by GitHub
commit e236c150f2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 65 additions and 10 deletions

View File

@ -181,7 +181,20 @@ void CommandDistributor::setClockTime(int16_t clocktime, int8_t clockrate, byte
case 1:
if (clocktime != lastclocktime){
// CAH. DIAG removed because LCD does it anyway.
LCD(6,F("Clk Time:%d Sp %d"), clocktime, clockrate);
#ifndef FASTCLOCK_READABLE
LCD(6,F("Clk Time: %d Sp %d"), clocktime, clockrate);
#else
// Make Time readable
int hours = clocktime / 60;
int minutes = clocktime - (hours * 60);
int hoursH = hours / 10;
int hoursL = hours - (hoursH * 10);
int minutesH = minutes / 10;
int minutesL = minutes - (minutesH * 10);
LCD(6,F("Clk Time: %d%d:%d%d Sp %d"), hoursH, hoursL, minutesH, minutesL, clockrate);
#endif
// look for an event for this time
RMFT2::clockEvent(clocktime,1);
// Now tell everyone else what the time is.

View File

@ -48,6 +48,10 @@
static const FSH * guessI2CDeviceType(uint8_t address) {
if (address >= 0x20 && address <= 0x26)
return F("GPIO Expander");
#ifdef FAST_CLOCK_I2C
else if (address == FAST_CLOCK_I2C)
return F("Fast Clock");
#endif
else if (address == 0x27)
return F("GPIO Expander or LCD Display");
else if (address == 0x29)
@ -363,4 +367,4 @@ void I2CAddress::toHex(const uint8_t value, char *buffer) {
/* static */ bool I2CAddress::_addressWarningDone = false;
#endif
#endif

View File

@ -27,6 +27,12 @@
#include "IO_MCP23017.h"
#include "DCCTimer.h"
#if !defined(IO_NO_HAL)
#ifdef FAST_CLOCK_I2C
#include "IO_EXFastClock.h" // FastClock driver
#endif
#endif
#if defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_MEGAAVR)
#define USE_FAST_IO
#endif
@ -75,6 +81,11 @@ void IODevice::begin() {
} else {
DIAG(F("Default PCA9685 at I2C 0x41 disabled due to configured user device"));
}
#ifdef FAST_CLOCK_I2C
DIAG(F("EXFastClock::create"));
EXFastClock::create(FAST_CLOCK_I2C);
#endif
// Predefine two MCP23017 module 0x20/0x21 if no conflicts
// Allocates 32 pins 164-195
@ -582,4 +593,3 @@ bool ArduinoPins::fastReadDigital(uint8_t pin) {
#endif
return result;
}

View File

@ -56,12 +56,12 @@ static void create(I2CAddress i2cAddress) {
// XXXX change thistosave2 bytes
if (_checkforclock == 0) {
FAST_CLOCK_EXISTS = true;
//DIAG(F("I2C Fast Clock found at %s"), i2cAddress.toString());
DIAG(F("I2C Fast Clock found at %s"), i2cAddress.toString());
new EXFastClock(i2cAddress);
}
else {
FAST_CLOCK_EXISTS = false;
//DIAG(F("No Fast Clock found"));
DIAG(F("No Fast Clock found"));
LCD(6,F("CLOCK NOT FOUND"));
}
@ -95,7 +95,8 @@ void _loop(unsigned long currentMicros) override{
if (FAST_CLOCK_EXISTS==true) {
uint8_t readBuffer[3];
byte a,b;
#ifdef EXRAIL_ACTIVE
// I would like to use the FastClock without EXRAIL
// #ifdef EXRAIL_ACTIVE
I2CManager.read(_I2CAddress, readBuffer, 3);
// XXXX change this to save a few bytes
a = readBuffer[0];
@ -110,7 +111,7 @@ void _loop(unsigned long currentMicros) override{
// Clock interval is 60/ clockspeed i.e 60/b seconds
delayUntil(currentMicros + ((60/b) * 1000000));
#endif
// #endif
}
}

View File

@ -1,3 +1,7 @@
# My (FranziHH) DCC++ Ex Hardware
<img src="/images/IMG_5870_1.jpg" height="400px" title="DCC++ Ex Hardware">
# What is DCC++ EX?
DCC++ EX is the organization maintaining several codebases that together represent a fully open source DCC system. Currently, this includes the following:

View File

@ -363,11 +363,17 @@ wifiSerialState WifiInterface::setup2(const FSH* SSid, const FSH* password,
}
ipString[ipLen]=ipChar;
}
LCD(4,F("%s"),ipString); // There is not enough room on some LCDs to put a title to this
#ifndef PRINT_IP_PORT_SINGLE_LINE
LCD(4,F("%s"),ipString); // There is not enough room on some LCDs to put a title to this
#else
LCD(4,F("%s:%d"),ipString,port); // *** Single IP:Port
#endif
}
// suck up anything after the IP.
if (!checkForOK(1000, true, false)) return WIFI_DISCONNECTED;
LCD(5,F("PORT=%d"),port);
#ifndef PRINT_IP_PORT_SINGLE_LINE
LCD(5,F("PORT=%d"),port);
#endif
return WIFI_CONNECTED;
}

View File

@ -167,6 +167,9 @@ The configuration file for DCC-EX Command Station
// * #define SCROLLMODE 2 is by row (move up 1 row at a time).
#define SCROLLMODE 1
// Shows IP and Port on Display in a single line
// #define PRINT_IP_PORT_SINGLE_LINE
/////////////////////////////////////////////////////////////////////////////////////
// DISABLE EEPROM
//
@ -239,7 +242,10 @@ The configuration file for DCC-EX Command Station
// SAMD/SAMC and STM32 have up to 6.)
// To monitor a throttle on one or more serial ports, uncomment the defines below.
// NOTE: do not define here the WiFi shield serial port or your wifi will not work.
//
// -------------------------------------
// For Use with FastClock serial: uncomment the needed serial Port and
// FastClock will work, no further actions are needed
// -------------------------------------
//#define SERIAL1_COMMANDS
//#define SERIAL2_COMMANDS
//#define SERIAL3_COMMANDS
@ -247,6 +253,17 @@ The configuration file for DCC-EX Command Station
//#define SERIAL5_COMMANDS
//#define SERIAL6_COMMANDS
//
// -------------------------------------
// FastClock with I2C
// uncomment the following Line and Set the used I2C Address
//#define FAST_CLOCK_I2C 0x55 // default is 0x55
// -------------------------------------
//
// -------------------------------------
// FastClock in HH:MM on Display
//#define FASTCLOCK_READABLE
// -------------------------------------
//
// BLUETOOTH SERIAL ON ESP32
// On ESP32 you have the possibility to use the builtin BT serial to connect to
// the CS.

BIN
images/IMG_5870_1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 KiB