sunlike社のi2c液晶SCG002Bというものに取り掛かってますが、
マスターはPIC12F1822を使用します。そしてMSSPによりi2cインターフェイス制御することにします。
PIC12F683の時にはソフトi2cも作り、タイミングのお勉強もしました。今回はi2cタイミングはさらっと済ませたいのでPIC12F1822でハードインターフェイスで行きます。
MSSPのセットアップは次。SCLの速度はSSP1ADDの設定値で決まるようです。デバッグ時は観測にし易さも勘案して遅めでいきます。
ーーーーーーーーーーーーーーーーーーー MSSP initialize ーーーーーーーーーーーーーーーーーーー void mssp_init(void){ /* SSP1CON1 REGISTERS */ SSP1EN = 1; //Enables Serial Port Mode SSPM3 = 1; ///////// SSPM2 = 0; //I2C Master Mode SSPM1 = 0; // clock= Fosc/(4*(SSP1ADD+1)) SSPM0 = 0; //////// /* SSPCON2 REGISTERS */ SSP1CON2 = 0x00; /* SSPCON3 REGISTERS */ SSP1CON3 = 0x00; /* SSP1STAT REGISTERS */ SMP = 1; //SPI MASTER MODE CKE = 1; //SMBus Specific Inputs Enabled //SSP1ADD = 0x19; //~75kHz //SSP1ADD = 0x13; //~100kHz //SSP1ADD = 0x07; //~400kHz SSP1ADD = 0x50; // デバッグは10KHzぐらいで }
CCSのCコンパイラをお使いの場合はi2cのサービス関数が組み込まれているようですので、以上のようなセットアップに悩むことはないと思います。
マイクロチップ社のPIC12F1822のマニュアルの237ページぐらいからi2c制御に関する詳しい説明があります。
http://ww1.microchip.com/downloads/jp/DeviceDoc/jp547368.pdf
日本語の方が読みやすいと思われる方は同一系統のPIC16F1933の日本語版マニュアルPIC16F193X_JP.pdfがお役に立つと思います。
http://www.robotsfx.com/robot/img/PIColo/PIC16F193X_JP.pdf
該当のレジスタの機能を説明しているページは267ページ以降です。
なおnobchaの電子回路日記のホームページでもi2c関連を扱っております。下記ポータルページで左側選択部「実験用チップス(アイデア)」から入って、一覧表、6番目(マスター)、8番目(スレーブ)がi2cに関する実験報告です。「PIC12F1822,PIC16F1823/1827/1933」の実験報告の中でも液晶表示、RTC制御でi2c制御を行った実験例をいくつか掲載しております。
http://chitose6thplant.web.fc2.com/
PICでi2cを取り組む際の刊行物での参考書は次があります。