AVR Embedded Tutorial - EEPROM/de
From Lazarus wiki
Daten in den EEPROM speichern und lesen.
Vorwort
Dieser Code ist für einen Atmega328/Arduino mit 16MHz. Wie man die UART ansteuert, steht hier:
- UART UARTInit und UARTSendString(...
Daten speichern
procedure EEPROM_write(uiAddress: int16; ucData: byte);
begin
while (EECR and (1 shl EEPE)) <> 0 do begin
end;
EEAR := uiAddress;
EEDR := ucData;
EECR := EECR or (1 shl EEMPE);
EECR := EECR or (1 shl EEPE);
end;
Daten lesen
function EEPROM_read(uiAddress: int16): byte;
begin
while (EECR and (1 shl EEPE)) <> 0 do begin
end;
EEAR := uiAddress;
EECR := EECR or (1 shl EERE);
Result := EEDR;
end;
Beispiel
Als Versuch kann man nach dem ersten Hochladen und Start, die Zeile mit EEPROM_write(... ausklammern. Anschliessend nochmals hochladen. Wen man dann den Atmega vom Strom trennt und ihn wieder anschliesst, und in einem Terminal-Programm guckt, wird man sehen, das das Hello World im EEPROM gespeichert ist.
const
sz = 'Hello World';
var
i: integer;
l: byte;
s: string;
begin
UARTInit;
l := Length(sz);
// Daten ins EEPROM schreiben.
for i := 1 to l do begin
EEPROM_write(i, byte(sz[i])); // Als Versuch ausklammern.
end;
SetLength(s, l + 2);
// Daten aus dem EEPROM schreiben.
for i := 1 to l do begin
s[i] := char(EEPROM_read(i));
end;
repeat
UARTSendString(s);
UARTSendString(#13#10);
until 1 = 2;
end.
Siehe auch
- Übersichtseite AVR Embedded Tutorial/de