PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datalogger mit 24FC1025



LazyBee
11.05.2006, 13:14
Hallo,

ich möchte mir einen Datalogger mit dem 24FC1025 und PIC16F876 bauen. Der IC hat einen Aufbau 128k x 8.

Worauf muß achten, daß meine Daten auch richtig geschrieben werden?
Muß ich meine Datensätze so aufbauen, daß nach 128 byte Schluß ist?
Und dann der nächste Datensatz beginnt?
Erfolgt die Page-Umschaltung automatisch nach 128 byte oder muß dem IC das noch extra mitgeteilt werden?

Danke für ein paar Tipps.

LazyBee

gunzelg
11.05.2006, 20:47
Hallo LazyBee

ich hab mit dem Baustein noch nicht gearbeitet, aber wenn ich mir das datenblatt anschau (Seite 8 des 24FC1025), dann heisst es da, dass bis zu 128 Byte geschrieben werden können, wenn nach dem Schreiben des ersten Bytes keine Stop-Condition gesendet wird. Danach muss aber wohl wieder eine neue Adresse geschrieben werden.
Ich interpretiere diesen Page-Modus mehr als Burst-Modus denn als den "historischen" Page-Modus. Bei dem Page-Modus beginnt normalerweise eine Page auf einer bestimmten Adresse. Dies ist hier aber nicht der Fall.

Gerhard

LazyBee
12.05.2006, 16:40
Hallo gunzelg,

zum Burst-Modus habe ich unter EPROM nicht gefunden. Hast Du nähere Infos dazu. Mir geht es bei dem Baustein nur um den Speicherplatz und nicht um zusätzliche Features.

Normal beschreibe ich einen Eprom so (Proton+ Code)

Write_EEPROM:
B0 = B0 + DataSet
If B0 > MaxEE Then MemFull
Busout$A2, B0, [Temp1, Temp2, Light1, Hum1, RTCMin, RTCSec, RTCHour, RTCDay, RTCMonth, RTCYear]
Return


Geht das bei diesem Chip auch so?

Danke

LazyBee

gunzelg
12.05.2006, 17:38
Hallo LazyBee

ist das ein Basic-Dialekt ? Ich arbeite mit Assembler oder mit C und da sind mir solche Schreibzugriffe nicht bekannt. Wenn deine Programmierumgebung schon eine Funktion zum Zugriff auf die I2C-Schnittstelle ermöglicht, ist das ja prima. Wenn ich das richtig interpretiere, dann ist B0 die Adresse im EEPROM ab der geschrieben wird und die Variablen in der Rechteckigen Klammer die Daten die gespeichert werden sollen. Oder versteh ich das falsch ?
Wenn dem so ist, dann schreibst du die nächsten Daten wieder so, gibst dann die aktuelle Adresse an, so dass keine Daten überschrieben werden usw bis das EEPROM voll ist.

Gerhard

BigWumpus
13.05.2006, 07:56
Das EEPROM ist intern in 128-Byte-Pages geteilt.
Schreibst Du in eine Page wird diese vom Controller gelesene, geändert und wieder geschrieben (löschen+schreiben). Das kostet dann Zeit.
Man darf (oder evtl. "sollte") die Seitengrenzen nicht überschreiten.

LazyBee
13.05.2006, 08:28
Hallo,

bei dem Code handelt es sich um den Proton+ Compiler von Crownhill http://www.picbasic.org/proton_compiler.php

B0 - Adresse ab der geschrieben wird
DataSet - Länge des Datensatzes (z. Zt. 10 byte)
[] - Inhalt zw. den Klammern, der geschrieben wird


Wenn dem so ist, dann schreibst du die nächsten Daten wieder so, gibst dann die aktuelle Adresse an, so dass keine Daten überschrieben werden usw bis das EEPROM voll ist.
Genau. Mit einem 24LC64 habe ich das schon mal gemacht. Lief gut. Da waren allerdings die Daten noch überschaubar.

Zeitkritisch ist die Geschichte im Moment noch nicht, da ich nur alle 15 min. Daten speichern möchte. Später soll es aber für eine andere Anwendung alle 1 sec. schreiben.

Ich werde es einfach mal ausprobieren, was passiert wenn ich die Seitengrenzen überschreite.

Mal sehen, ob ich das hinkriege.

So, nun gehts erstmal ins überlange Wochenende.

Gruß
LazyBee