Forum: Mikrocontroller und Digitale Elektronik 6809e CPU startet nicht.


von Joachim Nemetz (Gast)


Lesenswert?

Hallo,

habe ein kleines Problem mit einem 6809 System,nach dem Einschalten
oder Reset startet der Computer nicht sondern taktet nur auf den
Adressleitungen, der Prozessor zählt immer den Adressbereich durch.

Woran kann das liegen habe fast schon alle Teile durchgetestet..

Jeder Tip währe hilfreich..

Gruß Joachim

von A.K. (Gast)


Lesenswert?

...und wieder die übliche Frage nach den Details, also der Schaltung.

von Joachim Nemetz (Gast)


Lesenswert?

Hallo,

klar nicht drangedacht, ist ein Superpet von Commodore, Pläne unter
http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/pet/SuperPET/index.html

Es ist ein zwei CPU System der 6502 Teil startet, beim Umschalten auf
den 6809 passiert das oben beschriebene.

Eproms schon komplett getauscht, genau wie die Dekodierung der CE
Auswahl der Eproms....

Gruß Joachim

von Dietmar (Gast)


Lesenswert?

"der Prozessor zählt immer den Adressbereich durch."

Na das ist doch ein gutes Zeichen, dann läuft doch schon was, nur noch
nicht wie gewünscht?

Gruß

Dietmar

von Dietmar (Gast)


Lesenswert?

"Schematic of the 6809 system board" kann ich vom angegebenen Link aus
nicht laden.

Sind die Daten dort vorhanden?

Gruß

Dietmar

von thkais (Gast)


Lesenswert?

Ohne jetzt diese ganzen Schaltpläne durchgelesen zu haben...
Im Prinzip hast Du schon genau da geschaut, wo ich es auch tun würde:
EProms / Dekodierung.
Wenn der Prozessor die Adressleitungen durchtickert, läuft er
eigentlich schon. Du wirst wohl nicht drumherum kommen, alle Adress-
und Datenleitungen auf Verbindung und Kurzschluss zu prüfen. Könnte bei
so einer alten Kiste auch ein fauler Kondensator irgendwo auf dem Board
sein. Ich würde mir mit dem Oszi mal genau die Form der Signale
anschauen, manchmal hat man Glück und findet einen faulen Kandidaten
durch verschliffene Signale oder eine "versaute" Betriebsspannung.
Wenn das alles nichts hilft, dann auf die harte Tour: Den 6809 raus und
ein Simulatorboard bauen, mit dem man gezielt Adressbereiche anwählen
kann, um die richtige Anwahl der EProms zu checken.
Ist denn der Inhalt der EProms schon gecheckt worden? Je nach Lagerung
können die schonmal etwas "vergessen".

von Joachim Nemetz (Gast)


Lesenswert?

Hallo Dietmar und thkais,

Danke mal für eure Antworten.

Dietmar der Links funzt und die Daten sind vorhanden da muss was bei
dir nicht funktionieren.

Nur zu thkais, der Inhalt der Eproms ist einerseits in Ordnung
verglichen mit Inhalt aus dem Internett und zur Zeit sitzen
neugebrannte Eproms drinn.

Das mit den Adress und Datenleitungen muss ich heute dann mal genau
untersuchen, da ja das Grundsystem mit dem 6502 läuft und der 6809
sobald er läuft auch diese Komponenten benutzt, auser die Eproms des
6502 Systems, bin ich mal von davon ausgegangen das zumindest dieser
Teil in Ordnung ist.
Auch die Betriebsspsannubg hab ich mit Multimeter und Ozi untersucht
und für gut befunden.

Nun noch eine Andere Frage an jemand der sich mit der Programierung des
6809 auskennt, wie müssen Daten aussehen damit die CPU in einer Schleife
läuft, kann ich bei den Vektoren am ende von F000 einfach die Zeiger auf
F000 setzen und dort dann einen Sprungbefehl auf sich selbst setzten JMP
$F000 so das er sich dort totläuft....?

Gruß Joachim

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zunächst mal: Das geschilderte Verhalten des Hochzählens auf den
Adressleitungen ist die Folge eines undokumentierten Befehls (oft
"hold and catch fire" genannt). Damit lassen sich mit einem
Oszilloskop hervorragend alle Adressdecoder etc. testen, da linear
aufsteigend alle möglichen Adressmuster an diese angelegt werden.

Die zweite Frage nach der Programmierung: Wenn ich mich recht erinnere,
liegt der Resetvektor bei $FFFE. Damit Dein "Programm" bei $F000
angesprungen wird, muss also der Resetvektor auf eben diese Adresse
zeigen, damit ist [$FFFE] = $F0 und [$FFFF] = $FF

Und das "Programm" selbst muss in der Tat aus nichts weiterem als
einem Sprungbefehl auf sich selbst bestehen:

    org $F000
    jmp $F000

 $7E $F0 $00

(hier muss "extended" Adressing mit vollem 16-Bit-Operand eingesetzt
werden, da das DirectPage-Register nach einem Reset auf $00 gesetzt
ist)

Wenn dieses sinnvolle "Programm" auch mittels der anderen Vektoren
aufgerufen werden soll, müssen auch die auf $F000 verweisen - also NMI
auf $FFFC, SWI auf $FFFA, IRQ auf $FFF8, FIRQ auf $FFF6, SWI2 auf $FFF4
und SWI3 auf $FFF2 entsprechend dem Resetvektor setzen.


Abschließend: Du hast Dir da so ziemlich den schönsten aller
8-Bit-Prozessoren ausgesucht - was möchtest Du damit genau machen?

von A.K. (Gast)


Lesenswert?

Was für eine 6502 ist es denn genau?

Die weitaus meisten 6502-Versionen sind nicht in der Lage, ihren
Adressbus freizugeben, wodurch ein Konflikt mit der 6809-CPU entsteht.
Zumindest existiert kein dokumentiertes Signal dazu. Die Schaltung
benutzt dafür Pin 5, der dort und anderswo als NC (not connected)
bezeichnet wird. Interessant.

Die einzige mir bekannte Version, die das konnte, war die WDC W65C02S,
aber da liegt BE auf Pin 36.

von A.K. (Gast)


Lesenswert?

Oha, ich seh's grad - der schaltet die 6502 komplett ab, Strom weg. Ich
bin einigermassen erstaunt, dass dies funktionieren soll.

von Joachim Nemetz (Gast)


Lesenswert?

Hallo alle,

Zuerst noch mal zu dem Computer, es ist ein Commodore Superpet, der als
Grundplatine einen CBM 8032 hat auf diesen sind im Hukepackverfahren
zwei zusätzlich Platinen aufgestockt.
Auf der Mittleren befindet sich der 6809, 6502 Eproms für den 6809 und
die Adressdekodierung..
Die oberste ist eine 64k Ramplatine...

Vor mir haben diesen Computer schon zwei Stück für Reparaturversuche
gehabt, das mag ich eigendlich überhaupt nicht wo schon rumgefuschelt
wurde.
Ein Fehler eines meiner Vorgänger war zum Beispiel das er einen SN74S08
mit einem SN74LS08 vertauscht hat, und das mag der Computer nicht an
einer Bestimmten Stelle will der einen SN74S08, mit dem SN74LS08 funkt
es nicht.

Nun da ich diesen Chip getauscht hab und diese Superrom gebrannt hab
mit F000 als Vektoren und JMP $F000 an $F000 läuft sich der 6809 an
dieser  Stelle fest und dieses Durchtakten ist weg.

Ja Rufus du meintest "damit ist [$FFFE] = $F0 und [$FFFF] = $FF"
richtig ist so wie ich es getestet und verstanden hab das beim 6809
erst das Hi und dann erst das Lo Byte kommt $FFFE = §F0 und $FFFF =
$00... war ein kleiner Typfehler..

Und zu A.K. da hab ich auch nicht schlecht geschaut als ich das
durchschaute dieses einfache Abschalten der +5Volt...
Auch eine Firma wie Commodore hat damals getrickst....

Jetzt weis ich zumindest mal das der 6809 läuft und auch macht was er
soll, jetzt gehts weiter mit den anderen Eproms am einfachsten
Programiere ich alle Eproms im Kreis und sehe ob alle angesprochen
werden. Das Eprom Bei A000 mit JMP B000 von dort JMP C000 ----und bei
F000 JMP A000..

Gruß Joachim

Gruß Jogi

von Profi (Gast)


Lesenswert?

Sind die ICs gesockelt?
Sind es Präzisions- oder Billigsockel. Letztere oxidieren leicht und
sind für unerklärliche Phänomene prädestiniert.

von Joachim Nemetz (Gast)


Lesenswert?

Hallo,

hab den fehler gefunden, Danke für alle Ratschläge wurden teilweise
verwendet oder darüber nachgedacht..War gut um etwas Abstand zu
bekommen
da man sich sonnst in eine fixe Idee verrennt.

Der Fehler war folgender, der Computer besteht ja aus zwei Systemen
einmal den 6502 und zweitens der 6809e...

Da beide CPU auf den gleichen Adressbuss zugreifen, werden die Eproms
des 6502 und des 6809 beim jeweiligen Proz. zugeschaltet und die des
anderen Abgeschaltet, der 6502 (CBM8032) benutzt dazu die CS2 Leitung
der 2332 Eproms, nun hat mein Vorgänger(repraturversuch)ein 60Hz Kernal
gegen ein 50Hz Kernal getauscht, nur benutzte er dazu ein 2516 Eprom.
Dieses 2516 Eprom hat aber diese CS2 Leitung nicht, somit lief dieses
Eprom immer parallel zum Adressgleichen des 6809 Systems.
Dem Grundsystem macht dieses Eprom nichts aus da die CS2 Leitung im
normalfall nicht benutzt wird, und für Erweiterungen gedacht, um die
Eproms abzuschalten.

Schalte ich aber in das 6809 System, bekomme ich das Problem das immer
wenn ich auf E000 zugreife gleichzeitig das E000 Eprom des 6502 Systems
auch angesprochen wird, und das gibt Datensalat auf dem Datenbus....

Hatte er mir vergesen zu Sagen, naja hat mich nur fast an den Rand des
Verzweifelns gebracht, da ich mich auf Ozi und Logicstifft begnügen
musste...Und selbstgebrannte Testroms....

Er meinte das währe nicht wichtig gewesen da ja der 6502 teil
läuft....

Meine Lösung letztendlich ist da ich keine 2332 Eproms hab, bilde ich
mir aus OE und CS ein neues OE Signal und es funktioniert...
Einsatz ein 74LS00....

Gruß Joachim..

von Profi (Gast)


Lesenswert?

Freut mich sehr für Dich!
Ab und zu bastle ich auch noch mit solchen Schaltungen (Williams- &
Gottlieb-Flipper-Platinen). Daher kenne ich die Problematik mit den CS
etc. Aber wer denkt denn an sowas??

Tolle Leistung auf jeden Fall, Gratulation!

CBM8032 kommt mir auch recht bekannt vor. Ist schon Jahrzehnte her.

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.