Forum: Mikrocontroller und Digitale Elektronik Speicherproblem wegen Bytearray's


von Helge (Gast)


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

von mikki merten (Gast)


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.

von Helge (Gast)


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

von Peter D. (peda)


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

von Helge (Gast)


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

von Peter D. (peda)


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

von mike (Gast)


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

von Helge (Gast)


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

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.