Des Doktors Bastelstube

  • Habe mich jetzt nicht mit dem ATTiny beschäftigt, aber mit dem Z80 kann man eigentlich nichts falsch machen. Der wird bis heute hergestellt, und lässt sich auch bis zu gewissen Grenzen quälen.

    Was ich am Z80 gut finde ist erstmal, dass er einen getrennten Datenbus und Adressbus hat. Der 8085 ist teilweise gemultiplext und benutzt die Pins für Adresse und Daten. Beim Z80 musst du dir da keine Gedanken machen. Du hast 16 Pins für die Adresse (65KB) und 8 Pins nur für die Daten. Der Z80 nimmt jede Taktrate an. Ob Stillstand, 1 Hz, 14 Hz oder das Maximum (je nach Modell 2,4,8,20, habe auch schon von Overclocking gelesen).
    Meine Schaltung oben sieht recht kompliziert aus, aber ist sie eigentlich nicht. Die Kabel liegen nur wegen dem Breadboard sehr chaotisch.
    Einen simplen Z80 kannst du z.B. mit einem Arduino kickstarten, dann musst du dir erstmal keine Gedanken um eine Clock machen. Einfach Pin X auf High schalten, delay um 1 Sekunde, dann wieder runter schalten. Fertig ist die 1 Hz Clock.
    Die Interruptpins kann man ignorieren, bleiben noch ein paar Pins um die Memory anzusteuern.

    Ein Z80 braucht ab gewissen Schaltgrößen Buffer. Man sollte generell eigentlich immer Buffer/Driver nehmen. Das ist kein Hexenwerk, sondern verstärkt nur dein Signal. Denn so eine CPU kann nicht unendlich viel Strom schalten. Deswegen packt man da einen Buffer zwischen. Sonst geht er dir am Arsch.

    Heute ist auch vieles einfacher. Moderne EEPROMs timen sich selbst. Du könntest die in der Theorie per Hand beschreiben, indem du Stecker rein und rausziehst. Und SRAM ist billig. Lass erstmal die Hände weg vom DRAM. LS-TTL Chips sind extrem billig. Ein Z80 kann einen TTL Chip versorgen oder 4 LS-TTL Chips. Da kann man sich wenn man will die Buffer sparen.

    Ich werde demnächst auch mal einen Schaltplan hochladen.

    Für meine Schaltung habe ich benutzt:
    1x UB880/Z80
    1x EEPROM AT28C64B
    1x CYPRESS SRAM 32K
    1x AND LS-TTL
    1x OR LS-TTL
    6x Octal Buffer/Driver LS-TTL

    Sehr gut erklärt wird die ganze Thematik hier (auch gut erklärt, warum man Buffer braucht):
    https://www.modmypi.com/download/BuildYourOwnZ80.pdf

    Sonst kannst du auch versuchen, mal einen eigenen Arduino zu löten. Soll auch nicht so kompliziert sein.



    Okay, ich war ungeduldig.

    Hab mir jetzt nen 3er Set von ATTiny85 samt Sockel bestellt + Mini-Programmer extra für die Teile. 10 Euro komplett, kann man ja erstmal nix falsch machen.

    Ja damit kann man bestimmt nichts falsch machen. Am besten als erstes direkt versuchen, ein Programm zu schreiben, was eine LED blinken lässt. Man kann die LED da bestimmt direkt dran machen, würde aber einen Driver dazwischenschalten.

    Es ist besser nicht zu moderieren als falsch zu moderieren

    Einmal editiert, zuletzt von Der Doktor (11. Februar 2018 um 23:00)

  • Ich nehm das jetzt mal unkommentiert auf, danke!

    Besonders die Erklärung fürn Buffer.. is ja logisch, quasi wie ein Relais-Ersatz, womit ich dann x-beliebige Spannungen/Ströme schalten kann, mit einen kleinen Schalter.

    Glaub brauch noch nen Übersetzungsbuch Elektriker -> Elektroniker oder sowas :D

    Ich werd aber erstmal mit dem ATTiny jetzt tüddeln, wär schade drum, wenn ich mir das ganze coole Zeugs hol und das in der Ecke versauert weil ich zu Dumm dafür bin. Son ATTiny kann man immernoch zwecksentfremden mit fertig-Tutorials für irgendwas. (Hab schon LED-Steuerung gelesen)

    Auch wenns ne andere Liga is bzgl AVR-C und Maschinencode.

    Einmal editiert, zuletzt von Blue (11. Februar 2018 um 23:05)


  • Ich nehm das jetzt mal unkommentiert auf, danke!

    Besonders die Erklärung fürn Buffer.. is ja logisch, quasi wie ein Relais-Ersatz, womit ich dann x-beliebige Spannungen/Ströme schalten kann, mit einen kleinen Schalter.

    Glaub brauch noch nen Übersetzungsbuch Elektriker -> Elektroniker oder sowas :D

    Ich werd aber erstmal mit dem ATTiny jetzt tüddeln, wär schade drum, wenn ich mir das ganze coole Zeugs hol und das in der Ecke versauert weil ich zu Dumm dafür bin. Son ATTiny kann man immernoch zwecksentfremden mit fertig-Tutorials für irgendwas. (Hab schon LED-Steuerung gelesen)

    Auch wenns ne andere Liga is bzgl AVR-C und Maschinencode.

    Kannst mich ja mal auf dem laufenden halten oder anschreiben oder hier reinschreiben, bei Problemen oder etc. . Ich denke mit 10 Euro kann man das nichts falsch machen. Das gute beim ATTiny ist ja auch, dass er ein Microcontroller ist und moderne Microcontroller haben sowieso schon alles eingebaut. RAM, Flashspeicher und etc. . Dann brauchst du dafür schonmal keine externen Chips.

    Ja so Buffer sind echt praktisch. In meiner Schaltung benutze ich normale 74xx Buffer und kann damit 48mA beschalten anstatt nur 1,8mA. Das reicht locker für viele ICs. Ich denke mal ein echter Elektroniker würde dir immer noch einen reinwürgen, weil du/ich mit dem Buffer ne LED betreibst, weil die dafür eigentlich nicht gemacht sind (sollen nur weitere Chips antreiben). Aber wenn es funktioniert :fresse:

    Es ist besser nicht zu moderieren als falsch zu moderieren


  • Naja son Buffer is ja auch schon größer alsn ATTiny, würd wohl ulkig aussehen.

    Ich werd mal schauen wohin die Reise mich führt.

    Werd aber natütlich berichten!

    Ich denke eine LED an son Pin ist okay... wird schon nicht abrauchen. Hab genug Bilder gesehen wo es ohne gemacht wird :fresse:

    Ich will mir ja jetzt ne Lötstation zulegen, weil es auf den Breadboard natürlich nicht so weitergehen kann. Dann will ich mir kleine Boards erstellen, also eine Board nur für die CPU, eins für die Memory und so weiter, und die zusammenstecken.

    Außerdem überlege ich gerade, was ich danach machen will.
    Tendiere zurzeit dazu ein voll ausgestattetes Z8000 System zu bauen.
    Hole mir gerade schon alle Teile dazu zusammen.

    Es ist besser nicht zu moderieren als falsch zu moderieren


  • Übrigens sind das 3 ATTiny85-20PU

    also die dicke ATTiny 8pin Klasse :b1:

    mal sehen, was da so mit abgeht. Aber Wahnsinn: 20MHz, das ne Ansage für son lüddes Teil.

    Es ist schon immer wieder erstaunlich, was man alles in so einen kleinen IC packen kann...
    Die 20MHz sind ganz schön; ich habe dann aber immer schon Probleme im Aufbau bekommen (Steckbrett, parasitäre Cs,...), die einem manchmal die Stimmung ganz schön vermiesen können, weil man ewig nach Fehlern sucht.

  • Problem für mich is ja jedesmal wenn ich die Architektur wechsle, das ansteuern. Ne Z80 is ja keine 68k genauso wenig wie Risc-AVR wobei ich stark vermute das nen AVR am einfachsten ist da ich direkt in C loslegen kann. B2


  • Problem für mich is ja jedesmal wenn ich die Architektur wechsle, das ansteuern. Ne Z80 is ja keine 68k genauso wenig wie Risc-AVR wobei ich stark vermute das nen AVR am einfachsten ist da ich direkt in C loslegen kann. B2

    Solange es einen C-Compiler gibt, kann man eigentlich fast immer direkt loslegen.
    Für den Z80 gibt es den Z 88 DK oder den SDCC

    Mein Setup läuft schon mit C Code. Habe einen kleinen Algorithmus implementiert und kompiliert. Musste meine Clock aber von 14 Hz auf 700 Hz hochdrehen, um nicht 1 Jahr warten zu müssen :trollface:

    Aber für AVR ist es aufjedenfall weniger Frickelarbeit, weil Tools sehr einfach sind.

    Es ist besser nicht zu moderieren als falsch zu moderieren

    Einmal editiert, zuletzt von Der Doktor (13. Februar 2018 um 11:01)

  • Nochmal ein kleines Update aus der Bastelstube:

    Hatte vor einem Monat auf einige Weller Lötstationen geboten, aber leider nie den Zuschlag bekommen. Ein Bekannter hat mir aber eine kleine billige Lötstation gegeben. Die tut es für das erste. Lochrasterplatinen habe ich auch angeschafft, fehlt nur noch eine Schere um Kabel abzuisolieren und dann kann es los gehen.
    Werde vielleicht erstmal kleine Boards machen, mit den verschiedenen Komponenten (ein kleines CPU Board...) und diese dann per Breadboard noch verbinden. Später dann vielleicht eine kleine Backplane machen und dann alles feststecken. Demnächst will ich mich aufjedenfall mit der Z80 SIO, dem seriellen Baustein, beschäftigen, um den Z80 an die Außenwelt anzubinden.

    Inzwischen habe ich auch meine Sammlung an Intel 8086 Support Chips vervollständigt, so dass ich mich irgendwann aufjedenfall damit mal beschäftigen kann.

    Neu hinzugekommen ist ein Motorola 6800 (nicht zu verwechseln mit 68000), da ich vielleicht noch ein kleines sehr einfaches 8-Bit System bauen will bevor ich zu 16-Bit gehe. Vorteil ist, das der MC6800 anscheinend einen sehr einfachen seriellen Baustein besitzt, der einen sehr guten Einstieg in serielle Verbindungen bieten soll. Wenn man die ACIA versteht, versteht man anscheinend auch jeden anderen seriellen Chip. Gefühlt ist der MC6800 nochmal einfacher aufgebaut als der Z80. Außerdem gibt es einen DES support chip, der mich natürlich besonders reizt.

    Außerdem habe ich in den letzten Tagen mal wieder eine andere Architektur ausgegraben, die NS32k. Ähnlich wie der 68k, ist es ein 16-Bit Chip von außen, aber voll 32 Bit innen. Außerdem kann eine MMU mit 512-Byte Pages benutzt. Demnächst kommt ein volles Paket damit an.

    Weiterer Zugang ist ein Robotron K0421, eine Löschkammer für EPROMS. Kam funktionierend an, die Lampe braucht ein paar Sekunden um anzuspringen. Leider natürlich mit Gebrausspuren, aber ich habe auch schon gut geschrubbt, und es sieht schon wieder besser aus. Zurzeit programmiere ich EEPROMs nur mit dem Arduino, möchte mir vielleicht auch eine Lösung dafür zusammenlöten und dann auch anfangen EPROMS zu "brennen" :D.

    Also kann man in nächster Zeit aufjedenfall ein paar vielleicht interessante Beiträge hier erwarten.

    Es ist besser nicht zu moderieren als falsch zu moderieren

  • Ich melde mich auch mal wieder, diesmal gehts wieder um Hardware:

    Letztes Jahr hatte ich meine kleine Grundversion Z80 Rechner auf dem Breadboard fertiggestellt, er hatte 32 KB SRAM und eine 32 KB EPROM. Daran wollte ich weiterarbeiten, dann kamen aber andere Interessen und auch Uni dazwischen. Währenddessen habe ich natürlich weiterhin auf Ebay geschaut und mir unzählige Chips geschossen. Vor allem sowjetische Chips, aber auch CPUs die nicht so häufig benutzt wurden. Deswegen habe ich mir quasi hier schon einen Vorrat an CPUs und Peripheriechips aufgebaut zu verschiedensten Architekturen.
    Letztes Jahr hatte ich aus Zufall einen Zusatzchip für den MC6800 entdeckt, der DES implementiert. Ich als Kryptostudent war natürlich ziemlich begeistert und hab die direkt geschnappt, anscheinend sind auch garnicht so häufig. Das hat dann auch mein Interesse für den MC6800 und MC6809 geweckt, die anscheinend von anderen 8 Bit CPUs ziemlich überschattet wurden. Deswegen wollte ich damit jetzt auch mal ein System aufbauen. Der Z80 rennt mir ja nicht weg und die Chips dafür habe ich da.

    Das ganze ist schon eine kleine Herausforderung, denn der MC6800 ist anspruchsvoller als der Z80. Während der Z80 einfach irgendeine Clock akzeptiert, im Ernstfall per Knopfdruck mit Hand, braucht der 680x eine stetige Clock mit einer Mindestfrequenz. Dadurch lässt sich das Spaß natürlich nichtmehr per Hand debuggen, denn selbst die Mindestfrequenz liegt glaube ich bei 100 kHz. Beim Z80 konnte ich noch mit 1 Hz mir die LEDs anschauen... Das geht jetzt natürlich nichtmehr.
    Am Anfang wollte ich den 6800 verwenden, der auch noch eine externe Clockschaltung benötigt. Ich bin dann jedoch auf den 6809 umgestiegen, der diese schon integriert hat, weil ich versuchen will eine MMU anzuschließen (und die benötigt Signale die nur der 6809 bereitstellt).
    Dann tat ich mich ein bisschen schwer mit der Auswahl des Quarz, denn das Datenblatt war für mich kurz etwas verwirrend. Mein 6809er läuft mit 1 MHz, aber der Input für die integrierte Schaltung muss 4x die Frequenz sein: also 4 MHz. Zudem durfte ich auch erstmal den Unterschied zwischen Quarz, Resonator und Oszillator verstehen. Nachdem ich das aus dem Weg geschafft hatte, konnte ich loslegen. Habe einfach den Chip aufs Breadboard gesetzt und angeschaltet. Das Problem ist: Wie sehe ich, dass er funktioniert? Das einfachste wäre zu checken, ob die 1 MHz Clock läuft. Leider habe ich kein Oszilloskop, habe dann aber einen Logic Analyzer für 10 Euro auf Amazon geholt. Der kann zwar nicht live die Signale ausgeben, aber aufzeichnen und dann ausgeben. Und tatsächlich funktionierte meine Schaltung.

    Jetzt wollte ich dem Prozessor mal einen echten Input geben. Dafür schnell eine EEPROM mit 32KB gekauft und einen Programmierer mit dem Arduino Mega geschrieben. Jetzt stellte sich mir noch die Frag wie ein Testprogramm aussehen sollte, denn ich habe ja keinen direkten Output. Die einzige Möglichkeit für mich wäre, den Prozessor irgendwie anzuhalten und das dann nachzuprüfen. Zum Glück hat der 6809 einen SYNC Opcode, der den Prozessor anhält bis ein Interrupt passiert (die ich natürlich manuell nicht zulasse). Das ist eine recht einfache Lösung, dann muss ich nur die Statuslines prüfen. Ein Faktor kommt jedoch noch dazu: Nach einem Reset zieht sich der Prozessor die Startaddresse, wo er anfangen soll auszuführen, aus den obersten zwei Speicherzellen also 0xFFFE und 0xFFFF. Deswegen musste ich das natürlich auch noch einprogrammieren in die EEPROM und sie so anschließen, dass die höchste Speicherzelle der EEPROM für den Prozessor auch bei 0xFFFF ist. Und das hat tatsächlich nach einiger Frickelei und kurzzeitiger Depression (hatte vergessen manche Pins auf HIGH oder LOW zu ziehen, wie DMA Request oder Memory Request) funktioniert.

    Hier der 6809 mit der EEPROM unten. Die Verbindungen sind auf diesem Bild noch nicht vorhanden. Stattdessen ist es der Testaufbau, um zu sehen ob die CPU überhaupt funktioniert. Der Datenbus ist auf ein NOP fixiert.

    Spoiler anzeigen


    Und hier der Output des Logic Analyzer mit meinem Halteprogramm. Man sieht wie die Clock anfängt, und der Reset verarbeitet wird (BS HIGH, BA LOW). Danach werden NOPS ausgeführt (BS und BA LOW). Dann hält die CPU an und wartet auf einen Interrupt (BS LOW, BA HIGH).

    Spoiler anzeigen


    Hoffe das war ein bisschen interessant und ich werde demnächst wieder häufiger Updates posten.

    Es ist besser nicht zu moderieren als falsch zu moderieren


  • der logic analyzer ist geil! woher haste den?

    Hab den hier

    Geht bis 24 Megasamples. Ist kompatibel mit der Software von Saleae (deren Dinger sind scheiße teuer) und anderen Softwarelösungen. Bin bis jetzt voll zufrieden.

    Es ist besser nicht zu moderieren als falsch zu moderieren

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!