INT 21h

Домашняя страница самого страшного прерывания

Прикручиваем RTC DS1302 к Raspberry Pi

№ 4937 В разделах: Программирование Электроника от February 27th, 2013,

Купил я как-то готовый RTC модуль для своих поделок. Не дочитал я до конца название модуля и заказал. Хотел DS1307, а получил DS1302 :) Без I2C и SQWE вывода он мне нафик не нужен был и я его отложил до лучших времен. И вот лучшие времена настали с покупкой Raspberry Pi. У RPi совсем нет встроенных часов и батарейки, удерживающей в памяти время. Тяжко получать постоянно время при запуске, т.к. ethernet я не использую, а чтобы подключился вайфай нужно выждать время. Естественно до подключения вайфая и получения времени с сервера в логах полный ахтунг творится. А когда NTP таки отработал еще и крон может глюкануть (и глючит), что-то запустив повторно :) И вот решил я подключить бездельный RTC модуль к своей малинке. Сначала хотел через системный драйвер это сделать, но потом подумал и не стал. Для этого пришлось бы переписывать часть драйвера, а я ленивый :) Пускай работает в userland и не пыхтит.

Первая и единственная проблема с которой я столкнулся это нежелание модуля работать. Он падла постоянно отдавал неправильные данные. Может это косяк в библиотеке WiringPi? Обратился к автору мол так и так, не работают почему-то у тебя функции shift_in и shift_out. Собственно, как и мои собственные :) gordonDrogon не поверил и решил протестировать на своем модуле (да, у него он тоже валялся без дела :) ). А вот его модуль заработал в результате чего родилось обновление для WiringPi, добавляющее работу c ds1302 :) В конце концов он сказал, что мой модуль не исправен. Я в это не поверил, т.к. при работе с модулем наблюдал хоть и глючные, но вполне логические зависимости. Решил свой код переписать под AVR mega32 и выводить время на дисплейчик. И… нифига не произошло. Все также глючило. И тут меня осенило! Провода до модуля около 20 см. Вполне возможно это на больших скоростях вызывает проблемы с уровнем напряжения на линии данных. Притянул ножку через резистор на 750 Ом к земле и вуаля! Работает хреновина!

2013-02-27 05.50.40

Как только все получилось я доработал программу от gordonDrogon (мне уже было лень свою дописывать) и начал при загрузке ОС получать время прямо с устройства и только потом синхронизироваться по NTP. Вероятность глюка снизилась в разы :)

2013-02-27 06.02.08 2013-02-27 06.02.18

Upd: от нечего делать довел собственную программу до приличного вида.

Забирайте ds1302_src.tar.lzma

Перед сборкой и использованием программы не забудьте изменить номера контактов на ваши или если просто подключите ваш модуль как я:

int PinClk=4;
int PinDat=5;
int PinRst=6;

В библиотеке нет burst чтения\записи, а также работы с ram, но зато вы ее легко приспособите под ваши нужды.

Нет комментариев »

Оставьте ваш комментарий »

Форма отправки комментария

*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?