Views: 2864
Классика для часов реального времени.
Назначение выводов:
Функциональная схема:
Назначение регистров:
Функция чтения данных времени из 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
Это может быть интересно
- WiFi ESP8266 – AT команды связанные с функцией Wi-FiViews: 5303 AT команды связанные с функцией Wi-Fi Функции Wi-Fi подключения, запускаться из командной строки Команда Описание 1 AT+CWMODE Проверка, настройка режима работы Wi-Fi (sta/AP/sta+AP), (не рекомендуется для новых проектов). 2 …
- Применение typedef, struct и unionViews: 8732 Полезные описания переменных Часто необходимо в памяти расположить последовательно разные виды данных, что бы потом можно было их использовать. Полезные ссылки Взято и переработано с сайта http://www.butovo.com/~zss/cpp/struct.htm http://cppstudio.com/post/9172/ …
- Цифровой спидометр для автомобиляViews: 10160 Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например, для …
- Простой сенсорный регулятор светаViews: 2319 Простой сенсорный регулятор. Проект – 2007 года. Регулятор выполнена на микроконтроллере PIC12F683 и имеет минимальное количество элементов. Выполняет стандартные функции, включение выключение света, изменение яркости, запоминание последнего установленного уровня …
- Altium Designer my setup system and project structure V23.3Views: 176 Оновлення бази даних та шаблонів від березня 2023 року. Updating the database and templates from March 2023. Altium Designer my Libraries, Project templates, System settings by Catcatcat. Дивись …
- NS108-5050-16bit от NewstarViews: 599 Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность …
- ch-светомузыка и AK4113Views: 1286 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …
- Trimax – кодирование и декодирование ИК-командViews: 2215 Первое, что надо понять назначение кнопок клавиш пульта, а также, что за кодирование реализовано в ИК- пульте. Для назначения клавиш обратимся к описанию, а для взлома кодирования воспользуемся …
- Униполярный шаговый двигательViews: 2219 В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при …
- Интерактивные LedViews: 464 Тема проекта продолжение следует…. Это может быть интересно