95 lines
4.2 KiB
C++
95 lines
4.2 KiB
C++
/*
|
|
DS1307RTC.ino - CLI library sample implementing a CLI to control a DS1307 RTC
|
|
|
|
Version 1.0, latest version, documentation and bugtracker available at:
|
|
https://gitlab.lindenaar.net/arduino/CLI
|
|
|
|
Copyright (c) 2019 Frederik Lindenaar
|
|
|
|
This example shows how to add commands to read and set an DS1307 RTC (Real
|
|
Time Clock) module to the CLI. It extends the Debug example so that the CLI
|
|
library debugging commands are also included to check the I2C bus wiring and
|
|
access the module's NVRAM and EEPROM. The implementation uses Paul
|
|
Stoffregen's DS1307RTC library (https://github.com/PaulStoffregen/DS1307RTC)
|
|
so please ensure you have added that (and it's dependency TimeLib) through
|
|
the Aruino IDE's built-in library manager.
|
|
|
|
The following commands are available through the Serial Monitor (available
|
|
from the Tools menu of the Arduino IDE):
|
|
- ds1307 Set and/or show DS1307 RTC date and time
|
|
- eeprom_dump dump the contents of the built-in EEPROM
|
|
- i2c_scan scan the I2C bus for slave devices
|
|
- i2c_dump dump the contents of I2C attached EEPROM or Memory
|
|
- reset restart the microcontroller (software reset)
|
|
- help show the available commands and how to use them
|
|
|
|
To read the the DS1307 use:
|
|
ds1307 show the current time of the DS1307
|
|
i2c_dump 0x68 64 8 single show NVRAM (assuming device ID is 0x68)
|
|
(dump 56-byte NVRAM, start at offset 8)
|
|
|
|
To set the DS1307 clock use:
|
|
ds1307 2019-01-01 12:34:56 to set both the date and time
|
|
ds1307 2019-01-31 to set only the date
|
|
ds1307 12:34 to set only the time (seconds set to 0)
|
|
|
|
When your module also has an EEPROM (assuming device ID is 0x50) use:
|
|
i2c_dump 0x50 4096 dump 24LC32 EEPROM contents (4k)
|
|
|
|
Please note that the ds1307 command is implemented in separate files (that
|
|
opens in a separate tab in the Arduino IDE)
|
|
|
|
This sketch is free software: you can redistribute it and/or modify it under
|
|
the terms of version 3 of the GNU General Public License as published by the
|
|
Free Software Foundation, or (at your option) a later version of the license.
|
|
|
|
This code is distributed in the hope that it will be useful but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
this program. If not, visit <http://www.gnu.org/licenses/> to download it.
|
|
*/
|
|
|
|
#include <CLI.h>
|
|
#include <Wire.h>
|
|
|
|
#include "DS1307_Command.h"
|
|
|
|
// Initialize the Debug Command Line Interface
|
|
const char banner[] PROGMEM = "DS1307RTC Sample CLI"; // Banner to show upon startup of the CLI
|
|
CLI CLI(Serial, banner); // Initialize the CLI, telling it to attach to Serial
|
|
DS1307_Command DS1307RTC(CLI); // Initialize/Register ds1307 command
|
|
EEPROM_Dump_Command EEPROM_Dump(CLI); // Initialize/Register (built-in) eeprom_dump command
|
|
I2C_Scan_Command I2C_Scan(CLI); // Initialize/Register (built-in) i2c_scan command
|
|
I2C_Dump_Command I2C_Dump(CLI); // Initialize/Register (built-in) i2c_dump command
|
|
Reset_Command Reset(CLI); // Initialize/Register (built-in) reset command
|
|
Help_Command Help(CLI); // Initialize/Register (built-in) help command
|
|
|
|
|
|
// the setup function runs once when you reset or power the board
|
|
void setup() {
|
|
// initialize digital pin LED_BUILTIN as an output.
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
|
|
// Initialize the Serial port for the CLI
|
|
while (!Serial); // For Leonardo: wait for serial USB to connect
|
|
Serial.begin(9600);
|
|
|
|
// Initialize the Wire Interface
|
|
Wire.begin();
|
|
|
|
}
|
|
|
|
|
|
// the loop function runs over and over again forever
|
|
void loop() {
|
|
// handle CLI, if this returns true a command is running. Set Builtin LED accordingly
|
|
if (CLI.process()) {
|
|
digitalWrite(LED_BUILTIN, HIGH); // turn LED on when processing CLI command
|
|
} else {
|
|
digitalWrite(LED_BUILTIN, LOW); // turn LED off when not processing CLI command
|
|
}
|
|
}
|
|
|