Здравствуйте. Использую raspberry pi 3 b, microSD transcend 10 класса с высокой скоростью чтения/записи и возникла проблема. Установил rtc ds3231 согласно инструкции, но ИНОГДА время сбивается на 1970 год при отключении от сети. Есть подозрения что либо чтение/запись не отрабатывает корректно из за того, что что-то грузится быстрее. Делал задержку, сначала включался модуль rtc, через 5 секунд уже сама raspberry, но проблема осталась. Подскажите пожалуйста, как победить эту проблему? а то и толку то от модуля rtc нет.
Может добавить фильтр по питанию? Начать с кондеров 100 мкФ и 100нФ. Если во время отключения питания появляется бросок напряжения то могут произойти всякие непредвиденные пакости.
Я пробовал от разных источников питания, не помогает а при при включении raspberry не записывает в модуль не какой гадости?
Проблема. Когда питание МК шатается или выходит за допустимые пределы, то мк может себя аномально вести. Могут выполняться команды из разных ячеек памяти, поэтому - да, может. Решение. Есть такие штуки как мониторы (супервизоры) питания. Их подключают к выводу RST мк. При появлении намека на то что появилось/пропадает питание они вводят мк в режим перезагрузки и выводят когда напряжение стабилизировалось. Я не знаю есть ли, да и нужны ли они малине. Ваша проблема не такая частая, чтобы грешить на "случайную запись от малины". Все источники китайские? Да и не в них может быть дело. Если есть где-то в цепи индуктивность (мотор, катушка, очень длинный провод по питанию и т.п.), то резкое пропадание напряжения питания приведет к тому, что эта индуктивность сгенерирует напряжение в ответ (это связано с тем, что ток в индуктивности не может меняться скачкообразно) - это может давать сбой. Я предложил поставить кондеры по питанию к часам, чтобы отфильтровать такие скачки, т.к. на кондерах напряжение не может меняться скачкообразно.
Проблема решена. Не были установлены i2c-tools и python-smbus Заработало так: sudo su raspi-config ищем и включаем i2c reboot проверяем i2c i2cdetect –y 1 если высвечивается «command not found» подключаем raspberry pi к интернету и устанавливаем apt-get install python-smbus далее делаем apt-get install i2c-tools далее редактируем nano /etc/modules и перед строкой i2c-dev добавляем i2c-bcm2708 сохраняемся ctrl+x yes далее снова открываем nano /boot/config.txt и смотрим чтобы были прописаны такие строки: # Enable audio (loads snd _bcm2835) dtparam=audio=on dtparam=i2cl=on dtparam=i2c_arm=on сохраняемся ctrl+x yes перезагружаемся снова открываем терминал и проверяем i2c i2cdetect–y1 и если все сделали правильно, то при подключенном модуле ds3231 должна появится табличка, в которой будет видно что по i2c подключено устройство ( в табличке вас должны порадовать цифры 68 это адрес ds3231 ). На этом еще не все Открываем терминал nano В конце файла /boot/config.txt дописать строку: dtoverlay=i2c-rtc,ds3231 Удалить fake-hwclock: sudo apt-get purge fake-hwclock ( можете и отключить ) Отредактировать файл/etc/rc.local, вставив перед строкой“exit 0” строку: /sbin/hwclock -s Отредактировать файл /etc/default/hwclock and set HWCLOCKACCESS to no: HWCLOCKACCESS=no Устанавливаем время sudo su Date MMDDhhmmYYYY и нажимаем enter Записываем время в ds3231 sudo hwclock–w перезагружаемся и смотрим sudo hwclock –r ( время с ds3231) при необходимости устанавливаем свою time zone sudo dpkg-reconfigure tzdata Выключаем малинку от питания ждем минутку и включаемся , проверяем время date все должно работать Если чего не так, поправьте меня