トップページ > dsPIC入門 > dsPICでI2C(8)
//********************************************************************
//I2CでEEPROM書き込みテスト @dsPIC30F4012
//********************************************************************
//********************************************************************
//ヘッダファイル
#include "p30f4012.h"
#include "uart.h"
//********************************************************************
//コンフィギュレーション
_FOSC(CSW_FSCM_OFF & XT_PLL8); //10MHzセラロックを使っているのでクロックは80MHz。
_FWDT(WDT_OFF);
_FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_EN);
_FGS(CODE_PROT_OFF);
//********************************************************************
//UARTの設定パラメータ
unsigned int config1 = UART_EN & UART_IDLE_CON & UART_ALTRX_ALTTX & UART_NO_PAR_8BIT & UART_1STOPBIT
& UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD;
unsigned int config2 = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL & UART_TX_ENABLE & UART_INT_RX_CHAR
& UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;
//********************************************************************
//メイン関数
int main(void)
{
OpenUART1(config1,config2,10);
putsUART1("\n\rSTART!!\n\r");
//ポートの設定、I2Cの設定
TRISE = 0x00;
PORTE = 0x00;
init_I2C();
//EEP-ROMへデータを書き込む(テストとして、0番地に0x55を書き込む)
EEPROM_write(0x0000,0x55);
//EEP-ROMのデータを読み込み、LEDへ表示
PORTE = EEPROM_read(0x0000);
while(1);
}
“phase1”、“phase2”・・・というのは、書き込み関数と読み出し関数内で正常にROMからACKが返ってくるたびに送信されます。 もしとこかのphaseで止まっている場合は、そこで不具合が生じているとわかります。