PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Adresse eines 1-Wire DS1820 im EEprom speichern



elkokiller
14.03.2009, 20:24
Hallo,

ich möchte gerne die Adressen meiner Temperaturfühler (DS1820), die aus einem 16Stelligen Code bestehen, im EEprom eines Mega32 speichern.

Hat jemand mal ein Beispielprogramm wie man das machen kann?

for_ro
15.03.2009, 11:46
Ist doch egal, ob du ein Byte oder 8 abspeichern möchtest.
Normalerweise hast du die Adresse (Family-Code, Serial Number, CRC) in einem 8-Byte Array.
Mit WriteEeprom(Var, Address) kannst du die nun an eine beliebige Stelle ins EEPROM schreiben. Immer ein Byte nach dem anderen.
Lass die Adresse 0 aus, da gibt es einen Bug bei den Controllern.

Gruß

Rolf

elkokiller
15.03.2009, 12:58
Hallo Rolf,

habs hinbekommen aber du kannst mir vielleicht noch einen Tip geben.
Ich speicher die 8 Byts jetzt so ab:


Writeeeprom Dsid1(1) , &H110
Writeeeprom Dsid1(2) , &H120
Writeeeprom Dsid1(3) , &H130
Writeeeprom Dsid1(4) , &H140
Writeeeprom Dsid1(5) , &H150
Writeeeprom Dsid1(6) , &H160
Writeeeprom Dsid1(7) , &H170
Writeeeprom Dsid1(8) , &H180

Wenn ich mir mit Ponyprog den Speicher ansehe sieht es wie im angehängten Bild aus.
Ich ahbe den Eindruck dass dabei viel Speicher ungenutzt bleibt?
Kann man die daten nicht nach rechts fortschreiben?
Wie lauten dafür die Adressen?

Grüße
Tobias

for_ro
15.03.2009, 13:15
Du schreibst nach H110, H120 usw.
Mach's doch lieber so:

Offset=$HF0 'wenn du unter H100 bleibst, kannst du Offset als Byte deklarieren
For I = 1 To 8
Writeeeprom Dsid(I), offset
incr offset
Next I

Denke daran, nicht zu oft (>10.000 mal) auf eine Stelle im EEPROM zu schreiben.

Gruß

Rolf

hofbauer51
01.04.2009, 15:49
Ist zwar nicht direkt zutreffend aber
Ich will für eine Temperaturmessung eine Abweichung eingeben, die bei reset des AVRs erhalten bleibt.
Kann ich einfach das EEPROM beschreiben und hab dann nach einem Neustart den EEPOROM Wert wieder? Oder wird der beim Neustart auf einen festen Wert gesetzt?.
Danke
Günther

Rofo88
01.04.2009, 16:06
Nach dem Neustart musst Du den Wert erst aus dem EEprom lesen und vor dem reset brauchst Du ne gewisse Zeit damit der Wert gespeichert werden kann.

hofbauer51
02.04.2009, 09:12
OK . Danke für die schnelle Antwort.
Es ist also so wie ich es mir vorgestellt hab nämlich dass beim Neustart der Wert im EEPROM unverändert bleibt.
Gruß
Günther