Visits: 2832
Классика для часов реального времени.
Назначение выводов:
Функциональная схема:
Назначение регистров:
Функция чтения данных времени из 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
Это может быть интересно
- Стабилизатор тока для светодиодов SN3350Visits: 2572 SN3350 ближайший аналог ZXLD1350 Как собрать готовый вариант, читайте во второй части – http://catcatcat.d-lan.dp.ua/stabilizator-toka-na-sn3350-chast-2/ 40V драйвер светодиодов с внутренним ключом SN3350 – импульсный понижающий преобразователь, разработанный для того, чтобы эффективно управлять одним или …
- ch-светомузыка и AK4113Visits: 1250 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …
- PIC18 – System ArbitrationVisits: 541 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …
- Сенсорный выключатель светаVisits: 10101 Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида …
- Униполярный шаговый двигатель – часть 2Visits: 762 В этой части только итог и версия 2.0 универсальной, которая позволяет управлять шаговым двигателем во всех трех режимах и 3.0 специальной библиотеки только для одного полушагового режима. В …
- Проект с использованием MCC часть 16Visits: 1033 Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код if(EUSART_DataReady) // проверим флаг готовности данных …
- NeoPixel LED и PIC18Visits: 1635 Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, …
- Altium Designer my setup system and project structure V23.3Visits: 121 Оновлення бази даних та шаблонів від березня 2023 року. Updating the database and templates from March 2023. Altium Designer my Libraries, Project templates, System settings by Catcatcat. Дивись …
- Емкостной сенсорVisits: 2948 Изучаем изготовление емкостных сенсоров на PIC-микроконтроллере. Конструкция емкостных сенсоров имеет вид: Емкостные сенсоры строятся по схеме высокочастотного генератора, сам принцип основан на измерение частоты этого генератора. Частота зависит …
- Analog-to-Digital Converter with Computation Technical BriefVisits: 1208 Аналого-цифровой преобразователь с вычислительным модулем. ВВЕДЕНИЕ Аналого-цифровой преобразователь (ADC) с вычислительным модулем (ADC2) в 8-разрядном микроконтроллере Microchip имеет встроенные вычислительные функции, которые обеспечивают функции пост-обработки, такие как передискретизация, …