Forum: Mikrocontroller und Digitale Elektronik Daten im EEProm aufzeichnen und später über RS232 senden


von Tobias X. (tobiasblome)


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

von Dieter W. (dds5)


Lesenswert?

Alle 10 Minuten und das einen Monat lang ergibt 6x24x31 = 4463 
DatenSÄTZE.

Da ist ein 0,5kB EEPROM hoffnungslos überfordert.

von Magnus Müller (Gast)


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

von Magnus Müller (Gast)


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]

von Tobias X. (tobiasblome)


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 ;-)

von jack (Gast)


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).

von Tobias X. (tobiasblome)


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

von jack (Gast)


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.

von Tobias X. (tobiasblome)


Angehängte Dateien:

Lesenswert?

ist denn I2C nicht die gleiche wie seriell

von Magnus Müller (Gast)


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

von Tobias X. (tobiasblome)


Lesenswert?

kann ich denn belibige pin´s für I2C benutzen oder sind das bestimmte?
ich habe mit I2C noch nichts gemacht... kann ja nicht so schwer sein 
oder?

Tobias

von Magnus Müller (Gast)


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

von jack (Gast)


Lesenswert?

Ja, beliebige Pins. Du mußt halt genau die Ansteuerung machen, wie sie
im Datenblatt des EEproms beschrieben ist.

von Tobias X. (tobiasblome)


Lesenswert?

und was ist besser einfacher von Vorteil?
also bei PWM z.B. sollte man immer de Hardware pin´s nehmen weil das 
über die Software viel speicher benötigt - wie ist das bei I2C?

Tobias

von jack (Gast)


Lesenswert?

Software I2C ist so einfach, daß es sich nicht lohnt, extra einen
AVR mit TWI-Schnittstelle zu nehmen (Atmel nennt I2C "TWI").

von Bensch (Gast)


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.

von Tobias X. (tobiasblome)


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.

von Magnus Müller (Gast)


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]

von Tobias X. (tobiasblome)


Lesenswert?

Danke Magnetus, ich habe gerade einen riesen Artikel im Robotterforum 
gefunden incl. Beispielcodes :-)
Jetzt kann es losgehn

Tobias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.