Ich würde auch eine nehmen.
Hallo Besucher, der Thread wurde 111k mal aufgerufen und enthält 274 Antworten
letzter Beitrag von r.cade am
arm2iec [Neue Hardware]
- Unseen
- Erledigt
-
-
Cooler Avatar übrigens, womit ist der denn gemacht?
-
Zitat
... mit 1K Serienwiderstand ...
Laut CIA-Datenblatt ist der Strom eines Ausgangspins 3,2mA. Wenn der AVR mit einem Netzteil, das gutgemeinte 5,5V liefert verbunden ist, dann würde ein Strom von 5,5mA fließen, wenn die CIA auf low und der AVR auf high ziehen würde. Evtl. wäre ein 1,8kOhm Serienwiderstand zwischen AVR-Parallelpoert und C64-Uerport etwas günstiger?
-
USB-B-Buchse zur PC-Anbindung(3) (falls jemand mal die Zoomfloppy-Sourcen portieren will?)
Wäre gar nicht mal so unmachbar, angesicht der Tatsache dass jemand die LUFA portiert hat auf den NXP1769: klickDer USB Teil wäre also relativ einfach. Aber alles andere Zeugs wie IO, Timer etc. fehlt halt total
-
Anläßlich des jüngsten Hardware Release (Interessenten arm2iec-Bausätze?) möchte ich mal nachfragen, ob den eventuell noch weitere Hardware Änderungen eingebracht werden könnten?
Im Zuge einer Zoomfloppy Anpassung für as arm2iec wäre für mich ein IEEE-488 Anschluss wichtig. Es wäre nur ein einziges weiteres Signal am Bus nötig. Mit drei weiteren Signalleitungen hätte man sogar einen vollwertigen IEEE-488 Bus. Der Stecker muss ja nicht unbedingt sein, man könnte sich ja von einer Stiftleiste aus ein Kabel basteln.
IEC-Bus (5 x IO) :
- Reset
- ATN
- Data
- Clock
- SRQ
IEE-488-Bus (6 x IO) :
- IFC (Reset)
- ATN
- NDAC
- NRFD
- DAV
- EOI
- REN**
- SRQ**
** für Commodore Hardware nicht nötig
-
Im Zuge einer Zoomfloppy Anpassung für as arm2iec wäre für mich ein IEEE-488 Anschluss wichtig. Es wäre nur ein einziges weiteres Signal am Bus nötig. Mit drei weiteren Signalleitungen hätte man sogar einen vollwertigen IEEE-488 Bus. Der Stecker muss ja nicht unbedingt sein, man könnte sich ja von einer Stiftleiste aus ein Kabel basteln.
Bastel dir einen Adapter, der dafür die Signale auf der Ext-Buchse verwendet? Auf der Platine ist kein Platz mehr für weitere Anschlusse und um die Softwareseite muss sich sowieso jemand anderes kümmern. -
Da fällt mir ein: Inwiefern ist das arm2iec elektrisch kompatibel mit einer zweiten parallel angeschlossenen 1541?
Nachdem ich das endlich mal getestet habe... ein klares "jein". Zum einen sind noch kleinere Bugs in der Software (einer ist gefunden, ein weiterer wird noch gesucht), zum anderen waren die 1kOhm-Serienwiderstände doch etwas übervorsichtig - mit einer 1541 zusätzlich am Parallelkabel steigen die Low-Pegel auf ca. 1,5 Volt an und damit erkennt der C64 die Signale nicht mehr zuverlässig. Mein Prototyp hat jetzt erstmal einen Satz zusätzliche 100-Ohm-Widerstände auf der Unterseite, rein rechnerisch sollte man aber schon deutlich auf der sicheren Seite sein wenn man die 1K-Widerstandsarrays durch 220 Ohm ersetzt (Einzelwiderstände passen auch).In einer Hinsicht ist mir bei der Widerstandsverringerung etwas unwohl: Das Datenblatt des LPC17xx warnt, dass dessen Pins nur 5V-tolerant sind während die Betriebsspannung am Chip anliegt. Ich würde daher bei angeschlossenem Parallelport empfehlen, dass das arm2iec vor dem C64 eingeschaltet wird.
-
So, dann ignoriere ich einfach die Mehrfachposting-Regel nochmal weil ich ein paar neue Informationen hinzufügen kann.
DolphinDos mit mehr als einem Laufwerk funktioniert jetzt. Nach einigem Fluchen über anloge Dreckeffekte auf digitalen Signalen...
Auf Hardwareseite gibt es neben den schon erwähnten Problemen mit den zu grossen Serienwiderständen noch ein weiteres Problem: Wenn die Parallelportleitungen von vielen 1-Bits auf viele 0-Bits wechseln und das Parallelkabel "ungünstig" ist (hier trat es bevorzugt auf wenn sowohl arm2iec als auch 1541 angeschlossen waren) gibt es einen kurzen Glitch von unter 100ns auf der Handshakeleitung:
VOLTCRAFT44_1.gif
(gelb Handshake, türkis eine der Datenleitungen)Im Layout der 1.1er-Platinen werde ich das sicherheitshalber mit einem 100pF-Kondensator auf der Handshakeleitung entschärfen - ein Test mit gerade rumliegenden 56pF sieht schon deutlich besser aus und funktionierte ohne die Software ändern zu müssen:
VOLTCRAFT44_3.gifTrotzdem ist sd2iec jetzt so modifiziert, dass es nach dem Setzen der Parallelport-Leitung das Flag für ein ankommendes Handshake löscht - das Orginal-Dolphin-Rom macht es vorher, aber die VIA dürfte auch deutlich unempfindlicher gegenüber solchen Glitches sein. Jede dieser Änderungen (Software bzw. Nachrüst-Kondensator) löst das Problem schon alleine, deswegen reicht es bei den Prototyp-Platinen die Widerstände zu tauschen und selbst das kann man sich wahrscheinlich sparen wenn arm2iec das einzige Gerät am Userport ist (hängt von Exemplarstreuungen der CIA ab).
Der Zielwert für die Serienwiderstände sollten ca. 220 Ohm sein. Man kann z.B. die Arrays auslöten und durch normale bedrahtete Widerstände ersetzen:
widerstaende.jpgOder man lötet auf der Unterseite ein paar 0805-SMD-Widerstände parallel (im Bild sind es 100 Ohm, ich würde aber eher 270 empfehlen):
smd.jpgMan könnte auch die Widerstände einfach überbrücken (wie im vorherigen Bild, aber Lötzinn bzw. Drahtstücke statt der SMD-Widerstände), aber dann sind die Leitungen des LPC1769 komplett ungeschützt.
Die Nachrüstung des Kondensators ist eigentlich nicht notwendig, aber in SMD geht das recht schön und das Foto kann gleichzeitig als Referenz für den benötigten Pin dienen (der andere geht an Masse):
kondensator.jpg -
[offtopic]
So, dann ignoriere ich einfach die Mehrfachposting-Regel nochmal weil ich ein paar neue Informationen hinzufügen kann.
die Regel bezieht sich auch eher auf Positngs die im viertelstundentakt kommen, eben weil die auch in ein oder mehrere Edits gepackt werden könnten.
jetzt darfste aber auch schon wieder posten... *g*[/offtopic]sl FXXS
-
[offtopic]Und vorallem bezieht sich das auch nur auf sinnloses Blabla, und nicht wenn es sich um wertvolle Informationen handelt.[/offtopic]
-
Zitat
... zum anderen waren die 1kOhm-Serienwiderstände doch etwas übervorsichtig - mit einer 1541 zusätzlich am Parallelkabel steigen die Low-Pegel auf ca. 1,5 Volt an und damit erkennt der C64 die Signale nicht mehr zuverlässig. Mein Prototyp hat jetzt erstmal einen Satz zusätzliche 100-Ohm-Widerstände auf der Unterseite, rein rechnerisch sollte man aber schon deutlich auf der sicheren Seite sein wenn man die 1K-Widerstandsarrays durch 220 Ohm ersetzt (Einzelwiderstände passen auch).
In einer Hinsicht ist mir bei der Widerstandsverringerung etwas unwohl: Das Datenblatt des LPC17xx warnt, dass dessen Pins nur 5V-tolerant sind während die Betriebsspannung am Chip anliegt. Ich würde daher bei angeschlossenem Parallelport empfehlen, dass das arm2iec vor dem C64 eingeschaltet wird.
Im C64 ist eine Tastatur-CIA immer auf Ausgang gesetzt. Trotzdem kann man an an den Joystickport dieser CIA einen Joystick anschließen. D.h. es kann passieren, dass ein Pin der CIA auf high-Ausgang geschaltet während dieser Pin gleichzeitig vom Joystick auf low gezogen wird; und das alles ohne Sicherheitswiderstand. Dies zeigt, dass die CIA nicht zerstört wird, wenn man ohne Sicherheitswiderstand einen CIA-Pin von extern nach low zieht, selbst dann, wenn dieser CIA-Pin auf high-Ausgang geschaltet ist.
Wenn ein CIA-Pin allerdings auf low-Ausgang geschaltet ist und von extern ohne Widerstand auf high gezogen wird, dann ist die CIA defekt. Hier ist der Widerstand zwingend notwendig.
Wenn man es schaffen will mehrere parallele Laufwerke gleichzeitg anzuschließen, dann könnte man eine Diode ( z.B. 1N4148 ) und einen Widerstand (1 - 1,8kOhm) parallelschalten. Mit der Diode würde der AVR als Ausgang den CIA-Pin stark nach low ziehen, ohne dass die CIA zerstört würde, falls sie auf high-Ausgang geschaltet ist. Mit dem Widerstand würde der AVR als Ausgang den CIA-Pin so schwach nach high ziehen, dass die CIA nicht zerstört würde, falls sie auf low-Ausgang geschaltet ist. Ist die CIA der Ausgang und der AVR der Eingang, dann würde dies über den Widerstand übertragen. -
Eigentlich füttere ich offensichtliche Trolle nur ungerne, aber in diesem Fall mache ich mal eine Ausnahme damit sich hier niemand die CIA langsam grillt.
Wenn ein CIA-Pin allerdings auf low-Ausgang geschaltet ist und von extern ohne Widerstand auf high gezogen wird, dann ist die CIA defekt. Hier ist der Widerstand zwingend notwendig.
Die Pullups des LPC1769 liefern laut Datenblatt maximal 150 Mikroampere, ausserdem ziehen sie auf maximal 3,3 Volt (Datenblatt) bzw. 2,5 Volt (gemessen) hoch.Zitatdann könnte man eine Diode ( z.B. 1N4148 ) und einen Widerstand (1 - 1,8kOhm) parallelschalten.
Seeehr schlechte Idee, dann können die Treiber im LPC mit voller Stärke auf dem Kabel rumwirbeln was nicht nur die vorherigen Glitches wiederbringt sondern auch noch nettes Klingeln auf den Signalen erzeugen sollte. Ich habe mal die 100-Ohm-SMD-Widerstände durch 1N4148-Dioden ersetzt und nachgemessen:VOLTCRAFT48_8.gif
Hier sieht man Datenbit 7 in türkis und die ankommende Handshakeleitung in Gelb - es gibt wieder einen Glitch bis runter auf 0V und damit wird ein Handshake erkannt wo gar keiner sein soll.Wenn man etwas rauszoomt wird es aber noch schlimmer:
VOLTCRAFT48_9.gif
Ein nicht dargestelltes Signal erzeugt einen weiteren Glitch - da die Datenleitung schon low ist wird sie auf deutlich unter -1V in den negativen Bereich gezogen, was für die CIA auf Dauer sicherlich nicht gut ist.Das fehlende Signal ist natürlich der ausgehende Handshake (gelb) , der dank der Diode jetzt mit voller Treiberleistung aufs Kabel gehen kann und dabei auch hübsch klingelt:
VOLTCRAFT48_6.gifOhne Dioden, nur mit 1k-Widerständen ist das ausgehende Handshakesignal zwar ziemlich langsam, aber der Einfluss auf die Datenleitung vernachlässigbar:
VOLTCRAFT48_15.gifZitatMit der Diode würde der AVR
Hier redet niemand von AVRs...ZitatMit dem Widerstand würde der AVR als Ausgang den CIA-Pin so schwach nach high ziehen
...und mehr als die 150 Mikroampere vom internen Pullup können in diesem Fall eh nicht fliessen. -
NLQ = offensichtlicher Troll?!
:popkorn:
-
>>Wenn ein CIA-Pin allerdings auf low-Ausgang geschaltet ist und von extern ohne Widerstand auf high gezogen wird, dann ist die CIA defekt. Hier ist der Widerstand zwingend notwendig.
>Die Pullups des LPC1769 liefern laut Datenblatt maximal 150 Mikroampere, ausserdem ziehen sie auf maximal 3,3 Volt (Datenblatt) bzw. 2,5 Volt (gemessen) hoch.
Ich hatte am ursprünglichem Schaltplan gesehen, dass jeder Parallelport-Pin einen 1kOhm-Serienwiderstand hat und dachte der ist als Schutzwiderstand für den Fall, dass versehentlich C64-CIA und LPC1769/MEGA1284 gleichzeitig auf Ausgang aber unterschiedliche Pegel geschaltet sind. So wie ich es jetzt verstehe sind die Widerstände zum Verhindern der Glitches da. Das war mein Fehler.
>>dann könnte man eine Diode ( z.B. 1N4148 ) und einen Widerstand (1 - 1,8kOhm) parallelschalten.
>dann können die Treiber im LPC mit voller Stärke auf dem Kabel rumwirbeln was nicht nur die vorherigen Glitches wiederbringt sondern auch noch nettes Klingeln auf den Signalen erzeugen sollte.
es gibt wieder einen Glitch bis runter auf 0V und damit wird ein Handshake erkannt wo gar keiner sein soll.Das ist wirklich schlecht.
>Wenn man etwas rauszoomt wird es aber noch schlimmer:
Ein nicht dargestelltes Signal erzeugt einen weiteren Glitch - da die Datenleitung schon low ist wird sie auf deutlich unter -1V in den negativen Bereich gezogen, was für die CIA auf Dauer sicherlich nicht gut ist.Das ist ebenso sehr schlecht.
>>Mit der Diode würde der AVR
>Hier redet niemand von AVRs...
Ich hatte noch cheapavr im Kopf, das ja einen MEGA1284 hat. Hier in diesem Thread habe ich es verwechselt, auch dies war mein Fehler.
>>Mit dem Widerstand würde der AVR als Ausgang den CIA-Pin so schwach nach high ziehen
>...und mehr als die 150 Mikroampere vom internen Pullup können in diesem Fall eh nicht fliessen.
Ich denke, dass das Ziel von allen hier im Forum ist Schaden vom C64 abzuhalten. Es gibt das Problem mit dem negativen Glitch, das die CIA zerstört und das erst durch mich entstanden ist, was schlecht ist.
Ich kenne mich mit dem LPC1769 nicht aus und somit weiss ich nicht, ob es hier eine Möglichkeit gibt per Fuses oder sonst irgendwie 100%ig zu verhindern, dass der Parallelport auf Ausgang und high geschaltet wird. Sollte dies nicht der Fall sein, dann könnte es immer noch gefährlich für die CIA werden. Laut Datenblatt liefert der LPC1769 einen Kurzschlussstrom von 45mA:
Iohs HIGH-level short-circuit output current VOH=0V Max-45 mA
Der 100Ohm-Widerstand würde dies zwar auf 33mA reduzieren, aber das wäre immer noch das zehnfache dessen was der CIA laut Datenblatt zugemutet werden darf.
Beim AVR von chaepavr könnte es immer passieren, dass durch einen Bug der Parallelport auf Ausgang und high geschaltet wird, was zu knapp 50mA führen müsste.
Wie ist denn der µC-Port während der Übertragung eines High-Bits bei LOAD geschaltet, auf Eingang und Pullups on oder auf Ausgang und high?
Wenn dies alles so wäre, find ich, dass man einen so wertvollen Chip wie die CIA schützen sollte. Auch wenn es umständlich und aufwändig ist, könnte man eine (Schottky-) Diode und einen 100Ohm Widerstand in Reihe und einen 1,8kOhm Widerstand parallel dazu machen. Die Diode würde verhindern, dass der µC den CIA-Pin mit zu großem Strom nach high zieht, der 100Ohm Widerstand würde die Glitches verhindern und der 1,8kOhm Widerstand würde die Datenübertrageung vom C64 zum µC ermöglichen.
Wenn man es übertreiben wollte, dann könnte man die CIA noch vor Glitches unter 0V und über 5V durch Dioden am Userportstecker schützen?
Sollte irgendetwas hiervon nicht zutreffen, dann bitte ich um Entschuldigung für die Verwirrung, die verursacht habe. -
Für die Leute, die sich wundern wie der Parallelport-Anschluss auf der 1.1er-Platine belegt ist und nicht das PDF mit dem Schaltplan öffnen wollen:
a2i-1.1-par.pngDie Masseleitungen auf den ungeraden Pins müssen nicht unbedingt auf der C64-Seite angeschlossen werden, aber die Leitungen im Flachbandkabel sollte man nicht weglassen. PP0 bis PP7 geht an Userport-Pins C bis L (PB0 bis PB7), PPH_OUT_E an Userport Pin B (FLAG2), PPH_IN_E an Userport Pin 8 (acht - PC2). Die Belegung ist nicht ganz zufällig eine auf 20 Pins verkürzte Variante von dieser hier.
-
Das Arm2IEC läuft sehr gut bei mir. Super gemacht Unseen Freue mich schon auf zukünftige Erweiterungen z.B. LCD
Nur mit dem Parallelkabel habe ich das folgende Problem.
Nachdem einschalten sehe ich das übliche DolphinDos 2.0 Einschaltbild. Versuche ich nun etwas zu laden, leuchtet die grüne LED am Arm2IEC durchgehend und der C64 hängt in einer Endlosschleife. Ich muß dann beides reseten. Den letzten Build der Software vom 20.07 ist drauf.
Eine 1541 mit DolphinDos läuft ohne Probleme an dem C64.Hat von euch Profis jemand eine Idee, was da schief geht? Vielen Dank!!
-
Nur mit dem Parallelkabel habe ich das folgende Problem.
Hast du mal ein Foto davon? Bist du sicher, dass die Belegung stimmt?ZitatHat von euch Profis jemand eine Idee, was da schief geht? Vielen Dank!!
Hast du in C64-Nähe einen PC mit USB, auf dem man ein Terminalprogramm verwenden könnte, um die Statusausgaben von sd2iec mitzuschneiden? -
Hast du mal ein Foto davon? Bist du sicher, dass die Belegung stimmt?Foto mach ich dir heute abend, wenn ich von der Maloche zurück bin.
Hast du in C64-Nähe einen PC mit USB, auf dem man ein Terminalprogramm verwenden könnte, um die Statusausgaben von sd2iec mitzuschneiden?Ja klar. Da aber dort Win7 läuft, ist leider Hyperterminal nicht mehr vorhanden. Würde auch Putty oder sowas gehen? Wie werden den die Statusausgaben abgerufen?
-
Klar geht Putty, ich kenne nix besseres unter Windows.
-
Würde auch Putty oder sowas gehen? Wie werden den die Statusausgaben abgerufen?
putty geht auch - passenden seriellen Port einstellen, Baudrate auf 115200. Die kryptischen Statusausgaben werden ständig rausgepustet, explizites Abrufen ist nicht notwendig. Für dein Problem wäre ein Log vom Einschalten an bis zum Hängen beim Ladeversuch (der natürlich möglichst nicht viele Stunden später erfolgen sollte) interessant.