Ein kleiner Computer

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#11
22.02.2015, 19:38

Heute ging es hier mal wieder weiter.

Der Schwerpunkt lag heute eher auf dem Videosignal, denn der MC6847 kann nicht direkt an einen Videoeingang angeschlossen werden. Dafür sind die Signale am Chip zu schwach. Vielmehr wird ein Signalverstärker benötigt, der den Signalpegel entsprechend verstärkt.

Ich habe heute einen kleinen Verstärker gebaut, der das vom Chip bereit gestellte Luminanz-Signal verstärkt. Dieses Signal kann von einem Monitor mit Videoeingang dargestellt werden. Das Luminanz-Signal enthält keine Farbinformationen, das Bild ist also schwarz-weiß.

Zu einem späteren Zeitpunkt werde ich das ebenfalls vom Chip bereit gestellte Chrominanz-Signal dazu mischen, damit's dann auch farbig wird. Dafür kommt dann der zuvor bereits erwähnte MC1372P zum Einsatz.

Mein Verstärker ist zwar aufgebaut, jedoch funktioniert da leider was nicht. Momentan weiß ich aber nicht, ob es an meinem Verstärker oder doch eher an der Beschaltung des MC6847 liegt.

Ich bleibe mal dran...

   
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#12
22.02.2015, 21:24

Inzwischen habe ich den MC6847 ausgetauscht und mit diesem eine spezielle Testschaltung aufgebaut um so den Verstärker testen zu können. Und siehe da, es liegt am Verstärker. Von diesem Ergebnis bin ich ein wenig überrascht, weil ich den Verstärker zuvor auf einem Breadboard aufgebaut hatte. Vermutlich ist einer der Transistoren weggebrutzelt.

Ich bin natürlich froh, dass nicht der MC6847 verdampft ist, denn die sind inzwischen wirklich rar geworden...
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#13
01.03.2015, 00:28

Und wieder ein kleiner Fortschritt....

Ich habe den Verstärker erneut aufgebaut und jetzt funktioniert er. Den MC6847 habe ich nun mit einem Speicherbaustein verbunden und den Verstärker mit dem Videoausgang des MC6847.

Jetzt habe ich endlich Bild auf dem Schirm. Der Schirm zeigt lauter "@"-Zeichen. Das ist in Ordnung, denn der Speicher ist ja leer bzw. enthält nur Nullen (Zu der Zeit als der MC6847 modern war, war ASCII noch nicht überall üblich und "@" trug da halt den Code 0).


Hier noch ein Bildchen vom Ergebnis:
   

Morgen geht's weiter. Dann schließe ich den Atmega162 wieder an den Speicher an und beginne wieder mit der Programmierung.
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#14
04.03.2015, 00:08

So...

Der atmega162 ist jetzt auch wieder in die Schaltung integriert. Ich habe am früheren Schaltungslayout ein paar kleinere Änderungen vorgenommen (der Schaltplan folgt).

Nun muss ich mein Programm noch anpassen. Das wird allerdings vermutlich erst am Wochenende hinhauen, da ich die nächsten Tage geschäftlich unterwegs bun.

Grüße,
Uni

<{ gesendet mit tapatalk }>
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#15
06.03.2015, 21:48

Da bin ich wieder...

Und leider mit einer schlechten Erkenntnis. Ich habe mich gewundert, warum ich kein einziges Zeichen (außer @) auf den Schirm bekomme und deshalb am Ende einen Logic-Analyzer an meine Schaltung angeschlossen. Und zwar speziell am Adressbus und am Datenbus des Atmega162 und siehe da.... Es kommt nix raus.

Also ist meine Programmierung schrott!

Ich habe jetzt den MC6847 aus meiner Schaltung entfernt und habe nun also nur noch den Atmega162, ein Latch und einen Speicherbaustein. Jetzt muss ich mein Programm insofern abändern, dass ich den Speicher zu beschreiben versuche und ihn gleich wieder auslese. Danach wird abhängig vom Ausleseergebnis dann ein Port-Pin auf High gelegt und so eine LED angesteuert.

Den Teil mit den LED's muss ich jetzt noch aufs Steckbrett bringen. Außerdem muss auch der Logic-Analyzer wieder dran, denn irgendwo in der Ansteuerung des Speicherinterfaces ist noch ein Programmierfehler.

So langsam geht mir die Lust aus ;-)
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#16
22.03.2015, 15:40

Es scheint die Zeit des Scheiterns zu sein....

Nachdem ich meine Gewächshaussteuerung erstmal auf Eis gelegt habe, muss ich nun feststellen, dass meine Überlegungen in diesem Thread auch eher von Misserfolgen gekrönt sind. Ich bekomme das Timing einfach nicht in den Griff. MC6847 und Atmega162 kommen sich ständig in die Quere.

Vorerst ist auch hier nicht mit Verbesserungen zu rechnen. Ich werde jetzt erstmal jede Menge alte Schaltpläne studieren, in denen ein MC6847 verbaut sind. Vielleicht komme ich so zu einem besseren Ergebnis. Erst wenn ich tiefer in die Thematik eingetaucht bin und die Problematiken verstanden habe, wird es hier weiter gehen. Und dann muss ich vermutlich mit einem anderen Ansatz von Vorne beginnen.

Bis dahin ist hier Pause und ich werde evtl. ein anderes kleines Projekt einschieben.

Grüße
Uni
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#17
08.04.2015, 11:04

Hallo zusammen,

Hier geht es jetzt doch weiter. Ich habe mein breadboard leer geräumt und von vorne angefangen.

Zunächst nur atmega und Speicher und passendes Programm mit Debugger --> funktioniert.

Mit dem 6847 in der Schaltung funktioniert es nicht mehr. Der Grund dafür sind meiner Meinung nach die gemeinsamen Zugriffe auf den Speicher. Mein Studium anderer Schaltpläne hat mir aber Lösungen aufgezeigt, die ich nun umsetzen muss.

Einen passenden Schaltplan werde ich in Kürze liefern.

Grüße,
Uni
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#18
09.04.2015, 22:26

Hallo zusammen,

wie versprochen findet Ihr in diesem Post eine neue Version meines Minicomputers. Aufgebaut mit modernen und nostalgischen Bauteilen.

In der jüngeren Vergangenheit war mein Projekt eher vom Scheitern bedroht. Inzwischen habe ich einige Schaltpläne nostalgischer Computer der 80er studiert und dabei eine wichtige Erkenntnis gewonnen.

Ich werde den hier beigefügten Schaltplan mal erkläre und hoffe, es interessiert Euch. Dabei weiß ich aktuell noch nicht, ob das alles funktionieren wird. So ganz unkompliziert ist die Schaltung ja auch nicht, wie man erkennen kann.

Also was sehen wir in der Schaltung?

* U1 = Atmega 162 Mikrocontroller
* U2 = MC6847 Video Display Controller
* U3 = SN74HC573N Latch
* U4 = SN74HC245N Octal Bus Tranceiver
* U5 = HM62256 SRAM, 32768 x 8bit = 32 KB
* U6 = HY6264A SRAM, 8192 x 8bit = 8 KB
* U7 = MC74HC595ANG 8 bit Seriell zu paralleles Schieberegister
* U8 = SN74HC04 Inverter

Nun zur Erklärung:

Der Atmega162 kann mit externem RAM bestückt werden. Er kann bis zu 64 KB adressieren. In der Schaltung werden 40 KB verwendet. 32 KB sind als "Arbeitsspeicher" für den Computer gedacht (U5), 8 KB sind als "Videospeicher" vorgesehen.

Der Atmega162, der Video Display Controller (VDC, U2) und die beiden Speicherbausteine (U5, U6) hängen an einem gemeinsamen Adressbus (grüne Leitungen im Schaltplan). Die Adressleitung A15 des Atmega steuert zusammen mit dem Inverter (U8), ob der 32 KB-Chip oder der 8KB Chip aktiv ist. Ist A15 auf Low, zeigt der Inverter High und legt dieses Signal an die Chipselect-Leitung (CS) des 32KB-Chips. Ist A15 High, wird der 32 KB-Chip durch den Inverter deaktiviert, währen das High-Signal von A15 direkt am 8KB-Chip anliegt und diesen auswählt.

Die genannten Bausteine benutzen außerdem gemeinsame Datenleitungen. Nun kommt allerdings die große Änderung gegenüber dem vorigen Design der Schaltung. Der 8KB-Baustein bildet mit dem VDC eine Einheit und der 32 KB-Chip bildet mit dem Atmega eine Einheit. Die Trennung erfolgt durch den Octal Bus Tranceiver (U4), der hier wie ein Schalter missbraucht wird. Nur wenn der Atmega auf den 8KB-Chip zugreifen muss, werden die Datenleitungen mit dem Speicher verbunden um Daten zu übertragen. In dieser Zeit darf der VDC NICHT auf den Speicher zugreifen. Um dafür den perfekten Zeitpunkt zu finden, liefert der VDC an Pin 37 (/FS) ein Signal, welches anzeigt, wann man störungsfrei zugreifen darf.

Die Steuerung, um den 8KB-Baustein zu beschreiben muss ich natürlich noch entwickeln. Der Plan ist, dass INT0 (wie im Schaltplan auch zu sehen) auf /FS reagiert. Die Interruptserviceroutine darf dann für 2,5 ms auf den Speicher zugreifen. Das erscheint kurz, sind aber bei 6MHz Systemtakt immerhin 14.400 Takte. Da kann man in Assembler jede Menge machen.

Der SN74HC573 (U3) ist übrigens deshalb da, weil der Atmega nicht 16 Adressleitungen UND 8 Datenleitungen hat. Der der Datenbus teilt sich die unteren 8 Adressleitungen mit dem Adressbus. Das Signal ALE vom Atmega sagt dem Latch, wann eine Adresse und wann Daten auf den Leitungen liegen.

Zu guter Letzt ist da noch das Schieberegister (U7). Dieses soll später die verschiedenen Anzeigemodi des VDC steuern. Die Steuerung ist reine Programmierung. Die Logik des Schieberegisters muss, glaube ich, nich nochmal erklärt werden.

So... Und hier ist noch der Plan:

   


Schön wäre jetzt natürlich eine rege Diskussion oder ein Ideenaustausch. Aber ich vermute, dass es dazu nicht kommen wird Undecided
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#19
10.04.2015, 14:45

Perfekt, um das mal kurz aufs breadboard zu stecken...

(Dabei habe ich noch zwei kleine Designfehler entdeckt. Ich werde den Schaltplan NATÜRLICH noch korrigieren )

[Bild: b6300378db80e9997a958afd9ddbf3aa.jpg]
-----

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

Beiträge: 806
Registriert seit: Apr 2014
Bewertung: 5
#20
10.04.2015, 17:44

Und der erste Versuch, das teil zum laufen zu bringen, ist gescheitert. Vermutlich habe ich mich irgendwo "versteckt ".

Hab jetzt mal die Hälfte der Verbindungen wieder entfernt und stecke das heute Abend evtl. nochmal neu.
-----

Sic mundus creatus est.
Zitieren


Gehe zu:


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