ATmega88 @ 1MHz EEPROM 05
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eeprom_05.c ATmega88 @ 1MHz */ | |
#include <avr/io.h> | |
#include <avr/eeprom.h> | |
void EEPROM_write(uint16_t ee_address, uint8_t ee_data) | |
{ | |
while (EECR & (1<<EEPE)); // Schreibbereitschaft abwarten | |
EECR &= ~((1<<EEPM1) & (1<<EEPM0)); // Löschen und Schreiben in einem Durchgang | |
EEAR = ee_address; // Speicheradresse an das Adressregister übergeben | |
EEDR = ee_data; // Daten an das Datenregister übergeben | |
EECR |= (1<<EEMPE); // Set Master Programm Enable | |
EECR |= (1<<EEPE); // Schreibvorgang auslösen | |
} | |
uint8_t EEPROM_read(uint16_t ee_address) | |
{ | |
while (EECR & (1<<EEPE)); // Lesebereitschaft abwarten | |
EEAR = ee_address; // Leseadresse an das Adressregister übergeben | |
EECR |= (1<<EERE); // Lesevorgang auslösen | |
return EEDR; // Daten an die aufrufende Funktion zurückgeben | |
} | |
uint8_t x,y,z; | |
int main(void) | |
{ | |
EEPROM_write(1,5); // Schreibe an die Adresse 1 den Wert 5 | |
EEPROM_write(2,8); // Schreibe an die Adresse 2 den Wert 8 | |
EEPROM_write(5,15); // Schreibe an die Adresse 5 den Wert 15 | |
x = EEPROM_read(1); // Lese den Inhalt von Adresse 1 und speichere in x | |
y = EEPROM_read(2); // Lese den Inhalt von Adresse 2 und speichere in y | |
z = EEPROM_read(5); // Lese den Inhalt von Adresse 5 und speichere in z | |
while(1) | |
{ | |
asm ("NOP"); // Nichts tun | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment