2012年1月12日木曜日

またもや狂い始めたクォーツ時計

先のエントリで、一旦は動いたように見えたLED時計ですが、またもや狂い始めました。

ただ、今回は周囲温度の影響を強く受けたためと推測てきます。マイコンは工業規格品ですので余裕がありますが、電池と水晶振動子の動作温度範囲が0℃付近ぎりぎりとなっています。

  • 電池:エネループ -5℃~50℃
  • 水晶振動子:AB26T -10℃~60℃

このセットは、仙台市の郊外のアパートの一室に置いてあり、部屋の防寒性能が全くないため、暖房を使用しなければ外気温と同じ温度まで室温が低下します。

つい先日、仙台市中心部の最低気温が-6℃を記録しましたが、その時に電池もしくは水晶振動子に障害が発生したと考えられます。

寒冷地での使用を考慮した場合、動作温度範囲の広い部品を選定する必要があることに改めて思い至った次第です。

2012年1月10日火曜日

何となく動いたような(LED時計)

先のエントリーにあるように、CPUクロックとタイマーの駆動クロックを同一として、時計として動作させた場合に一秒のカウントが不規則に余分なカウントアップを起こす問題がありました。

マイコンチップ内部の動作状況を観測することはできませんので、あくまでも想像ですが原因としては、CPUからのタイマのレジスタ読み出しアクセスのタイミングと、タイマのレジスタが変化するタイミングがぶつかる事によって、内部のフリップフロップがメタステーブルを起こしているのではないかと考えました。

そこで、問題の起きていたソフトウェアでは、ポーリングによってタイマーの秒カウントの制御を行なっていた部分を、タイマ割り込みによって秒カウントの制御を行うように変更しました。全体の修正を行なってから未だ24時間経過して居ませんが、概ね正常にカウントしているように見えます。

2012年1月1日日曜日

謎解明の手がかり

昨日は、第81回コミックマーケットにて、冊子とデータCDを頒布させて頂きました。お買い上げいただいた皆様に感謝いたします。

また、ブースに訪問していただいた皆様並びに、近隣ブースの皆様に御礼申し上げます。


本題に入りますと、先日製作した時計のソフトウェアの問題と思われる、原因不明な時刻進みの問題があるのですが、CPUクロックと内蔵タイマーのクロックを同一として、内蔵タイマーのレジスタをポーリングさせた場合、もしかすると僅かなタイミングのズレによってメタステーブルのような状態が発生して、秒を余分にカウントしてしまうのではないかと思いつきました。

この問題に関して、正月休み中に実験してみたいと思います。

フォロワー