u8 i2c_read_register(u8 mem_address, u8 *data_read) { u8 temp = 0; u8 ack = 0; u8 device_address = (IQS_ADDR << 1); u8 polling_attempt = 0; // send address ack = i2c_send_byte(device_address); #ifdef POLLING while ((ack) && (polling_attempt < POLLING_ATTEMPTS)) { i2c_wait(); i2c_wait(); i2c_start(); ack = i2c_send_byte(device_address); polling_attempt++; } #endif if (!ack) { i2c_send_byte(mem_address); i2c_repeat_start(); device_address = (IQS_ADDR << 1) | 0x01; ack = i2c_send_byte(device_address); temp = i2c_read_byte(1); (*data_read) = temp; } return ack; } Notes In order to read two Byes I need to call the function Like This:
i2c_read_register(DEBUGGING_EVENTS, &data_buffer[1], 2);
With (2) representing the Number of Bytes. But as the function stand it only takes two arguments not three.
i2c_read_byte()twice? \$\endgroup\$