Views: 2875
Классика для часов реального времени.
Назначение выводов:
Функциональная схема:
Назначение регистров:
Функция чтения данных времени из 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
Это может быть интересно
- Проект с использованием MCC часть 03Views: 1588 Первым делом перенастроим регистры конфигурации, следующим образом: Отключим выход генератора (CLKOUT function is disabled. I/O function on the CLKOUT pin) Включим сторожевой таймер (WDT enabled) После этой настройки …
- Дифференциальный терморегуляторViews: 3989 Дифференциальный терморегулятор ch-3020 Назначение. Ch-c3020 представляет собой дифференциальный терморегулятор. Основное назначение солнечные системы горячего водоснабжения, а также вентиляционные системы управление притоком свежего воздуха. Контроллер позволяет работать пяти режимах. …
- Проект с использованием MCC часть 11Views: 855 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
- Проект с использованием MCC часть 13Views: 1068 Так как используя MCC мы можем его использовать со своими библиотеками, поэтому настало время и свое создать. Для начала откроем наш заголовочный файл в нем очень много букв: По …
- Toyota Auto Fader – Модуль включения усилителяViews: 1944 Toyota Auto Fader – Модуль включения усилителя. Часто автолюбители прибегают к замене штатного головного устройства на универсальное мультимедийное, в котором значительно расширены функциональные возможности. Если возникает желание оставить …
- Acquaintance with audio-bluetooth modules F-6888 (BK3254).Views: 2178 Для проектов появилось необходимость познакомиться с недорогими модулями китайского производства, которые можно приобрести у нас в Украине и у китацев, на алиэкспрессе. Так как меня интересует не просто, …
- NS108-5050-16bit от NewstarViews: 579 Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность …
- Altium Designer my Libraries, Project templates, System settings by Catcatcat V23.09Views: 360 September 2023 component base update. Release updates V. – 23_09 added new components. Changed the structure of the database. Configuration file name – DXPPreferences1.DXPPrf. Added project CLUBBEST_50_Light. …
- CLUBBEST – reasoning on the visualization of music.Views: 131 ВІД ЗАХОДУ ДО СВІТАНКУ АБО ПОБАЧИТИ МУЗИКУ. Час доби, коли почуття людини загострюються, – це час від заходу до світанку. В цей час людина відкрита для …
- Проект с использованием MCC часть 08Views: 1045 И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, …