среда, 25 февраля 2015 г.

Библиотека DS1302

DS1302

описание библиотеки для использования в Arduino модуля реального времени DS1302 на русском языке







Структура:


Time;
Структура управления данными времени и даты.

Переменные: 

hour, min, sec: Для определения данных времени

date, mon, year: Для определения данных даты

dow: День недели, начиная с понедельника

Пример: Time t; // Определяем структуру с именем t класса "время"



DS1302_RAM;

Буфер для использования с ReadBuffer() и WriteBuffer().

Переменные: 

Cell[0-30]: Массив 31 байт для хранения данных для чтения или записи в ОЗУ микроконтоллера.

Пример: DS1302_RAM ramBuffer; // Объявляем буфер для дальнейшего использования


Определенные литералы:


Дни недели
Используется совместно с setDOW() и Time.dow

MONDAY:          1

TUESDAY:         2

WEDNESDAY:  3

THURSDAY:      4

FRIDAY:             5
SATURDAY:      6
SUNDAY:           7

Длина названия
Используется совместно с getTimeStr(), getDateStr(), getDOWStr() and getMonthStr()
FORMAT_SHORT: 1 (полное название)
FORMAT_LONG:  2 (сокращенное (3 буквенное) название)

Формат даты

Используется совместно с getDateStr()

FORMAT_LITTLEENDIAN:    1  (дд.мм.гггг)

FORMAT_BIGENDIAN:          2  (гггг.мм.дд)

FORMAT_MIDDLEENDIAN:  3  (мм.дд.гггг)

Формат trickle charge (заряд малым током)

Используется совместно с setTCR()

TCR_D1R2K: 165

TCR_D1R4K: 166

TCR_D1R8K: 167

TCR_D2R2K: 169
TCR_D2R4K: 170
TCR_D2R8K: 171
TCR_OFF:       92

Функции:


DS1302(CE, IO, SCLK);
Инициализация библиотеки с указанием выводов (пинов) подключения к Arduino
Параметры:
CE: CE (RST)- Ввод перезагрузки м/с DS1302 (вывод 5)
IO: I/O- Ввод-вывод данных DS1302 (вывод 6)
SCLK: вывод синхронизации (вывод 7)
Пример: DS1302 rtc(2, 3, 4); // создаем объект часов с именем rtc и указываем выводы к которым подключена DS1302

getTime();
Считать текущие данные из DS1302.
Параметры: Нет
Пример: t = rtc.getTime(); // Считать текущую дату и время.

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

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

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

getMonthStr([format]);
Считать текущий месяц в виде строковой переменной.
Параметры: 
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 : число для записи по адресу <address> (0-255)
Пример: rtc.poke(15, 160); // Записать число 160 по адресу 15

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


Upd 01.05.2022:Выложил файлы в первых комментариях к данной статье на нашем телеграмм канале. Не забудьте подписаться на канал!

Комментариев нет:

Отправить комментарий