PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 24c256 Als Logfile Speicher verwenden



CityJumper
10.02.2005, 09:17
Hallo,

ich wollte einen at 24c256 als speicher für messwerte verwenden,
leider habe ich noch keinen weg gefunden weine kompletten text in
den eprom zu schreiben.

sollte später einer art dabelle entsprechen

ID Date Time Temp1 Temp2

hat einer von euch vieleicht nen codeschnipsel für mich?
das ganze soll später auf nem atmega32 laufen.

danke
michael

albundy
10.02.2005, 17:08
Hallo,
ich benutze den Eeprom auch. Habe aber nicht verstanden, was du mit "kompletten Text" meinst.
Hier eine Routine zum beschreiben:


Dim Adress as Word, H as byte, L as Byte, Wert as Byte
H=(High)Adress
L=Adress
I2cstart
I2cwbyte &B1010_0000 'Adresse des Eeprom
I2cwbyte H 'Speicherstelle im Eeprom
I2cwbyte L
Do
read Wert 'Wert von irgendwo holen und
I2cwbyte Wert 'in den Eeprom schreiben (Speicherstelle wird danach automatisch um
'1 erhöht / Speicherbereich geht von 0000-7FFF)
Loop until Wert=255 'z.B. bis der Wert 255 ist
I2cstop


Mit dieser Methode hast du den Eeprom in ca 6 Sek. voll

CityJumper
11.02.2005, 09:26
hi,

ich will in bascom ein eeprom (24c256) beschreiben!
in diesem eeprom sollten datum und teperatur werte gespeichert
werden, die ich bei bedarf wieder auslesen möchte!

mein problem ich aber das ich nicht weiß wie ich eine textzeile wie z.b.

10.02.05 / 16:05 / 25,5 / 22,0

in den eeprom schreiben soll!

hast du eine idee? oder nen beispielcode?
mit dem i2c sample von bascom komm ich einfach net weiter

ich möchte im prinzip in das eeprom eine tabelle schreiben!

mfg
michael

albundy
11.02.2005, 15:41
Hallo,
Erklär das bitte mal etwas genauer.
Wo kommen die Daten denn her und in welcher Form liegen sie vor ?
Was soll mit den Daten beim wieder auslesen passieren ?
In welcher Form soll die Tabelle angelegt werden ?
Du musst ja anschliessend beim Auslesen wissen, in welcher Speicherstelle welcher Wert liegt.

CityJumper
11.02.2005, 22:00
also..

das datum und die uhrzeit kommen von einem
pcf8563 und die temperaturen von zwei lm74 jede stunde
will ich alle werte in das eprom schreiben, um sie später
per serieller schnitstelle abrufen zu können.

das ganze ist für eine heizungssteuerung, dessen messwerte
ich über mehrere tage speichern will, später will ich sie dan an den
pc übertragen. ich hab alles schon fertig, nur das mit dem eprom will
noch nicht. Ich bekomme es angesteuert und alles, aber ich weiß nicht
wie ich einen "string" mit 24 zeichen an das eprom senden soll.

ich hofffe du kannst mir weiter helfen

mfg
michael

albundy
12.02.2005, 20:30
Na jetzt verstehe ich...
Also ich würde es folgendermassen machen:

Const FF = &H0C 'Steuerzeichen Formfeed
Const LF = &H0A 'Steuerzeichen Linefeed
Const Pu = &H2E 'Punkt
Const Dp = &H3A 'Doppelpunkt
Const Le = &H20 'Leerzeichen
Const Ko = &H2C 'Komma
Const Adr = &HA0 'Adresse Eeprom
Dim AdrCount as Word 'Zähler Speicherplatz Eeprom

Die anderen Variablen von dir musst du natürlich entsprechend anpassen.
Daten von der RTC nenne ich mal Tag, Monat, Jahr, Stunde, Minute.
Und vom LM nenne ich mal T1msb, T1lsb, T2msb, T2lsb. (Vor und Nachkommastelle)

Subroutine
Ttag = Makedec(Tag) 'aus der RTC muss erst gewandelt werden, da BCD Code
Tmonat = Makedec(Monat) 'u.s.w. bis zur Minute
H=(High)AdrCount
L=AdrCount
I2cstart
I2cwbyte Adr
I2cwbyte H 'Speicherstelle im Eeprom
I2cwbyte L
I2cwbyte Ttag
I2cwbyte Pu
I2cwbyte Tmonat
I2cwbyte Pu
I2cwbyte Tjahr
I2cwbyte Le
I2cwbyte Tstunde
I2cwbyte Dp
I2cwbyte Tminute
I2cwbyte Le
I2cwbyte T1msb 'Temperatur 1 Vorkommastelle
I2cwbyte Ko
I2cwbyte T1lsb 'Nachkommastelle
I2cwbyte Le
I2cwbyte T2msb 'Temperatur 2 Vorkommastelle
I2cwbyte Ko
I2cwbyte T2lsb 'Nachkommastelle
I2cwbyte FF
I2cwbyte LF 'damit ist die Formatierung auch im Eeprom
I2cstop

Damit sind jetzt 19 Werte im Eeprom.
Jetzt muss der Adresszähler noch erhöht werden.

If AdrCount < &H7FEB then AdrCount = AdrCount + 19 Else AdrCount = 0

Wenn der Eeprom voll ist, wird wieder von vorne beschrieben.

Ich hoffe ich habe nichts vergessen.
Wenn doch musst du nochmal nachfragen.

CityJumper
13.02.2005, 17:30
joop, hab meinen fehler gefunden!

aber was soll das mit dem FF und LF?
ich verstehe nicht ganz was du damit bezwechen wilst!

ansonsten funst alles.

mfg
michael

albundy
14.02.2005, 09:48
Hallo,
ich habe noch einmal nachgesehen. Bei den Steuerzeichen habe ich mich geirrt.
Es sollte heissen:
&H0D -> Cursor zurück auf Anfang
&H0A -> und Zeilenvorschub
Das soll bei einer anschliessenden Ausgabe auf ein Terminal oder Drucker, gleich die Steuerzeichen mit ausgeben. Sonst würde ja alles unübersichtlich hintereinander geschrieben werden.

CityJumper
14.02.2005, 10:57
ahhh... ok

dann verstehe ich das jetzt!
ich werde andere zeichen zur kennzeichnung verwenden
da ich die daten und vb6 übernehmen will!

danke für deine hilfe

kann geclosed werde
michael

CityJumper
14.02.2005, 17:04
hätest du vieleicht auch noch einen vorschlag zum
auslesen der daten?

weil im moment bekommen ich nur folgendes:

82
17
5
23
20
2
56
19
32
20
44
20
46
2
32
12
58

und damit kann ich nicht wirklich was anfangen :-/
ich wüste auch nicht wie ich aus diesen werten die uhrsprungswerte
errechnen könnte

mfg
michael

albundy
14.02.2005, 20:32
Wie hast du denn die Daten aus dem Eeprom rausgebracht ? (Hyperterminal oder eigenes Programm)
Wenn du ihn nach meinem Beispiel beschrieben hast, muss ja wenigstens das Format stimmen. Das heisst, es müssen:

2 Punkte (Dezimal 46)
3 Leerzeichen (Dezimal 32)
2 Kommas (Dezimal 44)
1 Doppelpunkt (Dezimal 58]

vorhanden sein. Das sind ja feste Werte.
Wenn du die Möglichkeit hast, lese den Eeprom mal in PonyProg oder ähnliches, direkt ein. Aber ich denke, du machst den Fehler beim auslesen.
Wie sieht denn die Routine im AVR zum auslesen aus ?

CityJumper
17.02.2005, 09:03
Danke,
habs jetzt in den griff bekommen!

jetzt funst alles Einwandfrei!

mfg
michael