Hallo Leute :) Es gibt ja eine million Threads über das Thema Sram. Viele handeln davon über die Ansteuerung von 64kb SRAM, was ja vom Mega128 bereits unterstützt wird. Da aber genau eine Adressleitung noch frei ist, die man quasi leicht verwenden könnte um 128 kb statt 64 kb anzusteuern, frage ich mich, ob es nicht evtl auch möglich ist, 128KB vom Mega128 in Hardware zu unterstützen, sprich ohne aufwendige (naja...) Algorithmen zu schreiben und eine eigene Speicherverwaltung zu implementieren. Gibts da lösungen zu? Ich frage mich nämlich warum nur 64 kb addressiert werden können, wo doch eine Leitung eh noch brach liegt? Woran liegt das? Gruß Timo
man braucht für 64k nur 15 Leitungen. Das bedeutet, dass da eine Leitung von dem ohnehin zweiten benötigten Port frei liegt. (oder irre ich mich da... ich schau das gleich nochmal nach, aber ich bin da ziemlich fest von überzeugt.
na um 64k zu adressieren braucht man nun mal 16 leitungen ( 2 hoch 16 = 65536 = 64k sollte jeder taschenrechner können). der mega 16 benutzt auch alle 16 und zwar von A0 bis A15 = 16 leitungen. und die daten werden auf den unteren 8 datenleitungen "gelatcht". ich hoffe diese leihenhafte erklärung reicht dier :-)
jaja, nadeln für meine Augen :P Ich habs ja nen Post früher auch schon gemerkt, dass ich mich vertan habe :) Und da fällt mir auch schon mein Fehler ein: Ich habe für meine Versuche nen 32k SRAM verwendet und da ist natürlich ne Leitung frei. Ich hatte aber im Kopf, dass es nen 64k Modul war. Wie dumm von mir :)
oh du hast es gerade von allein gemerkt ... aber ich denke du könntest drotzdem z.b. 128kb recht einfach ansteuern einfach die letzte adressleitung auf nen io pin und damit kannst du dann sozusagen deine ram in 2 bänke aufteilen. das dumme ist nur das der mega 128 das eigentlich nicht weis. für programm variabeln wär das wohl nix aber für z.b. eine verkettete liste kännte man das ganz gut verwenden.
in assembler ist das alles kein problem, einfach eine freie Portleitung opfern und als höchste Adresse verwenden. Vor jedem mem-Zugriff muss dann eben auch untere/obere 64k gesetzt werden. Mit Compilern dürfte das etwas schwieriger werden.
genauer will ich mehrere Bilder aus einer Camera speichern und verarbeiten. Ein Bild hat 16kb, und ich würde gerne mehr als 4 Bilder unterbringen. In dem Falle könnte man das tatsächlich ganz gut so machen, wie du vorschlägst. Allerdings kann ich dann nicht mit malloc() speicher reservieren. Wenn das schon nicht geht, dann kann ich warscheinlich gleich nen eigenes kleines Speichermanagement schreiben. So viel sollte das warscheinlich eh nicht sein.
@crazy horse mit nem compiler dürfte das genauso funktionieren einfach von nem zugriff das höhere adressbyte nicht vergessen. man kann ja auch mal schauen was der compiler das so macht... der kocht auch nur mit wasser:-) @Timo Birnschein scheint ja ein lustiges projekt zu sein. ich würd an deiner stelle mal in deine bastelkiste gucken (falls vorhanden) aber da findet sich bestimmt noch alter sd speicher oder von ner alten gra.ka. der ram kann man meist für so zwecke noch supper gebrauchen. hab selbst ne alte voodoo ausgeschlachtet und den immerhin 512kb speicher genommen ist zimlich schnell das teil:-)
Bastelkisten sind hier randvoll :D Ich habe hier EliteMT SRAM mit 128KB rumliegen. Hintergrund ist das Auslesen einer Gameboycamera mittels nem fein schnellen AD-Wandler und anschließender Bildbearbeitung. Die Camera läuft bereits, allerdings ist der interne Wandler einfach net schnell genug um die Cam vernünftig auszulesen. Das ganze soll später mal in nen kleinen mobilen Roboter eingebaut werden, dessen Funktion öhm noch nicht genau spezifiziert wurde :P Zukunftsvisionen... Jedenfalls ist der Plan nen Mega128 sowei auszureizen wie es irgend geht. Er muss sich um einige Dinge kümmern: - Camera auslesen - Bilder auswerten (möglicherweise Bewegungsvektoren erkennen, sowie Objekterkennung) Das brauche ich aber nicht immer, warum auch, schließlich gibt es ja Wegplanung, darum: - AD-Wandler strapazieren und Geräusche per Mikrofon aufnehmen und möglicherweise analysieren. Entweder einfach um zu erkennen, dass da was ist, evtl aber auch ne äußerst primitive Spracherkennung, wie damals in den alten PDAs. Kein eigenes lernen oder so gruselige Sachen) - Raumkarten erstellen und speichern und Wege zum nächsten Ziel planen - Wenn noch Zeit, Platz und Lust ist, dann ne SD-Card für die Speicherung von Daten verwenden. ABER: Alles nur Ideen. Nichts davon, mal abgesehen von der Camera, soll aktuell funktionieren. Ich weiß nur, das die Camera störungen hat, weil der Wandler des Mega128 nicht exakt das tut was im Datenblatt steht. Die Camera übrigens auch nicht. Außerdem bekomme ich mit C mein LCD-Display mit t6963c nicht vernünftig angesteuert, was mit Bascom Basic direkt lief, kann also nur am Program liegen. Mein Plan ist, das Camerabild zur besseren Fehleranalyse zunächst auf das Display zu legen. Nur um es da mal zu sehen. Das ist nen recht umfangreiches Projekt, läuft schon seit ewigen Zeiten und da ich studiere, kommt man nie dazu was daran zu machen. Darum muss man sich alle halbe Jahre immer wieder alle Informationen neu besorgen und sich erstmal wieder einarbeiten. Das ist relativ ätzend.
ja so nen roboter hab ich auch mal gebaut. na ja wir haben es mit can-bus vernetzt da wir gleich 2 at90can128 (fast wie mega128) verbaut haben :-) eigentlich nicht nötig aber ich wollte mich mal mit can bus auseinander setzten. am schluss wars dann doch nicht schlecht die doppelte power zur verfügung zu haben. kannst dier ja mal anschauen http://www.elektronik-projekt.de.vu/
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.