working RTC
This commit is contained in:
parent
a927c74393
commit
63d9bfb524
|
@ -7,6 +7,7 @@ PCF8574 inputBankA(INPUT_BANK_A_ADDRESS);
|
||||||
PCF8574 inputBankB(INPUT_BANK_B_ADDRESS);
|
PCF8574 inputBankB(INPUT_BANK_B_ADDRESS);
|
||||||
Adafruit_PWMServoDriver pwmBank = Adafruit_PWMServoDriver(PWM_BANK_ADDRESS);
|
Adafruit_PWMServoDriver pwmBank = Adafruit_PWMServoDriver(PWM_BANK_ADDRESS);
|
||||||
I2C_eeprom ESPMega_EEPROM(EEPROM_ADDRESS);
|
I2C_eeprom ESPMega_EEPROM(EEPROM_ADDRESS);
|
||||||
|
|
||||||
#ifdef ANALOG_CARD_ENABLE
|
#ifdef ANALOG_CARD_ENABLE
|
||||||
Adafruit_ADS1115 analogInputBankA;
|
Adafruit_ADS1115 analogInputBankA;
|
||||||
Adafruit_ADS1115 analogInputBankB;
|
Adafruit_ADS1115 analogInputBankB;
|
||||||
|
@ -22,7 +23,6 @@ void ESPMega_begin()
|
||||||
inputBankA.begin();
|
inputBankA.begin();
|
||||||
inputBankB.begin();
|
inputBankB.begin();
|
||||||
pwmBank.begin();
|
pwmBank.begin();
|
||||||
ESPMega_RTC.begin();
|
|
||||||
ESPMega_EEPROM.begin();
|
ESPMega_EEPROM.begin();
|
||||||
// ESPMegaPRO v3 use the PWMBank to drive Half Bridge
|
// ESPMegaPRO v3 use the PWMBank to drive Half Bridge
|
||||||
// Push Pull Output is required.
|
// Push Pull Output is required.
|
||||||
|
@ -100,6 +100,30 @@ void IRAM_ATTR refreshInputBankB()
|
||||||
inputBufferB = inputBankB.read8();
|
inputBufferB = inputBankB.read8();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtctime_t ESPMega_getTime() {
|
||||||
|
tmElements_t timeElement;
|
||||||
|
RTC.read(timeElement);
|
||||||
|
rtctime_t time;
|
||||||
|
time.hours = timeElement.Hour;
|
||||||
|
time.minutes = timeElement.Minute;
|
||||||
|
time.seconds = timeElement.Second;
|
||||||
|
time.day = timeElement.Day;
|
||||||
|
time.month = timeElement.Month;
|
||||||
|
time.year = timeElement.Year+1970;
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ESPMega_setTime(int hours,int minutes, int seconds, int day, int month, int year) {
|
||||||
|
tmElements_t timeElement;
|
||||||
|
timeElement.Hour = hours;
|
||||||
|
timeElement.Minute = minutes;
|
||||||
|
timeElement.Second = seconds;
|
||||||
|
timeElement.Day = day;
|
||||||
|
timeElement.Month = month;
|
||||||
|
timeElement.Year = year-1970;
|
||||||
|
RTC.write(timeElement);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef ANALOG_CARD_ENABLE
|
#ifdef ANALOG_CARD_ENABLE
|
||||||
int16_t ESPMega_analogRead(int id)
|
int16_t ESPMega_analogRead(int id)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
#include <Adafruit_ADS1X15.h>
|
#include <Adafruit_ADS1X15.h>
|
||||||
#include <MCP4725.h>
|
#include <MCP4725.h>
|
||||||
#include <I2C_eeprom.h>
|
#include <I2C_eeprom.h>
|
||||||
#include <SparkFunDS1307RTC.h>
|
#include <TimeLib.h>
|
||||||
|
#include <DS1307RTC.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define INPUT_BANK_A_ADDRESS 0x21
|
#define INPUT_BANK_A_ADDRESS 0x21
|
||||||
|
@ -24,12 +25,18 @@
|
||||||
#define DAC3_ADDRESS 0x63
|
#define DAC3_ADDRESS 0x63
|
||||||
#define EEPROM_ADDRESS 0x70
|
#define EEPROM_ADDRESS 0x70
|
||||||
|
|
||||||
#define ESPMega_RTC rtc
|
|
||||||
|
|
||||||
//#define USE_INTERRUPT
|
//#define USE_INTERRUPT
|
||||||
#define INPUT_BANK_A_INTERRUPT 36
|
#define INPUT_BANK_A_INTERRUPT 36
|
||||||
#define INPUT_BANK_B_INTERRUPT 39
|
#define INPUT_BANK_B_INTERRUPT 39
|
||||||
extern I2C_eeprom ESPMega_EEPROM;
|
extern I2C_eeprom ESPMega_EEPROM;
|
||||||
|
struct rtctime_t {
|
||||||
|
uint8_t hours;
|
||||||
|
uint8_t minutes;
|
||||||
|
uint8_t seconds;
|
||||||
|
uint8_t day;
|
||||||
|
uint8_t month;
|
||||||
|
uint16_t year;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initiate ESPMega PRO Internal Components
|
* Initiate ESPMega PRO Internal Components
|
||||||
|
@ -74,6 +81,24 @@ void ESPMega_digitalWrite(int id, bool value);
|
||||||
void IRAM_ATTR refreshInputBankA();
|
void IRAM_ATTR refreshInputBankA();
|
||||||
void IRAM_ATTR refreshInputBankB();
|
void IRAM_ATTR refreshInputBankB();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get time from the onboard RTC as a struct
|
||||||
|
*
|
||||||
|
* @return Time Element Struct
|
||||||
|
*/
|
||||||
|
rtctime_t ESPMega_getTime();
|
||||||
|
/**
|
||||||
|
* Set the onboard RTC's time
|
||||||
|
*
|
||||||
|
* @param hours
|
||||||
|
* @param minutes
|
||||||
|
* @param seconds
|
||||||
|
* @param day Day of the month
|
||||||
|
* @param month Month in numerical form
|
||||||
|
* @param year Years in AD
|
||||||
|
*/
|
||||||
|
void ESPMega_setTime(int hours,int minutes, int seconds, int day, int month, int year);
|
||||||
|
|
||||||
#ifdef ANALOG_CARD_ENABLE
|
#ifdef ANALOG_CARD_ENABLE
|
||||||
/**
|
/**
|
||||||
* Read one of the ESPMega Analog Card's Analog Input pins (A0-A7)
|
* Read one of the ESPMega Analog Card's Analog Input pins (A0-A7)
|
||||||
|
|
|
@ -21,5 +21,6 @@ lib_deps = adafruit/Adafruit PWM Servo Driver Library@^2.4.1
|
||||||
SPI@^2.0.0
|
SPI@^2.0.0
|
||||||
robtillaart/MCP4725@^0.3.7
|
robtillaart/MCP4725@^0.3.7
|
||||||
robtillaart/I2C_EEPROM@^1.7.3
|
robtillaart/I2C_EEPROM@^1.7.3
|
||||||
sparkfun/SparkFun DS1307 Real-Time Clock (RTC)@^1.0.1
|
paulstoffregen/Time@^1.6.1
|
||||||
|
paulstoffregen/DS1307RTC
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
|
@ -1,8 +1,12 @@
|
||||||
#include <ESPMegaPRO.h>
|
#include <ESPMegaPRO.h>
|
||||||
void setup() {
|
void setup() {
|
||||||
ESPMega_begin();
|
ESPMega_begin();
|
||||||
|
Serial.begin(115200);
|
||||||
|
ESPMega_setTime(16,35,0,16,9,2023);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
delay(5000);
|
delay(1000);
|
||||||
|
rtctime_t tm = ESPMega_getTime();
|
||||||
|
Serial.printf("%02d:%02d:%02d %02d/%02d/%04d\n", tm.hours,tm.minutes,tm.seconds,tm.day,tm.month,tm.year);
|
||||||
}
|
}
|
Loading…
Reference in New Issue