(Solved)怪しい電子部品 DS18B20

スペック割れの嫌疑をかけられていた中華市場のDS18B20ですが、問題解決いたしました。
結論は、使い方のスペック割れで1Wireのスペックを満たしていないソフトウェアで利用していたことが判明しました。オリジナルのソフトウェアではリセットパルスが333uSで480uSの規格を割っていました。この問題は、おそらくシステムクロックの動作速度変更を行った段階で、1Wireのタイミング修正を行わなかったことに起因していると思われます。システムクロックの周波数からソフトウェアタイミングが自動的に算定されるようなdefineを指定することで解決されるはずですが、組み込み案件では、こうした問題で実機確認で終わりがちなので注意が必要ですね。
2016-05-07 (1)

あいにくと8952(8051)のコンパイラでフリーで使えるものにはコードサイズの生成制限などがあり、とりあえず逆アセンブルしてHEXファイルからパッチすることにしました。

当該の1WireのバスラインはAT89S52のPort1のビット0を使っているので書かれているMCUかからイメージファイルをHEX形式で吸い出して、それからD52.EXEでリバースアセンブルして二箇所の修正ポイントを割り出して、リセットパルスとタイミングパルスのコードをバイナリで修正しました。結果は解決となりました。ただしくロジアナも解釈メッセージをつけて、デバイスが応答しているのも確認とれるようになりました。
2016-05-07 (2)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください