PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abspeichern von Integerwerten im Eeprom und auslesen...



ACsenf
20.12.2005, 15:51
Hallo!

Ich benötige für ein Serielles Kommunikationsprotokoll ein 16-Bit Datenwort und ein Config-Byte. Nun ist meine Frage, ob man das so in der Art ablegen kann und Bascom das richtig macht?

' Daten werden in das EEPROM gespeichert
$eeprom
Label1:
Data 1 , 1 , 1 , 1
$data
' ENDE DATEN EEPROM

Poweron:
Do
'Parameter aus EEProm laden
Readeeprom 4_flag , Label1
Readeeprom 3_flag
Readeeprom 2_flag
Readeeprom 1_flag


usw....

Oder organiesiert man das von Hand Byteweise und fest von mir vergebener Speicheradress?

Wäre Euch für Tipps und Ideen sehr dankbar.


Viele Grüße

Sven

PicNick
20.12.2005, 16:09
Je nachdem, was du machst, aber im Grunde reicht:

dim conf as eram byte
dim data(64) as eram word

dann kannst du normal damit umgehen.

conf = 23
for x = 1 to 64
data(x) = 12
next

Man sollt aber die Werte nicht zu oft reinschreiben.

Marco78
20.12.2005, 20:50
Interger sind 4 Bytes?
Am einfachsten ist es, den Wert einfach in eine Eepromadresse zu schreiben und von dort wieder auszulesen.
Ist zumindest meine persönliche Meinung, das es so am einfachsten ist.

Writeeeprom Variable , Adresse
Und auslesen mit Readeeprom Variable , Adresse

Man muss dabei aber beachten, das die Adresse 0 nach einen Reset gelöscht sein kann. Welche Typen das genau betrifft, steht in einer Atmel AppNote.
Und man muss den Platz für die Variablengröße beachten, das beim schreiben der zweiten, nicht teile der ersten Gelöscht werden.
Ein Word belegt 2 Adressen.
Writeeeprom Wordvariable , 1 schreibt den Wert in 1 und 2. Die nächste kann also erst bei 3 beginnen und belegt 4 auch noch.

linux_80
20.12.2005, 21:53
Integer sind beim AVR 2 Byte !
Da wir hier in der Basic-Abteilung sind, sollte man es doch so machen wie der PicNick meinte, denn dann nimmt einem Bascom die Arbeit mit der Auszählerei der Speicheradresse im EEprom ab.