PCF8523TのRTCモジュールできた
ブザー回路の部品届いたんでPCF8523TのRTCモジュールにピンソケットつけてOrange Pi R1につけて機能した。
CR1616電池ソケットつけるんだが電池ソケットはまだつけてない。(電池も買ってない)
CR927がついた中華DS3231モジュールは電池が数ヶ月で切れるはずで電池交換もできないが、CR1616+PCF8523Tなら10年持つ?上にソケットつけるんで電池交換できる。
CR1616電池ソケットつけるんだが電池ソケットはまだつけてない。(電池も買ってない)
CR927がついた中華DS3231モジュールは電池が数ヶ月で切れるはずで電池交換もできないが、CR1616+PCF8523Tなら10年持つ?上にソケットつけるんで電池交換できる。
回路図
PCB
CR1616電池ソケットにサイズを合わせるとPCF8523だけだと面積が余るんでEEPROM(AT24C128)つけて、
まだ余るのとOrange Pi R1のピンでI2C使う場合1,3,5,9番ピンになるが間の7番ピンがPWM1なんでパッシブブザー(4020)つけて電池切れの場合はBeep音鳴らす計画だった。
だが、Orange Pi R17番ピンがPWM1ってのは実は嘘で7番ピンにはPWM機能がない。
で、ブザーはつけたからソフトウェアで鳴らせると思ってたがとりあえず鳴らせなかった。
端子自体はテスター異常ないんで、ソフトPWMのやり方に問題があったか、ブザーが壊れてるか制御用のMOS-FETが壊れてるか、それか電流制限で17Ωブザーと直列に10Ω抵抗入れたのに問題があるか・・・
EEPROMはシャットダウン時の時刻記憶にSPIフラッシュ使わずにEEPROMに記録する。
修正起動スクリプト
/etc/init.d/S00hwclock-rtc1
DS3231は電池切れると2000年1月1日に戻りそうだったが、PCF8523は電池切れるとhwclockで読めないぽい。
最初装着した時エラーでたから回路があかんのかと思った。
PCB
CR1616電池ソケットにサイズを合わせるとPCF8523だけだと面積が余るんでEEPROM(AT24C128)つけて、
まだ余るのとOrange Pi R1のピンでI2C使う場合1,3,5,9番ピンになるが間の7番ピンがPWM1なんでパッシブブザー(4020)つけて電池切れの場合はBeep音鳴らす計画だった。
だが、Orange Pi R17番ピンがPWM1ってのは実は嘘で7番ピンにはPWM機能がない。
で、ブザーはつけたからソフトウェアで鳴らせると思ってたがとりあえず鳴らせなかった。
端子自体はテスター異常ないんで、ソフトPWMのやり方に問題があったか、ブザーが壊れてるか制御用のMOS-FETが壊れてるか、それか電流制限で17Ωブザーと直列に10Ω抵抗入れたのに問題があるか・・・
EEPROMはシャットダウン時の時刻記憶にSPIフラッシュ使わずにEEPROMに記録する。
修正起動スクリプト
/etc/init.d/S00hwclock-rtc1
#!/bin/sh
case "$1" in
start)
if [ -e /dev/rtc1 ] && hwclock -f /dev/rtc1 >/dev/null 2>&1; then
hwclock -s -f /dev/rtc1
else
if [ -e /sys/bus/i2c/devices/0-0050/eeprom ]; then
date -s "$(head -c 19 /sys/bus/i2c/devices/0-0050/eeprom)"
else
date -s "$(date -r /var/time +'%Y-%m-%d %H:%M:%S')"
fi
fi
;;
stop)
if [ -e /sys/bus/i2c/devices/0-0050/eeprom ]; then
date +'%Y-%m-%d %H:%M:%S' > /sys/bus/i2c/devices/0-0050/eeprom
else
touch /var/time
fi
if [ -e /dev/rtc1 ]; then
hwclock -w -f /dev/rtc1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
case "$1" in
start)
if [ -e /dev/rtc1 ] && hwclock -f /dev/rtc1 >/dev/null 2>&1; then
hwclock -s -f /dev/rtc1
else
if [ -e /sys/bus/i2c/devices/0-0050/eeprom ]; then
date -s "$(head -c 19 /sys/bus/i2c/devices/0-0050/eeprom)"
else
date -s "$(date -r /var/time +'%Y-%m-%d %H:%M:%S')"
fi
fi
;;
stop)
if [ -e /sys/bus/i2c/devices/0-0050/eeprom ]; then
date +'%Y-%m-%d %H:%M:%S' > /sys/bus/i2c/devices/0-0050/eeprom
else
touch /var/time
fi
if [ -e /dev/rtc1 ]; then
hwclock -w -f /dev/rtc1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
DS3231は電池切れると2000年1月1日に戻りそうだったが、PCF8523は電池切れるとhwclockで読めないぽい。
最初装着した時エラーでたから回路があかんのかと思った。