ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

今日もPICにハメられた...orz

2013年06月28日 23時31分36秒 | PIC
今日は、ノイズを加えて3分間待つのだよ。
と言う簡単なお仕事を2,30回こなしたあと、
やっと本来のPICのコーディングに戻れました。

いつもの様に修正を加えてビルド、PICkit2での書き込み、
あれ、動作がおかしい。
おかしくなるような修正したはずはないのに、
と思って、修正したところを元に戻しました。

でも、まだ動作がおかしいのです。
よく見ると、シリアル通信で、ACKを返していません。

コマンドを読み込んだら、ACKを返すはずなのに
と思って、通過ポイントをチェックしてみると
どうやら、受信データがエラーになっています。

試しに、受信したデータをそのまま送信するように
コードを追加してみると....

なんと、1ビットの長さが114μsになっています。
9600ボーなので、104μsになっていないといけない。
目で見ただけで、長くなっているのが分かるほどです。

逆算してクロックの周波数を計算すると、7.3MHzです。
本来の8MHzに比べて8%も低いのです。

これはどう考えてもおかしい。
普通に書き込みをしただけなのに。

ひょっとして、周波数校正したデータを書き換えてしまった?
ところが、このPIC16F687にはそういうものがありません。
クロックは校正され、それからずらすためのOSCTUNEと言う
レジスタは有るみたいですが、起動時は0になっています。

念のため、OSCTUNE = 0; を入れてやっていましたが
変わりませんでした。
代わりに、初期値として10を入れると、動作が正常になりました。

と言うことは、何らかの原因で、ユーザから操作できないレジスタが
書き換わって、周波数がずれてしまったのかも知れません。

ツイッターで聞いてみたら、PICkit3のバグで書き換わることが有ったそうです。
えー、そんなの怖くて量産で使えないじゃん!
って言ったら、PICkitは量産用のツールじゃ無いとのこと。

なーんだ、そうなのか。





って、そう言う問題じゃないって。


いずれにしても、気持ちが悪いので、
基板から外して調べてみる必要がありますね。
それと、新しいのを貼り付けたらどうなるのか。

んー、どうも最近PICに振り回され続けています。

最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
えー (ikkei)
2013-06-29 00:51:41
校正値を破壊されたデバイスは復元不可能だって。
https://twitter.com/felis_silv/status/134677030288625664
酷い話だ。
返信する

コメントを投稿