Archiv verlassen und diese Seite im Standarddesign anzeigen : 80C552, EPROM, RAM, EEPROM, LCD und alles über den Datenbus
Hallo alle zusammen!
Ich habe noch einige 80C552 Prozessoren und viele EProms, EEPROMS da.
Möchte mir daraus ein kleines Entwicklungstool zusammenbauen. Ich weis es ist veraltet und es gibt tausende Flash-Lösungen. Aber wie sagt man so schön: Back to the roots.
Also die 51er können ja nur 16bit adressieren... was kann ich dann alles auf den BUS legen um es über die externen Speicherzugriffe zu kontrollieren?
Programmspeicher:
Beim Programmspeicher kann ich da den 27C512 verwenden? Hätte die Wahl eines kleineren Eproms vorteile?
Datenspeicher:RAM,EEPROM,(LCD)
Hier fangen meine Probleme an:
RAM mit 256kBit
paralleles EEPROM 28C64
und dann noch ein LCD mit 8Bit Ansteuerung nur müsste mir jemand von euch einen Tipp geben ob das überhaupt machbar ist.
müsste ja die Adressleitung dann aufteilen und die einzelnen Steuerleitungen RAM, EEPROM und LCD zu entschlüsseln.
Was könnte man denn noch so sinnvolles mit aufnehmen? Habe an eine RTC gedacht.
Der 80c552 unterstützt I²C-Bus, dort soll dann noch als "Erweiterung" noch ein serielles EEPROM 24c512 oder sowas in der art.
A/D-Wandler ist integriert.
Vielleicht noch D/A, doch das ist nicht so wichtig, dass wäre auch über die PWM Ausgänge machbar.
Also wenn ihr nette Links habt, dann immer her damit. Würd mich über eure Ideen freuen.
Mag jetzt vielleicht bissen blöd klingen, bitte nur Ideen zu dem Projekt und der CPU, das es andere gibt ist mir klar :), danke.
Peter
mein Rat: besorge dir das ''Mikrokontroller Kochbuch'' von A. Roth
da findest du auch bankswitching bis 1 Mbyte und genau das,was DU suchst.
mein Rat: besorge dir das ''Mikrokontroller Kochbuch'' von A. Roth
da findest du auch bankswitching bis 1 Mbyte und genau das,was DU suchst.
Hallo,
habe das Buch hier auch die beiden Zusatzbücher, dort sind auch Beispiele, aber habe sie noch nicht durchabreiten können.
Braucht man eine programmierbare Logik oder geht es auch mit "Standard" Bauteilen... bestimmt, naja blöde Frage eigenlich könnte man ja alles mit UND-Gattern und Invertern realisieren.
Peter
alles geht mit harmlosen Bauteilen.
Schlag doch einfach das Kochbuch auf....die Rezepte fallen dir direkt in die Hand.
Fange aber erst mal mit LED blinken an.:) :mad: :)
.
Hi,
Zu C64 Zeiten hatte man das Problem oft bewältigen müssen. Eine RAM-Floppy z.B. brachte ja immerhin 256k oder mehr (bis 4MB) auf die Waage und der interne Speicher durfte ja nicht angetastet werden.
Die Speicher kamen an den Expansionsbus und hingen dann parallel zu den innereien.
Diese präsentierte sich als externer Speicher und wird durch eine spezielle Leitung vom Adressbus ein- und ausgeschaltet. Bei eingeschalteter Leitung waren alle Busteilnehmer (außer Prozessor) lahmgelegt und der externe Speicher macht sich breit. Der externe Speicher besitzt ein Register, mit dem Die Bank (Bankswitching) ausgewählt wurde. Dadurch konnte der Speicher mit umschaltbaren "fenstern" voll benutzt werden. Das Register war praktisch ein Latch, dass die höheren Adressbits des RAMs bedient hat.
Die Software musste dann die entsprechenden Speicherstellen durch Segment (Latch, höhere Adressen) und Offset (Hardwareadresse) ansprechen und verwalten. Das hat der PC im "Real-Mode" bis zur Einführung des "Protected-Mode" (z.B. ab Win95) auch genau so gemacht, da er ja nur bis 1MB hardwaremässig verwalten konnte.
Andere Möglichkeit (z.B. C64 REU - RAM Expansion Unit) hat ein klitzekleines 16k Fenster im Adressraum belegt. Kann dei Software nicht damit umgehen, so arbeitet dieser Speicher wie der interne. Programme die damit umgehen können (z.B. GEOS - Graphical Environment Operation System) haben dieses Fensterchen zur REU dann mit einem speziellen Register umgeschaltet und das in gesamten Speicherbereich der REU hin- und hergeschoben. Auch hier kommt wieder ein Latch zum Einsatz, dass dann die hohen Adressleitungen der REU bedient.
Mit diesem Trick kannst Du auch den erxternen Adressbereich in kleine, sinnvolle Häppchen aufteilen und mit geeigneten Mitteln die realen Speicheradressen umschalten.
Gruß
Elmar
Hi Sir,
ev. ist es auch eine Überlegung wert mit 32 kB Flashrom und 32 kB RAM
aufzubauen. Klingt zwar bescheiden, reicht aber in der Regel. Vorteil ist,
dass keine aufwendige Selektion nötig ist (1 Inverter) und dass ein Programm
im RAM das Flash neu beschreiben kann (sone Art Bootloader etwa).
guidob
Danke für die bisherigen Beiträge, werde mir das Buch nochmal zu Herzen nehmen.
Denke auch, dass für meine "spielerei" wesentlich weniger Programmspeicher ausreicht.
Wichtig wäre mir nur das möglichst größte RAM und dass parallele EEPROM (Datenlogger) und die LCD-Ausgabe ohne einen weiteren Port dafür zu verwenden. (Der Schreibzugriff soll so ja auch leichter sein, oder?)
Gute nacht Peter
Also wenn ihr nette Links habt, dann immer her damit. Würd mich über eure Ideen freuen.
Hier: goblack.de (http://www.goblack.de/desy/mc8051chip/bauanleitung/desy535_2cls/cls22schaltplan_komplett.html)
Hi,
um die Hardware zu vereinfachen, kannst Du ja auch eine sog. "Zeropage" einbauen. Viele µC Systeme benutzen die für Schnellzugriffe. Dazu wird der Adressraum auf 8-Bit eingeschränkt, die oberen Adressbits sind dabei immer 0. Dadurch spart man sich ein Byte für den Programm Counter und die Anweisung geht schneller.
In Deinem Fall baust Du auf den unteren 4-Bit (oder mehr) des Adressraums Latche ein, die auf ihre eingeschränkte Adresse reagieren (simpler Adressdecoder) und ENABLED sind, wenn alle höheren Adressbits "0" sind (Simples OR mit nachgeschaltetem Inverter). Diese Latche kannst Du dann als "Special Function Register" auffassen und mit diesen kannst Du dann Deinen Adressraum durch Bankswitching gewaltig vergrößern in dem Du diese Latche als Adressleitungen benutzt. Einige davon kannst Du auch als Ausgangspins (Steuerung Display o.ä.) benutzen.
Gruß
Elmar
Peter Dannegger
11.11.2007, 16:45
Also die 51er können ja nur 16bit adressieren...
Ja, wenn man aus der Windows-Ecke kommt, hat man überhaupt keine Ahnung, wie effizient MC-Programme sein können.
Mein größtes Programm besteht aus etwa 25 Objektfiles mit etwa 10.000 Codezeilen und belegt 48kB Flash + 8kB SRAM.
Vergiß also den ganzen Banking-Quatsch und mache 32kB Flash + 8kB SRAM, das reicht dicke die nächsten Jahre.
Peter
Hi,
da war doch die Rede von Daten loggen... Da können zig Megabyte sinnvoll beschrieben werden...
Gruß
Elmar
Peter Dannegger
11.11.2007, 18:36
da war doch die Rede von Daten loggen... Da können zig Megabyte sinnvoll beschrieben werden...
Das kostet dann genau 4 IO-Pins an nen Dataflash oder MMC-Karte.
Peter
Das kostet dann genau 4 IO-Pins an nen Dataflash oder MMC-Karte.
Peterund wozu brauchste dann 8k SRam?:eek:
Peter Dannegger
11.11.2007, 18:59
und wozu brauchste dann 8k SRam?:eek:
Ich nicht, aber der Threadersteller wollte welchen anschließen.
Und ich weiß nicht, ob man noch welchen unter 8kB kriegt.
Peter
ja, kann sein, dass es sowas nicht mehr gibt.
Hi,
man muß ja nicht alles Adressieren können :p Damals beim Trommelspeicher gab es auch unzählige Reservespuren da die so viele Schreib- und Leseköpfe drangepflastert hat wie Platz war und das deckte sich nicht mit einem vollen binären Zahlenraum. Also eine nummer kleienr Adressiert und im Fehlerfall hat man einfach ein paar Drähte umgelötet um die beschädigten Spuren/Köpfe gegen gesunde auszutauschen.
Gruß
Elmar
http://www.microluxx.de/bild/plan.jpg
Die Idee
So das Bild ist etwas groß, aber man kann alles erkennen.
Habe jetzt mal angefangen:
Die Adressierung ROM und RAM sind ja klar, jetzt ist mein Problem; A15 schaltet zw. 0000h - 7FFFh und 8000h - FFFF.
Mit diesem Aufbau und dem 74138, bekomme ich kleine 8kBit Pakete ab 8000h, wie kann ich aber sinnvoll 8000h - 9FFFh für das EEPROM zusammenfassen? einfach die ersten vier Ausgänge des 138 an das CE vom EEPROM.
oder vielleicht A13 und A15 kombinieren:
Wenn A15=1 und A13=1 dann EEPROM CE=1
und die weitere aufteilung des Bereiches A000 - FFFF noch anders gestalten.
Brauche jetzt ne Pause.
Danke für eure Beträge.
Peter Dannegger
12.11.2007, 18:27
So das Bild ist etwas groß, aber man kann alles erkennen.
Und kannst Du uns auch verraten, wie?
Ich hab leider nur nen 1024*768 Bildschirm, da erkennt man überhaupt nichts.
Speicher es mal als PDF ab, vielleicht sieht man dann was.
Peter
8000 - 9FFF mit 8XXX | 9XXX
A000 - FFFF mit AXXX | BXXX | CXXX | DXXX | EXXX | FXXX
Achtung /CE ist lowaktiv, du solltest also einen 6fach inverter bereithalten um bei Notwendigkeit Signale zu negieren
Hallo Winne,
du meinst also die beiden Ausgänge des 138 (8xxxh und 9xxxh) einfach miteinander verbingen und damit denn /CE vom EEPROM ansteuern?
Die Ausgänge sind ja dann LOW wenn die Adresse 8xxxh bis 9xxxh ausgewählt ist, Outputs sind ja Invertiert.
Solange A15 high ist, sind auch alle Outputs high somit auch die /CE inaktiv, oder?
@Peter: ist das mit dem bild jetzt besser, habe es verkleinert bekommen.
Gruß Peter
Sorry hatte nicht genau hingesehen
Ja man könnte die Ausgänge mit eine Diodenmatrix so verodern, das ein lowaktives Signal dominant ist.
d.h. an die betreffenden Ausgänge je eine Diode mit der Kathode anlegen, alle zugehörigen Anoden mit einander verbinden, und mit einem Pullup auf high ziehen.
Wird jetzt einer der betreffenden Ausgänge low, so gilt der Block als angewählt und und an den veknüpften Anoden liegt low an.
Achtung, duhast CE vom Rom fest auf Masse und CS des RAMs sehe ich auch nicht. Da mußt du auch noch selektieren, sonst kommt es zu Konflikten.
Und wie unterscheidest du zwischen IO(z.B. Display) und Display. Hier scheinen noch ein paar Dekodierungsmängel zu liegen.
Habs nur überflogen.
So,
habe den Plan jetzt noch etwas ausgebaut.
Probleme bzw. Fehler liegen bestimmt noch wie im o.g. Beitrag mit CS vor.
Bei der Auswahl der beiden Adressbereiche des EEProm mittels des 74138 bin ich mir auch nicht sicher, ob das so geht, denn einer der beiden ist dann auf high pegel und der andere auf low, sollte ja nen kurzschluss geben.
LCD: bei der auswahl des LCD bin ich jetzt auf die idee gekommen, dass nur noch zwei speicherbereiche a 8 bit erforderlich sind. Kann man das so machen, dass man lesebefehle auf das rom über die read und write befehle über die Steuerleitung über die Gatter so verknüft das diese Lese und Schreibregister des Display auswählen? Hatte meine variante mal kurz duchgespielt.
Wist ja wie das ist wenn man einmal anfängt, dann will man gerne nochmehr haben, ohwohl das noch nciht funktioniert überlege ich mir eine schnittstelle für CF-Karten noch dran zu bauen, aber das wird ohne weiteres nicht möglich sein, oder?
Schaltplan (http://www.microluxx.de/bild/schaltplan.pdf)
gruß Peter
Hallo Pete du hast Recht es sind noch mächtige Fehler darin.
1) Wenn du das ROM mit PSEN = low zum Datenbuss durchschaltest, darf niemand Anderes gleichzeitig Daten auf den Bus legen. Da aber weder der 74LS 138 noch RAM oder EEProm geschweige das LCD wissen wann PSEN low ist, gibt es hier sicher Kollisionen
Abhilfe schaffst du mit einem UND-Gatter an dessen Eingängen du A15 und PSEN /OE(ROM) anschließt und den Ausgang mit G1 des LS138 verbindest. Diese Leitung fürst du dann weiter zum /C des RAMs.
Natürlich zuvor die direkten Verbindungen A15 - G1 (LS138) und A15 /CE(RAM)auftrennen.
2) Die Ausgänge Y0 und Y1 musst Du über ein weiteres Und-Gatter miteinander verknüpfen um bei negativer Logik ein NOR für /CE(EEprom zu generieren).
Also Y0 und Y1 an die Eingänge eines 2. Und-Gatters und dessen Ausgang nach C.
3) Achtung!
Wegen der unvollständigen Dekodierung der LCD-Leitung werden alle Addressen von A000 bis AFFF an das LCD durchgestellt und zwar alle geraden nach A000 und alle ungeraden nach A001. Dies ist aber nicht unüblich und verursacht auch keine Kollisionen, solange der Bereich nicht von weiteren IOs genutzt wird.
Ich erhebe keinen Anspruch auf Vollständigkeit meiner Hinweise, sondern betone das ich dies nach erstem überfliegen erkenne auf mit den genannten Ansätzen lösen würde.
Hallo,
@ Winne 1.): Wenn /PSEN = 0 ist immer /RD = 1. Da kann man doch auf
zusätzliche Dekodierung verzichten, oder?
guidob
man koennte ja auch mal das Datenblatt runterladen (ich wollt, das waer im letzten Jahrtausend auch so einfach gewesen) und nachsehen:
Seite 16ff
http://www.nxp.com/acrobat_download/datasheets/80C552_83C552_4.pdf
Asche auf mein Haupt,
Guidob hat Recht und Rudo liefert den Beweis. Ich denke halt noch immer in von Neumann und nicht in Harvardarchitektur. Obwohl das ja auch keine reine Harvad ist, da Harvad ja zwei vollständige voneinander getrennte Busse vorraussetzt auf welche getrennt und zeitgleich zugegriffen werden kann.
insofern hat sich 1) fast erledigt aber die LCD-Ansteuerung könnte noch schief gehen. Dann wäre das alte Thema wieder frisch.
/RD, /WR und /PSEN sind lowaktiv.
LCD-E wird lediglich vom Ls138 decodiert. Ist E(LCD) lowaktiv? Sonst muss es zuvor negiert werden? Jedenfalls das LCD sieht irgendwann ein ENABLE auch wenn PSEN aktiv ist
RD/WR wird /RW aus /RW und /(/WR) per UND gebildet.
Da stimmt schon mal etwas nicht.
Hier Liegt immer eines von beiden signalen an.
Außerdem muss der der vorhandene Negator muss in den /RD-Zweig nicht in den /WR.
eigentlich genügte aber /WR direkt nach RD/WR(LCD zu legen)
und Enable(LCD) mit der verknüpfung aus /Psen UND /(/AXXX) zu versorgen (für den fall das Enable(LCD) highaktiv ist )
ansonsten /AXXX NOR /(/PSEN)
ein gesunder Spruch: ich wollt, das waer im letzten Jahrtausend auch so einfach gewesen
... Obwohl das ja auch keine reine Harvad ist, da Harvad ja zwei vollständige voneinander getrennte Busse vorraussetzt auf welche getrennt und zeitgleich zugegriffen werden kann. Hallo Winne,
es geht nur um die Adressraeume, Gleichzeitigkeit braucht man nicht, bei Havard sind diese Raeume fuer Code und Daten eben getrennt. Das ist vielleicht eines der ganz wenigen Vorteile gegenueber den Motorola 68xx und den 65xx vonNeumann Konstruktionen. Daten und Code koenen sich nicht ueberschreiben und man hat auch noch 64kB + 64kB Speicher zur Verfuegung.
http://de.wikipedia.org/wiki/Hauptprozessor
Per OpCode werden die Steuersignale fuer Code/Daten/ext.Mem geschaltet.
Schade, dass die 8051er nicht noch einen dritten Adressraum fuer I/O haben, die 8086er Familie kann das und hat dann extra I/O-Steuersignale die von den extra I/O-OpCodes ausgeloest werden - das spart ne Menge an Dekodierung fuer die paar Bytes, die man fuer I/O-Bausteine benoetigt(e). Es wurde dann dagegen argumentiert, dass man nicht alle Befehle fuer I/O zur Verfuegung hat. Die Bitadressierung von Ports beim 8051 ist z.B. viel nuetzlicher als diese aufgeblasenen Codes wie z.B. beim Z80.
Hallo Winne,
es geht nur um die Adressraeume, Gleichzeitigkeit braucht man nicht, bei Havard sind diese Raeume fuer Code und Daten eben getrennt. .....
Die Harvard-Architektur bezeichnet in der Informatik ein Schaltungskonzept zur Realisierung besonders schneller CPUs und Signalprozessoren. Der Befehlsspeicher ist physisch vom Datenspeicher getrennt und beide werden über getrennte Busse angesteuert.Der Vorteil dieser Architektur besteht darin, dass Befehle und Daten gleichzeitig geladen, bzw. geschrieben werden können. (http://de.wikipedia.org/wiki/Harvard-Architektur)
Was nu ?
Wo kann man Havard im Original lesen ?
Was nu ?
Wo kann man Havard im Original lesen ?
Kann man sicher, ob man dann aber noch was versteht???
GutN8,
guidob
Hallo Winne,
eine einfache Moeglichkeit ist, in das englischsprachige Wikipedia zu schauen:
http://en.wikipedia.org/wiki/Harvard_architecture
Most modern computers that are documented as Harvard Architecture are, in fact, Modified Harvard Architecture.Wahrscheinlich meinste diese Passage.
Ich habe noch das original DB von Intels 8051 (1981):
Externally the /PSEN and /RD signals can be combined logically if a contiguous external program and data memory space (similar to a "von Neumann" machine) is desired.von Neumann geht natuerlich auch, habe ich aber nie bei 51ern gemacht.
So,
ich habe die Schaltung nochmal durchdacht.
Es dürften bei die Unterscheidung zwischen ROM und exterem RAM keine Probleme auftreten, das dies alles über PSEN gesteuert wird: Beim zugriff auf das externe RAM ist PSEN in jedem Fall HIGH Pegel.
Wenn also auf das externe RAM (viel mehr auf den externen Adressbereich) zugriffen wird, und zwar im Bereich 0000h bis 7FFFh ist das RAM ausgwählt, da A15 LOW Pegel führt. Sobal man auf Adressen >8000h zugreift wird das ext. RAM deaktiviert.
Über das AND Gatter am 138, ist das EEPROM grade für die Bereiche 8000h bis 9FFFh selektiert, sonnst deaktivert.
Also ROM, RAM, und EEPROM sollten ohne weiteres problemlos funktionieren.
Jetzt kommt die Sache mit dem Display ich habe in verschiedenen Büchern verschiedene Lösungen gefunden.
RS: Registerselect, wählt zw. Daten(LOW) und Steuerbefehlen(HIGH).
R/W: Lesen(HIGH) und Schreiben(LOW)
E: Enable ist HIGH aktiv.
Dem Zeitdiagramm nach, sollen die Daten und die Auswahl des Modi (RS und R/W) vor dem Enable Signal anliegen.
D.h.: Wenn ich die adressen A000h - A001h dazu verwenden möchte, bekomme ich doch wohl Timing Probleme, oder?
Hatte mir folgendes zu dieser Idee überlegt:
Adressen >A000h schalten mir über den 138 den Ausgang Y2 auf LOW Pegel. Über einen Inverter könnte ich, dass Signal direkt auf Enable legen, doch habe ich zu diesem Zeitpunkt noch keine Daten anliegen.
Die Auswahl des Registers erfolgt über A0:
Somit ist A000h = Befahle/Steuerregister
und A001h = Daten.
Über die Steuerleitungen /R und /W der CPU verknüpft über Gatter, wählen zwischen lesen und schreiben über dem RS.
Die zweite Idee wäre:
Ich nutze A0 und A1 für die Steuerleitungen A0 = RS und A1 = R/W,
somit wären die Adressen:
A000h: Befehle schreiben
A001h: Daten schreiben
A002h: Befehle lesen
A003h: Daten lesen
Beide Steuerleitungen /R und /W verknüpft über ein UND Gatter gibt bei einem externen Speicherzugriff ein LOW Pegel, wenn entweder R oder W LOW ist.
Weiter verknüpfe ich den A000h Bereich des 138 über ein NOR Gatter mit dem Ausgang des UND Gatters und schalte damit den Enable Eingang, der dann natürlich nur HIGH Pegel führt, wenn Adresse A000h bis AFFFh und der Impuls von R oder W kommt.
Den Schaltplan habe ich entsprechend der zweiten Lösung angepasst.
Schaltplan (http://www.microluxx.de/bild/schaltplan2.pdf)
Gruß Peter
Peter Dannegger
21.11.2007, 22:53
Ich nutze A0 und A1 für die Steuerleitungen A0 = RS und A1 = R/W,
somit wären die Adressen:
A000h: Befehle schreiben
A001h: Daten schreiben
A002h: Befehle lesen
A003h: Daten lesen
Ja, so macht man das üblicherweise.
Geht allerdings nur bei den langsamen 8051-ern, da das LCD etwa 1µs Zugriffszeit braucht.
Einige moderne 8051 können deshalb externe Zugriffe auch stretchen.
Die Frage ist allerdings, was Du mit dem Board machen willst?
Wenn Du fertige Programme laufen lassen willst, ist ein EPROM o.k.
Wenn Du allerdings damit entwickeln willst, ist ein EPROM absolute Scheiße.
Ich hab früher mal sowas mit den 87C751 gemacht, also ins Programmiergerät stecken, brennen, in die Schaltung stecken, testen, läuft nicht, ins Löschgerät, 20min warten, ins Programmiergerät ... usw.
Ich würde sowas meinem ärgsten feind nicht zumuten wollen.
Zum Entwicklen muß also mindestens ein Flash drauf und ein EPROM, der nen Bootloader enthält (zum Flashen über die UART).
Man muß beim 8051 auch nicht klotzen, 8..32kB Flash reichen völlig.
Der Bootloader paßt in der Regel in 2kB rein.
Wenn Du keine so kleinen Chips hast, einfach die überzähligen Adressen auf GND. Bloß kein Banking machen, damit stellst Du Dir nur selber Fallgruben.
Peter
Ich würde sowas meinem ärgsten feind nicht zumuten wollen.@Peter,
jetzt spekulierste wohl darauf, dass der eine oder andere Feind an Lachkraempfen verstirbt:D
@SirPete,
professionell wurde seinerzeit ein Emulator benutzt,
fuer das kleine Budget reichte aber auch ein EPROM-Simulator, hier bei Batronix gibts einen mit usb-Anschluss.
http://www.progshop.com/versand/epromemulator/emulator.html
Preiswerter wird die Entwicklung natuerlich, wenn du dich fuer einen Chip aus diesem Jahrtausend entscheiden koenntest. Da gibts welche, die nicht nur einen Bootloader sondern auch schon den Debugger gleich onboard haben.
Hi,
um eine sinnvolle Anwendung damit zu machen muss man ja erstmal die Basis haben.
Ich habe die Bauelemente alle seit Jahen zuhause und wollte mir zunächst ein kleines Entwicklungstool daraus bauen.
Als Student der elektrotechnik kommt man auch im Studium immer wieder in kontakt mit Microcontrollern.
Man hat ja so zwischendurch immermal eine Idee was man prgrammieren könnte.
zu der Sache mit dem EPROM, habe hier auch an die 50 Eproms könnte also immer mal nen neuen nehmen und dann mehrere auf einmal Löschen. Habe als alternative an den 27SF512 gedacht, den es hier im Shop gibt.
Aber investieren wollte ich eigenlicht nicht mehr viel.
Was wäre denn noch interessant direkt mit einzubauen um flexibel zu bleiben?
Wie nutze ich die serielle Schnittstelle am sinnvollsten, damit meine ich eigetlich ob ich nur RX und TX mit dem MAX232 verbinde, oder baut man auch RTS und die anderen steuerleitugnen ein?
Wie ich schon vorher einmal erwäht habe würde mich auch die ansteurung von CF Karten oder SD-Karten interessieren, was davon ist einfacher zu machen und was sinnvoller?
sind die Daten dann nur über den Controller lesbar, oder kann man ganze datein ablegen um diese dann am rechner auszuwerten?
fragen über fragen. für den einstieg auf jedenfall für mich alles noch zu kompliziert, und viele werden sagen fang klein an. dass würd ich ja dann auch machen, wäre aber gerne dann mit board lange zufrieden.
Außerdem soll man ja immer nach dem großen streben.
Werde am wochenende auch mal selber schauen wegen der RS232 schnittstelle.
Gruß Peter
hi,
es kann mal vorkommen, dass man noch ein Handshakesignal f. RS232 benoetigt. Das letzte Mal war es bei mir vor einigen Jahren der Fall, als die Webserver noch recht neu und teuer waren. Da musste man stattdessen ein Timeout im Webserver konfigurieren, was dann etwas schwerfaellig arbeitet.
es waren Ethernet/RS232 Converter von
http://www.wut.de
Vielleicht kann Ed sagen, ob noch eine "Ready-Leitung" neben Rx und Tx notwendig ist.
==== Außerdem soll man ja immer nach dem großen streben. ===
.
So sieht es sauber aus....wire wrap
.
http://jeep.cfasp.de/upload/676154.jpg
.
Außerdem soll man ja immer nach dem großen streben.
So sieht es sauber aus....wire wrap
Peter Dannegger
22.11.2007, 11:01
zu der Sache mit dem EPROM, habe hier auch an die 50 Eproms könnte also immer mal nen neuen nehmen und dann mehrere auf einmal Löschen. Habe als alternative an den 27SF512 gedacht, den es hier im Shop gibt.
Wenn Du den Flash nicht schon in der Schaltung vorsiehst, nützt er dir genau nur nen Fliegenschiß.
Du mußt nen EPROM + Flash/EEPROM vorsehen, denn ein Flash/EEPROM kann sich nicht selbst programmieren. Die Programmierroutine liegt im EPROM und der Flash/EEPROM wird mit PSEN und /WR verbunden.
Der Boot-EPROM hat z.B. die Adresse 0000-07FF und der User-Flash/EEPROM von 8000-FFFF.
Ob Du Flash oder EEPROM nimmst, ist egal, nen EEPROM muß man nicht löschen, das ist der einzige Unterschied.
Peter
Hallo,
auf das EPROM kann getrost verzichtet werden, Ich habe ja oben schon geschrieben
wie das geht: /PSEN und /RD mit UND verknüpft auf je 32 KB Flash und RAM.
Ins Flash wird extern der Bootloader gebrannt, der sich bei Aufruf ins RAM
kopiert und dort laufend das Flash neu beschreibt. Einziges Problem das ich
im Moment damit habe ist, daß zwei Layer bei meinen Layoutkünsten nicht
reichen. Gibt daher ein (ev. auch tauschbares) Memmodul.
Kleine Flashs gibt es bei eb* für kleines Geld. Als Massenspeicher SDCard
nehmen, ist einfacher anzusteuern (viel weniger Pins) und viel billiger.
Da reicht es zunächst die freien Pins des µC auf Pfostenleisten zu legen,
ein Interface ist dann schnell drangestrickt. Auf der SDCard das übliche
(vorformatierte) FAT-System nutzen, dann kann man sie einfach abziehen
und im PC auslesen.
Bei der RS232 hängt es davon ab, ob du die PC-Software selbst schreibst.
Dann würde ich auf Handshakeleitungen verzichten, die verschwenden nur
wertvolle Ports am µC.
Gruß,
guidob
Edit: Mit dem Flash ist auch das EEPROM obsolet, da Daten auch im Flash
gespeichert werden können (ebenfalls vom RAM aus).
Nochmal Edit: Wer einmal mit einem Bootloader (danke Peter) gearbeitet
hat, will nie mehr zurück. :)
Peter Dannegger
22.11.2007, 13:34
Ins Flash wird extern der Bootloader gebrannt, der sich bei Aufruf ins RAM
kopiert und dort laufend das Flash neu beschreibt.
Na super.
Milliarden Besitzer totgeflashter Mainboards, MP3-Player, DVD-Player usw. verfluchen den Erfinder dieser Methode.
Diesen Thrill muß ich aber nicht haben.
Ich entwickele einmal den Bootloader und schreibe ihn so, daß er sich nicht selbst löschen kann und auch nicht temporär gelöscht wird.
Egal, ob der Strom ausfällt, die Übertragung stockt oder ein Bit kippt, das Update buggy ist usw., mein Bootloader gestattet immer einen nächsten Versuch.
Meine Schaltungen haben keinen Selbstzerstörungsknopf.
Wenn man keinen Flash mit 2 Sektionen nimmt, dann eben 2 Chips und der 2. Chip ist kein SRAM!
PSEN reicht völlig zum Lesen, muß man nicht mit /RD verunden.
Peter
Ich entwickele einmal den Bootloader und schreibe ihn so, daß er sich nicht selbst löschen kann und auch nicht temporär gelöscht wird.
PSEN reicht völlig zum Lesen, muß man nicht mit /RD verunden.
Da spricht ja nix dagegen, der Bootloader muß ja nicht überschrieben
werden (kann aber). Das Flash wird sektorweise (bei mir je 64 Byte)
gelöscht und beschrieben, in der Zeit kann man aber nicht aufs Flash zugreifen.
Darum muß der Loader im RAM laufen und das geht besser
wenn /RD und /PSEN geundet sind, sonst fällt das RAM als Datenspeicher
flach (Schreiben mit movx und Lesen mit movc ginge, wäre aber doch
umständlich um 2 Dioden und einen Pullup zu sparen).
guidob
Hallo alle zusammen!
das mit dem Flash PROM (27SF512) war eigentlich so gedacht, dass ich ihn extern beschreibe und dann wieder in die schaltung einsetze, damit wollte ich mir lediglich das löschen per UV ersparen.
Die Geschichte mit dem Bootloader hört sich gut an, aber ich denke für meine zwecke mache ich eh schon viel viel viel zu viel an dem board.
Es soll einfach aber sehr funktionsfähig werden.
Man hat ja immer so eine eigene Idee im Kopf.
Werde wohl heute zu nix mehr kommen, danke schon mal für euere Antworten, würde mich dann wieder melden.
Verspreche euch dann auch Fotos wenn es an die Herstellung geht. :)
Gruß Peter
Peter Dannegger
22.11.2007, 22:42
Es soll einfach aber sehr funktionsfähig werden.
Dann weißt Du nicht, was "sehr funktionsfähig" bedeutet.
Glaub ruhig den Leuten, die derartige Foltermethoden hinter sich gelassen haben.
Ich benutze zwar schon jahrelang keine MCs mit externen Speicher mehr, aber auch in die mit internem Flash (z.B. AVR) kann man nen Bootloader reinprogrammieren.
Es programmiert sich schon wesentlich entspannter, wenn man am PC eine Taste drückt und nach ~10s ist das Programm compiliert, geflasht und läuft auf dem Testboard.
In der gleichen Zeit hast Du den Chip noch nicht mal aus dem Sockel gezogen.
Und spätestens nach dem 10. mal hast Du nen Pin abgebrochen oder ihn falschrum eingesteckt und er qualmt munter vor sich hin.
Besonders lustig ist ein Bootloader bei den kleinen 8-, 14- und 28-Pin MCs.
Eine 2-polige Kopfhörerbuchse unauffällig am Gerät angebracht und schon kannst Du die Software jederzeit ändern.
Man kann damit seine Mitmenschen in den Wahnsinn treiben, wenn Geräte plötzlich eine andere Funktion haben (Die Uhr läuft ja rückwärts).
Man hat nur mal 5 Sekunden mit dem Notebook zufällig "danebengestanden".
Peter
Na schaumal,
auch im PeterD steckt noch ein Lausbub !!
Waehrend hier immer ueber dicke Brummer gesprochen wird moechte ich mal wieder mit meiner Miniflamme heizen. Mein C8051F300 hat heute das sprechen und hoeren gelernt...ueber die UART ! Dachte schon das EntwicklungsBoard waere defekt...aber da ist ein cleveres chipchen drauf: SP3223 das schaltet sich selbst ab (wenn RS232 Stecker gezogen ist)und spart strom....(geht auf 1uA Stromverbrauch zurueck...gut fuer Batteriegeraete)
Auf den 3x3mm Chip sitzen 8kb flash und macht alles 100 mal schneller als der dicke Brummer hier ....so (unten) kann ein mikroBrummer aussehen
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.