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
Это может быть интересно
VU Meter Tower ART – part 2Views: 1200 Проект – VU Meter Tower ART получил продолжение в своем развитии. Теперь можно заказать набор деталей из акрила для самостоятельной сборки. В проект корпуса внесено целый ряд доработок, …
LCD драйвер – UC1601sViews: 1818 http://svetomuzyka.narod.ru/project/UC1601s.html Читайте обновление на http://catcatcat.d-lan.dp.ua/?page_id=178 В данный момент можно приобрести в ООО “Гамма” несколько типов индикаторов на драйвере UC1601s. RDX0048-GC, RDX0077-GS, RDX0154-GC и RDX0120-GC выполнены по технологии COG.
Емкостной сенсорViews: 3224 Изучаем изготовление емкостных сенсоров на PIC-микроконтроллере. Конструкция емкостных сенсоров имеет вид: Емкостные сенсоры строятся по схеме высокочастотного генератора, сам принцип основан на измерение частоты этого генератора. Частота зависит …
PIC32MZ – Core Timer (библиотека)Views: 584 Переработанные файлы от Microchip, библиотека для работы с Core Timer.
ch-4050 – дифференциальный терморегуляторViews: 2080 ch-4050 – это не новая модель, это расширенная версия универсального терморегулятора ch-4000. Различия коснулись в появлении новой функции дифференциального регулирования. Это вид регулирования по разности температур измеренного двумя …
Самый простой диммер для светодиодного освещенияViews: 3202 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы …
Акриловый корпус для платы ch-4000Views: 863 Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус …
PIC18F25K42 – v. A001 – выявленные баги.Views: 806 Модуль I2C Не работает при использовании в стандартной конфигурации MCC. Требует особой нестандартной конфигурации и управления для нормальной работы. Обойти Обход проблемы возможен библиотека см статью. Модуль ADC2 На …
MCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналовViews: 812 При проектировании простых устройств автоматики, часто необходимо иметь механизм звукового оповещения. Самый верхний уровень, это формирование голосовых сообщений, но об этом, как то по позже… В самом примитивном …
Проект с использованием MCC часть 15Views: 1733 EUSART – Универсальный асинхронный приёмопередатчик (УАПП, англ. Universal Asynchronous Receiver-Transmitter, UART) — узел вычислительных устройств, предназначенный для организации связи с другими цифровыми устройствами. … читать на вики. Внесем изменения в нашу схему, …


