void I2C1_INIT(S32 v_I2Cfreq_S32, U8 v_IntConfig_U8) { /*** Local variable ***/ S32 v_Fosc_S32 = 4E6; U8 v_I2CBRG_U8 = 39; // Get the Oscillator Frequency v_Fosc_S32 = GET_FreqOsc(); // Calculate BaudRate v_I2CBRG_U8 = ((F32)v_Fosc_S32/v_I2Cfreq_S32) - ((F32)v_Fosc_S32/10000000) - 1; // Configure Interrupts ConfigIntI2C1(v_IntConfig_U8); // Open I2C with specified BaudRate OpenI2C1(I2C_ON, v_I2CBRG_U8); }
void InitDisplay() { unsigned int config1 = I2C_ON | I2C_7BIT_ADD; //unsigned int config2 = 15; // Works with no pll in use unsigned int config2 = 24; delay(100); // THIS IS REQUIRED TO ALLOW THE VOLTAGE TO STABILIZE BEFORE INIT-ING THE DISPLAY ConfigIntI2C1(MI2C_INT_OFF); //Disable I2C interrupt CloseI2C1(); OpenI2C1( config1, config2); IdleI2C1(); // Assert a start condition StartI2C1(); while(_SEN); // Write the address of the slave MasterWriteI2C1(Slave); while(I2C1STATbits.TBF); //Wait till address is transmitted while(!IFS1bits.MI2C1IF); //Wait for ninth clock cycle MasterWriteI2C1(Comsend); IdleI2C1(); MasterWriteI2C1(0x38); IdleI2C1(); delay(10); MasterWriteI2C1(0x39); IdleI2C1(); delay(10); MasterWriteI2C1(0x14); IdleI2C1(); MasterWriteI2C1(0x25); IdleI2C1(); MasterWriteI2C1(0x5E); IdleI2C1(); MasterWriteI2C1(0x6D); IdleI2C1(); MasterWriteI2C1(0x0C); IdleI2C1(); MasterWriteI2C1(0x01); IdleI2C1(); MasterWriteI2C1(0x06); IdleI2C1(); delay(10); StopI2C1(); IdleI2C1(); CGRAM(); //define CGRAM StartI2C1(); MasterWriteI2C1(Slave); IdleI2C1(); MasterWriteI2C1(Comsend); IdleI2C1(); MasterWriteI2C1(0x39); IdleI2C1(); MasterWriteI2C1(0x01); //go back Home IdleI2C1(); StopI2C1(); delay(10); }