mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Speicherproblem wegen Bytearray's


Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe in meinem Projekt recht viele Strings die alle eine  große 
Anzahl Zeichen besitzen.Ich habe ein paar Bytearrays bereitgestellt.
char eins[60];
char zwei[100];
      .
      .
      .
Nun ist bei meinem 8535 der RAM recht voll.Gibt es ne möglichkeit die 
Zeichenketten z.B. im EEPROM abzulegen?Die Zeichen empfange ich von der 
UART über den RX int.
Gruß Helge

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dürfte schlecht möglich sein, da das EEPROM recht langsam ist und nur 
100.000 Schreibzyklen garantiert werden. Wenn du den 8535 nicht gerade 
als PLCC einsetzt wäre wohl ein Umstieg auf MEGA16 1K SRAM oder MEGA323 
/ 32 2K SRAM angesagt.

Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast recht ist wahrscheinlich die beste Lösung.Hab da nur ein Problem 
mit mein Codevision.Ist ne light Version die leider keine Mega´s 
unterstützt.
gruß helge

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werden denn wirklich alle diese großen Arrays ständig oder gleichzeitig 
benötigt ?

Ein Vorteil eine Compilers gegenüber Assembler ist doch, daß er Speicher 
überlagern kann. D.h. Funktionen, die nie gleichzeitig ausgeführt 
werden, wird automatisch vom Linker der gleiche Speicher zugeteilt.

Deshalb soll man ja auch so wenig wie möglich globale oder static 
Variablen verwenden.


Vielleicht kannst Du ja Deine Aufgabe näher beschreiben und es findet 
sich dann eine wesentlich effektivere Lösung.


Peter

Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muß es noch mal ausprobieren ob ich den selben String nutzen 
kann.Zur Zeit sieht das ganze so aus:

char string[150]
char text[150]
char rx_buffer[80]

- ich empfange über den UART int zeichen (PDU)die im rx_buffer landen
- kopiere sie dann nach "string"
- wandle sie dann um und schreibe sie in "text"
vielleicht ist es ja möglich sie wieder in string zurück zu schreiben 
(versuche ich mal)
ansonsten sind schon 3 Zeichenketten belegt
Auch der rx_buffer scheint mir etwas zu groß.Weiß aber keine andere 
Lösung.Funktionieren tut das ganze jedenfalls so.

gruß helge

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum brauchst Du denn 3 Puffer ?
Kannst Du den String nicht direkt im rx_buffer bearbeiten ?
Ich mache das meistens so.

Und wenn der Ausgabestring größer als der Eingabestring sein muß, 
kopiert man erst den Eingabestring um diese Differenz weiter ans Ende. 
Bzw. man läßt gleich beim Empfang am Anfang den nötigen Platz frei.


Peter

Autor: mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

es gibt von philips den PCF8570
das ist ein 256 byte grosses SRAM mit I2C-interface
es ist zwar nicht die schnellste lösung ,funktioniert aber ganz gut

mfg
mike

Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche die Sache mal im rx_buffer zu bearbeiten.Vielleicht komme 
ich ja dann weiter.
Falls das alles nichts hilft gucke ich mir mal die Sache von mike mit 
dem PCF8570 an.
Vielen Dank für die tips

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.