• 締切済み

PIC24FでI2C

PIC24FでRTCを制御するためのI2C通信がうまくいかず困っています。 そこでSDA/SCLから信号が出ているかのみを確認するため 下記のようなプログラムをPICに書込みました。 (STARTの出力のみ) 当方オシロを持っていませんので汎用のテスタでSDA/SCL電圧の一時的な変化を読み取ろうと試みましたが全く電圧の変化はありません。 #include "p24FJ64GA002.h" _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx1& FWDTEN_OFF ) _CONFIG2( IESO_ON & FNOSC_FRC & FCKSM_CSDCMD & OSCIOFNC_OFF & IOL1WAY_ON & I2C1SEL_SEC & POSCMOD_NONE) int main(void) { AD1PCFG = 0xffff; CLKDIV = 0; TRISA = 0xFFE3; TRISB = 0x006F; LATB = 0x0010; CNPU1 = 0x003C; /// I2Cの初期設定 I2C1BRG = 0x27; I2C1CON = 0x8000; I2C1RCV = 0x00; I2C1TRN = 0x00; while(1){ I2C1CONbits.SEN = 1; while(I2C1CONbits.SEN); } } 心ある方、どなたかご教示お願いいたします。

みんなの回答

  • jppy
  • ベストアンサー率14% (14/99)
回答No.1

汎用のテスタというのが非常に心配なのだが・・・ 測れてれていないのでは? もし他に使用していないI/Oポートがあれば、 H/Lを変化させ、テスターで測ってみてください。 変化がキャッチできていますか?

larini9
質問者

お礼

jppyさん、早速試してみました。 全く別のハード(PIC16F688でRTC-8564NBを制御)ですがSDA/SCLピンを汎用テスタで測定したところ、3.3V→3.1V程度まで下がることを確認できました。 いろいろ調べてみましたらPIC24FのI2Cピンは癖がありそうです。

larini9
質問者

補足

jppyさん、ありがとうございます。 I2Cのクロックが100KHz程度ですので、汎用テスタでも多少値が振れるのではと考えました。 おっしゃるとおり、他のポートで試して見ます。

関連するQ&A