Hallo! Ich habe kürzlich den PIC18F8720 und den 18F8722 entdeckt. Beide verfügen über ein externes Memoryinterface und ermöglichen somit eine Programmspeicherkapazität im Megabyte-Bereich. Mein Vorhaben ist nun, einen PIC18F8720 mit zwei standard 8-bit SRAMs (128kB jeweils) entsprechend der Schematics im Datasheet zu verdrahten. Der PIC würde dann einen Bootloader erhalten, welcher nach einem Reset erstmal eine Art "Betriebssystem" aus einem I2C-EEPROM liest, in den SRAM ablegt und dort ausführt. Das Betriebssystem soll dann in der Lage sein, Programme von einer SD-Speicherkarte zu laden. Nun meine Frage, hat schon jemand Erfahrungen mit dem PIC18F8720 oder PIC18F8722 gesammelt? Vorallem mit dem externen Memoryinterface!? Leider gelten die Vorschläge im Datasheet nur für 8-bit-EEPROMs und nicht für SRAM speicher, deswegen weiss ich auch nicht, ob das Memoryinterface anstandslos die SRAMs als Programmspeicher anerkennt. Weiterhin schweigt der Datasheet auch darüber, ob z.B. teile des externen Speichers als RAM konfiguriert werden können. Einen Eagle-Schaltplan habe ich bereits erstellt und lade den bei interesse auch gerne hoch. Da ich die Platine allerdings fertigen lassen müsste und es sich dabei für einen Studenten um eine nicht gerade unerhebliche Investition handelt, wäre es gut zu wissen, ob die sache auch so funktioniert wie geplant. :) gruß, daniel
Wenn die SRams schnell genug sind (Timing mit Datenblatt vergleichen) sollte es keine Probleme geben. Als RAM kannst Du externen Speicher schon wegen der Architektur nicht verwenden.
Das mit dem Timing liesse sich ja zur not über einen langsameren Quarz angleichen, ausserdem hat man bei dem externen Memoryinterfache die Möglichkeit waitstates einzustellen, soweit ich das kapiert habe... Abgesehen davon haben die standard SRAMs von Reichelt für 90 cents eine Zugriffszeit von 70ns, parallele EEPROMs 150ns. Das sollte dann wohl klappen. laut der Ap-Note von microchip: http://ww1.microchip.com/downloads/en/AppNotes/00869b.pdf Seite 12 ist die verwendung von externem RAM auf jeden fall möglich, es wird dann der gleiche daten/adress-bus benutzt, allerdings müssen andere Steuerleitungen angeschlossen werden....fällt mir gerade so auf :) ich müsste also noch einmal 2 seperate SRAMs für den externen RAM vorsehen... aber übertreiben wollen wir ja nicht direkt. Viel wichtiger wäre, dass der externe Programmspeicher mit SRAMs zu verwirklichen wäre...
"Viel wichtiger wäre, dass der externe Programmspeicher mit SRAMs zu verwirklichen wäre..."???? Das externe RAM liegt wie gesagt generell im Programmspeicher und nicht im Datenbereich.
Ah. Tja, selbst nach stundenlangen duchblättern der AN869 von Microchip finde ich leider keine Gegenargumente mehr... :) Aber ist ja auch wurscht, mir gehts ja um den Programmspeicher. Dachte nur, ich könnte 2 Fliegen mit einer klappe erschlagen und dem PIC direkt eine RAM-erweierung spendieren. Wenn ich da aber so drüber nachdenke kann ich den Programmspeicher ja trotzdem als RAM benutzen, da ich den Programmspeicher bei Programmablauf beschreiben und lesen kann. So, habe nun ein kleines Testboard geEagled. Wer interesse hat schaut hier: www.base32.de.vu/exmemboard.zip Jegliches Feedback ist willkommen. dankeschön! gruß, Daniel
"...Programmspeicherkapazität im Megabyte-Bereich." Bei solchen Postings frage ich mich immer wieder, was soll das ? Ich hatte mir mal den DS80C400 angesehen, ein lustiger Chip. Man kann bis zu 8MB RAM anschließen und er holt sich dann beim Einschalten den Code über das Ethernet in den RAM. Aber ich fand keine Anwendung, wo ich sowas brauchen könnte. Peter
Es geht mir nicht um die Menge!!! Es geht darum, dass ich den Speicherplatz dynamisch nutzen kann. In meiner Anwendung kommen sowieso nur 2x 128kB SRAMs zum Einsatz, die ich womöglich mit schlichtem Programmcode eh nicht vollkriegen werde. Als Datenspeicher, um z.B. die Grafiken für ein 320x240 LCD zu speichern kann mehr speicher aber schon sinnvoll sein, oder??? Daniel
Ich find's eine recht coole Sache, die du da machst. Ich war nämlich auch gerade dabei mir so ein Board zu machen, aber da bist du mir wohl zuvor gekommen... Hast du es schon fertigen lassen? Gibts bei dir die Möglichkeit einer Gemeinschaftsbestellung, dann wäre es für den einzelnen nicht so teuer, bin auch nur Student... www.thepcbshop.com macht recht gute Preise für gute Platinen. Also viel RAM zu haben ist wohl immer wünschenswert, entweder wie bereits erwähnt als Datenspeicher für Grafikdisplays oder in meinem Fall zum Speichern von Datenblöcken einer HDD (MP3 Player). lg Tom
Hallo! @Rooney nein, habe das board noch nicht fertigen lassen, da ich mit dem design noch nicht völlig zufrieden bin. Wollte eigentlich den SD-Kartenleser mit aufs Board packen. Allerdings soll das Board nicht größer als 75x100 werden, deswegen wird das wohl nix :( War schon so nicht einfach das Ding zu routen...Ausserdem kann der 18F8720 nur SPI ODER I2C benutzen. Würde ich also die SD-Karte über Hardware-SPI ansprechen, müssste das I2C EEPROM weichen, allerdings bin ich noch unschlüssig, ob ich das EEPROM überhaupt brauche... Die Preise für eine Kleinserie bei thepcbshop sind ja klasse! Wenn die Qualität und Lieferzeit stimmt sollte man die Boards wohl dort fertigen lassen. Allerdings frage ich mich, warum 10 und 15 Tage Lieferzeit das gleiche kosten... Würde dann auch eins für dich mit machen lassen, das ist kein Problem. Das mit dem Programmspeicher als RAM zu nutzen ist allerdings scheinbar nicht so einfach. Da braucht es wohl abgefahrene Softwaretricks. Gruß, Daniel
Update: Das Board liess sich so nur mit 10mil Leiterbahnstärke routen...d.h. man müsste das EC-Verified-Angebot wählen. Dann lägen 2 Platinen bei 66 EUR.
Also ich hab bei www.thepcbshop.de meine MP3 Player Platinen fertigen lassen und bin sehr zufrieden damit. Hab dort ein LQFP48 drauf und da ist der Pin-Abstand glaub ich gleich wie beim PIC18F8720, hat aber tadellos mit dem billigeren Plot & Go Service funktioniert. Bei www.thepcbshop.de ist wird es eben immer billiger, je mehr Platinen man fertigen läßt. Wenn ich was fertigen lasse, dann meistens 3 oder mehr Boards, weil wenn ichs selbst net brauchen sollte, dann verkauf ich es eben... Bin leider kein Eagle Router, verwende Mentor Graphics, was sind 10mil in mm? Ich hab mir gestern dein Board runtergeladen, werd es heute mal in Eagle anschauen, ob es für mich überhaupt relevant ist. Übrigens, schon mal überlegt den PIC18F8722 zu verwenden? Ich hab mich da noch nicht so genau informiert, weil es mir ziemlich an der Zeit mangelt, aber sofern ich gehört habe, ist dort die Architektur etwas anders als beim 18F8720 und da soll es anscheinend kein Porblem sein den externen Speicher auch als RAM zu benutzen. Aber wie gehabt, hab ich nur gehört... Programmierst in Assembler oder C?
Hallo. Ja, habs vercheckt :-/ 10mil sind 0,254mm, also passt das schon. Wer lesen kann is klar im vorteil... Am Bord hab ich heut Nacht noch gefrickelt. Der 74HC04 ist rausgeflogen, der war mehr als überflüssig... Jo, habe mir schon überlegt den 8722 zu nehmen. Beim Vergleich der Datasheets konnte ich aber keinen großen Unterschied der Memory interfaces feststellen, außer dass der auch ein 8-Bit-Modus hat, allerdings bin ich die Datasheets unter dem Aspekts der RAM-Nutzung noch nicht so eingehend durchgegangen... programmiere in C. gruß, daniel
Nur mal kurz zur Information... Die Antwort meines Service Requests an Microchip bezüglich Memory Interface von PIC18F8720 und PIC18F8722: >Problem Resolution: >The EMI on the 8722 should be no different from the EMI of the 8720. >Yes the EMI can be used to access external RAM memory. If you are >interested, AN869 is a good application note that discusses the use of >the EMI.
Hi, naja, ob es möglich ist stand ja eigentlich nicht zur debatte, ich sagte nur, es ist nich ganz einfach :) Aber zum Glück sind wir nicht die ersten, die sich mit diesem Problem rumschlagen: http://forum.microchip.com/tm.asp?m=30030&mpage=1 und http://forum.microchip.com/tm.asp?m=51953&mpage=1 Gruß, daniel
Welchen Compiler verwendest du eigentlich? C18, CCS oder Hi-Tech? Also ich verwende jetzt schon seit Jahren den CCS Compiler, weil er einfach zu bedienen ist und meiner Meinung nach mit Programm- und Datenspeicher effektiver umgeht als der C18, aber vielleicht trügt der Schein auch... Aber egal... Der Comiler besitz jedoch bereits fertige Libraries um den externen Speicher als RAM zu nutzen. Das einzige was man machen muss, damit der Datenspeicher net vom Programmcode überschrieben wird, ist es, Platz zu reservieren und sich merken, wo die Variablen abgelegt sind (Adressen). Ich habs aber noch nicht ausprobiert, weil mir noch das Board fehlt...
Hey klasse, ich benutze auch den CCS Compiler :) Wie siehts denn aus mit dem Board, willst du auch eins? Würde kommende Woche nämlich gern mal bestellen... Als Anhang gibts die neue Version des Boards (74HC04 entfernt) Ich bleibe allerdings vorerst beim 18F8720 gruß, daniel
Hallo, habe mir gerade das Layout angesehen. Im Anhang ein Ausschnitt aus daraus, die Leiterbahn die da innerhalb der gelben Markierung so quer über alle anderen geht, soll das so sein? Gruß Thorsten
Ja, das gehört so! Nene :) danke für den hinweis! da hab ich wohl grobmotorisch wie ich heut morgen noch bin die leiterbahn verschoben. Pardon! neue Files angehängt.
Hallo! Monate später gibts dann doch endlich mal was neues! Das Board, so wie hier bereits vorgestellt, scheint prima zu funktionieren. Bislang fehlt noch ein "Betriebssystem" um den SRAM-Programmspeicher sinnvoll nutzen zu können, die Komponenten arbeiten jedoch alle wie geplant und die ersten Ergebnisse sind recht zufriedenstellend. Mehr Infos dazu + aktuelle Version von Board + Schematics zum herunterladen gibts hier: http://www.base32.de.vu/EMI Gruß, Daniel
Sieht gut aus!!! Ich hoffe du haltest uns am laufenden wie es nun so weiter geht... Ein Rätsel bleibt aber noch immer, wie du den PIC so perfekt auf die Platine löten konntest, sieht ja höchst professionell aus ;-) mfg Tom
dankedanke. Soo schwer war das Löten eigentlich garnicht. Ich habe so einen Flussmitteldispenserstift, damit einmal über alle Pins einer Seite fahren, Lötzinn mit dem Lötkolben aufnehmen und in ca. 10 Sekunden über alle Pins drüberbruzzeln. Das Flussmittel sorgt ganz gut dafür, das das Zinn nur dort landet, wo es auch hin soll. Dann unter dem Mikroskop alle Lötstellen prüfen und bei Bedarf überschüssiges Lot mit der Entlötlitze entfernen. :) Vor kurzem habe ich einen SRAM-Bootloader fertiggestellt. Damit kann ich nun schonmal Programme per Hyperterminal in den SRAM übertragen und dort ausführen. Einem kompletten Betriebssystem steht somit nicht mehr viel im Weg... gruß, Daniel
SRAM-Bootloader klingt interessant, wärst du evtl. bereit, den zu veröffentlichen?
Klaro, werde den demnächst hier anpreisen :) Ein problem habe ich allerdings noch nicht gelöst: Das Verschieben der Interrupt-Routinen in den SRAM klappt bislang noch nicht.
Hallo! es ist soweit :) Der SRAM loader ist einigermaßen präsentabel und auf der Seite http://www.base32.de.vu/EMI herunterzuladen. Allerdings muss man bislang noch auf Interrupts verzichten. Das Übertragen von Programmen mit Hilfe eines Terminalprogramms funktioniert jedoch zuverlässig. Die Problematik, welche die Interruptnutzung verhindert wird auf der Seite ebenfalls geschildert. Vielleicht hat ja einer von euch ne Idee!?!?!? Gruß, Daniel
Hi Daniel!! Lad dir mal das neue Compiler Manual von CCS runter und schau auf Seite 33. #build(reset=0x200,interrupt=0x208) //Assigns start location of //reset and interrupt vectors Würde das dein Problem lösen?
Hallo! Naja, genau darin steckt das Problem! Die Adressen bei #build(...) müssen < 0xFFFF sein :-/ deswegen klappt das ganze nicht. (Stimmt, hab vergessen dazuzuschreiben, dass es am #build liegt...)
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.