Hanna
Sourcecode Batteriemanagementsystem
eeprom_driver.h
gehe zur Dokumentation dieser Datei
1 /* This file has been prepared for Doxygen automatic documentation generation.*/
59 #ifndef EEPROM_DRIVER_H
60 #define EEPROM_DRIVER_H
61 
62 #include "compiler.h"
63 
64 //#define MAPPED_EEPROM_START 0x1000
65 #define EEPROM_PAGESIZE 32
66 #define EEPROM(_pageAddr, _byteAddr) \
67  ((uint8_t *) MAPPED_EEPROM_START)[_pageAddr*EEPROM_PAGESIZE + _byteAddr]
68 
69 /* Definitions of macros. */
70 
78 #define EEPROM_EnablePowerReduction() ( NVM.CTRLB |= NVM_EPRM_bm )
79 
84 #define EEPROM_DisablePowerReduction() ( NVM.CTRLB &= ~NVM_EPRM_bm )
85 
95 #define EEPROM_EnableMapping() ( NVM.CTRLB |= NVM_EEMAPEN_bm )
96 
102 #define EEPROM_DisableMapping() ( NVM.CTRLB &= ~NVM_EEMAPEN_bm )
103 
112 #define NVM_EXEC() asm("push r30" "\n\t" \
113  "push r31" "\n\t" \
114  "push r16" "\n\t" \
115  "push r18" "\n\t" \
116  "ldi r30, 0xCB" "\n\t" \
117  "ldi r31, 0x01" "\n\t" \
118  "ldi r16, 0xD8" "\n\t" \
119  "ldi r18, 0x01" "\n\t" \
120  "out 0x34, r16" "\n\t" \
121  "st Z, r18" "\n\t" \
122  "pop r18" "\n\t" \
123  "pop r16" "\n\t" \
124  "pop r31" "\n\t" \
125  "pop r30" "\n\t" \
126  )
127 
128 /* Prototyping of functions. */
129 void EEPROM_WriteByte ( uint8_t pageAddr, uint8_t byteAddr, uint8_t value );
130  void EEPROM_WriteBytes ( uint8_t pageAddr, uint8_t byteAddr, uint8_t len, uint32_t value );
131 uint8_t EEPROM_ReadByte ( uint8_t pageAddr, uint8_t byteAddr );
132 uint32_t EEPROM_ReadBytes ( uint8_t pageAddr, uint8_t byteAddr, uint8_t len );
133 void EEPROM_WaitForNVM ( void );
134 void EEPROM_FlushBuffer ( void );
135 void EEPROM_LoadByte ( uint8_t byteAddr, uint8_t value );
136 void EEPROM_LoadPage ( const uint8_t * values );
137 void EEPROM_AtomicWritePage ( uint8_t pageAddr );
138 void EEPROM_ErasePage ( uint8_t pageAddress );
139 void EEPROM_SplitWritePage ( uint8_t pageAddr );
140 void EEPROM_EraseAll ( void );
141 
142 void eeprom_demo ( void );
143 
144 #endif
void EEPROM_SplitWritePage(uint8_t pageAddr)
Write (without erasing) EEPROM page.
Commonly used includes, types and macros.
void EEPROM_LoadPage(const uint8_t *values)
Load entire page into temporary EEPROM page buffer.
uint8_t EEPROM_ReadByte(uint8_t pageAddr, uint8_t byteAddr)
Read one byte from EEPROM using IO mapping.
void EEPROM_AtomicWritePage(uint8_t pageAddr)
Write already loaded page into EEPROM.
void EEPROM_WriteByte(uint8_t pageAddr, uint8_t byteAddr, uint8_t value)
Write one byte to EEPROM using IO mapping.
Definition: eeprom_driver.c:72
void EEPROM_FlushBuffer(void)
Flush temporary EEPROM page buffer.
void EEPROM_ErasePage(uint8_t pageAddress)
Erase EEPROM page.
void EEPROM_WaitForNVM(void)
Wait for any NVM access to finish, including EEPROM.
void EEPROM_EraseAll(void)
Erase entire EEPROM memory.
void EEPROM_LoadByte(uint8_t byteAddr, uint8_t value)
Load single byte into temporary page buffer.