- 締切済み
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); } } 心ある方、どなたかご教示お願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jppy
- ベストアンサー率14% (14/99)
汎用のテスタというのが非常に心配なのだが・・・ 測れてれていないのでは? もし他に使用していないI/Oポートがあれば、 H/Lを変化させ、テスターで測ってみてください。 変化がキャッチできていますか?
お礼
jppyさん、早速試してみました。 全く別のハード(PIC16F688でRTC-8564NBを制御)ですがSDA/SCLピンを汎用テスタで測定したところ、3.3V→3.1V程度まで下がることを確認できました。 いろいろ調べてみましたらPIC24FのI2Cピンは癖がありそうです。
補足
jppyさん、ありがとうございます。 I2Cのクロックが100KHz程度ですので、汎用テスタでも多少値が振れるのではと考えました。 おっしゃるとおり、他のポートで試して見ます。