Hanna
Sourcecode Batteriemanagementsystem
Funktionen | Variablen
temp_mcp9843.c-Dateireferenz

Methoden zur Initialisierung und Kommunikation über I2C mit Temperatursensor MCP 9843. Mehr ...

#include <stdio.h>
#include <stdint.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdbool.h>
#include "twi_master_driver.h"
#include "temp_mcp9843.h"
#include "BMS-Basic.h"
Include-Abhängigkeitsdiagramm für temp_mcp9843.c:

gehe zum Quellcode dieser Datei

Funktionen

 ISR (TWIE_TWIM_vect)
 Event-PIN der Temperatursensoren wird per ISR PORTE_INT0_vect überwacht. Mehr ...
 
int mcp9843_calculate_value (uint16_t bitcode)
 Messwert berechnen und Zweier-Komplement-Berechnung starten. Mehr ...
 
void MCP9843_config (unsigned char Sensor_nummer)
 Standardeinstellungen des Sensors einstellen. Mehr ...
 
void mcp9843_get_data (void)
 Die Daten des Temperatursensors werden ausgelesen. Mehr ...
 
void MCP9843_init ()
 Einstellungen des µC für die Arbeit mit MCP9843. Mehr ...
 
void reset_Event_MCP9843 (unsigned char Sensor_nummer)
 Der Event Pin am MCP9843 muss manuell zurückgesetzt werden. Mehr ...
 

Variablen

bool tcrit_flag [8] = { false, false, false, false, false, false, false, false }
 
int temp [8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
 
bool tlower_flag [8] = { false, false, false, false, false, false, false, false }
 
bool tupper_flag [8] = { false, false, false, false, false, false, false, false }
 
TWI_Master_t twi_TEMP_RTC
 TWI (I2C) Mastervariable, steuert die Register und speichert Daten.
 

Ausführliche Beschreibung

Methoden zur Initialisierung und Kommunikation über I2C mit Temperatursensor MCP 9843.

Autor
Hanna Burggraf
Datum
11.10.2015
    $Revision: 465 $
    $Date: 2016-04-02 12:42:42 +0200 (Sat, 02 Apr 2016) $

Definiert in Datei temp_mcp9843.c.

Dokumentation der Funktionen

ISR ( TWIE_TWIM_vect  )

Event-PIN der Temperatursensoren wird per ISR PORTE_INT0_vect überwacht.

ISR TWIE_TWIM_vect für den I2C-Bus auf Port E.

Definiert in Zeile 228 der Datei temp_mcp9843.c.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

int mcp9843_calculate_value ( uint16_t  bitcode)

Messwert berechnen und Zweier-Komplement-Berechnung starten.

Zweier-Komplement

Parameter
bitcodeDie 16bit-Zahl, die vom Sensor zurückgegeben wird
bitcode_filterFilter, mit dem die Zahl auf die relevante Länge gekürzt wird (z.B. 12bit gültige Stellen => 0x0FFF)
signbit_filterFilter, mit dem ermittelt wird, ob das Vorzeichenbit 1 (negativ) oder 0 (positiv) ist (z.B. 12bit gültige Stellen => 0x0800)

Messwert berechnen

Parameter
base_value
Rückgabe
Rückgabewert ist der dezimale Messwert
Zweier-Komplement berechnen
  • Erste Stelle prüfen: wenn Ziffer = 1 ist die Zahl negativ, Ziffer = 0, Zahl ist positiv.
  • Zahl ist positiv: Umrechnung vom Binärsystem ins Dezimalsystem ist bereits möglich.
  • Zahl ist negativ: Man subtrahiert 1 und negiert die einzelnen Ziffern. Die entstandene, entsprechend positive Zahl im Binärsystem rechnet man ins Dezimalsystem um.
  • Wenn negativ, ein "-" vor die Zahl setzen.
Beispiel
  • 11111101
  • 1 subtrahieren = 11111100
  • invertieren = 00000011
  • 00000011 im Dezimalsystem = 3
  • 3 negativ = -3

Definiert in Zeile 154 der Datei temp_mcp9843.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void MCP9843_config ( unsigned char  Sensor_nummer)

Standardeinstellungen des Sensors einstellen.

Parameter
Sensor_nummerDie Standardeinstellungen des Sensors werden hier konfiguriert:
  • Bit 0 und Bit 2 = 1
  • Keine Locks
  • Events werden nur für Ta >= Tcrit ausgelöst. Kein Alarm für Ta > Tupper.
  • Event Pin: Active Low
  • Event Typ: Interrupt

Definiert in Zeile 64 der Datei temp_mcp9843.c.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void mcp9843_get_data ( void  )

Die Daten des Temperatursensors werden ausgelesen.

Parameter
sensor_nrNummer des Sensors, der ausgelesen werden soll.
Rückgabe
Berechneter Temperaturwert als int16_t.
Temperatursensor auslesen
Die Daten des Temperatursensors werden ausgelesen.
  • Temperatur wird ausgefiltert und per 2er Komplement umgerechnet. Der Wert ergibt mit 0.0625 multipliziert die aktuelle Temperatur.
  • Das Flag Temperatur >= T_kritisch (Bit15) wird ermittelt und zurückgegeben.
  • Das Flag Temperatur > T_upper (Bit14) wird ermittelt und zurückgegeben.
  • Das Flag Temperatur >= T_lower (Bit13) wird ermittelt und zurückgegeben.

Definiert in Zeile 185 der Datei temp_mcp9843.c.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

void MCP9843_init ( )

Einstellungen des µC für die Arbeit mit MCP9843.

Einstellungen des µC für die Arbeit mit MCP9843.
Insbesondere Interrupts und Eingang für den Event Pin werden aktiviert.

Definiert in Zeile 100 der Datei temp_mcp9843.c.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void reset_Event_MCP9843 ( unsigned char  Sensor_nummer)

Der Event Pin am MCP9843 muss manuell zurückgesetzt werden.

Parameter
Sensor_nummerDer Event Pin am MCP9843 muss manuell zurückgesetzt werden. Standardeinstellungen und Reset-Signal werden an den MCP9843 gesendet.

Definiert in Zeile 44 der Datei temp_mcp9843.c.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft: