Подключение RealTimeClock (DS1302) к Arduino
В статье разобрано подключение RTC DS1302 к Arduino Pro mini. Рассмотрена библиотека для работы с DS1302 и ее корректировка в части работы с памятью (RAM) максимовской микросхемы...
Предистория: Как-то делая заказ на алиэкспрессе, "для количества" взял пару модулей RTC module на базе DS1302. Особо не задумывался об их использовании, дескать "надо будет - разберемся"... И вот настала потребность в энергонезависимом сохранении некоторого небольшого объема данных. Использовать для этого EEPROM на кристалле меги не хотелось: хоть и огромное число циклов перезаписи, но... конечное. Вспомнил про модули, полез читать даташит - о! есть что надо - больше 30 ячеек памяти.
Интерфейс у микросхемы нестандартный, самому писать лень, на сайте Ардуины библиотеки нет. Немного "почесал" интернет и нашел "приятную" маленькую библиотечку. Подключил к Pro mini (CLK - p13, DAT - p11, RST - p12), подправил под такое подключение идущий в библиотеке пример - заливаем - работает. Про заливку в Pro mini ранее писал тут. Часики идут, секунды на экране скачут, а вот про работу с RAM - ничего нигде не написано...
Предистория: Как-то делая заказ на алиэкспрессе, "для количества" взял пару модулей RTC module на базе DS1302. Особо не задумывался об их использовании, дескать "надо будет - разберемся"... И вот настала потребность в энергонезависимом сохранении некоторого небольшого объема данных. Использовать для этого EEPROM на кристалле меги не хотелось: хоть и огромное число циклов перезаписи, но... конечное. Вспомнил про модули, полез читать даташит - о! есть что надо - больше 30 ячеек памяти.
Интерфейс у микросхемы нестандартный, самому писать лень, на сайте Ардуины библиотеки нет. Немного "почесал" интернет и нашел "приятную" маленькую библиотечку. Подключил к Pro mini (CLK - p13, DAT - p11, RST - p12), подправил под такое подключение идущий в библиотеке пример - заливаем - работает. Про заливку в Pro mini ранее писал тут. Часики идут, секунды на экране скачут, а вот про работу с RAM - ничего нигде не написано...
Пришлось открывать в редакторе DS1302.h. Так и есть: автору лень было добавлять процедуры работы с памятью, ограничился предопределенными названиями рабочих регистров часов...
Добавил две функции readRAM() и writeRAM(). Подправленная библиотека лежит тут.
Дополненный скетч примера работы с модулем - тут. Там надо обратить внимание на строки в loop():
ccc = rtc.readRAM(adr);
Serial.println(ccc);
ccc ++;
rtc.writeRAM(adr, ccc); //RAM adr=0 (.. to adr=31 )
Добавил две функции readRAM() и writeRAM(). Подправленная библиотека лежит тут.
Дополненный скетч примера работы с модулем - тут. Там надо обратить внимание на строки в loop():
ccc = rtc.readRAM(adr);
Serial.println(ccc);
ccc ++;
rtc.writeRAM(adr, ccc); //RAM adr=0 (.. to adr=31 )
размещено: 9 ноября 2014 года