Hardware 1.7 + Hardware 1.8

  • Hardware 1.7 + Hardware 1.8

    Heute habe ich ein Exemplar der neuen Version 1.7 meiner Platine bekommen.

    Um noch mehr Bauteile runterzuwerfen und somit den Nachbau leichter zu machen, habe ich die Pegel-Anpassung von der SD-Karte<->Mega32 Verbindung auf die Mega32<->IEC Verbindung verschoben.

    Wie man sieht sind nur noch zwei Widerstände drauf und die fummeligen Teile sind eine Nummer grösser geworden.
    Die FET's habe ich durch bedrahtete ersetzt.

    Im 6-poligen ISP-Stecker stecken zwei Pins zum messen, daher sieht das etwas merkwürdig aus.
    Die beiden Durchkontaktierungen links unterhalb des Controllers sind GND und TXD für den Anschluss eines Seriell-auf-RS232 Adapters - zum Debuggen eben.


    Der Controller läuft jetzt wie die SD-Karte auf 3,0V.
    Das spart zwar Strom (gaaaanz wichtig... :) ), bringt aber ein neues Problem - der Takt stimmt nicht mehr.
    Laut Datenblatt läuft der Mega32 jetzt mit um die 7,5 MHz.
    Ab Werk ist ja die 1 MHz Fuse gesetzt und bisher habe ich den Bootloader immer bei 250 kHz ISP Takt aufgespielt, 1/4 Clock eben.
    Tja, um den Bootloader aufzuspielen musste ich einen Schritt runter auf 125 kHz gehen.
    Die 1.8 bekommt auf jeden Fall noch einen Resonator mit 8 MHz, damit die Dinger vom Timing her gleich sind.

    Das nächste ist, die 0.9 Firmware läuft nicht.
    Wird zwar vom Bootloader einwandfrei geladen, der IEC läuft so aber nicht.
    Da wird auch in der SD2IEC Firmware eine kleine Anpassung notwendig sein,
    dass probiere ich gleich mal aus.

    Edit: zu doof wenn man sich den Source nicht vorher ansieht...

    ---
    /* Pullups would be nice, but AVR can't switch from */
    /* low output to hi-z input directly */
    ---

    Das kann ohne externe Pullups also garnicht funktionieren.
    Soviel also zu der Idee, mit weniger Teilen auszukommen...
    Bilder
    • DSC07328.jpg

      154,65 kB, 1.200×715, 381 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Shadowolf ()

  • RE: Hardware 1.7

    Originally posted by Shadowolf
    Die beiden Durchkontaktierungen links unterhalb des Controllers sind GND und TXD für den Anschluss eines Seriell-auf-RS232 Adapters - zum Debuggen eben.


    Wären die LEDs jetzt nicht so gross geworden hätte ich vorgeschlagen das TXD-Pad neben einen der GND-Kontakte der Stiftleiste zu legen.

    Das nächste ist, die 0.9 Firmware läuft nicht.
    Wird zwar vom Bootloader einwandfrei geladen, der IEC läuft so aber nicht.
    Da wird auch in der SD2IEC Firmware eine kleine Anpassung notwendig sein,
    dass probiere ich gleich mal aus.


    Seltsam, der Kommentar hinter den Timing-Defines in IEC_driver.c legt nahe, dass das Timing sehr unkritisch ist. Aber man kann den natürlich auch so verstehen, dass für die Tests die F_CPU-Definition angepasst wurde.

    Mein sd2iec-Testaufbau läuft hier in einem kurzen Test mit einem 7,3728MHz-Quarz statt den üblichen 16MHz einwandfrei (Prescaler weiterhin auf /2, also effektiv 3,686MHz).

    Quellcode

    1. 10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    2. 20 forj=1to5:printchr$(rnd(1)*16+70);:next
    3. 30 printint(rnd(1)*328)-217

    sd2iec Homepage
  • RE: Hardware 1.7

    Original von Unseen
    Wären die LEDs jetzt nicht so gross geworden hätte ich vorgeschlagen das TXD-Pad neben einen der GND-Kontakte der Stiftleiste zu legen.


    Die Bauteile grösser zu machen war ja Teil des Plans. :)


    Seltsam, der Kommentar hinter den Timing-Defines in IEC_driver.c legt nahe, dass das Timing sehr unkritisch ist.


    Das Timing habe ich ja auch nicht gemeint. :)
  • RE: Hardware 1.7

    Originally posted by Shadowolf
    Edit: zu doof wenn man sich den Source nicht vorher ansieht...

    ---
    /* Pullups would be nice, but AVR can't switch from */
    /* low output to hi-z input directly */
    ---

    Das kann ohne externe Pullups also garnicht funktionieren.
    Soviel also zu der Idee, mit weniger Teilen auszukommen...


    Im Prinzip könnte man das auch in der Firmware ändern, dann würde der Pin von Low->Hi-Z->Hi-Z+Pullup bzw. umgekehrt wechseln. Lästig wird es nur im Fastloadercode, wo zwei Pins gleichzeitig datenabhängigen Pegel erhalten.

    Quellcode

    1. 10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    2. 20 forj=1to5:printchr$(rnd(1)*16+70);:next
    3. 30 printint(rnd(1)*328)-217

    sd2iec Homepage
  • RE: Hardware 1.7


    Lästig wird es nur im Fastloadercode, wo zwei Pins gleichzeitig datenabhängigen Pegel erhalten.


    Viel lästiger für den Fastloader-Code ist ja ohnehin der niedrige Takt.

    Am Wochenende ist mir bei der Analyse von Fastloader-Code auch klar geworden,
    dass meine 6502 Assembler Zeit erheblich zu lange her ist.
    Und ich glaube ehrlich gesagt auch nicht, dass ich das in AVR-Assembler implementieren kann.

    Ich habe aber mal meine Tabelle bisher angehängt.
    Ist zwar ein Nachlader aber vielleicht wäre "DTV Speed Load" ein aussichtsreicher Kandidat?


    @Madness:

    forum64.de/wbb2/attachment.php?attachmentid=5940

    Eine Platine hätte ich davon noch irgendwo. ;)
    Dateien
    • Fastloader.zip

      (7,54 kB, 26 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Shadowolf ()

  • Okay, wenn man auch zu doof ist die Teile zu bestücken, die bestückt werden sollen...

    Auf dem Bild sind drei Transistoren zu sehen und eine Lücke für einen vierten.
    Da wo im Bild die Lücke ist gehört allerdings der FET für ATN hin und der FET am Stecker ist für die "Reserve"-Leitung...

    Drei zusätzliche Widerstände habe ich unten drunter bestückt, damit läuft das Teil auch ohne jede Änderung an der Software.

    Nun ja, 5 Widerstände sind immer noch besser als 11. :)

    Jetzt noch das Problem mit dem Takt lösen...
  • Original von C128Egretz
    hast du davon (V1.7) einen funktionierenden Bausatz für mich und meinen DTV64?


    Sorry, von der 1.7 gibt es bisher nur diese eine Platine.
    Und selbst wenn ich noch eine hätte, ich habe keine Mega32-L Controller mehr und auch die anderen Teile sind mir inzwischen fast ausgegangen.
    Mal davon ab, dass auf der Platine ja mindestens drei Widerstände fehlen die ich dazugebastelt habe.

    Von der 1.6 sind auch nur noch 5 leere Platinen übrig.
  • Hmm, mal sehen was passiert, wenn man im Thread den Betreff ändert...

    Die Test-Platinen in Version 1.8 habe ich erhalten, eine aufgebaut und mit SD2IEC 0.3 die Fastloader-Unterstützung getestet.

    Das lief reibungslos, ein grosses Dankeschön an Unseen!!

    Heute Abend habe ich auch gleich die SD2IEC 0.4 aufgespielt und die tut wie erwartet ebenso.

    Allerdings habe ich auch gleich die Platine wieder ein wenig mechanisch modifizieren müssen, ich war mit ein paar Abständen und Bauteil-Grössen nicht zufrieden.

    Daher habe ich nur vorläufig den Schaltplan als Bild angehängt.

    Die 1.9 zu bekommen dauert wohl ein paar Tage länger.

    Leider konnte ich auch von den 1.8'er Platinen nur ganz wenige bekommen, vier Stück um genau zu sein.
    Und eine abzugeben habe ich mich bereits hinreissen lassen, obwohl die nicht ganz perfekt sind, das war es dann auch.
    Bilder
    • IMG_0159.jpg

      105,9 kB, 1.000×506, 153 mal angesehen
    • mmc2iec_sch.png

      37,99 kB, 1.563×1.068, 176 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Shadowolf ()

  • Nabend,

    hab mal zwei Fragen:

    Handelt es sich hier immernoch um das eigentliche MMC2IEC, was man auf Lochraster aufbauen und nachbestellen kann ? Versteh das mit der Firmwareflasherei nicht ganz.

    2. Wie kann ich das mit der Fastloaderunterstützung verstehen ? Emuliert das Teil nun eine 1541 komplett ? Inkl. Fastloader ?
    :winke: Wie C64 an TFT? :winke:
    :king: Fulgore ist President! :king:
  • Ace schrieb:


    Handelt es sich hier immernoch um das eigentliche MMC2IEC, was man auf Lochraster aufbauen und nachbestellen kann ?


    Das ist ein von mir leicht modifiziertes MMC2IEC, dieser Pfad des Forums ist voll davon.

    Im Rahmen einer Sammel-Bestellung habe ich Version 1.6 meiner Platine in die Szene gebracht.
    Dabei hat sich dann herausgestellt, dass es von Vorteil wäre, noch weniger Teile zu verwenden
    und diese auch noch eine Nummer grösser zu machen.
    So bin ich zu Version 1.7 gekommen.

    Dann hat sich dank Unseen's Arbeit an der Software herausgestellt, dass die Unterstützung schneller Fastloader nicht ohne einen Quarz möglich ist, so ist Version 1.8 enstanden.
    Mit Version 1.9 wiederrum habe ich ein paar mechanische Schwächen ausgebügelt.

    Und obwohl ich die Schaltung nochmal kräftig umgekrempelt habe sind die 1.7/1.8/1.9 voll kompatibel
    mit der Software für die Version 1.6.


    Versteh das mit der Firmwareflasherei nicht ganz.


    Firmware ist die Betriebs-Software die im FLASH-RAM des Controllers steckt.
    Und "flashen" nennt man den Vorgang des Programmierens des Controllers.

    Wobei ich für meine Version vom MMC2IEC einen Bootloader angepasst habe,
    die Geräte programmieren sich also "von selbst" mit Hilfe einer Datei auf SD-Karte,
    nur zum Einspielen des Bootloaders benötigt man einmalig einen Programmier-Adapter.


    2. Wie kann ich das mit der Fastloaderunterstützung verstehen ? Emuliert das Teil nun eine 1541 komplett ? Inkl. Fastloader ?


    Nein, eine vollständige Emulation ist nicht möglich.
    Dafür ist der Controller einerseits vermutlich zu langsam, andererseits hat er dafür mit Sicherheit zu wenig Speicher.
    Und zwar sowohl Programm- als auch Arbeits-Speicher.

    Eine komplett-Emulation müsste ja auch die für das MMC2IEC sinnlose Peripherie um den Prozessor simulieren.

    So hatte ich die Idee, an die Floppy übergebenen Code anhand einer Checksumme zu erkennen und dann nachprogrammierten äquivalenten Code auszuführen.

    Genau das hat Unseen in seiner SD2IEC Firmware gemacht und auch noch für zwei Versionen eines recht flinken Fastloaders.

    Jetzt könnten nach und nach diesem Muster folgend weitere Fastloader unterstützt werden.
    Und eine der Sachen die ich mir für Weihnachten vorgenommen habe ist, endlich mal einen Beitrag auf der Software-Seite zu leisten.
  • Ich hatte für dieses Jahr nicht mehr damit gerechnet aber durch Zufall konnte ich doch noch ein paar Platinen mitfertigen lassen:



    Die Oberseite ist dabei langweilig, die sieht bei der 1.8 auch kaum anders aus. :)




    Die Schaltung wird sich für die 1.x jetzt wohl nicht mehr ändern.



    Und da ich das gerade erfolgreich mit der Fastloader-Unterstützung aus Unseen's SD2IEC 0.4.1 getestet habe,
    gebe ich jetzt auch mal die EAGLE-Daten dazu frei:

    mmc2iec_shadowolf_1.9.zip

    In dem .zip sind auch die Bestückspläne nochmal als .pdf enthalten.


    Falls jetzt noch jemand interesse an einem Bausatz hat, ich habe 5 Platinen über.
    Allerdings habe ich nur noch zwei SD-Sockel, komme also bestenfalls auf 2 Bausätze.
    Weitere SD-Sockel bekomme ich wahrscheinlich erst nächstes Jahr.

    Es sind zwar weniger Teile drauf, die sind aber zum Teil teuer - die FET's z.B. kosten bei Reichelt 35 Cent das Stück.
    Dazu kommt, dass ich lange nicht so viele Bauteile wie mit der Sammel-Bestellung kaufen konnte, und so kostet mich ein Mega32L8 zum Beispiel 3,29 Euro statt 2,49 Euro das Stück, der SD-Sockel 2,99 statt 2,29 ...

    Wie auch immer, insgesamt habe ich ausgrechnet, dass ich bei 15 Euro pro Bausatz wohl wenigstens keinen Verlust mache.
    Dazu kommen immer noch die 2,20 Porto für den Versand im Maxibrief-Karton und 0,40 für den Karton selbst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Shadowolf ()

  • Tja, und das war es dann auch schon wieder...

    Yep, der Programmier-Stecker ist immer noch der gleiche.
    Die besondere Bedeutung dahinter entzieht sich mir allerdings,
    zumal ich die Controller wieder auflöten und mit dem Bootloader versehen werde.

    Uh, mir fällt gerade auf, dass ich dafür noch ein wenig basteln muss.
    Auf der Arbeit habe ich in der Mittagspause mal eben ein Labor-Netzteil für die Inbetriebnahme benutzt,
    das steht mir hier im Urlaub zu Hause nicht zur Verfügung.
    Andererseits will ich ja gerade nicht die halbe Platine bestücken.


    Dabei fällt mir noch ein wesentlicher Vorteil der neuen Schaltung ein, den ich bisher vergessen habe zu erwähnen.
    Dadurch, dass der Controller jetzt mit am Spannungs-Regler hängt wird der Bereich der Eingangs-Spannung erheblich breiter.
    Der Spannungs-Regler verträgt maximal 30V am Eingang.
    Da der aber auch warm wird und um so mehr, je grösser die Eingangs-Spannung ist, liegt der von mir empfohlene Spannungs-Bereich für die Version 1.9 jetzt bei 4,3V bis 12V.
    Das dürfte auch weniger Probleme mit Stecker-Netzteilen geben die ja üblicherweise 4,5V/6V/... haben.

    Edit: Die Stückliste für die 1.9 hat noch gefehlt:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Shadowolf ()

  • Shadowolf schrieb:


    ...liegt der von mir empfohlene Spannungs-Bereich für die Version 1.9 jetzt bei 4,3V bis 12V.


    Argh!
    Da der Tantal am Eingang des Spannungs-Reglers nur 10V verträgt sind 12V nicht so gesund.
    Also sagen wir mal 4,5V...10V - das ist immer noch sehr nett.

    Ich war gerade am überlegen wegen des Reset-Problems beim Karten-Einlegen die Kapazität
    der Tantale von 4,7µF auf 6,8µF oder 10µF zu erhöhen.

    Den Keramik-C grösser zu machen dürfte auch nicht verkehrt sein, leider hat CSD keine 220nF/330nF in 1206.
    Und 1µF sind dann vielleicht ein wenig übertrieben.
  • Benutzer online 1

    1 Besucher