Hallo, der M16C/62 hat einen RAM-Bereich für den User von 18.6KB. Wenn ich es richtig verstanden habe, werden dort die Variablen, die ich in meinem C-Programm deklariert habe abgelegt. Nun habe ich folgendes Problem: Ich habe ein Arrays angelegt: long var1[8][3000] und ein paar wenige Gebrauchsvariablen (char, double, etc.) Ein long hat 2Byte Speicherbedarf, demzufolge habe ich einen Verbrauch von 8*3000*2 = 48000Byte = etwa 48KB. Nun gibt es aber im Speicher doch einige Bereiche, die ich noch meine Nutzen zu können. Bsp hinter meinem Program Code, der 65KB verschlingt, aber insgesamt 240 KB groß sein darf. Wie kann ich mir hier behelfen?
Hallo Fred, ist dir der Unterschied zwischen RAM und ROM eigentlich klar? Willst du auf die Arrays nur lesend zugreifen, oder auch schreiben? Ich will dir hier nicht vor den Kopf stoßen, aber schnapp dir einfach nochmal die Datenblätter und versuche dir mal klar zu werden wie dein µC aufgebaut ist und was es mit den verschiedenen Speicherarten auf sich hat, bzw. wie so ein Programm aufgebaut ist. Ich denke das C-Manual zu deinem Compiler dürfte dir auch etwas weiter helfen. Um es mal auf den Punkt zu bringen, wenn du den Rest den dein Programm nicht belegt verwenden willst, kannst du es nur Read-Only machen (s.a. const - operator). PS: ein long hat 32Bit sprich 4Byte Gruß Peter
Du hast entweder Deine Software falsch ausgelegt (wozu braucht man ein so großes Array??) oder den falschen Controller. Ich bin jetzt nicht ganz sicher, aber ich meine, man kann an die M16-Reihe externen RAM anschließen. Ist dann aber die Frage, ob der Compiler damit zurechtkommt. Mein letztes System mit "viel" Speicher war ein 68000 mit 1 MB RAM - und hieß Atari ST ;)
Hi Also 48k sind ja nun mal wirklich nicht viel Speicher. In einer meiner letzten AVR Anwendungen (Mehrkanal-Datenlogger mit grafischer Ausgabe) hab ich fast die gesammten 64k Adressraum eines ATMega8515 ausgenutzt. Matthias
Hi du schreibst aber: Du hast entweder Deine Software falsch ausgelegt (wozu braucht man ein so großes Array??) oder den falschen Controller. Ein so großes Array kann man durchaus gebrauchen. Und den flaschen Controller hat er mit dem M16C auch nicht. Da kann man problemlos 512k externes SRAM anflanschen. Matthias
Zunächst mal vielen Dank und ein frohes neues Jahr, (in dem es an Hilfbereitschaft offensichtlich nicht fehlt :-) ) @Peter: bei Rom und Ram hab ich wirklich auf dem Schlauch gestanden. Den Rom - Bereich kann ich natürlich nicht für Variablen nutzen. Ich hab eine Übersicht über den Speicherbereich, die ich als Datei hier anhänge. Anstatt eines Datentyp long meinte ich eigentlich den short int, denn ich muss 10-bit Werte ablegen. Da reichen ja 2 Byte. @thkaiser: das Array brauche ich tatsächlich, da ich 8 analoge Messwerte jede Sekunde über eine 50 Minuten (= 3000 s)aufnehmen muss. @Matthias: Für den M16C/62 habe ich zwei Boards von Glyn, die Etagenartig aufeinander gesetzt werden können. Auf dem ersten sitzt der Controler, auf dem zweiten ist ein Modul zur Adaptierung einer CompactFlash-Card angebracht. Allerdings muss ich den Speicher dieser Card über ein bestimmtes Prozedere ein- bzw. auslesen, welches ich bisher nicht beherrsche. Die CF-Card benutzt den Daten und Adressbus. Kann ich dann noch ein externes SRAM anflanschen? Wenn ja, wie soll ich weiter vorgehen?
Im Datenblatt des M16C ist das Interface für den externen RAM beschrieben. @Matthias: Ich stelle immer wieder fest, daß Umsteiger von PC auf Controller Schwierigkeiten mit dem Speicher haben. Dies liegt daran, daß auf dem PC durch die permanente Speicherverschwendung von Windows die Größe des Speichers extrem überhöht wurde. Deshalb finde ich (persönlich) es nicht gut, einfach mal Speicher dranzupappen, wenn man nicht weiter weiß. Genau das hat Microsoft in Zusammenarbeit mit den PC-Herstellern auch gemacht, und ich wundere mich, wozu ein PC 512MB (oder mehr) Hauptspeicher braucht - wobei dann immer noch eine Auslagerungsdatei von der gleichen Größe erzeugt wird, und die Kiste immer noch auf der Platte rumrödelt. Es besteht auch die Möglichkeit, die Daten zu komprimieren. Es muß ja nicht gleich ein ZIP-Algorithmus sein, aber gerade bei analogen Eingängen tut sich oftmals nicht sehr viel, da kann man einiges herausholen. Ist natürlich abhängig davon, was später mit den Daten geschehen soll, aber der M16C macht so etwas mit links nebenbei. Darauf bezog sich meine Aussage "Software falsch ausgelegt". Und falscher Controller bezog sich darauf, daß ich 1. Nicht genau wußte, ob man externen RAM ranhängen kann (ist nicht immer selbstverständlich) und 2. man im Vorfeld schon mal schauen sollte, ob der Controller für die Anwendung paßt. In diesem Fall war ja recht schnell klar, daß der Speicher nicht reicht - und im Sinne von "so wenig Aufwand wie möglich" hätte ich mir einen Controller herausgesucht, der den Speicher möglichst intern bereitstellt. Wenn man erst mit viel Aufwand einen Adress- und Datenbus zusammenbasteln muß, kann man sich gleich ein System wie die KatCe zusammenbauen.
Hi wenn die Daten auf die CF sollen ist es nicht nötig alle Daten zwischenzuspeichern. Einfach einen Sektor (oder einen Cluster des Dateisystems) immer im Speicher halten und sobald der voll ist wegschreiben. Zur Ansteuerung der CF gibt es von Mitsubishi AFAIK eine Aplication Note. Und genau danach hat Glyn auch die Hardware erstellt. @thkeiser Ich würde nicht immer danach gehen alles mit einem Controller ohne externe Hardware erschlagen zu wollen. Bei Fred ist Kompression sicher interessant (kommt natürlich auf die Daten an die er ermittelt). Aber nur wegen dem RAM einen Controller zu wählen wäre dann doch etwas übertrieben. Meine Anwendung die ich oben erwähnt habe war mit einem 8515 locker zu erschlagen hat allerdings 64k Speicher gebraucht. Wenn ich jetzt also keinen externen Speicher haben wollte hätte ich einen Chip gebraucht der 64k intern hat. Mal davon abgesehen das mir so auf Anhieb keiner einfällt der das bietet (bei den AVR's schon gleich garnicht) sind das dann meistens Klopper vom Format eines M16C/62 mit 80+ Pins und 10+ pro Stück. Unnötig an dieser Stelle. Also externer Speicher. Wenn es natürlich darum geht 8515 + externer Speicher oder Mega16 fällt die Wahl natürlich auf den Mega16 selbst wenn der etwas teurer ist. Matthias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.