Ejemplo n.º 1
0
// write to an address
void I2Cwrite(char addr, char subaddr, char value)
{
	char tmp;
	i2c_start();
	tmp = send_i2c_byte(addr);
	tmp = send_i2c_byte(subaddr);
	tmp = send_i2c_byte(value);
	reset_i2c_bus();
}
Ejemplo n.º 2
0
//read from an address
char I2Cread(char addr, char subaddr)
{
	char temp;
	i2c_start();
	send_i2c_byte(addr);
	send_i2c_byte(subaddr);
	microcontroller_delay_us(10);
	i2c_restart();
	send_i2c_byte(addr | 0x01);
	temp = i2c_read_byte();
	reset_i2c_bus();
	return temp;
}
Ejemplo n.º 3
0
/*
 * Function: firmwareTest()
 * --------------------
 *  
 * Requests the firmare version from si7020. Function used to test i2c communication.
 *  
 */
void firmwareTest() {
    i2c_start();
    send_i2c_byte(0x80); // address +0 write
    send_i2c_byte(0x84); /// FIRMWARE!!!!!!!!!
    send_i2c_byte(0xB8); /// FIRMWARE!!!!!!!!!
    //0x84 =0b10000100
    //0xB8 =0b10111000
    i2c_start(); /// FIRMWARE!!!!!!!!!
    send_i2c_byte(0x81); /// FIRMWARE!!!!!!!!!
    //  cc3=i2c_read();

    // i2c_stop();
}
Ejemplo n.º 4
0
/*
 * Function:  measureRH()
 * --------------------
 * Used to send the RH measurement command and read the result 
 */
void measureRH() {
    i2c_start();
    send_i2c_byte(SI7020ADR_W); // address +0 write
    send_i2c_byte(MEASURE_HUM_HOLD_CMD); //0xE5 =0b11100101 
    i2c_repeatedStart();
    send_i2c_byte(SI7020ADR_R); //adresss +1 read
    i2c_mIdleI2C1();
    hhLSB = i2c_read_ack();
    i2c_ack();
    i2c_mIdleI2C1();
    i2c_ack();
    hhMSB = i2c_read_ack();
    i2c_mIdleI2C1(); /////////////////////// maybe?
    i2c_nack();
    i2c_stop();

    humidityCode.b[0] = hhLSB;
    humidityCode.b[1] = hhMSB;
}
Ejemplo n.º 5
0
/*
 * Function:  measureT()
 * --------------------
 * Used to send the temperature measurement command and read the result 
 */
void measureT() {
    i2c_start();
    send_i2c_byte(SI7020ADR_W); // address +0 write
    send_i2c_byte(MEASURE_TEMP_HOLD_CMD); //0xE3 =0b11100011
    i2c_repeatedStart();
    //i2c_start(); 
    send_i2c_byte(SI7020ADR_R); //adresss +1 read
    i2c_mIdleI2C1();
    ttLSB = i2c_read_ack();
    i2c_ack();
    i2c_mIdleI2C1();
    i2c_ack();
    ttMSB = i2c_read_ack();
    i2c_mIdleI2C1(); /////////////////////// maybe?
    i2c_nack();
    i2c_stop();
 
    temperatureCode.b[0] = ttLSB;
    temperatureCode.b[1] = ttMSB;
}
Ejemplo n.º 6
0
/*
 * Function:  getLastTemp()
 * --------------------
 * Used to retrieve last temperature measurement, idea is to save some time on 
 * conversion-> because SI7020 does relative humidity(RH) measurement it also measures 
 * temperature. 
 */
void getLastTemp() {
    i2c_start();
    send_i2c_byte(SI7020ADR_W); // address +0 write
    send_i2c_byte(READ_LAST_TEMP_CMD);
    i2c_repeatedStart();
    //i2c_start();  
    send_i2c_byte(SI7020ADR_R); //adresss +1 read
    i2c_mIdleI2C1();
    ttLSB = i2c_read_ack();
    i2c_ack();
    i2c_mIdleI2C1();
    i2c_ack();
    ttMSB = i2c_read_ack();
    i2c_mIdleI2C1(); /////////////////////// maybe?
    i2c_nack();
    i2c_stop();

    temperatureCode.b[0] = ttLSB;
    temperatureCode.b[1] = ttMSB;
}