Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Designfehler D004? IORQ und M1 » Themenansicht

Autor Thread - Seiten: -1-
000
09.05.2010, 19:32 Uhr
danielk

Avatar von danielk

Hallo,

seit einigen Wochen schon kämpfe ich mit einem Hardware-Problem, das mir einfach keine Ruhe lässt. Ich glaube, heute endlich des Rätsels Lösung gefunden zu haben. Wenn meine Beobachtungen korrekt sind, hat die Koppelsteuerung des D004 einen Fehler. Und zwar nicht nur bei mir, sondern im originalen Design.

Um da wirklich sicher sein zu können, brauche ich Hilfe. Zunächst würde ich gerne in Erfahrung bringen, ob das Problem wirklich bei allen D004 auftritt. Der Fehler kann wie folgt reproduziert werden:

1. Benötigt wird ein KC 85/4 oder KC 85/5 mit D004-Aufsatz. Ein D002 Busdriver kann dazwischen stecken, muss aber nicht.

2. Im Schacht F0 oder F4 muss sich ein Modul M008 bzw. M021 befinden. Die Prioritätskette darunter sollte ununterbrochen sein.

3. Nach dem Einschalten des Systems im CAOS-Menü folgendes ausführen:

Quellcode:
SWITCH FC 04

Damit wird (ausschließlich) die Koppelsteuerung der D004 aktiviert. Bei CAOS 4.4 ist dies nicht unbedingt notwendig, da die D004 schon beim Start initialisiert wird.

4. Die Datei DIGGERJ.KCC (Diskette 023 des KC-Clubs) in den KC laden. Wie das geschieht, ist unerheblich. V.24, USB, Kassette oder Diskette gehen alle, wobei bei der Verwendung von Disketten natürlich die D004 zunächst in der CAOS-Betriebsart gestartet werden muss, womit Punkt 3 entfällt.

5. Falls nicht schon geschehen, das Spiel mit der Eingabe von DIGGER im CAOS-Menü starten.

6. Die Taste "P" drücken und den folgenden Bildschirm mit Enter bestätigen, um mit dem ersten Level zu beginnen. Nach dem Erscheinen des Levels nochmals Enter drücken. Die Uhr am oberen Rand sollte jetzt loslaufen und der Diamant fällt herunter.

Wenn Ihr jetzt problemlos Digger spielen könnt, ohne das irgendetwas passiert, dann habt Ihr das Problem offenbar nicht. Probiert auch mal den Joystick aus, falls Ihr einen habt. Wenn allerdings die Uhr nach wenigen Sekunden stehen bleibt, alles einfriert, und der KC auf keinerlei Eingaben mehr reagiert, dann habt Ihr offenbar das gleiche Problem wie ich.

Soweit der erste Teil. Es wäre super, wenn sich ein paar Tester fänden und das Ergebnis zurückmelden würden.

Dieses Problem beschäftigt mich wie gesagt schon seit Wochen. Ich hatte im Laufe der Zeit folgende Beobachtungen gemacht:

1. Das M008 muss im D004 stecken. Im Grundgerät oder im Busdriver gibt es keine Probleme. Das Problem tritt sowohl mit als auch ohne Busdriver zwischen D001 und D004 auf.

2. Der Fehler tritt nur auf, wenn die Koppelsteuerung aktiv ist (angezeigt duch die LED "CONNECTION" am D004). Die weiteren Bits im Steuerwort haben keinen Einfluss auf das Ergebnis. SWITCH FC FB reicht aus, um das Problem verschwinden zu lassen.

3. Nach dem Einfrieren des Systems liegt auf der /INT-Leitung dauerhaft Low-Pegel. Der Sender ist das Grundgerät, nicht die D004 (durch Auftrennen festgestellt).

4. Die Joystick-Routine hat die Besonderheit, dass sie die PIO des M008 alle 20 ms (50 Hz) einen Interrupt auslösen lässt. Darüber hinaus sorgt Digger dafür, dass Interrupts mit einer Frequenz von 17,5 kHz auf die CPU einprasseln. Man kann das gleiche Phänomen inklusive des Einfrierens auch mit Jungle 2.0 beobachten.

5. Das Trennen der Verbindung von D306 Pin 8 zur Leitung /KZKR genügt, um das Einfrieren zu verhindern. Das gleiche gilt, wenn stattdessen Leitung /OE von D415 Pin 9 getrennt wird. Verbindet man den Anschluss wieder für einen kurzen Moment während das Spiel läuft, friert der KC sofort ein. Ohne Trennen der Verbindungen kann man leider mit dem Oszilloskop nichts sehen, da nur ein kurzer Impuls zu reichen scheint.

Ich habe das ganze Wochenende mit Messen und Schaltungsstudium verbracht, und konnte keine Abweichung der Funktion vom Stromlaufplan feststellen. Ich habe dabei Ulrich Zanders korrigierte Pläne benutzt. Ich wollte schon aufgeben, doch dann fiel mir folgendes auf:

In der Logik der Koppelsteuerung erfolgt das Zuschalten des Koppel-RAM auf den Datenbus bei /IORQ. Für die Richtungssteuerung wird zusätzlich noch /WR ausgewertet. Was jedoch nicht ausgewertet wird, ist /RD oder /M1! Wenn /WR High-Pegel führt und /IORQ aktiv ist, und die sonstigen Bedingungen wie Zugriffsadresse usw. erfüllt sind, dann wird einfach ein Lesezugriff angenommen und der Bustreiber D415 auf den Datenbus zugeschalten.

Dass dies tatsächlich so ist, habe ich mit den Messungen in Punkt 5 nachgewiesen: Für einen kurzen Moment wird der Koppel-RAM auf den Datenbus gelegt, obwohl Digger sicherlich nichts mit der D004 im Sinn hat.

Da gibt es aber nun ein Problem: Der Interrupt-Acknowledge der Z80-CPU wird durch /M1 und /IORQ angezeigt. Man darf also bei aktivem /IORQ und inaktivem /WR nicht einfach einen Lesezugriff annehmen. Daher meine These: Das Zuschalten des Koppel-RAM auf den Datenbus stört den Interrupt-Request/Interrupt-Acknowledge-Zyklus, was das Einfrieren des Systems zur Folge hat.

Um diese These zu testen, habe ich meine Bustreiberplatine im D004 so umgebaut, dass statt dem originalen /IORQ die Verknüpfung von /(IORQ x /M1) zur Hauptplatine geführt wird. Das Ergebnis: es funktioniert! Digger mit Joystick läuft jetzt, und CP/M macht auch noch was es soll.

Das soll jetzt erst mal reichen. Ich habe auch schon ein paar Überlegungen zur der Frage angestellt, warum das M008 im D004 stecken muss. Dazu später mehr. Jetzt will ich erst mal Testergebnisse sehen.

Puuh. *schweißvonderstirnwisch*

Dieser Beitrag wurde am 09.05.2010 um 21:14 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
09.05.2010, 22:36 Uhr
Enrico
Default Group and Edit


Ich würde da eher von den üblichen Laufzeitproblemen ausgehen.
Interupt-Annahme erfolgt ja mit /IORQ und /M1 aktiv, /RD und /WR bleiben dabei inaktiv. Da der Koppel-RAM mit /IORQ und /WR eingeschaltet wird, stört das nicht. Anders sieht das schon mit der Interrupt-Kette aus. Wenn im Grundgerät ein /INT anliegt, und die Interrupt-Kette viel zu lange zum durchlaufen brauch, kann es sein, dass da 2 ICs den IV-auf den Bus legen wollen. Dass 2 ICs zeitgleich Interrupt anmelden in dem sie /INT auf Masse ziehen stört nicht, da das IC mit IEI = H und IEO = L am Start ist.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
09.05.2010, 23:19 Uhr
danielk

Avatar von danielk


Zitat:
Enrico schrieb
Ich würde da eher von den üblichen Laufzeitproblemen ausgehen.
Interupt-Annahme erfolgt ja mit /IORQ und /M1 aktiv, /RD und /WR bleiben dabei inaktiv. Da der Koppel-RAM mit /IORQ und /WR eingeschaltet wird, stört das nicht.

Nein! Das /WR steuert nur die Richtung des Bustreibers. Es wird auch ohne aktives /WR eingeschaltet. Das ist ja das Problem. Schau's Dir auf dem Schaltplan einfach mal an.

Und wie gesagt, es funktioniert alles plötzlich mit meiner Änderung.

Es wäre wirklich schön, wenn der ein oder andere versuchen könnte, den Fehler zu reproduzieren. Das dient ja gerade dazu abzuklopfen, ob ich mit meinen Beobachtungen tatsächlich richtig liege, oder ob es nicht vielleicht doch irgendetwas anderes ist.

P.S.: Und generell: ich habe das ganze verdammte Wochenende mit Tastkopf und Lötkolben in der Hand verbracht. Den reißerischen Titel habe ich nicht aus einer Laune heraus gewählt. Im Gegenzug wäre es echt toll, wenn jeder sich vor dem Antworten das Geschriebene vollständig durchliest.

Dieser Beitrag wurde am 09.05.2010 um 23:56 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
10.05.2010, 01:08 Uhr
danielk

Avatar von danielk

Nochmal konkret, damit klar ist worauf ich hinaus will: Verfolgt man /OE des Bustreibers (Pin 9 an D415) zurück, gelangt man zum Flip-Flop D407, Pin 6. Für den Schaltzustand des Flip-Flops sind die Signale an den Pins 1 (Reset) und 3 (Clock) verantwortlich, die anderen sind fest. An Pin 1 geht direkt /KIORQ, also das IORQ-Signal des Grundgerätes.

Pin 3 (Clock) kommt von D405 (AND), Pin 3. An Pin 1 von D405 liegt das über D404 invertierte Signal /KZKR. Pin 2 von D405 kommt von Pin 8 des Flip-Flops D407. Hier sind wieder nur Pin 13 (Reset) und Pin 11 (Clock) als Eingänge relevant. An Pin 13 liegt FMREQ, also ein internes Signal der Floppy Disk Basis. Pin 11 kommt von Pin 6 des AND-Gatters D405. Pin 5 von D405 ist wiederum der Ausgang des anderen Flip-Flops, d.h. das Signal /OE selbst. An Pin 4 liegt der über D403 invertierte Ausgang von D402, Pin 11. Die beiden Eingänge dieses NAND-Gatters sind FC00H und FMREQ, beides interne Signale der Floppy Disk Basis.

Es bleibt somit /KZKR als einziges Signal, das abhängig vom Zustand des externen Busses erzeugt wird. Es kommt von Pin 8 des NAND-Gatters D306, mit wiederum vier Eingängen. Am ersten Eingang (Pin 9) liegt das über D301 invertierte Signal /KIORQ. Am zweiten Eingang (Pin 10) liegt ONL, also Bit 2 des Modul-Steuerbytes. Am dritten Eingang (Pin 12) liegen die über D310 AND-verknüpften Adressleitungen KA4 bis KA7. Und am vierten Eingang (Pin 13) liegen die über D301 invertierten und mit D311 AND-verknüpften Adressleitungen KA2 und KA3.

Fazit: Nirgendwo taucht /KM1 oder /KRD auf. Und anders als ich ursprünglich gesagt hatte taucht noch nicht einmal /KWR auf -- es ist nur so, dass bei aktivem /KWR der Koppel-RAM Empfänger ist, und daher den KC-Bus nicht stört. Er wird dann allerdings unter Umständen überschrieben...

Dass der Fehler sich bisher nur mit einem M008 im D004 so eindeutig bemerkbar macht liegt meines Erachtens zum Einen an der Auswertung des IEI-Signals für die Richtungssteuerung auf den Bustreiber-Platinen, was vermutlich die Signale vom Koppel-RAM blockt wenn das M008 nicht im D004 selbst steckt. Und zum anderen denke ich, dass die Interrupts des CTC im Grundgerät und die der Joystick-PIO konkurrieren, was zusammen mit der hohen Frequenz die Wahrscheinlichkeit stark erhöhen dürfte, dass der Fehler sich bemerkbar macht.

Das ist natürlich noch etwas schwammig, und ich muss nochmal genau darüber nachdenken. Fest steht, dass die Auswertung von /M1 das Problem beseitigt.

Dieser Beitrag wurde am 10.05.2010 um 01:22 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
10.05.2010, 08:27 Uhr
Mr. Museum



Ömm hab scho stundenlang irgendwelche Spiele mit Joy gezockt, ohne hänger, Digger und Jungle20 waren auch bei. Nur, dass eben das M021 irgendwo in der 2 stöppelt. In der F ist nur M003 oder RAM drinne, oft auch nüx.
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
10.05.2010, 08:38 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
Ömm hab scho stundenlang irgendwelche Spiele mit Joy gezockt, ohne hänger, Digger und Jungle20 waren auch bei. Nur, dass eben das M021 irgendwo in der 2 stöppelt. In der F ist nur M003 oder RAM drinne, oft auch nüx.

Und mit M021 im D004? Das ist ein wichtiges Detail.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
10.05.2010, 12:42 Uhr
Mr. Museum



die 1&2 sind busdriver, wiegesagt in der D004 stecken bestenfalls mal ein 1MB und M003 drinnen, meist garnix weil deren Netzteil eh schon hart am Limit ist.
--
Gruß,

Micha (der ohne Farbfilm)

Dieser Beitrag wurde am 10.05.2010 um 12:54 Uhr von Mr. Museum editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
10.05.2010, 13:06 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
die 1&2 sind busdriver, wiegesagt in der D004 stecken bestenfalls mal ein 1MB und M003 drinnen, meist garnix weil deren Netzteil eh schon hart am Limit ist.

Ja, aber könntest Du es vielleicht einfach mal ausprobieren? Büdde büdde, dauert auch nur fünf Minuten. Falls Du Dir Sorgen um die Stromversorgung machst: Ein M008 schluckt mit Sicherheit deutlich weniger als ein M003.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
10.05.2010, 14:47 Uhr
Mr. Museum



Müsst ich heut abend mal lunzen, Atm ist der C64GS Mod primär angestöpselt... dass der alte Krams aber auch immer so viele Stecker braucht um ihn komplett in Betrieb zu nehmen...
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
10.05.2010, 16:51 Uhr
Mobby5



Huch, bin hier im falschen Thema. Kann leider meinen Beitrag nicht löschen.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden

Dieser Beitrag wurde am 10.05.2010 um 16:52 Uhr von Mobby5 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
10.05.2010, 19:45 Uhr
susowa




Zitat:
danielk schrieb
Und mit M021 im D004?

Kann das Problem nicht bestätigen, mit M021 in F0 (KC-Club) und geschlossener Modulkette mit 6 anderen Modulen in D001 und D002 läuft alles wie es soll.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
10.05.2010, 22:00 Uhr
danielk

Avatar von danielk


Zitat:
susowa schrieb
Kann das Problem nicht bestätigen, mit M021 in F0 (KC-Club) und geschlossener Modulkette mit 6 anderen Modulen in D001 und D002 läuft alles wie es soll.

Danke fürs Testen! Das macht die Sache dann wohl etwas komplizierter. Bei mir kann ich mit den beschriebenen Schritten das Problem zu 100% reproduzieren, sogar ohne D002 Busdriver dazwischen.

Das heißt, ich muss nochmals nach möglichen Fehlern meines D004 Ausschau halten. Da meine Schaltung funktioniert, die das /IORQ-Signal nur bei inaktivem /M1 durchlässt, denke ich, dass ich schon auf der richtigen Fährte war. Es ist möglich, dass ein anderer Teil der Schaltung indirekt dafür sorgt, dass ein Interrupt-Acknowledge die D004-Hauptplatine vielleicht erreicht, die Antwort jedoch normalerweise nicht zum Grundgerät gelangen kann. Konkretere Vorstellungen habe ich leider noch nicht... Das M021 ist jedenfalls nicht Schuld, denn ich habe auch noch ein anderes M008 hier, bei dem das gleiche Problem auftritt.

Hat jemand eine Idee? Möglicherweise habe ich in meiner Analyse der Schaltung auch etwas übersehen; für Hinweise in der Richtung wäre ich dankbar. Ich werde mir jedenfalls demnächst die Zeitdiagramme der Interruptprioritätskette genauer anschauen.

Es wäre super, wenn noch ein paar andere den Test durchführen könnten.

Hmm. Ich habe soeben nochmal den Stromlaufplan der Bustreiberplatine konsultiert; und ich sehe immer noch nicht, dass das Signal /IORQ irgendwo gestoppt wird. D.h. es muss die D004 erreichen und muss somit das Schalten des Koppel-RAM auf den Datenbus zur Folge haben, auch wenn es Teil eines Interrupt-Acknowledge ist. Hilfe! Ich kapier einfach nicht wie so etwas nicht zu Problemen führen kann... Kann sich das bitte irgendwer ansehen und entweder bestätigen oder widersprechen? Ich fange langsam an, an meiner geistigen Gesundheit zu zweifeln...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
10.05.2010, 22:01 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
Müsst ich heut abend mal lunzen, Atm ist der C64GS Mod primär angestöpselt...

Das wäre echt super, danke!


Zitat:
dass der alte Krams aber auch immer so viele Stecker braucht um ihn komplett in Betrieb zu nehmen...

Das ist doch Teil der besonderen Atmosphäre.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
10.05.2010, 22:29 Uhr
Mr. Museum



Was aber dafür sorgte, dass der 4er heut wieder im seeligen Schlummer ruhte, diesmal kam allerdings nen Amiga Projekt dazwischen... Hab wohl paar zu viele Maschinchen :-/ am 1715 müsst ich auch mal wieder tun ... mennooo
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
11.05.2010, 15:01 Uhr
danielk

Avatar von danielk

OK. Wenn Du später nochmal dazu kommst, wäre das natürlich super.

Ich hatte mir eigentlich ursprünglich eine Testreihe erhofft... bis jetzt habe ich allerdings nur zwei Ergebnisse, Ralfs und mein eigenes.

Na ja, sieht so aus als ob ich mich allein durchkämpfen muss. Momentan komme ich allerdings nicht weiter. Fürs erste muss die Untersuchung wohl erst mal ruhen, bis mir wieder was einfällt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
11.05.2010, 15:27 Uhr
tp




Zitat:
danielk schrieb
Ich hatte mir eigentlich ursprünglich eine Testreihe erhofft... bis jetzt habe ich allerdings nur zwei Ergebnisse, Ralfs und mein eigenes.

Ich hätt's ja auch mal probieren wollen, aber ich habe weder M008 noch M021. Vielleicht fällt Dir ja noch eine andere Variante zum Testen ein? Z.B. mit M003?
--
Die Zeit ist auch nicht mehr, was sie mal war! (Albert Einstein)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
11.05.2010, 18:33 Uhr
ManfredB



So, ich hab den Versuch auch mal gemacht. Auch auf die Gefahr hin, dass ich Dich, Daniel noch mehr durcheinanderbringe hier mein Ergebnis: Wenn mein M021 im D004 steckt, funktioniert der Joystick gar nicht. Ich kann das Spiel nur mit der Tastatur steuern. Aber auch das nur mit verzögerter Reaktion der Tastatur. Aber eingefroren ist nichts. Wenn das M021 im Busdriver steckt, funktioniert alles tadellos.

Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
11.05.2010, 18:42 Uhr
danielk

Avatar von danielk


Zitat:
tp schrieb
Ich hätt's ja auch mal probieren wollen, aber ich habe weder M008 noch M021. Vielleicht fällt Dir ja noch eine andere Variante zum Testen ein? Z.B. mit M003?

Danke für das Angebot. Leider habe ich mit einem M003 den Fehler nicht auslösen können. Ich habe allerdings auch nicht probiert, das M003 direkt zu programmieren um eine hohe Interrupt-Frequenz zu erzeugen -- vielleicht sollte ich das mal machen. Im Moment besteht natürlich auch das "Problem", dass mit dem Einbau der Verknüpfung /IORQ' = /(IORQ x /M1) im D004 jetzt alles funktioniert.

Na ja, für weitere Versuche werde ich wohl ohnehin noch ein paar Mal hin und her basteln müssen. Mal schauen was passiert, wenn ich die Bustreiberplatine komplett gegen eine aus einem D002 Busdriver tausche. Leider habe ich keine zweite D004 parat, sonst wäre manches einfacher. Aber wenn alle Stricke reißen, bleibt immer noch die Option beim nächsten KC-Club-Treffen mit einem M008 von Platz zu Platz zu laufen.

Hat sich eigentlich inzwischen jemand die von mir beschriebenen Stellen im Stromlaufplan angesehen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
11.05.2010, 18:50 Uhr
danielk

Avatar von danielk


Zitat:
ManfredB schrieb
So, ich hab den Versuch auch mal gemacht. Auch auf die Gefahr hin, dass ich Dich, Daniel noch mehr durcheinanderbringe hier mein Ergebnis: Wenn mein M021 im D004 steckt, funktioniert der Joystick gar nicht. Ich kann das Spiel nur mit der Tastatur steuern. Aber auch das nur mit verzögerter Reaktion der Tastatur. Aber eingefroren ist nichts. Wenn das M021 im Busdriver steckt, funktioniert alles tadellos.

Jetzt fängt es langsam an, lustig zu werden. Vielen Dank fürs Testen! Sieht ganz danach aus, dass eine richtige Testreihe in der Tat erforderlich ist, um ein vollständiges Bild zu erhalten.

Das Zeitverhalten scheint wohl dann tatsächlich eine wichtige Rolle zu spielen. Die Frage ist nur, ob Variationen im Zeitverhalten das Problem verursachen oder verdecken. Ich tendiere eher zu letzterem... Nur die üblichen Signallaufzeiten zwischen den Einzelgeräten sind es so oder so nicht, da zumindest bei mir das Problem auch ohne D002 Busdriver auftritt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
11.05.2010, 18:57 Uhr
ManfredB



So, Update..... ich hab noch ein wenig experimentiert... Wenn ich die Modulprioritätskette unterbreche (ein Modul im Busdriver raus), kann ich das Spiel zwar mit dem Joystick starten, aber es friert jetzt tatsächlich ein. Gleich zum Anfang, wenn der Diamant runterfällt. Er bleibt gleich eine Etage tiefer stecken... und dann geht nichts mehr.

Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
11.05.2010, 19:06 Uhr
danielk

Avatar von danielk


Zitat:
ManfredB schrieb
So, Update..... ich hab noch ein wenig experimentiert... Wenn ich die Modulprioritätskette unterbreche (ein Modul im Busdriver raus), kann ich das Spiel zwar mit dem Joystick starten, aber es friert jetzt tatsächlich ein. Gleich zum Anfang, wenn der Diamant runterfällt. Er bleibt gleich eine Etage tiefer stecken... und dann geht nichts mehr.

Das isses! Super vielen Dank, das ist ein sehr nützlicher Hinweis. Bei mir fällt er etwa drei oder vier Kästchen nach unten bevor alles einfriert, aber meine Modulprioritätskette müsste auch vollständig sein. Ich werde das mal nachprüfen.

Und nun die spannende Frage: Was passiert, wenn Du das M008 in den Busdriver schiebst und darunter ein Modul heraus nimmst? Friert der KC dann auch ein?

Und Ralf, wie sieht es bei Dir aus? Könntest Du das mit dem Unterbrechen der Prioritätskette vielleicht auch mal probieren, wenn du Zeit hast?

Dieser Beitrag wurde am 11.05.2010 um 19:09 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
11.05.2010, 19:17 Uhr
ManfredB




Zitat:
danielk schrieb
Und nun die spannende Frage: Was passiert, wenn Du das M008 in den Busdriver schiebst und darunter ein Modul heraus nimmst? Friert der KC dann auch ein?

Mit dem M021 im Busdriver mit unterbrochener Modulprioritätskette funktioniert es ohne Probleme, es friert nichts ein.

Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
11.05.2010, 20:05 Uhr
danielk

Avatar von danielk


Zitat:
ManfredB schrieb
Mit dem M021 im Busdriver mit unterbrochener Modulprioritätskette funktioniert es ohne Probleme, es friert nichts ein.

Danke! Super, das deckt sich mit meinen Erwartungen für den Fall, dass meine Vermutungen korrekt sind. Ich wollte nur sichergehen, dass das Unterbrechen der Kette nicht das eigentliche Problem ist.

Relevant für das M008 ist ja eigentlich nur die Interruptprioritätskette. Im Busdriver wird das IEO-Signal in jeder Ebene über eine AND-Verknüpfung von IEI und den IEO-Ausgängen der beiden Modulschächte gebildet. Die IEO-Ausgänge der Modulschächte werden per Pull-Up-Widerstand auf 5V gezogen, so dass die Kette durch das Herausziehen eines Moduls nicht wirklich unterbrochen wird.

Was sich aber vermutlich dabei verändert ist das Zeitverhalten. Was für ein Modul war es denn, das Du herausgezogen hattest?

Nachtrag: Das Herausziehen von Modulen müsste die Verzögerung auf der Interruptprioritätskette ja eigentlich reduzieren. Mir ist gerade der Gedanke gekommen, dass die Abhängigkeit vermutlich nach unten besteht! Daher folgende Hypothese: Der Fehler ist um so wahrscheinlicher, je weniger Module und Busdriver zwischen D001 und D004 stecken.

Dieser Beitrag wurde am 11.05.2010 um 20:16 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
11.05.2010, 20:23 Uhr
ManfredB




Zitat:
danielk schrieb
Was für ein Modul war es denn, das Du herausgezogen hattest?

Das waren RAM-Module: einmal ein M011 und einmal ein auf M032 umgebautes M011. Die hatte ich einfach nur reingesteckt, damit die Kette geschlossen ist.

Gruss
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
11.05.2010, 20:39 Uhr
danielk

Avatar von danielk


Zitat:
ManfredB schrieb
Das waren RAM-Module: einmal ein M011 und einmal ein auf M032 umgebautes M011. Die hatte ich einfach nur reingesteckt, damit die Kette geschlossen ist.

Das ist dann wirklich seltsam, denn nach meinem Verständnis der Schaltung dürfte das eigentlich keinen Unterschied machen. RAM-Module haben ja einfach nur eine direkte Verbindung von IEI nach IEO und fertig.

Oh, Moment... ich habe gerade nochmal einen Blick auf die Schaltung geworfen: Ich glaube, die Kette wird doch unterbrochen, aber nur jeweils für das links danebenliegende Modul, wenn man rechts eins herauszieht! In den höheren Ebenen geht es dann wieder normal weiter, wenn ich die Schaltung richtig verstehe.

Dieser Beitrag wurde am 11.05.2010 um 20:39 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
11.05.2010, 21:53 Uhr
Mr. Museum



Ergebniss:

1 Busdriver: Joy geht wie bei susowa in F 1a, 2 Busdriver Joy geht in 0,1,2 aber nicht in korrekt in F (einfrieren).

Problem also Laufzeitbedingt nachvollziehbar.
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
11.05.2010, 22:50 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
1 Busdriver: Joy geht wie bei susowa in F 1a, 2 Busdriver Joy geht in 0,1,2 aber nicht in korrekt in F (einfrieren).

Dir auch vielen Dank. Hm, das geht ja jetzt wieder in die andere Richtung. Du hast nicht zufällig auch ausprobiert, bei nur einem oder keinem Busdriver Module aus der Kette zu nehmen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
11.05.2010, 22:55 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
Problem also Laufzeitbedingt nachvollziehbar.

Ein klassisches Laufzeitproblem durch eine zu lange Kette ist es nicht, da bin ich mir ziemlich sicher. Variationen in den Laufzeiten sorgen vermutlich einfach nur dafür, dass bestimme Ereignisse zusammentreffen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
12.05.2010, 22:31 Uhr
kaiOr

Avatar von kaiOr


Zitat:
danielk schrieb
Ein klassisches Laufzeitproblem durch eine zu lange Kette ist es nicht, da bin ich mir ziemlich sicher.

Bestätige:
M008 & M021 tun völlig problemlos in Schacht 10,20,30,40.
In F0 kommt es dafür aber doppelt und dreifach räudig.

Das Spiel hängt sich weg:
-bei halb aufgebauten Begrüßungsschirm
-bei voll aufgebauten Begrüßungsschirm, Eingabe von "P" ohne Reaktion
-nach dem Drücken von "P" laufen 15sek. Schriftzeichen ala Matrix durch, gefolgt vom fast vollständig aufgebauten Spielebild + Systemhänger
-wenn der erste Klunker fällt, dabei kommt es teilweise zum Diskettenzugriff

MfG

Dieser Beitrag wurde am 12.05.2010 um 22:50 Uhr von kaiOr editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
13.05.2010, 02:57 Uhr
danielk

Avatar von danielk

So, ich habe wie geplant eine Bustreiberplatine aus einem D002 in die D004 eingebaut. Das Ergebnis ist das gleiche: Das M021 im Schacht F4 führt bei Digger und anderen Spielen zum Einfrieren des Systems.


Zitat:
kaiOr schrieb
Bestätige:
M008 & M021 tun völlig problemlos in Schacht 10,20,30,40.
In F0 kommt es dafür aber doppelt und dreifach räudig.

Super, vielen Dank fürs Testen!

Zitat:
Das Spiel hängt sich weg:
-bei halb aufgebauten Begrüßungsschirm
-bei voll aufgebauten Begrüßungsschirm, Eingabe von "P" ohne Reaktion
-nach dem Drücken von "P" laufen 15sek. Schriftzeichen ala Matrix durch, gefolgt vom fast vollständig aufgebauten Spielebild + Systemhänger
-wenn der erste Klunker fällt, dabei kommt es teilweise zum Diskettenzugriff

Jupp, diese Varianten im Fehlerverhalten habe ich auch mehrfach beobachtet. Die hohe Interruptfrequenz von etwa 17,5 kHz ist bei Digger auch schon sofort nach dem Start aktiv.

An alle Tester: Was passiert, wenn Ihr vor dem Start von Digger mit

Quellcode:
SWITCH FC FB

die Koppelschnittstelle deaktiviert? Gegebenenfalls das Spiel mit FLOAD 0 0 laden, um den Autostart zu unterdrücken. Die LED "CONNECTION" sollte nach dem SWITCH-Kommando erloschen sein.

Dieser Beitrag wurde am 13.05.2010 um 03:01 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
13.05.2010, 18:30 Uhr
kaiOr

Avatar von kaiOr


Zitat:
danielk schrieb
So, ich habe wie geplant eine Bustreiberplatine aus einem D002 in die D004 eingebaut.

Könntest evtl. noch prüfen was passiert wenn du Wait bei M1 mal rausmachst oder Wait auch auf IOREQ ausdehnst.


Zitat:
An alle Tester: Was passiert, wenn Ihr vor dem Start von Digger mit

Quellcode:
SWITCH FC FB

die Koppelschnittstelle deaktiviert?

Dann tritt der Fehler auch gaaanz weit oben in F0 nicht mehr auf, zumindest bei mir.

MfG
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
13.05.2010, 19:00 Uhr
ManfredB




Zitat:
danielk schrieb

An alle Tester: Was passiert, wenn Ihr vor dem Start von Digger mit

Quellcode:
SWITCH FC FB

die Koppelschnittstelle deaktiviert?

Also bei mir ändert sich mit deaktivierter Koppelschnittstelle nichts: Mit geschlossener Modulprioritätskette funktioniert das Spiel nur mit Tastatur, der Joystick ist ohne Funktion. Mit unterbrochener Modulprioritätskette stürzt des Spiel wieder ab.

Wenn das M021 im Busdriver steckt, läuft das Spiel mit und ohne aktivierter Koppelschnittstelle.

Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
14.05.2010, 01:58 Uhr
danielk

Avatar von danielk


Zitat:
kaiOr schrieb
Könntest evtl. noch prüfen was passiert wenn du Wait bei M1 mal rausmachst oder Wait auch auf IOREQ ausdehnst.

OK, ich habe jetzt mal Jumperblöcke eingelötet und die verschiedenen Einstellungen durchprobiert. Sowohl mit Waitstate bei allen Zugriffen als auch ganz ohne Waitstate passiert das gleiche wie mit der Standardeinstellung: Digger mit Joystick friert ein, wenn die Koppelschnittstelle aktiv ist.

Das ist auch das, was ich erwartet hatte. Die CPU schiebt ja schon von sich aus nach dem Interrupt-Acknowledge zwei Waitstates ein, so dass sich nicht allzu viel ändern dürfte.

Zitat:
Dann tritt der Fehler auch gaaanz weit oben in F0 nicht mehr auf, zumindest bei mir.

Alles klar. Das heißt also, dass zumindest einer das Problem mit allen Symptomen eindeutig reproduzieren kann. Wenn es nicht zu umständlich ist, könntest Du vielleicht den Test nochmal gänzlich ohne D002 Busdriver machen? Ich weiß, das ist 'ne ziemliche Stapelei.


Zitat:
ManfredB schrieb
Also bei mir ändert sich mit deaktivierter Koppelschnittstelle nichts: Mit geschlossener Modulprioritätskette funktioniert das Spiel nur mit Tastatur, der Joystick ist ohne Funktion. Mit unterbrochener Modulprioritätskette stürzt des Spiel wieder ab.

Das ist wirklich seltsam. Ich habe nochmal im Stromlaufplan nachgesehen: Alles was potentiell relevant sein könnte ist mit dem Signal ONL von Bit 2 des Steuerworts verknüpft. Wenn das Deaktivieren der Koppelschnittstelle bei Dir nichts ändert, dann muss das Problem bei Dir ein anderes sein. (Oder auch ein zusätzliches.)

OK, vielen Dank nochmal an alle Tester. Weitere Testergebnisse nehme ich natürlich gerne an. Ich werde mich demnächst mal hinsetzen und ein Programm schreiben, das alle 256 möglichen Interruptvektoren abfängt und zählt. Hoffentlich gelingt es mir auch, das Problem mit einem M003 zu reproduzieren, indem ich den freien CTC des Moduls direkt programmiere.

Wenn es bei der derzeitigen Diagnose bleibt, werde ich auch noch eine kleine Anleitung zum Umbau der D004 in Netz stellen. Es wäre natürlich schon schön, wenn nochmal jemand vom Fach einen Kommentar zu der Sache abgeben könnte.

Dieser Beitrag wurde am 14.05.2010 um 11:50 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
14.05.2010, 12:49 Uhr
maleuma



Hallo Daniel,

ich heute den Test nachvollzogen und kann Deine Erkenntnisse bestätigen.
Testumgebung KC85/4, D002, D004 - alle Modulsteckplätze belegt:
- M008 in Schacht F4 oder F0 und Kopplung ein -> Digger friert ein bzw. Systemabsturz.
- M008 in Schacht F4 oder F0 und Kopplung aus -> Digger ist spielbar mit dem Joystick
- M008 in Schacht 1C (D002) und Kopplung ein -> Digger ist spielbar mit dem Joystick

Den Test habe ich nochmals mit dem D008 V1.0 wiederholt. Da tritt es nicht auf! Das Signal M1 wird aber auch hier nicht mit ausgewertet für Chipselect des Koppel-RAM. Falls Du den D008-Schaltplan einsehen möchtest, kann ich Dir den per eMail zusenden.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
14.05.2010, 13:30 Uhr
danielk

Avatar von danielk


Zitat:
maleuma schrieb
ich heute den Test nachvollzogen und kann Deine Erkenntnisse bestätigen.

Super, danke! Damit wären es dann schon mindestens zwei Treffer.


Zitat:
Den Test habe ich nochmals mit dem D008 V1.0 wiederholt. Da tritt es nicht auf! Das Signal M1 wird aber auch hier nicht mit ausgewertet für Chipselect des Koppel-RAM. Falls Du den D008-Schaltplan einsehen möchtest, kann ich Dir den per eMail zusenden.

Das ist interessant. Den Schaltplan würde ich mir in der Tat gerne mal ansehen. Vielen Dank!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
14.05.2010, 14:07 Uhr
danielk

Avatar von danielk

Alles klar. Ich habe mir den Stromlaufplan der D008 V1.0 angesehen, und ich denke ich weiß warum der Fehler dort nicht auftritt:

Multiplexer, Bustreiber und Koppel-RAM sind in D309 vereint. Dieser IDT7130P hat einen Eingang OE\R (Pin 43), der mit /KRD beschaltet ist. Anders als bei der originalen D004 wird hier also /KRD mit ausgewertet, und somit funktioniert das ganze auch wie es soll.

Dieser Beitrag wurde am 14.05.2010 um 14:11 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
14.05.2010, 16:17 Uhr
kaiOr

Avatar von kaiOr


Zitat:
danielk schrieb
Wenn es nicht zu umständlich ist, könntest Du vielleicht den Test nochmal gänzlich ohne D002 Busdriver machen? Ich weiß, das ist 'ne ziemliche Stapelei.

Ausnahmsweise, weil ich heute frei habe. Das Fehlerbild ist ohne D002er allerdings identisch, Digger hängt sich auf mit M008/M021 in F0/F4. Die Variante von Mr.Museum und Susowa mit nur einem D002 dazwischen haut bei mir auch nicht hin -> Freeze. Vielleicht haben die beiden einen F8/FC-Umbau wo die Adressierung anders läuft oder MPM hat heimlich Polishing betrieben.

MfG
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
14.05.2010, 16:38 Uhr
danielk

Avatar von danielk


Zitat:
kaiOr schrieb
Ausnahmsweise, weil ich heute frei habe. Das Fehlerbild ist ohne D002er allerdings identisch, Digger hängt sich auf mit M008/M021 in F0/F4.

Danke für die Ausnahme. Dein Ergebnis bestätigt nochmal, dass das Problem nicht einfach nur eine zu lange Kette ist. Mit drei D002 lagst Du ja außerhalb der offiziellen Spezifikation.

Zitat:
Die Variante von Mr.Museum und Susowa mit nur einem D002 dazwischen haut bei mir auch nicht hin -> Freeze.

Jupp, so sollte es auch sein. Bei mir tritt der Fehler auch immer auf, egal wie viel dazwischen hängt.

Zitat:
Vielleicht haben die beiden einen F8/FC-Umbau wo die Adressierung anders läuft oder MPM hat heimlich Polishing betrieben.

Letzteren Gedanken hatte ich auch schon. Ich habe die Variante der D004, bei der einer der Spindeltrimmer für die PLL-Einstellung auf der Leiterseite liegt. Die Position des anderen Trimmers entspricht auch nicht der Angabe in der Serviceanleitung.

Wer weiß, vielleicht finden wir ja eine Korrelation.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
14.05.2010, 19:14 Uhr
ManfredB




Zitat:
danielk schrieb


Zitat:
ManfredB schrieb
Also bei mir ändert sich mit deaktivierter Koppelschnittstelle nichts: Mit geschlossener Modulprioritätskette funktioniert das Spiel nur mit Tastatur, der Joystick ist ohne Funktion. Mit unterbrochener Modulprioritätskette stürzt des Spiel wieder ab.

Das ist wirklich seltsam. Ich habe nochmal im Stromlaufplan nachgesehen: Alles was potentiell relevant sein könnte ist mit dem Signal ONL von Bit 2 des Steuerworts verknüpft. Wenn das Deaktivieren der Koppelschnittstelle bei Dir nichts ändert, dann muss das Problem bei Dir ein anderes sein. (Oder auch ein zusätzliches.)


So, weitere Tests ohne D002 ergeben bei mir auch den Absturz mit aktivierter Koppelschnittstelle. Mit Switch FC FB funktioniert das Spiel dann auch ohne Probleme. Da scheint wohl mein Busdriver ne Macke zu haben... :-( .

Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
14.05.2010, 22:28 Uhr
danielk

Avatar von danielk


Zitat:
ManfredB schrieb
So, weitere Tests ohne D002 ergeben bei mir auch den Absturz mit aktivierter Koppelschnittstelle. Mit Switch FC FB funktioniert das Spiel dann auch ohne Probleme.

Super, danke. Ich zähle Dich dann mal als Treffer Nummer drei.

Zitat:
Da scheint wohl mein Busdriver ne Macke zu haben... :-( .

Och, das ist nicht so schön.

Vielleicht findet sich ja eine Möglichkeit, das Gerät beim nächsten Clubtreffen mal zu untersuchen. Ich bin mir sicher, dass jemand Oszilloskop und Lötstation dabei haben wird. Abhängig von der sich mir bietenden Mitfahrgelegenheit kann ich möglicherweise auch mein eigenes Zeug mitbringen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
15.05.2010, 16:03 Uhr
ManfredB




Zitat:
danielk schrieb
Vielleicht findet sich ja eine Möglichkeit, das Gerät beim nächsten Clubtreffen mal zu untersuchen.

Ich wollte es gleich mal selbst untersuchen, aber bei meiner Serviceanleitung für den Busdriver sind keine Schalt- oder Bestückungspläne dabei.... Kann mir da jemand helfen?

Danke
Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
15.05.2010, 22:20 Uhr
ManfredB



Hat sich erledigt, den Schaltplan habe ich inzwischen bei Ulrich gefunden.

Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek