Renesas Synergy™

FAQ 1006746 : uPD780034AYでマニュアルのフローを以下のようにプログラムしたが、 ストップ・コンディションを検出できない。

    PM3.2 = 1;           /* 兼用ポートの設定 */
    PM3.3 = 1;
    P3.2= 0;
    P3.3= 0;

    IICCL0.3 = 0;        /* 動作モードの設定 */
    IICCL0.2 = 0;
    IICCL0.0 = 0;
    IICE0 = 1;           /* I2C制御レジスタ0の設定 */
    WTIM0 = 1;           /* 割り込みタイミング設定 */

    PM3.2 = 0;
    PM3.3 = 0;

    SPT0 = 1;            /* ストップ・コンディション生成 */
    while (SPD0 != 1) {  /* ストップ・コンディション検出 */
    }

兼用ポートの設定をビット操作されているのが原因です。
P3.3=0; とされたときに P3.2 の状態が外部端子の状態 (入力ポートでプルアップされているので 1 が読める) である 1 になってしまい、 SDA0端子 (P3.2) が 1 のままとなります。

このため、ストップ・コンディション (SCL0端子が 1のときの SDA0の立ち上がりエッジ) が生成できません。
ポートの設定はバイト単位で行うか、PMレジスタを出力に設定したあとで、 P3.3=0; を実行するようにしてください。

FAQ共通項目の ビット操作の注意点 もご参照ください。

適用製品

UPD78003xA
他にご質問がございましたら、リクエストを送信してください