17 #include <avr/interrupt.h> 29 int temp[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
30 bool tcrit_flag[8] = {
false,
false,
false,
false,
false,
false,
false,
false };
31 bool tupper_flag[8] = {
false,
false,
false,
false,
false,
false,
false,
false };
32 bool tlower_flag[8] = {
false,
false,
false,
false,
false,
false,
false,
false };
49 sendRegData[2] = MCP9843_CONF_RESET_EVENT_LSB_bm;
102 TWI_MasterInit ( &twi_TEMP_RTC, &TWI_TEMPERATUR, TWI_MASTER_INTLVL_LO_gc, TWI_BAUDSETTING );
117 for (
int i = 0; i <= 7; i++ )
187 uint16_t reg_temp = 0;
189 for (
int sensor_nr = 0; sensor_nr < 8; sensor_nr++ )
195 reg_temp = ((uint8_t) twi_TEMP_RTC.
readData[0]) << 8 | (uint8_t) twi_TEMP_RTC.
readData[1];
198 tcrit_flag[sensor_nr] =
false;
199 tupper_flag[sensor_nr] =
false;
200 tlower_flag[sensor_nr] =
false;
#define MCP9843_CONF_HYST_30_MSB_bm
bit 10-9 10 = 3.0°C
Konstanten, Filter und Commands für den Temperatursensor MCP 9843.
ISR(TWIE_TWIM_vect)
Event-PIN der Temperatursensoren wird per ISR PORTE_INT0_vect überwacht.
void mcp9843_get_data(void)
Die Daten des Temperatursensors werden ausgelesen.
#define MCP9843_TCRIT_MSB
32°C
#define MCP9843_TLOWER_LSB
0°C
#define MCP9843_TEMP_GT_TUPPER_bm
Bit 14 zeigt, ob die Temperatur über der Obergrenze TUpper liegt.
void TWI_MasterInit(TWI_Master_t *twi, TWI_t *module, TWI_MASTER_INTLVL_t intLevel, uint8_t baudRateRegisterSetting)
Initialise the TWI module.
#define MCP9843_BASE_VALUE
The LSB value (bit 0) is 0.0625 °C. Temperature (°C) = Temperature_code * 0.0625. ...
int mcp9843_calculate_value(uint16_t bitcode)
Messwert berechnen und Zweier-Komplement-Berechnung starten.
register8_t readData[TWIM_READ_BUFFER_SIZE]
#define MCP9843_CONF_INIT_TCRIT_LSB_bm
Bit0 und Bit 2 = 1 Initialisierung: Keine Locks; Events nur Tcrit; Event Active Low; Event Interrupt...
#define MCP9843_TEMPERATURE_SGN_bm
Bit 12 ist das Vorzeichenbit.
#define MCP9843_TEMP_REG
Registeradresse.
void MCP9843_init()
Einstellungen des µC für die Arbeit mit MCP9843.
Standard Header Datei, Definition der Batteriekonstanten und Grenzwerte.
TWI_Master_t twi_TEMP_RTC
TWI (I2C) Mastervariable, steuert die Register und speichert Daten.
#define MCP9843_TCRIT_LSB
32°C
XMEGA TWI master driver header file.
#define MCP9843_TCRIT_REG
Registeradresse.
#define MCP9843_BASE_ADDR
Basisadresse für I2C-Bus (7bit, ohne W/R)
#define MCP9843_TUPPER_REG
Registeradresse.
#define MCP9843_TLOWER_MSB
0°C
#define MCP9843_RESOLUTION_REG
Registeradresse.
#define MCP9843_RES_MED_bm
10 = LSB = 0.125 °C (tCONV = 130 ms typical)
#define MCP9843_TEMP_GT_TCRIT_bm
Bit 15 zeigt, ob die Temperatur über der kritischen Temperatur liegt.
#define MCP9843_TEMP_LT_TLOWER_bm
Bit 13 zeigt, ob die Temperatur unter der Untergrenze TLower liegt.
void TWI_MasterInterruptHandler(TWI_Master_t *twi)
Common TWI master interrupt service routine.
#define MCP9843_CONFIG_REG
Registeradresse.
#define MCP9843_TUPPER_LSB
30°C
bool TWI_MasterWrite(TWI_Master_t *twi, uint8_t address, uint8_t *writeData, uint8_t bytesToWrite)
TWI write transaction.
TWI master driver struct.
#define MCP9843_TEMPERATURE_FLT_bm
Temperatur ist ein 13bit-Wert,.
bool TWI_MasterRead(TWI_Master_t *twi, uint8_t address, uint8_t bytesToRead)
TWI read transaction.
void MCP9843_config(unsigned char Sensor_nummer)
Standardeinstellungen des Sensors einstellen.
void reset_Event_MCP9843(unsigned char Sensor_nummer)
Der Event Pin am MCP9843 muss manuell zurückgesetzt werden.
#define MCP9843_TUPPER_MSB
30°C
#define MCP9843_TLOWER_REG
Registeradresse.