Forum: Mikrocontroller und Digitale Elektronik Fehlersuche in 80C32Basicsteuercomputer aus Elektor 98


von Tobias (Gast)


Lesenswert?

Hallo zusammen,

Vor kurzem habe ich mich an den Nachbau des im Elektorheft 2 und 3 /
1998 beschriebenen 80C32 Basicsteuercomputers gemacht.
Den Platinensatz als auch das Eprom habe ich mir über Geist Elektronik
liefern lassen.

Leider blieb die gewünschte Funktion aus.

Die im Heft beschriebenen Tests (Spannungsmessung und Prüfung des
Oszillators) konnte ich durchführen.
Die Einstellungen am PC habe ich entspr. der Beschreibung vorgenommen.

Da ich mit meinem Rat am Ende war, bestellte ich mir die Bauteile, die
Platienen und das Eprom erneut um einen bauseitigen Fehler
auszuschließen.

Leider auch diesemal ohne Erfolg!

Ich bin nun mit meinem Latein völlig am Ende.

Kann mir hier jemand ein paar Tips geben um die Dinger endlich zum
Laufen zu bringen?

Schöne Grüße
Tobias

von thkais (Gast)


Lesenswert?

Ich habe mir auch so ein Ding gebastelt - allerdings gibts das
Hexfile für den Basic-Interpreter kostenlos im Internet...

Auwei, das kann sehr vieles sein...

Wenn die Betriebsspannung am Controller anliegt und das Quarz nebst
Kondensatoren richtig bestückt ist, gibts eigentlich keinen Grund,
weshalb der Oszillator nicht laufen sollte.

Wichtig wäre, zu wissen, was Du bislang ausprobiert hast.

von Benedikt (Gast)


Lesenswert?

Befindet sich der Interpreter im uC oder in einem EPROM ?
Irgendwo habe ich auch noch einen AT89C32 mit der Software hier
rumliegen, lief einwandfrei: Reingeflashed, mit dem PC verbunden und
ein kurzer Text erscheint im Terminalprogramm.

von thkais (Gast)


Lesenswert?

GRMPF - ich kriege nichts über das Ding raus.
Gehe ich recht in der Annahme, daß Du einen 80C32 ohne eigenes ROM
(oder Flash) in der Schaltung hast? Dann muß das Basic in einem
externen ROM sein.
Wenn sich das Basic nicht meldet, kann dies folgende Ursachen haben:

- Verbindung zum PC nicht korrekt.
Man muß ja die Leertaste drücken, damit die Kommunikation startet.
Allerdings sollte man nach dem Einschalten des Basic-Rechners
mindestens 5 Sekunden warten, da er schon ein wenig zum Initialisieren
braucht. Drückt man die Leertaste zu schnell, bekommt die
Autobaud-Routine nicht alles mit und es tut sich nichts.
Hast Du schon Verbindungen mit anderen Systemen mit dem PC aufgebaut?
Um die Verbindung zum PC grundsätzlich zu checken, versuche folgendes:
Zieh den RS-232-Stecker am Basic-System ab und brücke Pin 2 + 3 am
Kabel. Dann wird jede Übertragung des PC sofort zurückgesendet. Du
solltest also auf dem Bildschirm exakt das sehen, was Du eingibst.
Funktioniert das nicht, hast Du ein Problem mit dem PC.

- Verbindung zu den Externen Speicherbausteinen nicht korrekt.
Wenn irgendwelche Adress- oder Steuerleitungen nicht richtig verbunden
oder kurzgeschlossen sind, dann kann das System nicht starten. Daß dies
zweimal auf verschiedenen Platinen passiert, ist allerdings
unwahrscheinlich - aber nicht unmöglich.
Gibt es irgendwelche Jumper auf der Platine? Evtl. können damit
verschiedene Speicherkonfigurationen eingestellt werden. Wenn die nicht
richtig eingestellt sind, funktionierts auch nicht. Was auch gerne
passiert: Das ROM auf dem falschen Steckplatz...
Übrigens startet das System auch nicht, wenn der RAM nicht richtig
angesteuert werden kann.

von Tobias (Gast)


Lesenswert?

Hallo zusammen,

erstmal vielen Dank für die zahlreichen Tips und Infos.

thkais: Ausprobiert habe ich so ziemlich alles was man als Leihe tun
kann. So habe ich mir ein neues Nullmodemkabel zugelegt, die
Schaltungen an einen zweiten PC getestet, sämtliche IC's gewechselt
und zu guter letzt die gesamte Schaltung neu aufgebaut.
Deinen Ratschlag beim Kabel (Brücke 2+3) habe ich versucht. Klappt
einwandfrei.
Somit scheidet der PC und das Kabel doch aus?

Benedikt: der Interpreter befindet sich in einem EProm welches ich mir
(2mal) bei Geist Elektronik (die vertreiben die Platinen und Eproms von
ELEKTOR).
Eigentlich müsste ein Fehler in der Software doch auszuschließen sein?
Könntest du mir deinen zur Verfügung stellen? Der müsste doch
funktionieren, oder?

---------------------
Könnte ich einem meine Schaltung mit Beschreibung zusenden.
Ich bin selbstverständlich bereit, sämtliche Kosten und Aufwendungen zu
tragen.

Grüße
Tobias

von thkais (Gast)


Lesenswert?

Ich hatte anfangs auch gewisse Startprobleme.... bei mir lags an einer
nicht richtig kontaktierten Steuerleitung - da kann man sich manchmal
einen Wolf suchen...

Wenn das mit dem Kabel funktioniert, kann man PC-Software und Kabel
selbst ausschließen.

Gehen wir mal einen Schritt weiter:
Ich vermute, daß ein MAX232 die Konvertierung des Signals übernimmt.
Nimm den 80C32 aus der Fassung heraus, brücke Pin 10 und 11 an der
Fassung des 80C32 und mache nochmal den Test, ob die ausgegebenen
Zeichen den eingegebenen entsprechen.
Damit wäre der komplette Signalweg der seriellen Schnittstelle bis hin
zum Prozessor gecheckt.

Hast Du irgendeine Möglichkeit, ein EEPROM selbst zu programmieren? Ich
könnte Dir dann ein kleines Programm schicken, das zumindest die
Grundfunktionen sicherstellt.

Auch interessant wäre die Information, ob und welche Jumper auf der
Platine vorhanden sind.

Prinzipiell könnte ich Deine Schaltung durchchecken, aber das sollten
wir als allerletzte Möglichkeit vorsehen.

von Benedikt (Gast)


Lesenswert?

Besorg dir am besten einen AT89S52 bei Reichelt.
Dieses kannst du ohne viel Hardware über den LPT programmieren.
Die Software dazu gibt es bei Atmel.

von thkais (Gast)


Lesenswert?

@Benedikt: Es gibt aber ein Problem. Die Platinen, die Tobias hat, sind
für den 80C32 mit externem ROM ausgelegt. Um ein internes Programm mit
dem AT89S52 ausführen zu können, muß er den /EA -Pin auf VCC legen
können, der ist aber vemutlich fest auf GND gelegt. Es sei denn, auf
der Platine existiert ein Jumper zum Umschalten.
Außerdem würde mich interessieren, wie Dein 89S52 die Meldung senden
konnte, ohne daß ein externes RAM dran war. Hast Du eine andere Version
des MCS-52 Basic? Ich benutze die original V1.1, nur die EPROM-Routinen
habe ich durch EEPROM-Routinen ersetzt (der Source ist frei
verfügbar).

@Tobias: Kannst Du mal einen Scan vom Schaltplan machen? Schicke ihn
mir per mail, wegen des Copyright wirds nicht gern gesehen, wenn das
veröffentlicht wird.

von Benedikt (Gast)


Lesenswert?

Es gibt ja mindestens 10 verschiedene Versionen davon:
Alleine schon 2 oder 3 Elektor Versionen, die orginale Version, mit und
ohne Fließkomma usw.
Ich musste mehrere Versionen ausprobieren, bis es ging.
Auch ohne SRAM kommt der Bergrüßungstext, wenn ich mich noch richtig
erinnere.

von thkais (Gast)


Lesenswert?

Hm - die Elektor-Versionen kenne ich nicht.
Bei der V1.1 läuft ohne RAM definitiv nichts, zusätzlich muß man
(sofern die Baudrate nicht mit dem "PROG"-Befehl gespeichert wurde)
erst die Leertaste drücken, bevor eine Meldung kommt.

von Tobias (Gast)


Lesenswert?

Hallo thkais,

ich glaube wir kommen dem Problem langsam auf dei Schliche!
Ich habe die Versorgungsspannung angelegt und nur den MAX 232 auf die
Platine gesteckt.
Beim brücken der Pin 10 und 11 an der Prozessorfasung oder aber auch
der Pin 11 und 12 am MAX 232 passiert im Monitorproramm nach Eingabe
nichts.
Die vorgegebenen Bauteile (5 Elkos 10uF und eine Kondensator 100 nF)
sied wie beschrieben eingesetzt.
Auch mit einem neuen MAX 232 tut sich nichts.
Dabei fällt mir ein, dass ich nicht die vorgesehenen 25V Elkos sondern
35 V verwendet habe. Dass kann es aber doch nicht sein.

Ein EEProm kann ich leider nicht programmieren.

Grüße
Tobias

von Tobias (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist auch nochmal der Schaltplan!

Grüße
Tobias

von thkais (Gast)


Lesenswert?

Bei mir wird leider der Schaltplan nicht geöffnet...

Checke doch mal folgendes am Max232:
Pin 2 : Sollte um die +8 bis +10 V liegen
Pin 6 : Sollte um die -8 bis -10 V liegen.
Falls dies nicht der Fall ist, tippe ich auf verpolte Kondensatoren.

von Tobias (Gast)


Angehängte Dateien:

Lesenswert?

Die Spannungen liegen wie ziemlich genau bei + und - 9V.
Den Schaltplan habe ich jetzt als gif hinterlegt.

von thkais (Gast)


Lesenswert?

Gut - sowohl der Schaltplan als auch die Spannungen sind in Ordnung...

Seltsam - eigentlich sollte das dann funktionieren. Ist vielleicht am
SUB-D Steckverbinder auf der Controller-Platine etwas faul? Wenn Du Pin
10-11 am Controller bzw. 11-12 am Max232 gebrückt hattest und es kommt
nichts an, dann muß es irgendwo zwischen dem Max und dem Stecker
liegen. Schau doch mal mit dem Durchgangsprüfer die Verbindungen
zwischen Max und SUB-D Stecker durch.

von Josef (Gast)


Lesenswert?

Nimm mal ein Terminal- und kein Monitorprogramm (Winterm, brücke am Max
Pin 11 und 12) und gib einen Buchstaben ein. Dieser muß danach im
Terminalprogramm sichtbar sein, sonst steckt der Fehler zwischen
PC und Max.

Josef

von thkais (Gast)


Lesenswert?

@Josef: Das Terminal-Prog ist bereits gecheckt, und Pin 11+12 hat er
auch schon gebrückt gehabt. Siehe oben.

von Tobias (Gast)


Lesenswert?

Den ersten Fehler habe ich gefunden.
Die Pins der SUB-D Buchse sind spiegelverkehrt herausgeführt.
Ich habe ihn jetzt auf die Rückseite gelötet.
Die Brücke auf dem MAX232 Sockel von 13 nach 14 wird jetzt im
Terminalprogramm angezeigt.

Nicht jedoch eine Brücke von 11 nach 12. Die Spannung liegt dabei an.

Ich habe das jetzt mit 3 verschiedenen IC's ausprobiert.

Übrigens habe ich im Terminalprogramm die Einstellungen wie folgt
gewählt:
19200Bit/s, 8 Datenbits, keine Datenbits, Stopbits 1, keine
Flussteuerung (war so in der Elektor beschrieben)

von Tobias (Gast)


Lesenswert?

übrigens ist das Ergebnis in beiden Schaltungen identisch!

von thkais (Gast)


Lesenswert?

Hm - Könnte es sein, daß Du zur Verbindung an den PC ein falsches Kabel
hast? Es gibt Kabel, die kreuzen Pin 2 + 3 (und weitere Pins, ein sog.
Null-Modem Kabel), Du brauchst ein Kabel, bei dem die Kabel nicht
gekreuzt sind.
Wenn Du am Ende des Sub-D Kabels Pin 3 durchmißt, sollte +/- 8..12V
anliegen, an Pin 2 nahezu 0 V (gegen Pin 5 gemessen).
Ist dies nicht der Fall, hast Du ein Null-Modem Kabel erwischt.

von Tobias (Gast)


Lesenswert?

Volltreffer!!
Ich hatte, wie in der Beschreibung beschrieben, ein Null Modem Kabel
benutzt.
Jetzt, mit einer 1:1 Verbindung kann ich den Pin 100 und 11 des
Prozessors kurzschließen und erhalte tatsächlich die gewünschte
Rückmeldung auf dem Terminalprogramm. Erst mal vielen Dank!!!

Leider tut sich jetzt mit eingesetztem Prozessor, Ram und Eprom noch
immer nichts.
Gibts noch weitere Möglichkeiten zum Fehlereingrenzen?

Schöne Grüße
Tobias

von thkais (Gast)


Lesenswert?

Gut, also ist nun die serielle Kommunikation in Ordnung.

Weiter oben wurde schon angesprochen, daß Elektor wohl eine
modifizierte Version des Basic benutzt - ich habe mich mal umgeschaut
und den Autor des Basic-Rechners gefunden. Die dortige Version
entspricht der V1.1, die ich auch benutze.
Die weitere Fehlersuche gestaltet sich ohne Oszilloskop als schwierig,
denn es kann nun vieles sein.
Das mit der Leertaste schon gecheckt? Ich habe da noch keine
Bestätigung von Dir.
Wenn alle Stricke reißen, dann melde Dich bei mir per Mail, evtl.
greifen wir doch auf die Versandmethode zurück.
Hier noch der Link zum Autor:
http://home.arcor.de/h.boehling/80c32.htm

von Tobias (Gast)


Lesenswert?

Hallo thkais,

Die Leertaste habe ich jedesmal (in allen Varianten (schnell und
langsam) gedrückt.
Ein Oszi habe ich zu Verfügung.
das Terminalprogramm des Autors habe ich bereits installiert und teste
es jedesmal mit.

Wenn du noch ein paar Ideen hast probiere ich sie noch aus, ansonsten
sende ich dir den Rechner per Post zu.
Deine EMail Adresse ist mir noch nicht bekannt.

Schöne Grüße
Tobias

von Josef (Gast)


Lesenswert?

Glaube dass die serielle Komunikation immer noch nicht läuft !

Mit dem Osci oder Logiktester würde ich am Controller auf der
RXD-Leitung messen, ob bei einer Tastenbetätigung am
PC/Terminalprogramm
hier etwas passiert. Meistens happert es genau hier.
Ansonsten den Logiktester auf die TXD Leitung und Strom einschalten.
MCS Basic meldet sich normal mit einer kurzen Meldung automatisch.
Also dürfte auch am Osci was sichtbar werden, wenn das Board
funktioniert.

SG Josef

von thkais (Gast)


Lesenswert?

@Josef: Tobias hat Pin 10 und Pin 11 am Controller-Steckplatz gebrückt
und bekommt die vom Terminal gesendeten Zeichen zurück. Damit ist die
serielle Kommunikation bis hin zum Controller O.K., zumindest sehe ich
keinen Grund, weshalb sie das nicht sein sollte.
Das Basic 1.1 sendet erst dann etwas, wenn das RAM richtig
initialisiert werden konnte und wenn die Leertaste gedrückt wurde. Eine
automtatische Meldung kommt nur dann, wenn sich im Programm-Eprom (nicht
zu verwechseln mit dem System-Eprom) die Baudrate befindet.

Da kann jetzt vom defekten Controller bis hin zu einer vergessenen
Lötstelle alles der Fall sein.

@Tobias:
Ich würde erst mal mit dem Oszi schauen, ob am Pin 29 (PSEN) ein Signal
anliegt. Es sollte ca. 1/6 des Quarztaktes haben. Außerdem Pin 20 (ALE)
checken, da sollte sich ähnliches tun. Ist das der Fall, dann läuft der
Controller schon mal.
Wenn ich den Schaltplan richtig interpretiere, ist IC4 das System-ROM.
Wie hast Du den Jumper an IC4 beschaltet? Wenn das Basic sich an
Adresse $0000 des Eproms befindet, muß der Jumper auf die beiden
A14-Leitungen gesteckt werden. Auf keinen Fall darf der Jumper offen
sein - dann funktionierts garantiert nicht. Probier auch mal die andere
Jumper-Position.
Falls das alles nichts gebracht hat, kommt noch richtig Arbeit auf Dich
zu:
1. Die Datenleitungen checken. Einmal, ob alle richtig miteinander
verbunden sind, und einmal, ob irgendwo ein Kurzschluß ist.
2. Das Gleiche mit den Adressleitungen.
3. Und auch die Steuerleitungen checken.

von Binder (Gast)


Lesenswert?

Habe das Board aus Elektor 4/91 zusammen gebaut.
 Funktioniert soweit auch.
 Habe aber Probleme mit den Editor,wenn ich eine Befehlszeile
 schreibe.
 wird sie nach RETURN direkt ausgeführt.

von thkais (Gast)


Lesenswert?

Ohne Zeilennummer am Anfang der Zeile wird die Zeile direkt ausgeführt.
Das MCS-51 Basic ist eine Version aus der guten, alten Zeit, als man
noch genau wußte, in welcher Zeile man sich befand ;)

von tex (Gast)


Lesenswert?

@Tobias
Hast Du es schon mit einem NOP - Stecker probiert? So kannst Du
eigentlich ganz gut testen wie weit die Kommunikation zwischen
Prozessor und ROM funktioniert, weil durch den NOP-Befehl der
Adresszähler hochgezählt wird. Das kann man sich mit einem Oszi ganz
gut anschauen. Wenn das geht, weißt Du, das Prozessor, Latch,
Oszillator miteinander auskommen. Ich hoffe mal dass Du das richtige
EPROM auf Deinem Board hast. Es gibt da Unterschiede.

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.