Intelligent-Interface
"tuning"
Das Intelligent Interface von
fischertechnik ist ja nun schon ein wenig älter und ich habe
auch einige (noch) ungenutzt im Regal liegen. Was mich schon immer
störte: Man war im Download-Modus auf LLWIN, die grafische
ft-Programmiersprache, angewiesen. Es gab keine Alternative, das
Interface autonom zu betreiben und mit einer alternativen
Programmiersprache zu programmieren. Bis heute ;-)
Was
wird gemacht?
Es gibt verschiedene
Alternativen, die Hardware des Intelligent Interface alternativ zu
nutzen. Neben auswechseln des EProm mit der Firmware ist (m.E.) die
eleganteste der Austausch des 80C32-Mikrocontrollers gegen einen
kompatiblen Typen mit internem Flash. Dabei fiel meine Wahl auf den
AT89S52 (nicht zuletzt, weil ich den zufällig da hatte).
Dieser Controller ist mit einer seriellen Schnittstelle im System
programmierbar (ISP) und hat 8K Flash, das für einige
Anwendungen vollauf reichen sollte. Es gibt auch pinkompatible Derivate
mit mehr Flash - da mag jeder einsetzen, was er mag.
Wichtig ist nur, dass der
Austausch-Controller Pin- und Softwarekompatibel zum 80C32 ist.
Das originale Betriebssystem
bleibt vollständig erhalten.
Der
Umbau
... benötigt schon
einiges know-how, schließlich geht es darum, einen SMD-Chip
zu entlöten, ohne die Platine zu beschädigen und
einen ähnlichen Chip auch wieder hinein zu löten -
ohne den neuen Controller durch Überhitzung ins Nirvana zu
schicken. Deshalb sollte man sich nur dann an den Umbau wagen, wenn man
weiß, wie man mit dem Lötkolben umgehen muss ;-)
Für das
Entlöten empfehle ich den Einsatz eines
Heißluftföns, wobei man schon darauf achten muss,
die richtige Temperatur zu erwischen - wenns zu kalt ist, dauerts zu
lang und benachbarte Bauteile werden in Mitleidenschaft gezogen. Ist es
zu warm, gibts Platine überbacken.
Im
Anschluss ein paar Fotos, die den Umbau zeigen (Zum
Vergrößern draufklicken)

|
Die
Platine des Interface nach der Demontage des Deckels. Rot markiert der
Mikrocontroller, der raus muss. |

|
Der
Mikrocontroller ist
entfernt, die Pads schonmal nachgelötet, um die
durch den
Entlötvorgang übrig gebliebenen Zinnreste einzuebnen, sonst
bekommt man den neuen Mikrocontroller nur schlecht auf die Pads drauf. |

|
Nun
geht es ans
eingemachte. Der /EA - Pin des Mikrocontrollers liegt im Interface auf
GND - damit führt er Programme im externen ROM aus. Wir wollen
aber
auch auf ein internes ROM (bzw. Flash) zugreifen können,
deshalb
müssen wir in der Lage sein, den /EA - Pin umschalten zu
können. An den beiden markierten Stellen muss die Leiterbahn
unterbrochen werden. Damit wird auch der /CS - Pin des RAM von der
Masse getrennt, den müssen wir später wieder mit
Masse
verbinden. |

|
Auch
auf der
Rückseite müssen wir eine Leiterbahn unterbrechen. Es
handelt
sich um den seriellen Ausgang (Pin 9) des 74HCT597, der an Pin 7 des
Mikrocontrollers (Port 1.5) angeschlossen ist. Ausgerechnet das ist der
"MOSI" - Pin des ISP-Interface. Für eine Programmierung des
Mikrocontrollers muss diese Verbindung getrennt werden. |
 |
Nun geht
es ans Verdrahten. Zunächst stellen wir die Verbindung
zwischen /CS des RAM und GND wieder her. |
 |
An
den Mikrocontroller werden die Anschlüsse für die
ISP-Schnittstelle angelötet. Ist etwas fummelig, aber geht.
Von links nach rechts: MOSI, MISO, SCK. |
 |
Der /EA - Pin des
Mikrocontrollers muss auch wieder angeschlossen werden.... |
 |
Auch der Pin 9 des
74HCT597 benötigt einen extra-Anschluss... |
 |
Soviel zum Thema
"Kompatibel". Eigentlich
sollten alle MCS-51 Derivate kompatibel sein - nur leider hat der
Entwickler des Intelligent-Interface nicht sauber gearbeitet. Die
Ausgänge der MCS-51 sind sog.
Open-Collector-Ausgänge, d.h.
sie können Lasten nur gegen Masse treiben. Die Clock-Leitung
der
Schieberegister (595 und 597) funktioniert beim 80C32 noch wunderbar -
aber mit dem AT89S52 eben nicht. Der obligatorische Pull-Up Widerstand
fehlt. Ein 10K Widerstand an der markierten Stelle behebt das Problem
(es macht sich durch flackernde Ausgänge bemerkbar). |
 |
Die Reset-Leitung des
Mikrocontrollers
wird ebenfalls für die ISP-Schnittstelle benötigt.
Der
Einfachheit halber wird sie an den Pull-Up Widerstand
angelötet. |
 |
Mein
Programmiergerät benötigt
eine Spannungsversorgung von 5V, die ich mir aus dem Interface
heraushole. Dies ist natürlich abhängig vom
verwendeten
ISP-Programmier-Interface (ich benutze die mit 74XX244 gepufferte
Version von der PonyProg-Seite für die parallele
Schnittstelle). |
 |
Dies ist die von mir
gewählte Variante des Anschlusses von unten.... |
 |
... und hier von oben.
Der 10-polige Stecker hat die folgende Belegung (von links nach rechts):
Obere Reihe:
GND - frei - GND - GND - VCC
Untere Reihe
MISO - SCK - RESET - frei - MOSI
Die beiden Jumper können für verschiedene
Betriebsarten gesteckt werden. Belegung von oben nach unten:
Jumper links:
VCC - /EA(Mikrocontroller) - GND
Jumper rechts:
MOSI (Programmierstecker) - Pin 7 (Mikrocontroller) - Pin 9 (74HCT597)
Beide Jumper oben: Flash-Programm wird ausgeführt,
Programmierschnittstelle aktiv
Linker Jumper oben, rechter unten: Flash-Programm wird
ausgeführt,
Programmierschnittstelle inaktiv, Einlesen der Eingänge via
74HC597 ist möglich.
Beide Jumper unten (wie im Bild): Originales Betriebssystem wird
ausgeführt. |
Programmierung
Getestet habe ich die Programmierung
mit Assembler.
Zum Flashen des Controllers verwende ich, wie schon oben
erwähnt,
den ISP-Programmieradapter von PonyProg (Schaltplan auf der Homepage
von PonyProg), aber auch die Minimallösung des Parallel-Port
Adapters sollte funktionieren. USB-Programmer sind mir nicht bekannt,
aber sicherlich irgendwo im Netz vorhanden.
Zum Programmieren habe ich die Software "ISP-Programmer" von
Adam Dybkowsky verwendet - auch hier gibt es sicherlich
Alternativen.
Derzeit bin ich noch nicht über ein paar Testprogramme hinaus
gekommen, aber der Winter könnte ja lang werden... ;-)