int main(void) { int delay; int ack, temperature; i2c1_init(TC74_CLK_FREQ); while(1) { //start event i2c1_start(); //send write addr ack = i2c1_send(ADDR_WR); //command (read temp) i2c1_send(RTR); //start event i2c1_start(); //send read addr ack += i2c1_send(ADDR_RD); //printInt10(ack); if (ack != 0) { i2c1_stop(); printStr("An error has ocurred, exiting.\n"); } else { printStr("\nReading temperature: "); temperature = i2c1_receive(I2C_NACK); i2c1_stop(); printInt10(temperature); } //delay 250ms delay = readCoreTimer(); while (readCoreTimer() - delay < 5000000); } return 0; }
int getTemperature(int *temperature){ int ack; i2c1_init(TC74_CLK_FREQ); // Send Start event i2c1_start(); // Send Address + WR (ADDR_WR) and copy return value to "ack" variable ...(see exercise 7, function main())... ack = i2c1_send(ADDR_WR); ack += i2c1_send(RTR); i2c1_start(); ack += i2c1_send(ADDR_RD); *temperature = i2c1_receive(I2C_NACK); // Send Stop event i2c1_stop(); return ack; }