// PIC18 in C - Versione 0.99 - Luglio 2019 // Copyright (c) 2019, Vincenzo Villa // Creative Commons | Attribuzione - Condividi allo stesso modo 4.0 Internazionale (CC BY-SA 4.0) // Creative Commons | Attribution-Share Alike 4.0 Unported // https://www.vincenzov.net/tutorial/PIC18/i2c-mcc-k42.htm // PIC18F2xK42 / MPLAB X 5.20 / XC8 2.05 / MCC 3.85.1 // LM75A I2C temperature sensor #include "mcc_generated_files/mcc.h" #include "LM75A.h" float ReadTemperatureLM75Af() { temperature_t Temperature; Temperature.u = i2c2_read2ByteRegister(LM75A_ADDR, LM75A_TEMP); // See Table 10.Temp register value un data scheet // Temperature.u = (0x7FF << 5); // Only for debug! -0,125 °C // Temperature.u = (0x648 << 5); // Only for debug! -55 °C // Temperature.u = (0x3f8 << 5); // Only for debug! +127 °C // NOP(); // For debug, un-comment and place breakpoint here return ( (float) Temperature.i / 256); } void PowerUpLM75(void) { i2c2_write1ByteRegister(LM75A_ADDR, LM75A_CONF, LM75_NORMAL); return; } void PowerDownLM75(void) { i2c2_write1ByteRegister(LM75A_ADDR, LM75A_CONF, LM75_SHUTDOWN); return; } int ReadTemperatureLM75A() { temperature_t Temperature; Temperature.u = i2c2_read2ByteRegister(LM75A_ADDR, LM75A_TEMP); // See Table 10.Temp register value un data scheet // Temperature.u = (0x7FF << 5); // Only for debug! -0,125 °C // Temperature.u = (0x648 << 5); // Only for debug! -55 °C // Temperature.u = (0x3f8 << 5); // Only for debug! +127 °C // NOP(); // For debug, un-comment and place breakpoint here return ((__int24) Temperature.i * 100) >> 8; // Return temperature * 100 }