denshikobo’s blog

PICプログラミングやPCの操作で感じた日々の由無し事を綴ります

PIC_coloにDS18B20が繋がった

PIC_coloに1wire接続の温度計DS18B20(  これ↓)が繋がりました。

www.maximintegrated.com

Arduinoのonewireライブラリ(これ↓)を持ってきて、PIC_colo用に書き換えたプログラムはすんなり動いたように見えたのですが、時折読み取った計測値がffffになっています。

github.com

実はPIC用への書き換えに不備があったのですが、最初はArduinoのライブラリを疑っていました。<(_ _)>

 

何が起きているか判らないままあれこれコードを弄ってみましたが、そんたことで改善する筈もありません。Raspi上で動くオシロジ(<==以前作った)で通信波形を調べると・・・

 

0レベルを保つ時間が他より少し長くなったところで、ROM_SEARCHに失敗していることが判りました。どうやらPICが0を出力している最中に割り込みが入って、読み取りシーケンスが崩れてしまったようです。

 

タイミングがクリティカルなところに割り込みの禁止と許可をいれてみると・・・

 ビンゴ~

 

ようやく、温度計DS18B20を2回路接続することができました。

f:id:denshikobo:20180910163844p:plain

 

 後でArduinoのonewireライブラリを見直すと割り込みの禁止と許可らしきコード

が入っていました。

 

お粗末