Solution
Solution to the assignment.
Q1
- T_LOW = 0x4B00 = 75 degrees Celsius
- T_HIGH = 0x5000 = 80 degrees Celsius
p3t1755_interrupt.h
#ifndef P3T1755_H
#define P3T1755_H
#include <MCXA153.h>
void p3t1755_init(void);
void p3t1755_set_configuration_reg(uint8_t val);
uint8_t p3t1755_get_configuration_reg(void);
float p3t1755_get_temperature(void);
uint16_t p3t1755_get_t_low(void);
uint16_t p3t1755_get_t_high(void);
#endif // P3T1755_H
p3t1755_interrupt.c
uint16_t p3t1755_get_t_low(void)
{
uint8_t data[2] = {0};
// Device address: 0b1001000 (P3T1755)
// Pointer byte: 0b00000010 (T_LOW register)
lpi2c0_read(0b1001000, 0b00000010, data, 2);
// Wait until the reading is finished
while(!lpi2c0_read_done())
{}
return ((uint16_t)(data[0]) << 8) | data[1];
}
uint16_t p3t1755_get_t_high(void)
{
uint8_t data[2] = {0};
// Device address: 0b1001000 (P3T1755)
// Pointer byte: 0b00000011 (T_HIGH register)
lpi2c0_read(0b1001000, 0b00000011, data, 2);
// Wait until the reading is finished
while(!lpi2c0_read_done())
{}
return ((uint16_t)(data[0]) << 8) | data[1];
}
Timing diagrams

