Views: 2964
Классика для часов реального времени.
Назначение выводов:
Функциональная схема:
Назначение регистров:
Функция чтения данных времени из 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
Это может быть интересно
PIC32MZ – Core Timer (библиотека)Views: 588 Переработанные файлы от Microchip, библиотека для работы с Core Timer.
Просто о внешних переменныхViews: 950 Часто возникает задача когда необходимо предавать данные между модулями программы. Например, передать данные между файлами, или управлять работой модулей. Для этого создаем заголовочный файл и описываем наши переменные как …
Система отопления на солнечных коллекторах от Дмитрия (rv3dpi)Views: 3474 Солнечные коллекторы для отопления в Европе используют в более 50% от общего количества установленных гелиосистем. Однако следует понимать, что гелиосистемы предназначены лишь для поддержки отопления и экономии затрат на основную …
Мультимедийная сеть – AVC-LAN TOYOTAViews: 5924 AVC LAN – протокол обмена данными мультимедийных систем автомобиля. Кодирование данных. При кодировании различаться три типа данных : преамбула – её назначение, это сообщение устройствам на шине, что начинается передача данных. …
REFERENCE CLOCK OUTPUT MODULEViews: 609 REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от …
MPLAB® Harmony – или как это просто! Часть 1.Views: 3885 Часть первая – Установка Гармонии. Музыкальная тема к статье, слушаем: В начале запуска нового проекта и выбора микроконтроллера стоит задача правильно его сконфигурировать, прежде чем перейти к реализации …
NeoPixel LED and PIC24Views: 781 Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все …
ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302Views: 2529 На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11 самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств …
HVLD модуль на примере PIC24FJ128GA204Views: 868 HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что …
Простой оптический сенсор приближенияОптический сенсор, назначение оптический концевик, для автоматики, бесконтактный выключатель с функцией автоматического отключения...


