Forum: Mikrocontroller und Digitale Elektronik Aktuelle 8051-Clone - so kompatibel wie möglich


von Stefan H. (huebner_ie)


Lesenswert?

Moin,
nach langer Zeit habe ich mich hier mal wieder angemeldet, weil die 
Suchfunktionen diverser Maschinchen mir zwar alle möglichen modernen 
Controller mit MCS51-Core liefern, aber nichts, was so kompatibel wie 
möglich zum Urgestein ist.

In der Zielanwendung wird ein 8051 mit deaktiviertem ROM betrieben, 
extern hängt ein 2764 und diverse Peripherie (Latches, Buffer und Timer) 
am Daten- und decodierten Adressbus.

Dass diese Alternativfunktion der Ports mit dem klassischen '373/'573 am 
gemultiplexten Bus weiterhin funktioniert ist also unerlässlich.

Schneller als das Original muss er auf jeden Fall sein, da ich eine 
interruptbasierte serielle Schnittstelle nachrüsten will. Ein besserer 
UART mit Empfangsbuffer wäre daher irgendwie toll.

Ein zweiter UART wäre noch besser, aber dann wird es nichts mehr mit 
drop-in. Wäre aber auch nicht schlimm.

Ich habe damals als der DS80C320 aktuell war, mal einige Schaltungen 
re-designed, seitdem habe ich eigentlich nur noch AVR und ARM benutzt. 
Bei der Zielanwendung ist aber so viel trickreich in MCS51 Code gelöst 
und es muss nur so wenig ergänzt werden, dass der Aufriss, ein AVR- und 
ARM-Board in den 8051 Sockel zu adaptieren und den ganzen Code neu zu 
schreiben etwas drüber wäre.

Viele Grüße
Stefan

von Route_66 H. (route_66)


Lesenswert?

STC89C51...
STC12C5A602...
oder auch Mikrochip
SST89x516...

: Bearbeitet durch User
von Stefan H. (huebner_ie)


Lesenswert?

Danke schon mal, auf die Typen wäre ich sicher nicht auf Anhieb 
gekommen.
Ich müsste noch mal nachlesen, wie weit man bei denen internes Flash und 
externen Speicher (am normalen Daten/Adressbus) nutzen kann, beim 8051 
war das mit EA=1 ja möglich, intern 4k ROM und extern den Rest das 
Adressraumes zu nutzen.
Allerdings wird es mit einem drop in Ersatz eh schwierig, den bei der 
Entwicklung in circui zu programmieren, da geht es vermutlich mit dem 
EPROM-Emulator und der alten Beschaltung schneller

von Motopick (motopick)


Lesenswert?

> was so kompatibel wie möglich zum Urgestein ist.
> Schneller als das Original muss er auf jeden Fall sein

Signetics 8051 33 MHz - 40 Pin Ceramic DIP
Pinkompatibel und  natuerlich mit Guckloch oben.

von Route_66 H. (route_66)


Lesenswert?

Stefan H. schrieb:
> Danke schon mal, auf die Typen wäre ich sicher nicht auf Anhieb
> gekommen.
> Ich müsste noch mal nachlesen, wie weit man bei denen internes Flash und
> externen Speicher (am normalen Daten/Adressbus) nutzen kann, beim 8051
> war das mit EA=1 ja möglich, intern 4k ROM und extern den Rest das
> Adressraumes zu nutzen.
> Allerdings wird es mit einem drop in Ersatz eh schwierig, den bei der
> Entwicklung in circui zu programmieren, da geht es vermutlich mit dem
> EPROM-Emulator und der alten Beschaltung schneller

Das ist alles gar kein Problem. Der interne Programmspeicher ist in 
jedem Falle ausreichend. Das externe RAM kann weiterhin genutzt werden, 
wenn es in der Anwendung überhaupt nötig ist.

Das in-circuit-programming geht sehr einfach über die serielle 
Schnitstelle.
Die Software dafür gibt es kostenlos im Internet.

Ich nutze die o.g. Typen bereits lange.

von Peter D. (peda)


Lesenswert?

Stefan H. schrieb:
> Schneller als das Original muss er auf jeden Fall sein, da ich eine
> interruptbasierte serielle Schnittstelle nachrüsten will.

Schneller geht nicht, der externe EPROM bestimmt die Zugriffszeit.
Aber Du gewinnst doch schon massig Zeit durch die Umstellung der UART 
von Polling auf Interrupt.

Z.B. die AT89LP51RD2 gibt es noch in DIP40 und können die oberen 32kB 
nach extern mappen. Im fast Mode wirst Du allerdings keinen EPROM 
finden, der schnell genug ist.
Der interne Flash läßt sich über die UART per Bootloader programmieren.

von Stefan H. (huebner_ie)


Lesenswert?

Und nochmal danke :)

Ja, Flash und ISP wäre natürlich schon "nett".

Den externen Adressraum brauche ich weniger wegen des RAM (obwohl es 
akkugepuffert ist, also wohl doch), sondern eher wegen der ganzen I/Os 
die dort noch über adressierte Register und Buffer realisiert wurden und 
ca 20 Timer.

Beim AT89LP51 würde das externe Mappen der oberen 32k bedeuten, dass ich 
die Adressdecoder umstricken und entsprechend alle Zugriffe im Code 
anpassen müsste, die Kröte würde ich wohl schlucken.

ISP über UART muss ich mich dann mal einlesen, ich bin halt SPI oder 
JTAG (oder SWI) zum in circuit flashen gewohnt, und davor war 
EPROM-Emulator angesagt. Der UART wird zum Glück bisher nur für ein ... 
hüstel ... Cassetteninterface benutzt, das würde ich vermutlich sowieso 
opfern und dann nach der Nutzung für die Programmierung den UART für 
MIDI nutzen (genau, es geht um einen Syntesizer)

von Peter D. (peda)


Lesenswert?

Stefan H. schrieb:
> Beim AT89LP51 würde das externe Mappen der oberen 32k bedeuten, dass ich
> die Adressdecoder umstricken und entsprechend alle Zugriffe im Code
> anpassen müsste, die Kröte würde ich wohl schlucken.

Das betrifft aber nur den Flash (CODE). Die internen 2kB SRAM kannst Du 
zur Laufzeit umschalten und so die gesamten 64kB XDATA nach extern 
mappen.

von Stefan H. (huebner_ie)


Lesenswert?

Moment - habe ich da einen Gedankenfehler? Das Mappen der externen 32k 
nach dem internen Flash bezieht sich doch nur auf den Programmspeicher, 
oder?

Der Datenspeicher müsste doch identisch zum Ur-51 sein - ich werde dazu 
mal die beiden genannten ICs anschauen.

Wenn der Schaltplan korrekt ist wäre das SRAM auf 0000-0FFF (wobei es 
nur 2k hat, so dass es vermutlich von 0800-0FFF adressiert wird, da der 
Bereich 0000-00FF ja intern belegt ist), die Timer irgendwo ab 1000 und 
die restliche I/O bei 2000.

Beim Takt muss ich vermutlich auch vorsichtig sein, weil zB die 
Tastaturabfrage durch einfaches Adressieren der Tastenmatrix im Speicher 
erfolgt. Ohne Latch. Einfach 3 Adressleitungen auf einen '138, der 
steuert die Matrix und die wird dann über einen 244 oder 245 am Datenbus 
eingelesen.

von Stefan H. (huebner_ie)


Lesenswert?

Peter D. schrieb:
> Stefan H. schrieb:
>> Beim AT89LP51 würde das externe Mappen der oberen 32k bedeuten, dass ich
>> die Adressdecoder umstricken und entsprechend alle Zugriffe im Code
>> anpassen müsste, die Kröte würde ich wohl schlucken.
>
> Das betrifft aber nur den Flash (CODE). Die internen 2kB SRAM kannst Du
> zur Laufzeit umschalten und so die gesamten 64kB XDATA nach extern
> mappen.

Genau, darüber war ich dann auch gestolpert. Perfekt!

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.