Difference between revisions of "AVR Embedded Tutorial - EEPROM/de"
From Lazarus wiki
Jump to navigationJump to searchLine 36: | Line 36: | ||
== Beispiel == | == Beispiel == | ||
− | + | Beispielcode, der zeigt, wie man Daten schreibt und lest. | |
− | |||
− | |||
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
const | const | ||
− | + | sc = 'Hello World !'; | |
var | var | ||
i: integer; | i: integer; | ||
− | |||
s: string; | s: string; | ||
begin | begin | ||
UARTInit; | UARTInit; | ||
− | |||
− | // | + | // String schreiben, inklusive Längenbyte. |
− | for i := | + | for i := 0 to Length(sc) do begin |
− | EEPROM_write(i, byte( | + | EEPROM_write(i, byte(sc[i])); |
end; | end; | ||
− | SetLength(s, | + | // String lesen, inklusive Längenbyte. |
− | / | + | SetLength(s, EEPROM_read(0)); // Länge auslesen. |
− | for i := 1 to | + | for i := 1 to Length(s) do begin |
+ | s[i] := char(EEPROM_read(i)); | ||
+ | end; | ||
+ | |||
+ | repeat | ||
+ | UARTSendString(s); | ||
+ | UARTSendString(#13#10); | ||
+ | until 1 = 2; | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Wen der erste Code einmal ausgeführt wurde, kann man mit dem zweiten Code gut sehen, das das '''Hello World !''' im EEPROM gespeichert ist, auch wen man den ATmega in der Zwischenzeit vom Strom getrennt wurde. | ||
+ | |||
+ | <syntaxhighlight lang="pascal"> | ||
+ | var | ||
+ | i: integer; | ||
+ | s: string; | ||
+ | |||
+ | begin | ||
+ | UARTInit; | ||
+ | |||
+ | // String lesen, inklusive Längenbyte. | ||
+ | SetLength(s, EEPROM_read(0)); // Länge auslesen. | ||
+ | for i := 1 to Length(s) do begin | ||
s[i] := char(EEPROM_read(i)); | s[i] := char(EEPROM_read(i)); | ||
end; | end; |
Revision as of 21:55, 15 December 2017
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
Beispielcode, der zeigt, wie man Daten schreibt und lest.
const
sc = 'Hello World !';
var
i: integer;
s: string;
begin
UARTInit;
// String schreiben, inklusive Längenbyte.
for i := 0 to Length(sc) do begin
EEPROM_write(i, byte(sc[i]));
end;
// String lesen, inklusive Längenbyte.
SetLength(s, EEPROM_read(0)); // Länge auslesen.
for i := 1 to Length(s) do begin
s[i] := char(EEPROM_read(i));
end;
repeat
UARTSendString(s);
UARTSendString(#13#10);
until 1 = 2;
end.
Wen der erste Code einmal ausgeführt wurde, kann man mit dem zweiten Code gut sehen, das das Hello World ! im EEPROM gespeichert ist, auch wen man den ATmega in der Zwischenzeit vom Strom getrennt wurde.
var
i: integer;
s: string;
begin
UARTInit;
// String lesen, inklusive Längenbyte.
SetLength(s, EEPROM_read(0)); // Länge auslesen.
for i := 1 to Length(s) 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