-
Habe das ganze jetzt mal versucht zu ändern.
Hier der Code.
Code:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
int main(void)
{
DDRB |= (1<<PB1); // Ausgang für LED
DDRB = ~(1<<PB0); // Eingang für Taster
PORTB |= (1<<PB0); // Pullup Einschalten
if(statusfromeeprom) // Zustand aus dem EEPROM lesen
{
DDRB |= (1<<PB1); // LED Einschalten
_delay_ms(10000) // 10 Sekunden warten
DDRB &= ~(1<<PB1); // LED ausschalten
}
while(1)
{
//Hier jetzt den Taster abfragen:
if(PINB & (1<<PB0))
{
_delay_ms(5000); //5 Sekunden warten
if(PINB & (1<<PB0)) //Schauen ob der Pin immer noch High ist
{
//Wie soll ich hier den neuen Wert ins Eeprom schreiben ?
//Also neuen Status in das EEPROM schreiben
}
}
}
}
Das habe ich zum Eeprom lesen und schreiben gefunden.
Code:
// Byte aus dem EEPROM lesen
uint8_t EEPReadByte(uint16_t addr)
{
return eeprom_read_byte((uint8_t *)addr);
}
// Byte in das EEPROM schreiben
void EEPWriteByte(uint16_t addr, uint8_t val)
{
eeprom_write_byte((uint8_t *)addr, val);
}
Natürlich habe ich noch viel mehr zum Eeprom gefunden.
Nur ist es für einen Anfänger nicht gerade leicht das richtige zu finden.
Und ja, ich lese wirklich sehr sehr viel im Internet nur leider fällt es mir sehr schwer das ganze zu verstehen :(
PS: Welche Zugriffsart benötige ich bei meinem Programm?
Byte, word, dword, float oder block ?
-
Welche Zugriffsart Du benötigst, müsstest Du eigenlich wissen.
https://de.wikipedia.org/wiki/Byte
https://de.wikipedia.org/wiki/Datenwort
https://de.wikipedia.org/wiki/Gleitkommazahl
BLockread und Blockwrite nimmt man normalerweise für große Datenmengen wie ganze Dateien oder Datenströme.
Du willst doch eigenlich nur ein einzelnes Bit als Merker für den Systemzustand nutzen.
Nimm einfach das was am nächten an einem Bit dran ist.