WRITEEEPROM/de
(→(**COPIED FROM ENGLISH PAGE**) =) |
(→Beispiel) |
||
(4 intermediate revisions by one user not shown) | |||
Line 15: | Line 15: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Anmerkungen</span> = |
<div style="padding: 0px; margin: 0px 0px 0px 4px;"> | <div style="padding: 0px; margin: 0px 0px 0px 4px;"> | ||
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;" | {| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;" | ||
Line 23: | Line 23: | ||
| valign="top" width="100%" style="width: 514px; border: 1px solid rgb(0, 0, 0);" | | | valign="top" width="100%" style="width: 514px; border: 1px solid rgb(0, 0, 0);" | | ||
− | + | Name der Variablen die gespeichert werden soll. | |
|- style="vertical-align: top;" | |- style="vertical-align: top;" | ||
Line 30: | Line 30: | ||
| valign="top" width="100%" style="width: 514px; border: 1px solid rgb(0, 0, 0);" | | | valign="top" width="100%" style="width: 514px; border: 1px solid rgb(0, 0, 0);" | | ||
− | + | EEPROM-Adresse an der die Variable gespeichert werden soll. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Eine neue Option ist, dass man einen Label-Namen als Adresse verwenden kann. Siehe Beispiel 2. | |
|} | |} | ||
Line 40: | Line 40: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Diesen Befehl gibt es aus Kompatibilitätsgründen mit BASCOM-8051. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Man kann auch schreiben : | |
− | Dim V as Eram Byte ' | + | Dim V as Eram Byte 'Im EEPROM speichern |
− | Dim B As Byte ' | + | Dim B As Byte 'normale Variable |
B = 10 | B = 10 | ||
− | V = B ' | + | V = B 'Variable im EEPROM speichern |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Wenn man die Zuweisungs-Version benutzt dann müssen die Datentypen gleich sein! | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Laut ATMEL-Datenblatt kann die erste EEPROM-Speicherzelle mit der Adresse 0 bei einem Reset überschrieben werden. Es wird deshalb empfohlen, diese Adresse NICHT zu benutzen. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Aus Sicherheitgründen wird Register R23 auf einen 'magic value' gesetzt bevor Daten in den EEPROM-Speicher geschrieben werden. | |
− | + | Alle Interrupts werden disabled während in den EEPROM-Speicher geschrieben wird. Interrupts werden automatisch wieder enabled wenn die Daten geschrieben sind. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Es ist ratsam, die Brownout-Einheit zu verwenden, die es bei den meistens AVR-Mikrocontrollern gibt. Dadurch wird verhindert, dass Daten in den EEPROM-Speicher geschrieben werden obwohl die Spannung unter den angegebenen Wert sinkt. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | |||
− | |||
| | ||
− | + | Beim XMEGA muss man den Mode auf mapped setzen : [[CONFIG EEPROM|CONFIG EEPROM]] = MAPPED. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 84: | Line 82: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Siehe auch</span> = |
[[READEEPROM]] | [[READEEPROM]] | ||
Line 92: | Line 90: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Assembler</span> = |
NONE | NONE | ||
Line 100: | Line 98: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Beispiel</span> = |
<br/><source lang="bascomavr"> | <br/><source lang="bascomavr"> | ||
Line 112: | Line 110: | ||
'----------------------------------------------------------------------------------------- | '----------------------------------------------------------------------------------------- | ||
− | $regfile = "m48def.dat" ' | + | $regfile = "m48def.dat" ' Mikrocontroller |
− | $crystal = 4000000 ' | + | $crystal = 4000000 ' Taktfrequenz |
− | $baud = 19200 ' | + | $baud = 19200 ' BAudrate |
$hwstack = 32 ' default use 32 for the hardware stack | $hwstack = 32 ' default use 32 for the hardware stack | ||
$swstack = 10 ' default use 10 for the SW stack | $swstack = 10 ' default use 10 for the SW stack | ||
$framesize = 40 ' default use 40 for the frame space | $framesize = 40 ' default use 40 for the frame space | ||
− | ' | + | 'Zunächst einmal Variablen dimensionieren: |
Dim B As Byte | Dim B As Byte | ||
Dim Yes As String * 1 | Dim Yes As String * 1 | ||
− | ' | + | 'Benutzung von readeeprom und writeeprom : |
'readeeprom var, address | 'readeeprom var, address | ||
− | ' | + | 'Eine neue Option ist, ein Label für die Adresse zu benutzen. |
− | ' | + | 'Da die Daten in einer externen Datei sind und nicht im Programm sollten die EEPROM Daten |
− | ' | + | 'als erstes spezifiziert werden. Dies steht im Gegensatz zu den normalen DATA Zeilen welche |
− | ' | + | 'am Endes des Programms spezifiziert werden!! |
− | ' | + | 'Zunächst dem Compiler mitteilen, dass wir das EEPROM nutzen wollen um die Daten zu speichern: |
$eeprom | $eeprom | ||
− | ' | + | 'Die erzeugte EEP-Datei ist eine Binär-Datei. |
− | ' | + | 'Benutzen Sie $EEPROMHEX um eine Intel Hex-Datei für die Benutzung mit AVR Studio zu erzeugen. |
'$eepromhex | '$eepromhex | ||
− | ' | + | 'Label festlegen: |
Label1: | Label1: | ||
Data 1 , 2 , 3 , 4 , 5 | Data 1 , 2 , 3 , 4 , 5 | ||
Line 144: | Line 142: | ||
Data 10 , 20 , 30 , 40 , 50 | Data 10 , 20 , 30 , 40 , 50 | ||
− | ' | + | 'Zurückschalten zu normalen DATA-Zeilen für den Fall, dass solche verwendet werden: |
$data | $data | ||
− | ' | + | 'Der Code oben erzeugt keinen richtigen Object-Code.does not generate real object code |
− | + | ||
− | ' | + | 'Benutzung der neuen Label Option |
Readeeprom B , Label1 | Readeeprom B , Label1 | ||
− | Print B ' | + | Print B 'Ausgabe einer 1 |
− | ' | + | 'Nachfolgende Reads lesen die nächsten Werte |
− | ' | + | 'Beim ersten Mal muss das Label angegeben werden damit die Startadresse bekannt ist. |
Readeeprom B | Readeeprom B | ||
− | Print B ' | + | Print B 'Ausgabe einer 2 |
Readeeprom B , Label2 | Readeeprom B , Label2 | ||
− | Print B ' | + | Print B 'Ausgabe: 10 |
Readeeprom B | Readeeprom B | ||
− | Print B ' | + | Print B 'Ausgabe: 20 |
− | ' | + | 'Funktioniert auch beim Schreiben: |
− | ' | + | 'aber weil es Überschneidungen mit dem Programm geben kann fügen wir hier ein Stop ein. |
Input "Ready?" , Yes | Input "Ready?" , Yes | ||
B = 100 | B = 100 | ||
Line 173: | Line 170: | ||
'read it back | 'read it back | ||
Readeeprom B , Label1 | Readeeprom B , Label1 | ||
− | Print B ' | + | Print B 'Ausgabe: 100 |
− | ' | + | 'Nachfolgende Reads nächsten den nächsten Wert |
− | ' | + | 'Beim ersten Mal muss das Label angegeben werden damit die Startadresse bekannt ist. |
Readeeprom B | Readeeprom B | ||
− | Print B ' | + | Print B 'Ausgabe: 101 |
End | End | ||
Latest revision as of 01:18, 9 March 2013
Contents |
Funktion
Schreibt den Variableninhalt in den EEPROM-Speicher.
Syntax
WRITEEEPROM var , address
Anmerkungen
var |
Name der Variablen die gespeichert werden soll. |
address |
EEPROM-Adresse an der die Variable gespeichert werden soll.
Eine neue Option ist, dass man einen Label-Namen als Adresse verwenden kann. Siehe Beispiel 2. |
Diesen Befehl gibt es aus Kompatibilitätsgründen mit BASCOM-8051.
Man kann auch schreiben :
Dim V as Eram Byte 'Im EEPROM speichern
Dim B As Byte 'normale Variable
B = 10
V = B 'Variable im EEPROM speichern
Wenn man die Zuweisungs-Version benutzt dann müssen die Datentypen gleich sein!
Laut ATMEL-Datenblatt kann die erste EEPROM-Speicherzelle mit der Adresse 0 bei einem Reset überschrieben werden. Es wird deshalb empfohlen, diese Adresse NICHT zu benutzen.
Aus Sicherheitgründen wird Register R23 auf einen 'magic value' gesetzt bevor Daten in den EEPROM-Speicher geschrieben werden.
Alle Interrupts werden disabled während in den EEPROM-Speicher geschrieben wird. Interrupts werden automatisch wieder enabled wenn die Daten geschrieben sind.
Es ist ratsam, die Brownout-Einheit zu verwenden, die es bei den meistens AVR-Mikrocontrollern gibt. Dadurch wird verhindert, dass Daten in den EEPROM-Speicher geschrieben werden obwohl die Spannung unter den angegebenen Wert sinkt.
Beim XMEGA muss man den Mode auf mapped setzen : CONFIG EEPROM = MAPPED.
Siehe auch
Assembler
NONE
Beispiel
'----------------------------------------------------------------------------------------- 'name : eeprom2.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : shows how to use labels with READEEPROM 'micro : Mega48 'suited for demo : yes 'commercial addon needed : no '----------------------------------------------------------------------------------------- $regfile = "m48def.dat" ' Mikrocontroller $crystal = 4000000 ' Taktfrequenz $baud = 19200 ' BAudrate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space 'Zunächst einmal Variablen dimensionieren: Dim B As Byte Dim Yes As String * 1 'Benutzung von readeeprom und writeeprom : 'readeeprom var, address 'Eine neue Option ist, ein Label für die Adresse zu benutzen. 'Da die Daten in einer externen Datei sind und nicht im Programm sollten die EEPROM Daten 'als erstes spezifiziert werden. Dies steht im Gegensatz zu den normalen DATA Zeilen welche 'am Endes des Programms spezifiziert werden!! 'Zunächst dem Compiler mitteilen, dass wir das EEPROM nutzen wollen um die Daten zu speichern: $eeprom 'Die erzeugte EEP-Datei ist eine Binär-Datei. 'Benutzen Sie $EEPROMHEX um eine Intel Hex-Datei für die Benutzung mit AVR Studio zu erzeugen. '$eepromhex 'Label festlegen: Label1: Data 1 , 2 , 3 , 4 , 5 Label2: Data 10 , 20 , 30 , 40 , 50 'Zurückschalten zu normalen DATA-Zeilen für den Fall, dass solche verwendet werden: $data 'Der Code oben erzeugt keinen richtigen Object-Code.does not generate real object code 'Benutzung der neuen Label Option Readeeprom B , Label1 Print B 'Ausgabe einer 1 'Nachfolgende Reads lesen die nächsten Werte 'Beim ersten Mal muss das Label angegeben werden damit die Startadresse bekannt ist. Readeeprom B Print B 'Ausgabe einer 2 Readeeprom B , Label2 Print B 'Ausgabe: 10 Readeeprom B Print B 'Ausgabe: 20 'Funktioniert auch beim Schreiben: 'aber weil es Überschneidungen mit dem Programm geben kann fügen wir hier ein Stop ein. Input "Ready?" , Yes B = 100 Writeeeprom B , Label1 B = 101 Writeeeprom B 'read it back Readeeprom B , Label1 Print B 'Ausgabe: 100 'Nachfolgende Reads nächsten den nächsten Wert 'Beim ersten Mal muss das Label angegeben werden damit die Startadresse bekannt ist. Readeeprom B Print B 'Ausgabe: 101 End
Languages | English • Deutsch |
---|