Daten im EEProm aufzeichnen und später über RS232 senden

OP #728701
Lesenswert?

Hallo,
ich möchte 4 Werte (3xWort 1xLong) im EEProm alle 10 minuten aufzeichnen 
und später alles an einen PC über RS232 senden und in einem Diagramm 
darstellen. Alles in Basic mit dem ATMega8 (EEProm 0,5KB)

Die Daten wollte ich vielleicht mit Excel auswerten.

Wieviele Werte bekomme ich im EEProm gespeichert?
Wie kann man Werte hintereinander in das EEProm schreiben und wie oft? 
Oder sollte ich kein EEProm benutzen? Ich möchte die gesammelten Daten 
jeden Monat auf den PC übertragen und das EEProm dann wieder löschen.
Brauche ich eine Long Variable um das Datum zu speichern?
Also : 15.12.07 -> 151207


Wie würdet ihr das machen?

Tobias
Gast #728712
Lesenswert?

Tobias Blome wrote:
> Hallo,
> ich möchte 4 Werte (3xWort 1xLong) im EEProm alle 10 minuten aufzeichnen
> und später alles an einen PC über RS232 senden und in einem Diagramm
> darstellen. Alles in Basic mit dem ATMega8 (EEProm 0,5KB)
>
> Die Daten wollte ich vielleicht mit Excel auswerten.
>
> Wieviele Werte bekomme ich im EEProm gespeichert?

EEPROM gesamt:            512 Byte
Bytes pro Datensatz:      3*2 Byte + 1*4 Byte = 10 Byte
Speicherbare Datensätze:  512 Byte / 10 Byte = 51,2 (also 51 Datensätze)

> Oder sollte ich kein EEProm benutzen? Ich möchte die gesammelten Daten
> jeden Monat auf den PC übertragen und das EEProm dann wieder löschen.
> Brauche ich eine Long Variable um das Datum zu speichern?
> Also : 15.12.07 -> 151207

Nein. Ein paar Vorschläge von meiner Seite:

1. Wenn du im Abstand von 10 Minuten speicherst, musst du nicht jedes
   Mal das Datum ablegen. Das reicht einmal pro Tag.

2. Du musst auch nicht die komplette Jahreszahl (z.B. 2007) ablegen,
   es sei denn, dass die genaue Jahreszahl auch noch in 1000 Jahren
   richtig sein soll. Beschränke dich von mir aus auf die letzten
   beiden zwei Stellen (07), das reicht dann bis zum Jahr 2099.

3. Du kannst das Datum (mit zweistelliger Jahreszahl) auch in nur
   2 Byte (1 Wort) ablegen. Rechne einfach:

   Jahr + Monat*100 + Tag*1200

   Das ergäbe dann z.B. für den 31.12.2099 den Wert 38499. Dieser passt
   super in ein Wort.

Gruß,
Magnetus
Gast #728714
Lesenswert?

Ach ja... ausserdem fallen an einem Tag sowieso 864 Byte an "Nutzdaten" 
an, welche du eh nicht in ein 512 Byte großes EEPROM gepresst bekommst.

Gruß,
Magnetus

[Edit]

Vom Datenaufkommen im Laufe eines ganzen Montas möchte ich jetzt gar 
nicht erst reden ;o)

[/Edit]
OP #728755
Lesenswert?

hmmm also vielen Dank erstmal!
In einem Monat dann 178560 Byte.... ist ja nicht viel - der Speicher ist 
nur ein bischen klein...

und wenn man das in den Flashspeicher schreibt? Da hätte ich ja 8KB - 
das würde doch erst mal reichen, da das Programm ja wohl nicht soo groß 
wird...

Gibt es eine Möglichkeit soetwas abzuspeichern - also ich kann ja nicht 
für jeden Wert eine Variable nehmen ;-)
Gast #728802
Lesenswert?

>und wenn man das in den Flashspeicher schreibt? Da hätte ich ja 8KB -
>das würde doch erst mal reichen, da das Programm ja wohl nicht soo groß
>wird...

Das kannst Du ja mal probieren ... ;-)

Aber jetzt mal im Ernst: Häng ein serielles EEprom dran, das hat 
genügend
Kapazität (z.B. 24C128 --> 16kByte).
OP #728811
Lesenswert?

hmm ich dachte die haben auch nicht viel mehr....

also ich habe bisher immer nur das interne benutzt und das so:

Dim Evariable As Eram Byte
Wert = Evariable ' zum lesen
Evariable = Wert ' zum schreiben

aber so kann man natürlich nicht 10.000 Werte schreiben! da gibts doch 
bestimmt noch eine andere Möglichkeit oder?

Da fällt mir gerade ein: Wenn das EEProm über I2C angeschlossen wird, 
kann ich dann die Daten überhaut über RS232 auslesen und an den PC 
senden?


Tobias
Gast #728819
Lesenswert?

>Da fällt mir gerade ein: Wenn das EEProm über I2C angeschlossen wird,
>kann ich dann die Daten überhaut über RS232 auslesen und an den PC
>senden?

Warum denn nicht? Der µC liest über I2C und schickt die Daten über
die serielle Schnittstelle raus.
Gast #728890
Lesenswert?

Tobias Blome wrote:
> ist denn I2C nicht die gleiche wie seriell

Ja und nein.

     - Bei I2C handelt es sich um eine serielle Schnittstelle
     - Bei RS232 / U(S)ART handelt es sich ebenfalls um eine
       serielle Schnittstelle
     - Wenn jemand pauschal "schick es über die serielle Schnittstelle"
       sagt, ist in der Regel die RS232 / U(S)ART gemeint

     - Serielle Schnittstelle ist nicht gleich serielle Schnittstelle
       (--> es gibt verschiedene Arten von seriellen Schnittstellen)


Gruß,
Magnetus
Gast #729115
Lesenswert?

Wenn du die I2C-Funktionalität per Software nachbildest, ist es ziemlich 
egal, welche Pins verwendet werden.

Wenn du die Hardware-I2C des µCs verwendest, bist du an die dafür 
vorgesehenen Pins gebunden.

Gruß,
Magnetus
Gast #729185
Lesenswert?

Also ich hab den Eindruck, du hast dich noch nicht mit dem Datenblatt 
des Prozessors befasst. Das solltest du schleunigst nachholen, bevor du 
weiter fragst. Ist natürlich bequemer, DEINE Hausaufgaben von anderen 
machen zu lassen.
OP #729203
Lesenswert?

Hallo und vielen Dank erst mal.

@Bensch
such mal im Datenblatt nach "I2C" du wirst nichts finden, weil du nette 
Menschen wie Jack benötigst, die dir sagen das Atmel das nicht I2C 
sondern TWI nennt oder wie wärest du darauf gekommen??? Davon mal 
abgesehen steht im Datenblatt nicht wirklich wie mal I2C / TWI 
programmiert! Da gibt es sicher andere/bessere Quellen.
Gast #729210
Lesenswert?

> sondern TWI nennt oder wie wärest du darauf gekommen??? Davon mal
> abgesehen steht im Datenblatt nicht wirklich wie mal I2C / TWI
> programmiert! Da gibt es sicher andere/bessere Quellen.

"AVR315: Using the TWI module as I2C master"
http://www.atmel.com/dyn/resources/prod_documents/doc2564.pdf

Gruß,
Magnetus

[Edit]
Der Link zum dazugehörigen Sourcecode:
http://www.atmel.com/dyn/resources/prod_documents/AVR315.zip
[/Edit]

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren