【dsPIC30F3012】I2Cが使えない件←解決

2021年2月21日

■ストロベリーリナックスのI2CLCDをdsPIC30F3012で動かしてみました。
あとはPIC24F64GA002で作ったプログラムを移植するだけ・・・と思いきや
SCL、SDAピンがプルアップされたまま全然出力されない。。。
dsPIC30F2012では動作するのに、dsPIC30F3012ではなぜ・・・

dsPIC30F3012のピン配置

各種PICマイコンのピン配置

ターゲットSCLピンSDAピン
PIC24FJ64GA002TDO/RP9/CN21/PMD3/RB9TCK/RP8/CN22/PMD4/RB8
dsPIC30F2012PGD/EMUD/U1TX/SDO1/RF3PGC/EMUC/U1RX/SDI1/RF2
dsPIC30F3012PGD/EMUD/AN4/U1TX/SDO1/CN6/RF4PGC/EMUC/AN5/U1RX/SDI1/CN7/RF5

dsPIC30F3012だけアナログと兼用みたいです。
データーシートのpage58にデフォルトデフォルトアナログ入力的な記述があります。
アナログ入力orディジタルI/Oの切り替え機能を設定できるADPCFGレジスタにて
SCL、SDApinをディジタルIOに設定することで無事解決しました。

設定

ADPCFG = 0xFFFF;
ex2)
ADPCFGbits.PCFG4 = 1;
ADPCFGbits.PCFG5 = 1;

よろしければバナーをクリックお願いします!