mikrocontroller.net

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


Autor: Tobias Xxx (tobiasblome)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Werner (dds5)
Datum:

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

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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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]

Autor: Tobias Xxx (tobiasblome)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Tobias Xxx (tobiasblome)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobias Xxx (tobiasblome)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ist denn I2C nicht die gleiche wie seriell

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias Xxx (tobiasblome)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

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

Autor: Tobias Xxx (tobiasblome)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

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

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobias Xxx (tobiasblome)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...

Gruß,
Magnetus

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

Autor: Tobias Xxx (tobiasblome)
Datum:

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

Tobias

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.