Ein Atmega328 steuert einen Z80-Computer

Themabewertung:
  • 2 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Titanes
Member
***

Beiträge: 142
Registriert seit: Aug 2015
Bewertung: 0
05.03.2020, 01:00

Hi Uni,

da hast du dir ja schon einiges vorgenommen. Ich werde mich demnächst wieder an meine 7- Segment-Uhr begeben.

Gruß

Titanes

Gesendet von meinem Redmi Note 7 mit Tapatalk
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 819
Registriert seit: Apr 2014
Bewertung: 5
26.04.2020, 16:56

Hallo zusammen,

man hat ja zur Zeit doch recht viel Freizeit oder zumindest einen leicht geänderten Tagesablauf. Und deshalb hatte ich jetzt auch Zeit und Lust, hier mal kurz weiter zu machen. Ich hatte ja mal ein Konzept einer IDE-Schnittstelle umgesetzt und war kläglich gescheitert. Daraufhin hatte ich das Vorhaben zunächst beiseite gelegt.

In den letzten Tagen habe ich mal wieder auf den Schaltplan geschaut und angefangen, das Konzept auf dem Breadboard zu stecken. Da aber die Anzahl der Kabel ziemlich groß und die Komplexität der Verkabelung ziemlich komplex ist, kam ich immer wieder durcheinander. Also habe ich mein Breadboard wieder beiseite gestellt und andere Dinge gemacht. Heute habe ich mir dann meinen Schaltplan von damals einfach ausgedruckt und mich damit auf meine Terrrasse gesetzt.

Und siehe da: ein sehr grober Fehler. Ein IC (74HCT574) komplett verkehrt herum im Schaltplan. Das habe ich natürlich im Schaltplan gleich mal korrigiert. Danach konnte ich es nicht lassen und habe gleich mal Platinen bei JLCPCB bestellt. Bin gespannt, ob das Ding dann jetzt funktioniert.

Gruß
Uni
-----

Sic mundus creatus est.
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 819
Registriert seit: Apr 2014
Bewertung: 5
13.06.2020, 19:10

Hallo zusammen,

der letzte Bericht ist ja schon wieder ein Weilchen her. Also heute mal ein Udate.

Die bestellten Platinen kamen, trotz Corona, recht schnell. Wie immer in einer prima Qualität. Natürlich habe ich die erforderlichen Lötarbeiten noch am Tag der Lieferung durchgeführt :-). Testen konnte ich das zunächst aber nicht, da das passende Programm neu geschrieben werden musste. Ich habe dazu das Programm von dieser Seite: http://www.cosam.org/projects/z80/ata.html portiert. Das Programm bietet die nötigen Routinen um die Hardware anzusprechen. Das Hardware stammt auch von der genannten Seite. Beides habe ich an meine Hardware angepasst.

Die ersten Versuche mit der Hard- und Software sind natürlich gescheitert. Danach hatte ich dann zunächst die Lust verloren. Stattdessen habe ich mich mal wieder um meinen Garten und um das undichte Dach meines Geräteschuppens gekümmert  Big Grin .

Nach dieser kurzen Schaffenspause habe ich wirklich lange Zeit mit der Signalverfolgung auf der Platine verbracht. Unter Anderem hatte einen Testaufbau auf dem Breadboard. Die Platine hatte ich dort aufgesteckt und dann die nötigen Signale mit Tastern und LED's versehen. Dabei konnte ich feststellen, dass viele Signale icht stabil waren oder auch vollkommen unlogisch. Weitere Messarbeiten ergaben dann einen fehlenden Massekontakt an einem der Flip-Flops. Das war dann schnell mit einer kleinen Drahtbrücke korrigiert.

Danach natürlich wieder unzählige Tests mit den Programmen. Und siehe da: Nach unzähligen Versuchen war es möglich, den Sektor 0 (Bootsektor) der angeschlossenen CF-Karte auszulesen.  Idea  Big Grin. Leider funktioniert das noch nicht immer. Bei vielen Versuchen kommt es zu Timeouts oder fehlerhaften Daten. Da ist also mal wieder das Timing ein Problem. Da aber alle IC's gesockelt sind, kann ich da sicher mit anderen Versionen der IC's noch etwas anpassen. Wichtig ist mir erst einmal, dass die Hardware grundsätzlich funktioniert. Cool

Weitere Infos folgen, wenn sie denn vorliegen. Da ich aber jetzt Urlaub habe, kann das schon bald der Fall sein Big Grin

Gruß
Uni
-----

Sic mundus creatus est.
(Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2020, 20:35 von Unilein.)
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 819
Registriert seit: Apr 2014
Bewertung: 5
13.06.2020, 20:35

Hallo zusammen,

ich habe mal noch ein Bild vom Auslesevorgang von Sektor 0 auf dem Z0Ardu gemacht. Das ist sozusagen ein "Live-Bild" :-)

Zuvor habe ich mit HxD (ein Hex-Editor) den Sektor 0 der CF Karte manipuliert. Ich habe die Betriebssystem-ID von MSDOS5.0 auf Z80ARDU geändert. Das kann man auf dem Bild auch erkennen.

Gruß
Uni

[Bild: e2a0dc773caf26651047ca0e72e9b047.jpg]
-----

Sic mundus creatus est.
(Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2020, 20:38 von Unilein.)
Zitieren
Titanes
Member
***

Beiträge: 142
Registriert seit: Aug 2015
Bewertung: 0
23.06.2020, 23:46

Hi Uni,

hast du jetzt also ein MSDOS undercover auf dem Z80?
Bist du schon dazu gekommen, die ICs anzupassen? Meine MCs sind schon lange da. Hab aber momentan wenig Zeit für meine Projekte.

Gruß

Titanes
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 819
Registriert seit: Apr 2014
Bewertung: 5
24.06.2020, 20:30

Hallo Titanes,

nee, ich habe noch keine Tests mit anderen IC's gemacht. Von den Flipflops (74HCT574) habe ich auch gar keine andere Versionen da. Inverter (7404) habe ich. Das könnte ich testen. Und vom 2-zu-4 Dekoder (74HCT139) habe ich bestimmt noch eine LS-Version. Oder-gatter (74HCT32) habe ich wohl auch keine LS-Versionen da.

Die HCT-Versionen sind prinzipiell etwas schneller. Könnte ein Problem sein... Allerdings wundert es mich, dass ich Sektor 0 meistens problemlos lesen kann, andere Sektoren bereiten jedoch Probleme. Aber OK... Erst einmal ein wenig probieren.

Ich setze als "Festplatte" momentan einen CF-Adapter ein. Dort könnte das Problem natürlich auch stecken.Ich muss gelgentlich mal eine andere Karte probieren. Oder eine echte Festplatte... Da muss ich aber vermutlich zunächst eine meiner alten Festplatten umpartitionieren. Die Kleinste, die ich habe, hat 160 GB. Das geht mit FAT16 nicht. Da ist 8 GB, glaube ich, das maximum. Oder auch nur 2 GB. Wobei 2 GB für einen Rechner mit 64 Kilobyte Speicher schon mehr als ausreichend sein dürfte Big Grin

Gruß
Uni
-----

Sic mundus creatus est.
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 819
Registriert seit: Apr 2014
Bewertung: 5
30.06.2020, 17:38

Tach zusammen!

So, ich habe mal ein paar IC's getauscht. In meinem IC-Lager hatte ich noch 74LS32 und 74HC139 herum liegen. Ich habe die entsprechenden HCT-Typen entfernt und durch die genannten ersetzt. Für die 74HCT574 habe ich aktuell keinen alternativen Typ vorrätig. Da ist also jeweils die HCT-Variante im Einsatz.

Die HC-Typen sind CMOS-IC's. Diese haben eine andere Schaltschwelle. Eigentlich sollte man TTL und CMOS nicht unbedingt mischen, aber in diesem Fall funktioniert es. Die HC-Varianten sind eigentlich genauso schnell wie die HCT-Varianten.

Nach dem Tausch habe ich ein wenig getestet. Es ist eine minimale Verbesserung erkennbar. Sektor 0 wird nun recht zuverlässig gelesen. Andere Sektoren lesen (oder schreiben) funktioniert weiterhin nicht. Es könnte sich natürlich um einen Fehler in den verwendeten Routinen handeln. Das muss ich aber noch analysieren. Dodgy

Gruß
Uni
-----

Sic mundus creatus est.
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 819
Registriert seit: Apr 2014
Bewertung: 5
14.01.2021, 22:17

Hallo zusammen,

ja, was soll ich sagen? Das Projekt ruht ja schon ein halbes Jahr.
Eigentlich war ich zuletzt mit der IDE-Schnittstelle zugange, und wer den Thread verfolgt hat, weiß, dass das nicht so ganz geklappt hat.

Die IDE-Karte ist vorerst wieder ausgesteckt und ich habe mich mal wieder um die Tastaturschnittstelle gekümmert. Technisch passt das soweit und im Grunde funktioniert sie auch. Ich hatte allerdings immer noch Probleme mit dem Timing bei der Datenübernahme von der Schnittstelle. Nach einigem Messen und Probiere habe ich mal die Tastatur gegen eine andere getauscht. Außerdem habe ich für das Programm zur Kommunikation mit der Tastatur (zur Erinnerung: Es kümmert sich ein Atmega328 darum; das ist der Controller, der auch auf dem Arduino Nano steckt) eine andere Tastaturbibliothek verwendet. Jetzt funktioniert die Kommunikation wesentlich besser.

Allerdings gibt es immer noch ein Problem: Die Tastatur liefert pro Tastendruck einen 16 Bit Wert. Dieser besteht aus 8 Bit für den Tastencode und 8 Bit für Status- und Steuerungsinformationen (CTRL oder Shift gedrückt...). Leider kann der Z80 pro Tastendruck, welcher am Z80 einen Interrupt auslöst, nur 8 Bit Daten entgegennehmen. Das führt aktuell dazu, dass die Tastencodes nun doppelt verarbeitet werden. Das muss ich irgendwie per Programm und geschicktem Timing abfangen. Mal sehen, ob ich das hinbekomme, denn das bedeutet, dass ich das Programm des Z0Ardu immer wieder anpassen und dann testen muss. Das ist, da ich dann jedes mal die SD-Karte wechseln muss, recht nervig. Und wenn ich etwas am Tastaturschnittstellenprogramm des Atmega328 ändern muss, muss der Baustein raus und mit dem geänderten Programm neu geflasht werden.

Rolleyes

Gruß
Uni
-----

Sic mundus creatus est.
Zitieren
Titanes
Member
***

Beiträge: 142
Registriert seit: Aug 2015
Bewertung: 0
18.01.2021, 12:29

Hi Uni
da hast du dir ja wieder einiges vorgenommen. Ich glaube für so ein Projekt würde mir die Geduld und das Wissen fehlen. Ich find das aber voll cool, daß du echt da dran bleibst. Irgendwann läuft die Kiste bestimmt.


Gruß

Titanes
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 819
Registriert seit: Apr 2014
Bewertung: 5
18.01.2021, 13:51

Hi Titanes,

manchmal braucht man ja etwas Abstand. Und nach 6 Monaten hat man dann auch wieder mal Lust, sich mit den Problemchen auseinanderzusetzen. Wenn ich dann irgendwann mal den Dreh raus habe, werde ich mir wieder so ein Projekt suchen. Und das wird dann noch ein wenig komplexer. Irgendwas muss man in dieser Zeit ja machen. Mein Haus ist inzwischen komplett renoviert...

Das Tastaturproblem konnte ich allerdings immer noch nicht beheben. Aber ich weiß inzwischen, dass die PS2KeyboardAdvance-Library, die ich für die Schnittstelle nutze, immer zweimal Daten schickt. Einmal beim Drücken einer Taste und einmal beim loslassen. Da wird dann wohl der Ansatz sein, es richtig zu machen.

Gruß
Uni
-----

Sic mundus creatus est.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste