はまったレジスタ設定の根本原因2010年01月16日 23時21分34秒

はまった話ですが、根本的な原因は二つでした。

  1. ハードウェア設計ミスでプルアップすべきポートがプルアップされていなかった
  2. SHのI2Cバス3コントローラのビット同期回路の機能の問題

Nチャネルオープンドレイン出力はプルアップしないと通信利用不可

今回はまったコントローラの出力ポートはNチャネルオープンドレイン出力になっています。Nチャネルオープンドレインの解説はこちらにお任せ。 汎用入出力ポート設定にしてもデータが出力されなかったためよくよくデータシートを見直して気付くまでに2日もかかりました。

ビット同期回路なんて今回は余計だった

コントローラ的には送信レジスタにデータを書いたらデータは出力されるもの、という考えが間違いでした。今回のコントローラは非常に用心深い賢い回路が搭載されていて、クロックマスターとして動作する場合でも自分が出力したはずのクロックをモニターして、そのクロックに同期してデータを転送する仕組みになっていたのです。

なので、プルアップされていないNチャネルオープンドレイン出力ポートのクロックはずっと0のままでデータ送信がいつまでも完了せず、送信完了割込みも発生しない、ということです。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
このブログでは「組込み」と「組み込み」のどちらを使っている?

コメント:

トラックバック

このエントリのトラックバックURL: http://kumikomi.asablo.jp/blog/2010/01/15/4836241/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。