Forum: Mikrocontroller und Digitale Elektronik speicher - größe von daten abschätzen


von speicherschorsch (Gast)


Lesenswert?

guten abend,

ich habe so gut wie keine erfahrung in der mikrocontroller 
programmierung. in meinem projekt arbeite ich mit einem pic30f µC.
jetzt bin ich gerade auf die problematik gestoßen, dass auf µCs so gut 
wie kein speicher zur verfügung zu stehen scheint (laut datenblatt 48kb 
programmspeicher, 2kb ram, 1kb eeprom)
meine bisherigen programmierkenntnisse beschränken sich auf den PC 
bereich. und da muss man sich ja keine gedangen darüber machen wieviele 
bit speicherplatz z.B. das wort 'speicherplatz' benötigt.

jetzt brauche ich für mein projekt aber eine tabelle in der ein paar 
strings gespeichert werden sollen.
die tabelle hätte 20 spalten und ca. ebensoviel zeilen, in jeder zelle 
müsste ein wort mit ca. 5 bis 25. zeichen stehen.

das sind dann worst case: 20*20*25 charakters ... also 10kbyte oder?

d.h. für so eine mickrige datenmenge bräuchte ich schon eine 
speichererweiterung???

ich hab gesehen dass so speichererweiterungsdinger egal ob ram oder 
eeprom (seriell jeweils) mind. 6 pins haben. jetz hab ich aber schon 
2uarts und die 8portb pins belegt ... d.h. doch dass ich gar keinen 
speicher mehr anschließen kann?

von Philipp (Gast)


Lesenswert?

tja so ne tabelle wie du sie dir vorstellst ist für so nen yC schon 
recht groß. also entweder rest des programms verkleinern oder speicher 
dranhängen.
wenn ich mich nicht irre gibts die billige 24er reihe bis 256Kb und man 
kann 8 davon an einen bs hängen )(bekommen alle ne 3bit-adresse per 
hardware aufgedrückt) und du hast 8x256=2400kB für deine tabellchen. 
natürlich geht auch nur einer oder mehrere (verschiedene) kleinere

von Chris R. (hownottobeseen)


Lesenswert?

Hallo schorsch,

deine Berechnung ist richtig, wobei es sich IMO nicht um worst case 
sondern actual case handelt. Dynamische Speicherverwaltung auf nem µC 
ist Flash-Verschwendung und braucht durch die Hash-Tabelle nur noch mehr 
RAM.
Um die Anbindung externen Speichers wirst du wahrscheinlich nicht 
kommen.

Ohne Zusatzhardware brauchst du dafür Adress- und Datenpins, mit 
Schieberegistern kannst du es noch etwas runterdrücken.

Da ich vor dem selben Problem stehe, hab ich ein Projekt in der Mache 
(128 KByte, Anbindung per UART und I²C), aber leider erst in einem 
frühen Stadium und momentan ohne Zeit etwas daran weiterzuarbeiten.

von Axelwaxel (Gast)


Lesenswert?

24er laufen mit I2C und brauchen am controlör nur 2pins.der rest wird 
hartverdrahtet

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

speicherschorsch schrieb:
> das sind dann worst case: 20*20*25 charakters ... also 10kbyte oder?
Die Frage ist doch was sind das für Texte und wo gehen die hin? Sollen 
die an ein LCD gesendet werden? Oder an den PC übertragen?
Man kann halt anstelle des Strings auch einfach eine Zahl senden und der 
angeschlossene Teilnehmer "weiß" dann welchen String er anzeigen soll.

von speicherschorsch (Gast)


Lesenswert?

naja, die daten kommen von RFID Tags und werden im µC miteinander 
verwurschtelt, und es gibt zu viele unterschiedliche datensätze als dass 
ich eine art wörterbuch für alle implementieren könnte...
also wirds wahrsch. der externe speicher, außer mir fällt noch was 
cleveres ein dass ich nicht alle daten von den tags aufm µC speichern 
muss ...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Aber die RFID Tags liefern dir doch keine Strings oder?
Und was soll dann mit den "verwurschtelten" Daten geschehen?
Am besten ist wenn du dir erstmal ein Blockschaltbild malst, es hier 
vieleicht einstellst dann kann man schon mehr sagen.

von Jörg B. (manos)


Lesenswert?

Ich denke auch, wichtig ist erst mal zu klären, was kommt an Daten rein 
(RFID) und wo gehen die Daten wieder raus - und was muss dazwischen 
damit gemacht werden.

Eine Tabelle im EEPROM macht nur dann Sinn, wenn die auch geändert 
werden MUSS - sonst, wenn es sich bei der Tabelle nur um eine 
Übersetzungstabelle von einem RFID-Code in Klartext handelt kann man 
diese vielleicht auch als konstante Tabelle im Programmcode ablegen.

Andere Möglichkeit wenn es nicht direkt auf einem LCD angezeigt werden 
muss ist, dem Zielsystem nur den Zahlencode zu schicken (oder eine 
Tabellenposition) und das Zielsystem (PC mit Windows, Linux o.ä.) 
übersetzt dann in den Klartext.

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.