[][mobile][Homepage][BBS][Blog][YouTube][asablo]

過去の記事の検索が簡単にできるよ (・∀・) 例 ランチャー9
カスタム検索

PIC16F1939でI2Cを動かしてみるテスト2013/02/08 23:19:42


PIC16F1939でI2Cを動作させる

とある案件の検討中でI2Cを使って動かす事になった。暫くI2Cから離れていて、何をどうしたらいいかも忘れていた。何か進めていかねばと思い色々調べる。I2Cスレーブについては、前回I2C LCD互換を作ったが、今回はI2Cマスターの方。

Hitech PICC時代には、サンプルソースコードにI2Cが入っていたがXC8になってからはそれが見つけられなかった。Microchipのサイトを眺めても見つけられなかったので、グーグルで調べて見る。

探したら、一番私がやりたいものに近いサイトが見つかった。

このサイトのSUBVERSION リポジトリ一覧 PIC-I2C-LIBより、ソース・コードを拝借して加工。
SSP1STATなどSSP1とシンボル名が付いたレジスターはPIC16F1939はSSPにすべて置き換える。そしてこれをインクルードに追加。
外付けI2CのEEPROM(24C256)デバイスを使ってまずはテスト。



これをmain.cの先頭で書いてアクセスを確認。あっさりと動作した。これを一から作る労力は結構なもの。使わせて頂きます。作者さんに感謝。



I2C動作クロックを400KHzにするため、PIC動作が8MHzなので、
    SSPADD = 4;                // I2Cバス Baud rate,  8MHz/((SSPADD + 1)*4) = 400kHz

に変更。波形で400KHzになっている事を確認。式を変形すると、SSPADDを求める公式は、

               SSPADD=((freq/I2Cfreq)/4)-1

 8MHzで100KHzなら
  ((8MHz/0.1MHz)/4)-1 = (80/4)-1 = 20-1 = 19
 8MHzで400KHzなら
  ((8MHz/0.4MHz)/4)-1 = (20/4)-1 = 5-1 = 4

ということだ。

使用するI2Cデバイスは、EEPROMと少しちがうアクセスなので、その辺を変更していくことにしよう。

今回参考にしたサイト










Google
www Blog HP BBS


air_variableサイトをまとめて検索 
カスタム検索
[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]