Подключение часов реального времени ds1302 к Arduino. DS1302 Побеждаем время

  • Отличительные особенности:
  • Подсчет реального времени в секундах, минутах, часах, датах месяца, месяцах, днях недели и годах с учетом высокосности текущего года вплоть до 2100 г.
  • Дополнительное ОЗУ 31 x 8 для хранения данных
  • Последовательный ввод – вывод информации для сокращения выводов микросхемы
  • Выполнение всех функций при напряжении питания 2.0-5.5 В
    - выполнение всех функций при напряжении 2.0-5.5 В на дополнительном выводе питания
  • Потребление не более 300 нA при 2.5 В питания
  • Чтение и запись информации по одному байту или потоком
  • Исполнение в 8-ми выводном корпусе DIP, а также по заказу в 8-ми выводном SOIC корпусе для поверхностного монтажа
  • Простой 3-проводной интерфейс
  • Совместимость с TTL-микросхемами (Vcc= 5V)
  • Возможность поставки в промышленном диапазоне температур: от -40°C до+85°C
  • Совместимость с DS1202
  • Отличия от DS1202:
    возможность подключения встроенной цепи подзарядки к выводу Vcc1
    два вывода питания для подключения основного и резервного источника питания
    увеличено ОЗУ на 7 байт

Описание выводов:

X1, X2 подключение кварцевого резонатора 32.768 кГц
GND общий
RST сброс
I/O ввод - вывод данных
SCLK синхронизация последовательной связи
VCC1, VCC2 выводы питания

Структурная схема DS1302:

Общее описание:

Микросхема DS1302 содержит часы реального времени с календарем и 31 байт статического ОЗУ. Она общается с микропроцессором через простой последовательный интерфейс. Информация о реальном времени и календаре представляется в секундах минутах, часах, дне, дате, месяце и годе. Если текущий месяц содержит менее 31 дня, то микросхема автоматически определит количество дней в месяце с учетом высокосности текущего года. Часы работают или в 24-часовом или 12-часовом формате с индикатором AM/PM (до полудня/ после полудня). Подключение DS1302 к микропроцессу упрощено за счет синхронной последовательной связи. Для этого требуется только 3 провода: (1) RST (сброс), (2) I/O (линия данных) и (3) SCLK (синхронизация последовательной связи). Данные могут передаваться по одному байту или последовательностью байтов до 31. DS1302 разработан, чтобы потреблять малую мощность и сохранять данные и информацию часов при потреблении менее 1 мкВт. DS1302 - преемник DS1202. В дополнение к основным функциям хранения времени DS1202, DS1302 имеет два вывода питания для подключения основного и резервного источника питания, возможность подключения программируемой цепи заряда к выводу VCC1 и семь дополнительных байтов ОЗУ.

Подключение:

Подключение DS1307 к Arduino:

RTC DS1307 Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Подключение DS1302 к Arduino:

RTC DS1302 Arduino UNO
GND GND
VCC +5V
RST 6 (Можно изменить на другие в скетче)
CLK 7 (Можно изменить на другие в скетче)
DAT

(Можно изменить на другие в скетче)

Подключение DS3231 к Arduino:

RTC DS3231 Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Модуль DS1302 часы реального времени на Алиэкспресс http://ali.pub/1br52w

Код программы для модуля 1302 и дисплей 1602 I2C

В зависимости от того какой модуль Вы подключаете, необходимо в программе указать

Для DS1302 :

time . begin (RTC_DS1302 , 10 , 13 , 12 );

#include

virtuabotixRTC myRTC(6, 7, 8); //CLK, DAT, RST

Программа

#include

#include

LiquidCrystal_I2C lcd(0x3F ,2,1,0,4,5,6,7,3, POSITIVE);

void setup() {

lcd.begin(16,2);

//myRTC.setDS1302Time(00,04, 12, 06, 18, 04, 2017);

void loop() {

myRTC.updateTime();

lcd.setCursor(0, 0);

lcd.print("date: ");

lcd.print(myRTC.dayofmonth);

lcd.print("/");

lcd.print(myRTC.month);

lcd.print("/");

lcd.print(myRTC.year);

lcd.print(" ");

lcd.setCursor(0, 1);

lcd.print("time: ");

lcd.print(myRTC.hours);

lcd.print(":");

lcd.print(myRTC.minutes);

lcd.print(":");

lcd.print(myRTC.seconds);

lcd.println(" ");

Так же не забываем о экономии при покупке товаров на Алиєкспресс с помощью кэшбэка

Преимущества библиотеки:

Библиотека имеет внутренние функции аппаратной обработки протоколов передачи данных I2C и SPI, а следовательно не требует подключения дополнительных библиотек, но и не конфликтует с ними, если таковые всё же подключены.

Библиотека имеет внутренние функции программой обработки протокола передачи данных 3-Wire

Для инициализации модуля необходимо вызвать функцию begin с названием модуля.

Подключение модулей осуществляется к аппаратным выводам arduino используемой шины (за исключением 3-Wire)

Простота установки и чтения времени функциями settime и gettime

функция settime может устанавливать дату и время, как полностью, так и частично (например только минуты, или только день, и т.д.)

функция gettime работает как функция date в php, возвращая строку со временем, но если её вызвать без параметра, то функция ничего не вернёт, а время можно прочитать из переменных в виде чисел.

Библиотека расширяемая, то есть для того, чтоб она работала с новым модулем, нужно указать параметры этого модуля в уже существующих массивах файла RTC.h (тип шины, частота шины в кГц, режимы работы, адреса регистров и т.д.), как всё это сделать, описано в файле extension.txt

Таким образом добавив новый модуль в библиотеку, мы лишь увеличим область занимаемой динамической памяти на ~ 36 байт, при этом не затронув область памяти программ.

При вызове функции begin, библиотека читает флаги регистров модуля и при необходимости устанавливает или сбрасывает их так, чтоб модуль мог работать от аккумуляторной батареи, а на программируемом выводе меандра (если таковой у модуля есть) установилась частота 1Гц, тогда этот вывод можно использовать в качестве внешнего посекундного прерывания.

При работе с модулем DS1302 не нужны никакие резисторы на выводе GND (которые нужны для его работы с другими библиотеками этого модуля), это достигнуто тем, что для шины 3-Wire указана конкретная частота 10кГц, не зависимо от частоты CPU arduino.

В библиотеке реализована еще одна не обязательная функция period, принимающая в качестве единственного аргумента - количество минут (от 1 до 255)

если в течении указанного времени была вызвана функция gettime несколько раз, то запрос к модулю по шине будет отправлено только в первый раз, а ответом на все остальные запросы будет сумма времени последнего ответа модуля и времени прошедшего с этого ответа.

Функцию period достаточно вызвать один раз.

Подробное описание:

} // ОПИСАНИЯ ПАРАМЕТРОВ ФУНКЦИЙ: // // Подключение библиотеки: // #include // iarduino_RTC time(название модуля [, вывод SS/RST [, вывод CLK [, вывод DAT]]]); // если модуль работает на шине I2C или SPI, то достаточно указать 1 параметр, например: iarduino_RTC time(RTC_DS3231); // если модуль работает на шине SPI, а аппаратный вывод SS занят, то номер назначенного вывода SS для модуля указывается вторым параметром, например: iarduino_RTC time(RTC_DS1305,22); // если модуль работает на трехпроводной шине, то указываются номера всех выводов, например: iarduino_RTC time(RTC_DS1302, 1, 2, 3); // RST, CLK, DAT // // Для работы с модулями, в библиотеке реализованы 5 функции: // инициировать модуль begin(); // указать время settime(секунды [, минуты [, часы [, день [, месяц [, год [, день недели]]]]]]); // получить время gettime("строка с параметрами"); // мигать времем blinktime(0-не_мигать / 1-мигают_сек / 2-мигают_мин / 3-мигают_час / 4-мигают_дни / 5-мигают_мес / 6-мигает_год / 7-мигают_дни_недели / 8-мигает_полдень) // разгрузить шину period (минуты); // // Функция begin(): // функция инициирует модуль: проверяет регистры модуля, запускает генератор модуля и т.д. // // Функция settime(секунды [, минуты [, часы [, день [, месяц [, год [, день недели]]]]]]): // записывает время в модуль // год указывается без учёта века, в формате 0-99 // часы указываются в 24-часовом формате, от 0 до 23 // день недели указывается в виде числа от 0-воскресенье до 6-суббота // если предыдущий параметр надо оставить без изменений, то можно указать отрицательное или заведомо большее значение // пример: settime(-1, 10); установит 10 минут, а секунды, часы и дату, оставит без изменений // пример: settime(0, 5, 13); установит 13 часов, 5 минут, 0 секунд, а дату оставит без изменений // пример: settime(-1, -1, -1, 1, 10, 15); установит дату 01.10.2015 , а время и день недели оставит без изменений // // Функция gettime("строка с параметрами"): // функция получает и выводит строку заменяя описанные ниже символы на текущее время // пример: gettime("d-m-Y, H:i:s, D"); ответит строкой "01-10-2015, 14:00:05, Thu" // пример: gettime("s"); ответит строкой "05" // указанные символы идентичны символам для функции date() в PHP // s секунды от 00 до 59 (два знака) // i минуты от 00 до 59 (два знака) // h часы в 12-часовом формате от 01 до 12 (два знака) // H часы в 24-часовом формате от 00 до 23 (два знака) // d день месяца от 01 до 31 (два знака) // w день недели от 0 до 6 (один знак: 0-воскресенье, 6-суббота) // D день недели наименование от Mon до Sun (три знака: Mon Tue Wed Thu Fri Sat Sun) // m месяц от 01 до 12 (два знака) // M месяц наименование от Jan до Dec (три знака: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) // Y год от 2000 до 2099 (четыре знака) // y год от 00 до 99 (два знака) // a полдень am или pm (два знака, в нижнем регистре) // A полдень AM или PM (два знака, в верхнем регистре) // строка не должна превышать 50 символов // // если требуется получить время в виде цифр, то можно вызвать функцию gettime() без параметра, после чего получить время из переменных // seconds секунды 0-59 // minutes минуты 0-59 // hours часы 1-12 // Hours часы 0-23

— Часы реального времени. Часто встречается в KIT наборах компонентов для Arduino (arduino starter kit).

Особенности модуля:

  • Часы реального времени, календарь до 2100 года, учетом високосного года.
  • Держатель для Li-Ion батареи CR2032\CR1220 в зависимости от версии, для резервного питания.
  • Трехпроводной последовательный интерфейс.

Из недостатков стоит отметить очень плохую точность хода.

Распиновка модуля:

  • VCC и GND — Питание и масса, Напряжение питания от 2,0 В до 5,5 В. Типичное 3,3 В.
  • CLK / SCLK — Тактовый сигнал последовательного интерфейса.
  • DAT / I/O — Input/Push-Pull Output, линия данных последовательного интерфейса.
  • RST / CE — Разрешение чтения\записи.

Подключение к Arduino:

Модуль подключается на любые свободные порты arduino, питание модуля 5 вольт.

Софт:

Есть библиотека, скачать можно

После установки библиотеки открываем пример set_clock.ino

const int kCePin = 5 ; // Chip Enable const int kIoPin = 6 ; // Input/Output const int kSclkPin = 7 ; // Serial Clock

в строке с константами указываем к каким портам подключен модуль, на модуле обозначения могут отличатся и подписаны как CLK, DAT, RES, это SCLK, I/O, CE соответственно.

Итак, часы реального времени. Эта полезная штучка решает большинство полезных задач, связанных со временем. Допустим управление поливом в 5 часов утра на даче. Или включение и выключение освещения в определённый момент. По дате можно запускать отопление в каком-нибудь доме. Вещь достаточно интересная и полезная. А конкретно? Мы с вами рассмотрим часы реального времени DS1302 для популярной платформы Arduino.

Из этой статьи вы узнаете:

Доброго времени суток, уважаемые читатели блока kip-world! Как ваши дела? Напишите в комментариях, вы увлекаетесь робототехникой? Что значит для вас эта тема?

У меня ни на минуту не покидает мысль об этом. Я сплю и вижу, когда мы наконец — то придём к тому, что каждый сможет позволить себе купить персонального робота — помощника. Не важно, чем он будет заниматься, уборкой мусора, стрижкой газонов, мойкой автомобиля.

Я просто представляю себе, насколько сложные алгоритмы они должны содержать в своих «мозгах».

Ведь мы придём к тому, что мы будем так же прошивать ПО, как на персональных компах. Так же скачивать прикладные программы. Пришивать руки, ноги, менять клешни, манипуляторы.

Посмотрите фильмы «Я-робот», «Искусственный интеллект», «Звёздных воинов».

Японцы уже давно внедряют свои разработки. Чем мы хуже?? У нас очень слабая популярность. Я знаю немногих разработчиков. По пальцам пересчитать. Мы занимаемся другим. Мы перекупщики. Просто покупаем готовые наборчики, роботов — игрушек и всякую дребедень.

Почему не разрабатываем вот это:

Или вот это:

Я закончил свои размышления вслух. Давайте мы с вами поговорим о подключении Таймера часов реального времени DS1302 к Arduino.

Часы реального времени DS1302

Контроллер Arduino не имеет своих собственных часов. Поэтому в случае необходимости нужно дополнять специальной микросхемой DS1302.

По питанию эти платы могут использовать свой элемент питания, или запитываться непосредственно с платы Arduino.

Таблица распиновки:

Схема подключения c Arduino UNO:


Способ программирования Arduino для работы с DS1302

Обязательно нужно скачать действующую библиотеку из надёжных источников.

Библиотека позволяет считывать и записывать параметры реального времени. Небольшое описание я привожу ниже:

#include // Подключаем библиотеку.
iarduino_RTC ОБЪЕКТ (НАЗВАНИЕ [, ВЫВОД_RST [, ВЫВОД_CLK [, ВЫВОД_DAT ]]]); // Создаём объект.

Функция begin (); // Инициализация работы RTC модуля.

Функция settime (СЕК [, МИН [, ЧАС [, ДЕНЬ [, МЕС [, ГОД [, ДН ]]]]]]); // Установка времени.

Функция gettime ([ СТРОКА ]); // Чтение времени.

функция blinktime (ПАРАМЕТР [ ЧАСТОТА ] ); // Заставляет функцию gettime «мигать» указанным параметром времени.

функция period (МИНУТЫ ); // Указывает минимальный период обращения к модулю в минутах.

Переменная seconds // Возвращает секунды от 0 до 59.

Переменная minutes // Возвращает минуты от 0 до 59.

Переменная hours // Возвращает часы от 1 до 12.

Переменная Hours // Возвращает часы от 0 до 23.

Переменная midday // Возвращает полдень 0 или 1 (0-am, 1-pm).

Переменная day // Возвращает день месяца от 1 до 31.

Переменная weekday // Возвращает день недели от 0 до 6 (0-воскресенье, 6-суббота).

Переменная month // Возвращает месяц от 1 до 12.

Переменная year // Возвращает год от 0 до 99.

Пишем простенькую программу. Установка текущего времени в RTC модуль (DS1302):

Arduino

#include iarduino_RTC time(RTC_DS1302,6,7,8); void setup() { delay(300); Serial.begin(9600); time.begin(); time.settime(0,51,21,27,10,15,2); // 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник } void loop(){ if(millis()%1000==0){ // если прошла 1 секунда Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс } }

#include

iarduino _ RTCtime (RTC_DS1302 , 6 , 7 , 8 ) ;

void setup () {

delay (300 ) ;

Serial . begin (9600 ) ;

time . begin () ;

time . settime (0 , 51 , 21 , 27 , 10 , 15 , 2 ) ; // 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник

void loop () {

if (millis () % 1000 == 0 ) { // если прошла 1 секунда

Serial . println (time . gettime ("d-m-Y, H:i:s, D" ) ) ; // выводим время

delay (1 ) ; // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс

Считываем текущее время с RTC модуля (DS1302) и выводим в "Последовательный порт" :

#include iarduino_RTC time(RTC_DS1302,6,7,8); void setup() { delay(300); Serial.begin(9600); time.begin(); } void loop(){ if(millis()%1000==0){ // если прошла 1 секунда Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс } }

Опубліковано 18.08.2011

– это микросхема реального времени. Она обеспечивает ход времени, даже когда основное устройство отключено от питания.

Основные характеристики:

  • – простота подключения к микроконтроллеру по трехпроводному интерфейсу.
  • – питание от 2 до 5.5 В.
  • – из внешних элементов часовой кварц 32768 Гц и батарейка резервного питания 3В (я использую RC2032). Батарейки хватает надолго, микросхема потребляет около 300 нА (нано ампер)!
  • – считает секунды, минуты, часы, день месяца, месяц, год, день недели. Учитываются високосные года. Микросхема сможет работать до 2100года. Дальше не хватит счетчика лет. Это, несомненно, опечалило меня. 🙂
  • – отображение времени в 12 или 24 часовом режимах с отображением AM или PM

Нюансы

Иногда пишут “в микросхеме есть встроенный календарь до 2100 года”. Не спешите удивляться, это всего лишь означает, что подсчет времени ведется с учетом високосных лет. И все! На самом деле даже день недели надо устанавливать. Т.е. день недели не определяется по установленной дате. День недели работает как простой счетчик и переключается в полночь. Но с другой стороны, это очень удобно. Ведь в Восточной Европе принято считать первый день недели понедельник, а на западе первый день недели – воскресенье. В данном случае микросхеме абсолютно все равно. Устанавливаем текущий день недели по собственному исчислению, а дальше он будет изменяться каждую полночь.

Подключение к МК

Распиновка микросхемы:

Подключение к микроконтроллеру:

взяты с документации, которую можно скачать здесь:

Библиотека для GCC WinAVR

Честно говоря, сразу я хотел не заморачиваться и использовать уже готовую библиотеку. Так и сделал, скачал даже две. Одну написал русский программист, а вторую иностранец. Обе не работали должным образом. В первом случае почему-то не выставлялся день больше магического 7 дня месяца, ну конечно, о 12 часовом режиме в России никогда не слышали, а буковки AM PM, для нас славян, чужды и не понятны. Во втором случае… уже догадались? Да! Иностранцы не учли, что где то на планете коварные нации исчисляют время до 24 часов!!! Вдобавок, год записывал (соответственно и считывал) не правильно. Т.е. оно конечно как то работает, но в следующем году вылезут все баги. Плюнул, написал свою простую библиотеку.

Перед тем как использовать библиотеку, откроем файл
В нем правим только эти параметры:

#define DS1302_E 0 #define DS1302_SCLK 1 #define DS1302_IO 2 #define DS1302_DDR_RTC DDRC #define DS1302_PORT_RTC PORTC #define DS1302_PIN_RTC PINC

Т.е. описываем к каким ногам и к какому порту подключена наша .

Обратите внимание, что в этом же файле описана структура:

Typedef struct { uint8_t Sec; uint8_t Min; uint8_t Hour; uint8_t Month; uint8_t Day; uint8_t Year; uint8_t WeekDay; uint8_t AMPM; uint8_t H12_24; } tpDateTime; tpDateTime DateTime;

Через нее и будет выполняться взаимосвязь (запись и чтение) с .

В библиотеке всего две функции:
void DS1302_ReadDateTime();
void DS1302_WriteDateTime();

Для установки времени в микросхеме необходимо
1. В структуру DateTime задать время и режим (12 или 24 часовой)
2. Вызвать функцию DS1302_WriteDateTime();

Для чтения времени из микросхемы:
1. Вызвать функцию DS1302_ReadDateTime();
2. Читать время и режим из структуры DateTime .

Обратите внимание, что DateTime.AMPM и DateTime.H12_24 задаются следующим образом:

DateTime.AMPM = AM; или DateTime.AMPM = PM;

DateTime.H12_24 = H12; или DateTime.H12_24 = H24;

Пример использования:

#include #include #include "lcd_lib.h" #include "ds1302.h" char buffer=""; int main() { // Задаем время и параметры (AM/PM следует задавать только при H12) DateTime.Sec = 57; DateTime.Min = 59; DateTime.Hour = 11; DateTime.Month = 8; DateTime.Day = 16; DateTime.Year = 11; DateTime.WeekDay = 2; DateTime.AMPM = AM; //AM/PM DateTime.H12_24 = H12; //H12/H24 // Записываем время в микросхему ds1302 DS1302_WriteDateTime(); // Инициализация дисплея LCDinit(); LCDcursorOFF(); LCDclr(); while(1) { // Читаем время с микросхемы ds1302 DS1302_ReadDateTime(); // Выводим время и дату на дисплей sprintf(buffer, "%02i:%02i:%02i", DateTime.Hour, DateTime.Min, DateTime.Sec); LCDGotoXY(0,0); LCDstring(buffer, 8); if (DateTime.H12_24 == H12) { if (DateTime.AMPM == AM){ LCDsendChar("A"); } else { LCDsendChar("P"); } LCDsendChar("M"); } sprintf(buffer, "%02i-%02i-%02i,%i", DateTime.Day, DateTime.Month, DateTime.Year, DateTime.WeekDay); LCDGotoXY(0,1); LCDstring(buffer, 10); _delay_ms(100); } }

Внимание! В примере в следующих строках устанавливается заранее указанное время при старте микроконтроллера.

DateTime.Sec = 57; DateTime.Min = 59; DateTime.Hour = 11; DateTime.Month = 8; DateTime.Day = 16; DateTime.Year = 11; DateTime.WeekDay = 2; DateTime.AMPM = AM; //AM/PM DateTime.H12_24 = H12; //H12/H24 // Записываем время в микросхему ds1302 DS1302_WriteDateTime();

Т.е. при каждом включении питания микроконтроллер будет устанавливать одно и то же время. Если в микросхеме уже установлено время (разумеется, при подключенной батарейки), можно закомментировать функцию DS1302_WriteDateTime(); скомпилировать и прошить микроконтроллер новой прошивкой. После чего он будет только читать время из микросхемы.

setTime(hour, min, sec);
Установка времени.
Параметры:
hour: Часы (0-23)
min: Минуты (0-59)
sec: Секунды (0-59)
Пример: rtc.setTime(23, 59, 59); // Установка времени 23:59:59
Примечание: Установка времени сбрасывает флаг CH (Clock Halt).

setDate(date, mon, year);
Установка даты.
Параметры:
date: День (1-31)
mon: Месяц (1-12)
year : Год (2000-2099)
Пример: rtc.setDate(6, 8, 2015); // Установка даты 6 августа 2015г.
Примечание: Защиты от ввода неправильной даты нет. Т.е., возможно ввести 31 февраля, но результат будет не предсказуем

setDOW(dow);
Установка дня недели.
Параметры:
dow: День недели (1-7)
Пример: rtc.setDOW(FRIDAY); // Установить день недели - Пятница
Примечание: Устанавливаются от понедельника (1) до воскресенья (7).

getTimeStr();
Считать текущее время в виде строковой переменной.
Параметры :
format: <необязательный параметр>
FORMAT_LONG "ЧЧ:ММ:СС" (По умолчанию)
FORMAT_SHORT "ЧЧ:ММ"
Пример: Serial.print(rtc.getTimeStr()); // Отправить текущее время через последовательный порт

getDateStr(]]);
Считать текущую дату в виде строковой переменной.
Параметры:
slformat: <необязательный параметр>
FORMAT_LONG Год из 4х цифр (ГГГГ) (По умолчанию)
FORMAT_SHORT Год из 2х цифр (ГГ)
eformat: <необязательный параметр>
FORMAT_LITTLEENDIAN "ДД.ММ.ГГГГ" (По умолчанию)
FORMAT_BIGENDIAN "ГГГГ.ММ.ДД"
FORMAT_MIDDLEENDIAN "ММ.ДД.ГГГГ"
divider: <необязательный параметр>
Символ для разделения. По умолчанию "."
Пример: Serial.print(rtc.getDateStr()); // Отправить текущую дату через последовательный порт (В формате "ДД.ММ.ГГГГ")

getDOWStr();
Считать текущий день недели в виде строковой переменной.
Параметры:
format: <необязательный параметр>
FORMAT_LONG День недели на английском языке (По умолчанию)
FORMAT_SHORT Сокращенное название дня недели на английском языке (3 символа)
Пример: Serial.print(rtc.getDOWStr(FORMAT_SHORT)); // Отправить сокращенное название текущего дня недели через последовательный порт

getMonthStr();
Считать текущий месяц в виде строковой переменной.
Параметры:
format: <необязательный параметр>
FORMAT_LONG название месяца на английском языке (По умолчанию)
FORMAT_SHORT Сокращенное название месяца на английском языке (3 символа)
Пример: Serial.print(rtc.getMonthStr()); // Отправить название текущего месяца через последовательный порт

halt(value);
Управление флагом СН (запуск-останов часов).
Параметры:
value:
true: Установить флаг CH
false: очистить флаг CH
Пример: rtc.halt (истина); // Установить флаг CH
Примечания: Когда флаг установлен, тактовый генератор
останавливается и DS1302 находится в режиме ожидания с низким энергопотреблением с током менее 100nA. Если флаг сбрасывается, часы начинают отсчет времени.

writeProtect(enable);
Установка или сброс WP-бита.
Параметры:
enable:
true: Установить WP-бит
false: Сбросить WP бит
Пример: rtc.writeProtect(false); // Сбросить WP-бит
Примечание: WP: (Write-Protect) бит. Блокирует запись информации в DS1302

setTCR(value);
Установка режима trickle charge (заряд малым током).
Параметры:
value: определенные литералы, обозначающие количество диодов и сопротивлений для зарядки.
Пример: rtc.setTCR(TCR_D1R4K); // Задан режим trickle charge 1 диод и резистор сопротивлением 4кОм.
Примечание: Литералы имеют вид TCR_DxRyK где х число диодов (1 или 2), а у - используемое сопротивление (2, 4 или 8 кОм). TCR_OFF отключает фунцию подзарядки.

writeBuffer(buffer);
Запись информации в ОЗУ DS1302.
Параметры:
buffer: DS1302_RAM буфер
Пример: rtc.writebuffer(ramBuffer); // Записать 31 байт из переменной ramBuffer в ОЗУ DS1302

readBuffer();
Чтение информации из ОЗУ DS1302.
Параметры: Нет
Пример: ramBuffer=rtc.readBuffer(); // Прочитать все 31 байт из ОЗУ DS1302 в переменную ramBuffer

poke(address, value);
Запись одного байта в ОЗУ DS1302.
Параметры:
address: адрес для записи (0-30)
value: число для записи по адресу

(0-255)
Пример: rtc.poke(15, 160); // Записать число 160 по адресу 15

peek(address);
Чтение одного байта из ОЗУ DS1302.
Параметры:
address: адрес для чтения (0-30)
Пример: b=rtc.peek(18); // Считать 1 байт по адресу 18 в переменную b

Понравилась статья? Поделитесь ей
Наверх