Difference between revisions of "AVR Embedded Tutorial - EEPROM/de"

From Free Pascal wiki
(Created page with "{{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: * AVR...")
 
(Beispiel)
Line 36: Line 36:
  
 
== Beispiel ==
 
== 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.
 +
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
const
 
const
Line 49: Line 53:
 
   l := Length(sz);
 
   l := Length(sz);
  
 +
  // Daten ins EEPROM schreiben.
 
   for i := 1 to l do begin
 
   for i := 1 to l do begin
     //    EEPROM_write(i, byte(sz[i]));
+
     EEPROM_write(i, byte(sz[i])); // Als Versuch ausklammern.
 
   end;
 
   end;
  
 
   SetLength(s, l + 2);
 
   SetLength(s, l + 2);
 +
  // Daten aus dem EEPROM schreiben.
 
   for i := 1 to l do begin
 
   for i := 1 to l do begin
 
     s[i] := char(EEPROM_read(i));
 
     s[i] := char(EEPROM_read(i));
 
   end;
 
   end;
  s[l + 1] := ' ';
 
  s[l + 2] := ' ';
 
  
 
   repeat
 
   repeat
 
     UARTSendString(s);
 
     UARTSendString(s);
 +
    UARTSendString(#13#10);
 
   until 1 = 2;
 
   until 1 = 2;
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
== Siehe auch ==
 
== Siehe auch ==

Revision as of 21:45, 15 December 2017

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