DS3231 на Raspberry Pi и Orange Pi без использования модуля ядра

При использовании модуля ядра у меня возникла странная проблема. Данные в RTC DS3231 записывались не совсем корректные. Например, вместо 23.09.16 было такое (подключено к ATmega328). Подозрение упало на ntpd.
15-ccNVYcdc

Пересобирать ядро не очень хотелось, накидал два скрипта для установки даты и времени в малине и записи в RTC. Всё же стоит Gentoo. Для установки даты во время загрузки надо скрипт поместить в файл /etc/local.d/rtc.start и включить local командой rc-update add local default, если ещё не включен.

#!/bin/sh
s=`i2cget -y 1 0x68 0x00`
m=`i2cget -y 1 0x68 0x01`
h=`i2cget -y 1 0x68 0x02`
D=`i2cget -y 1 0x68 0x04`
M=`i2cget -y 1 0x68 0x05`
Y=`i2cget -y 1 0x68 0x06`
date `echo "$M$D$h$m""20$Y.$s"  | sed 's/0x//g'`

Для записи данных в DS3231:

#!/bin/sh
s=`date +"%S"`
m=`date +"%M"`
h=`date +"%H"`
D=`date +"%d"`
M=`date +"%m"`
Y=`date +"%y"`
i2cset -y 1 0x68 0x00 0x$s
i2cset -y 1 0x68 0x01 0x$m
i2cset -y 1 0x68 0x02 0x$h
i2cset -y 1 0x68 0x04 0x$D
i2cset -y 1 0x68 0x05 0x$M
i2cset -y 1 0x68 0x06 0x$Y
echo "$h:$m:$s $D.$M.$Y" | sed 's/0x//g'

Температуру с датчика можно получит командой i2cget -y 0 0x68 0x11.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *