Skip to content

Instantly share code, notes, and snippets.

@avr-programmierung
Created May 14, 2019 11:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save avr-programmierung/e05d10e7cda7c00c7e1bcc4cde1ce415 to your computer and use it in GitHub Desktop.
Save avr-programmierung/e05d10e7cda7c00c7e1bcc4cde1ce415 to your computer and use it in GitHub Desktop.
ATmega88 @ 1MHz EEPROM 05
/* 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