Forum: Mikrocontroller und Digitale Elektronik Bedeutung des RAM Speichers


von Stephan Schwarz (Gast)


Lesenswert?

Bin gerade dabei einen neuen  µC auszuwählen.
Dabei bin ich auf den ATMEGA gekommen.
Dieser hat 8K (Flash)Programmspeicher, 512k EEPROM, aber nur 1k RAM.
Ist es richtig, das der RAM nur ein Zwischenspeicher für Daten ist, auf
die der Prozessor häufig und schnell zugreift?
Das würde ja hier bedeuten, das der Prozessor einfach nicht so schnell
wäre wie  z.B. einer mitz 128k Ram.
Damit kann ich dann leben, oder gibts es noch andere Probleme, die
auftretten können.

von crazy horse (Gast)


Lesenswert?

"Bin gerade dabei einen neuen  µC auszuwählen."
-hast du schon mal mit einem "alten" gearbeitet?
1kRAM ist in der Welt der kleinen Mikrocontroller (dazu zähle ich jetzt
mal 8051, PIC und AVR, also die üblichen 8bitter) schon ziemlicher
Luxus, den nicht viele bieten. Scheinst mir eher aus der PC-Ecke zu
kommen, wo nur noch mit Mbyte-weise hantiert wird. Mit 1k kann man
schon allerhand anfangen.

von Rahul (Gast)


Lesenswert?

Mit Geschwindigkeit hat die Menge an RAM überhaupt nichts zu tun.
Es bedeutet nur, dass man mehr Speicher für Variablen und andere
temporäre Daten hat.

RAM ist dazu aber noch wesentlich schneller als EEPROM, hat aber den
Nachteil, dass die Daten flüchtig sind, sprich bei Entfernen der
Stromversorgung verloren sind.

Wie kommst Du darauf, dass ein Controller mit weniger Speicher
langsamer ist?

Gruß Rahul

von Berti (Gast)


Lesenswert?

Steht wohl so im PC-games... ;-)

von Malte Marwedel (Gast)


Lesenswert?

Wie wichtig der RAM ist, hängt davon ab was du programmierst. Die
Register sind da deutlich wichtiger, da je mehr Register vorhanden
sind, desdo effizienter können die Programme geschrieben werden.
Reichen die Register nicht aus, so müssen die Daten in den RAM
"ausgelagert" werden. Bei der AVR Serie besitzt jeder Chip 32
Register, meines wissens besitzen viele Mikrocontroller eher weniger
als 32 Regiser.

von Khani (Gast)


Lesenswert?

Hallo,

Achtung vor Irrtümern - der ATMega8 hat genau 512 Bytes RAM nicht 512k
!!
MfG, Khani

von Khani (Gast)


Lesenswert?

Oh Mist !!

512 Byte EEPROM !! (nicht RAM)

Entschuldigt vielmals !

Danke, Khani

von Frank Linde (Gast)


Lesenswert?

@Rahul: So pauschal kannst Du das nun aber auch nicht sagen. Wenn ein
Programm/Algorithmus 1.500 Byte Daten zwischenspeichern muß und der
Controller hat nur 1k RAM, dann wird die Lösung mit externem
ErweiterungsRAM oder eben EEPROM durchaus deutlich bis extrem viel
langsamer. Schreibst Du ja im Prinzip auch selbst (EEPROM).

Wie oft so etwas in typischen µC-Applicationen vorkommt, steht
allerdings auf einem anderen Blatt.

Gruß, Frank

von Rahul (Gast)


Lesenswert?

@Frank:
Das ist schon klar.
Es ist aber eher ein Problem der Software und der Controller-Wahl an
sich.
Wenn es um viel Speicher und hohe Geschwindigkeit geht, würde ich sonst
einen Embedded-PC empfehlen.
Da läuft dann auch Windows drauf (nicht unbedingt XP, aber immerhin
CE)...

von Stephan Schwarz (Gast)


Lesenswert?

OK Danke Jungs
Meine Frage ist nur entstanden, weil ich nicht richtig gelesen habe.
Ich hab einfach das k überlesen.
Ein AT90S2313 hatt 128 BYTE, während der ATMEGA8 1k Byte hat.
Ich hab gedacht es wären 128kByte beim 2313 und fragte mich dann warum
der ATMEGA8 so wenig RAM hat.  Hmmm   peinlich.
Aber da hab ich wenigstens noche ein paar Infos bezüglich
Speicheraufteilung bekommen.

Ich war der Meinung, das immer erst der RAM vollgeschrieben wird und
dann das EEPROM zum Einsatz kommt. Mit der Thematik muss ich mich wohl
noch beschäftigen.

Stephan

von Mario (Gast)


Lesenswert?

Hallo,


der µC schreibt überhauptnix selber ins RAM Oder EEprom, das muß schon
dein Programm machen.

Gruß
Mario

von Martin (Gast)


Lesenswert?

Ich spiele im moment mit einem 16F84 PIC herum, der hat
1k Flash und 64 Byte Ram.
Am Kontroller betreibe ich ein LCD Modul im 4 Bit Modus,
ein DS1820 1wire Temperatursensor, ein DS1307 i²c RTC Modul,
einen Ventilator über PWM und 2 Taster.
Da Programm liest Temperatur und Uhrzeit, zeigt diese an uns
steuert den Lüfter. Alle Schnittstellenprotokolle sind in
Software implementiert. Die Software ict in C geschrieben und
benötigt 831 Byte im Flash sowie 33 Byte Ram.
In Assembler könnte ich da wahrscheinlich noch sparsamer arbeiten,
aber wozu? Dies nur mal so als Hinweis was man mit den paar Bytes
alles machen kann.

von Rahul (Gast)


Lesenswert?

@Martin:
Ist dein Programm auf einem anderen PIC schneller, der mehr RAM hat?
;P

von Martin (Gast)


Lesenswert?

@Rahul

Nöö, dem Prozessor ist es egal wie viel RAM nicht
genutzt wird :-)

Gruß
  Martin

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.