Views: 2962
Классика для часов реального времени.
Назначение выводов:
Функциональная схема:
Назначение регистров:
Функция чтения данных времени из M41T56
void readtime (void)// чтение даты и времени
{
// char a;
// чтение даты и времени
i2c_start (0xD0,0); // загрузка адреса устройства,функция запись
i2c_write (0x00); // адрес ячейки памяти для обращения
i2c_restart (0xD0,1); // загрузка адреса устройства,функция чтение
rtcSecN=i2c_read_ack(); // чтение секунд
rtcSecN=rtcSecN&0b01111111; // преобразование секунд
rtcSecN=decbin_bin (rtcSecN);
rtcMinN=i2c_read_ack(); // чтение минут
rtcMinN=rtcMinN&0b01111111; // преобразование минут
rtcMinN=decbin_bin (rtcMinN);
rtcHourN=i2c_read_ack(); // чтение часов
rtcHourN=rtcHourN&0b00111111; // преобразование часов
rtcHourN=decbin_bin (rtcHourN);
day=i2c_read_ack(); // чтение для недели
day=day&0b00000111; // преобразование
rtcMdayN=i2c_read_ack(); // чтение даты
rtcMdayN=rtcMdayN&0b00111111; // преобразование даты
rtcMdayN=decbin_bin (rtcMdayN);
rtcMonN=i2c_read_ack(); // чтение месяца
rtcMonN=rtcMonN&0b00011111; // преобразование месяца
rtcMonN=decbin_bin (rtcMonN);
rtcYearN=i2c_read_noack(); // чтение года
rtcYearN=decbin_bin (rtcYearN); // преобразование года
i2c_stop ();
}//
Функция сохранения данных
void savetime (void)
{
i2c_start (0xD0,0); // установка адреса.
i2c_write (0x00); // адрес ячейки памяти для обращения
i2c_write (bin_decbin (rtcSecN)); // данные записи СЕКУНДЫ
i2c_write (bin_decbin (rtcMinN)); // данные записи МИНУТЫ
i2c_write (bin_decbin (rtcHourN)); // данные записи ЧАСЫ
i2c_write (day); // данные записи ДЕНЬ НЕДЕЛИ
i2c_write (bin_decbin (rtcMdayN)); // данные записи ДАТА
i2c_write (bin_decbin (rtcMonN)); // данные записи МЕСЯЦ
i2c_write (bin_decbin (rtcYearN)); // данные записи ГОД
i2c_stop ();
}//
Функции чтения и сохранения данных калибровочной константы
//калибровка часов +/- 31
void CalibrationSaveTime (char Calibration)
{
// Calibration=Calibration&0b00111111;
Calibration=Calibration|0b11000000;
i2c_start (0xD0,0); // установка адреса.
i2c_write (0x07); // адрес ячейки памяти для обращения
i2c_write (Calibration); // данные записи СЕКУНДЫ
i2c_stop ();
}
//Чтение калибровки часов +/- 31
signed char CalibrationReadTime (void)
{
char Calibration;
i2c_start (0xD0,0); // установка адреса.
i2c_write (0x07); // адрес ячейки памяти для обращения
i2c_restart (0xD0,1); // загрузка адреса устройства,функция чтение
Calibration=i2c_read_noack(); // чтение Calibration
if(!(Calibration&0b00100000))Calibration=Calibration&0b00111111;
i2c_stop ();
return Calibration;
}
Функции преобразования двоично-десятичных чисел в двоичные и обратно
// преобразование двоично-десятичного в двоичное
char decbin_bin (char data)
{
char a;
a=data>>4;
a=a*10;
data=data&0b00001111;
data+=a;
return data;
}
// преобразование двоичного в двоично-десятичное
char bin_decbin (char data)
{
char dest, edin;
dest=data%100/10;
edin=data%10;
data=edin;
data+=dest<<4;
return data;
}
Ссылка на страницу производителя ST
Это может быть интересно
CCP – модуль в режиме Compare на примере PIC18Views: 3256 CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare – позволяет …
WiFi ESP8266 – AT команды связанные с функцией Wi-FiViews: 5777 AT команды связанные с функцией Wi-Fi Функции Wi-Fi подключения, запускаться из командной строки Команда Описание 1 AT+CWMODE Проверка, настройка режима работы Wi-Fi (sta/AP/sta+AP), (не рекомендуется для новых проектов). 2 …
Сенсорный выключатель светаViews: 16533 Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида …
ESP8266 процедура получение данных даты и времени от серверов точного времени.Views: 6229 Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени, если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. …
VU Meter Tower ARTViews: 1749 Стерео индикатор уровня аудио сигнала. Компактность и удобство проектирования устройств на светодиодах WS2812B, а также легкость реализации алгоритма родило идею созданию своей конструкции. В этом проекте я предоставлю …
Контроллер управления светодиодным освещением с дистанционным управлениемViews: 2071 Все активнее светодиоды входят в нашу жизнь. Всё эффективнее становится светодиодное освещение. Всё ниже опускаются цены. Всё больше появляется возможностей получения сочных цветов, простоты в управлении. Всё чаще …
Moving average – скользящее среднееViews: 2446 Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания …
Простой цифровой вольтметр ch-c3200Views: 2645 В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип …
MPLAB® Harmony – или как это просто! Часть 4.Views: 2394 Часть четвертая – это может показаться немного сложно. Структура проекта. Для облегчения конфигурирования проекты MPLAB Harmony обычно структурированы таким образом, чтобы изолировать код, необходимый для настройки «системы», от …
Проект с использованием MCC часть 10Views: 1066 Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – …


