AVR Embedded Tutorial - EEPROM/de

From Lazarus wiki
Revision as of 21:45, 15 December 2017 by Mathias (talk | contribs) (→‎Beispiel)
Jump to navigationJump to search

Template:Translate

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