Hanna
Sourcecode Batteriemanagementsystem
eeprom.h
gehe zur Dokumentation dieser Datei
1 
13 #ifndef EEPROM_H_
14 #define EEPROM_H_
15 
16 #define EEPROM_FS_DATA_PAGE 0
17 #define AKKU_BASIS_PAGE_1 1 // Basisdaten zu den Akkus, jeweils vier Akkus auf einer Page.
18 #define AKKU_BASIS_PAGE_2 2
19 #define AKKU_DATA_PAGE_START 5 // Daten zu den 8 Akkus werden jeweils auf einer Page gespeichert.
20 
21 #define WRITE_CYCLES_BYTE 2 // Startadresse für write_cycles
22 #define PAGE_OFFSET_BYTE 1 // Startadresse für page_offset
23 #define BYTE_OFFSET_BYTE 0 // Startadresse für byte_offset
24 
25 #define AKKU_BASIS_DATA_BYTE_OFFSET 8 // Jeder Datenblock wird um 8 Byte versetzt
26 
27 #define MAX_CYCLES 100000 // Ein Datenbitspeicher im EEPROM verträgt 100.000 Schreibzyklen
28 
29 typedef struct
30 {
31 // 22 byte
32  uint8_t soh;
33  uint8_t soc;
34  uint16_t charge;
35  uint16_t c_max;
36  uint32_t betriebszeit_s;
37  uint32_t ladezeit_s;
38  uint8_t timestamp_datensatz_yy;
39  uint8_t timestamp_datensatz_mo;
40  uint8_t timestamp_datensatz_dd;
41  uint8_t timestamp_datensatz_hh;
42  uint8_t timestamp_datensatz_mi;
43  uint8_t timestamp_datensatz_ss;
44  float ladezyklen;
45 } akku_daten_t;
46 
47 typedef struct
48 {
49 // 8 byte
50  uint16_t max_kapa;
51  uint8_t inbetriebnahme_yy;
52  uint8_t inbetriebnahme_mo;
53  uint8_t inbetriebnahme_dd;
54  uint8_t inbetriebnahme_hh;
55  uint8_t inbetriebnahme_mi;
56  uint8_t inbetriebnahme_ss;
58 
59 typedef struct
60 {
61  uint32_t write_cycles; // Wie viele cycles wurden auf den aktuellen Bytes und Pages geschrieben
62  uint8_t page_offset; // Um wie viele Pages müssen die Daten verschoben werden, wenn die vorher benutzten Pages verbraucht sind
63  uint8_t byte_offset; // Um wie viele Bytes müssen die Daten verschoben werden, wenn die vorher benutzten Bytes verbraucht sind
65 
66 extern akku_daten_t eeprom_akku_daten[8];
67 extern akku_basis_daten_t eeprom_akku_basis_daten[8];
68 
69 void eeprom_read_data ( void );
70 void eeprom_write_akku_data ( void );
71 void eeprom_write_akku_basis_data ( void );
72 void eeprom_read_fs_data ( void );
73 void eeprom_write_fs_data ( void );
74 
75 void eeprom_test(void);
76 
77 #endif /* EEPROM_H_ */