人気ブログランキング | 話題のタグを見る

OceanBlue


リーフタンクでクイーンエンゼルのペアリング
by masaX
最新の記事
2023年捕獲群 記録
at 2023-04-14 22:01
2023年群入居
at 2023-04-14 21:56
シュワルベ ワンをチューブレス化
at 2022-12-25 17:20
ずんぐりむっくり
at 2021-08-29 10:08
コンチネンタル GP5000..
at 2021-06-19 15:15
コンチネンタル GP5000..
at 2021-06-02 10:08
コンチネンタル GP5000..
at 2021-06-01 08:22
カテゴリ
外部リンク
フォロー中のブログ
検索
以前の記事
2023年 04月
2022年 12月
2021年 08月
2021年 06月
2021年 05月
2021年 04月
2021年 03月
2021年 02月
2021年 01月
2020年 11月
2020年 08月
2020年 07月
2020年 05月
2020年 03月
2020年 02月
2020年 01月
2019年 11月
2019年 10月
2019年 09月
2019年 08月
2019年 07月
2019年 06月
2019年 05月
2019年 04月
2019年 03月
2019年 01月
2018年 12月
2018年 11月
2018年 10月
2018年 09月
2018年 08月
2018年 07月
2018年 06月
2018年 05月
2018年 04月
2018年 03月
2018年 02月
2018年 01月
2017年 12月
2017年 11月
2017年 10月
2017年 09月
2017年 08月
2017年 07月
2017年 06月
2017年 05月
2017年 04月
2017年 03月
2017年 02月
2017年 01月
2016年 12月
2016年 11月
2016年 10月
2016年 09月
2016年 08月
2016年 07月
2016年 06月
2016年 05月
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 12月
2015年 11月
2015年 10月
2015年 09月
2015年 08月
2015年 07月
2015年 06月
2015年 05月
2015年 04月
2015年 03月
2015年 02月
2015年 01月
2014年 12月
2014年 11月
2014年 10月
2014年 09月
2014年 08月
2014年 07月
2014年 06月
2014年 05月
2014年 04月
2014年 03月
2014年 02月
2014年 01月
2013年 12月
2013年 11月
2013年 10月
2013年 09月
2013年 08月
2013年 07月
2013年 06月
2013年 05月
2013年 04月
2013年 03月
2013年 02月
2013年 01月
2012年 12月
2012年 11月
2012年 10月
2012年 09月
2012年 08月
2012年 07月
2012年 06月
2012年 05月
2012年 04月
2012年 03月
2012年 02月
2012年 01月
2011年 12月
2011年 11月
2011年 10月
2011年 09月
2011年 08月
2011年 07月
2011年 06月
2011年 05月
2011年 04月
2011年 03月
2011年 02月
2011年 01月
2010年 12月
2010年 11月
2010年 10月
2010年 09月
2010年 08月
2010年 07月
2010年 06月
2010年 05月
2010年 04月
2010年 03月
2010年 02月
2010年 01月
2009年 12月
2009年 11月
2009年 10月
2009年 09月
2009年 08月
2009年 07月
2009年 06月
2009年 05月
2009年 04月
2009年 03月
2009年 02月
2009年 01月
2008年 12月
2008年 11月
2008年 10月
2008年 09月
2008年 08月
2008年 07月
2008年 06月
2008年 05月
2008年 04月
2008年 03月
2008年 02月
2008年 01月
2007年 12月
2007年 11月
2007年 10月
2007年 09月
2000年 01月
その他のジャンル

クリスタルの異常発振??

只今作成中のミツバチの巣箱の重量を測定して記録していく重量計ですが


乾電池の1.5Vからの昇圧もなんとなく上手くいけそうな感じになり


SDカードへの書き込みも無事にできるようになり


データ書き込みのプログラムもまとまり


完成を見据えて、ケースを作製する材料のアクリル板もオーダーしたところで思わぬ不具合が・・・・


この重量計には巣箱の重量を測定して表示するだけではなく、測定した値をその巣箱ごとに記録していく機能を付けているけれども、この重量のデータを残していく上で重要なのが日時のデータなので、回路の中には日時を刻む時計の機能もある。


しかし、この時計の機能に不具合が・・・・


どんな不具合かと言うと


この時計は、あくまでも時計なので、重量計のスイッチを切っていても時刻は止まらずに刻み続ける必要があるので、スイッチをOFFにしても内部の時計機能だけは動作させている。


この時計機能が、普段テストしている時は何の問題もなく正確に時刻を刻んでいるように見えたのですが、スイッチをOFFにしたまましばらく放置して再度スイッチを入れてみると、確かに時刻を刻み続けているけれども、なぜかものすごく早く時刻が進んでいる事に気付いた。


数パーセントの狂いではなく、2倍以上のスピードで進んでいる事になる狂いだった。(狂いと呼べる範囲ではない)

ひょっとして、クリスタル発振子のパルスにノイズが乗ってカウント数が大幅に増えたのか?


しかし、いつもお世話になっているO-Familyさんに相談したところ、スリープ時のノイズが影響するのは考え難いとの事だったので、プログラムをもう一度、ゆっくりと再確認してみたけれども、時刻を早く刻んでしまうような間違いは見当たらない・・・・・


いったい何が原因なのか、いろいろネットサーフィンしてみると、クリスタル発振子は「オーバートーン」という異常発振(周波数が高くなる)をする事があるらしいく、その状態になると周波数が奇数倍になるんだとか??


そう言えば・・・・・・


昨夜、異常を感じてからもう一度時刻を合わせてスイッチをOFFにしたのが夜の12時前だったけれども、今朝7時頃にスイッチONにして確認してみたところ装置が示す時刻は22時になっていた。そして帰宅してもう一度確認すると夜の8時の時点で、装置の時刻は17日の11時半。という事は20時間経過した時点で装置の時刻は55.5時間進んでる。


約3倍程度進んでる事になる・・・・・


奇数倍・・・・・
ひょっとして、オーバートーンという現象が起きてるのか??

これを確かめるのに、とりあえず、スイッチOFF時のパワーセーブからの1秒毎の復帰に合わせてLEDが点滅するようにしてみたところ、普通に1秒のピッチで点滅しているので、このオーバートーンは違う・・・・・・・・


クリスタルが正常に発振してるという事はクリスタル自体でも回路の問題でも無く、残っているのはプログラムの問題だけのはずなので、プログラムの中から、時計の機能以外の部分を全て削除し、時計機能だけを残してテストしてみると、スリープ時に時刻が異様に進んでしまう症状に変わりは無い。

ここで、スリープ時の割り込みのタイミングを確認するためにもう一度、パワーセーブのすぐ後に、LEDを10msecだけ点灯させる


Powersave
Test = 1 

Waitms 10
Test = 0


↑TESTというのは、LEDを点灯させるポート


こんなコードを入れてみて、再度確認したところ、前回と同じく、LEDは正確に1秒ピッチで点滅するけれども、スリープから再起動させたところ、なぜかスリープ時の時刻が正常に進むようになった??


この前記のコードの前後も書くと


P_down:
 Powersave   'パワーセーブモードに     
 Test = 1    ’LEDを点灯  
 Waitms 10  ’10msec間点灯
 Test = 0  ’LEDを消灯  
 If Sw_power = 1 Then Goto P_down  'スイッチがが押されていなければループさせる


上記のコードはパワーセーブの状態からTimer2の1秒毎の割り込みで復帰し、すぐにスイッチの状態を確認して、スイッチが押されていなければすぐに再度スリープさせていたコードの中に、LEDを点灯させるコードを挿入している。


少し前に、LEDの点滅で1秒の割り込みを確認したとき(スリープ時には異様に時刻が進んだとき)のLEDを点灯させるコードは


Toggle Test だけだった


このコードを


Test = 1 
Waitms 10
Test = 0


こう書くことで、時刻が正確に進むようになったので、ひょっとして待ち時間を入れてやる必要が有るのか?、と O-Familyさんに尋ねてみたところ、Timer2を32.768KHzで動かす場合、マイコンの動作クロックを8MHzになると処理時間が短くなり(速く処理できる)、Timer2が仕事を完了する前にスリープに入ってしまうとの事でした。


そんなところで、動作クロックを8MHzにするなら、スリープ復帰から再度スリープに入る間に10~30μsecの待ち時間を入れるべきだとアドバイスを頂きました。


そこで、上記のプログラムのLEDの点滅のコードの代わりに、Waitus などの待ち時間を入れれば解決するんですが、よくよく考えてみれば、いつもの癖で8MHzを使っていたけれども、この重量計のプログラムには8MHzで動かさないと処理できないようなスピードを要求する仕事は無いし、そもそも省電力を望むなら8MHzで作るよりも1MHzにするべきじゃないか??、と考えを改め、1MHzでプログラムを組み直した。


そして、スリープ時にも無事に時刻を刻んでくれるようになりました。


O-Familyさん、今回もありがとうございました。



電気には、まだまだ分からない事が多過ぎる・・・・・(笑)



by masax7790 | 2015-04-17 11:22 | AVRマイコン関連
<< 巣箱の改良 分蜂間近 >>