moin,
hier jetzt die Doku zum LA (Logic Analyzer) in der Minimalversion für Nachbau- und Mitmachinteressierte:
1
2
3
4
5
6
7
8
Werkzeugliste:
Schraubendreher Philips Nr.0 (zum Aufmachen der Kamera)
Fein-Lötkolben 16W oder Lötstation
Elektroniklot dünn
Elektronik-Seitenschneider
scharfes Messer oder Abisolierzange
DigitalMultimeter für Kontrollmessungen
PC oder Laptop mit Parallelport und Windows 95/98/ME/NT4/2k/XP (Vista oder Win7 ?)
1
2
3
4
5
6
7
8
Bauteileliste:
IC 74HC244 (oder 74HC245, keinesfalls LS-Typ! HCT geht vmtl auch nicht!)
Kondensator 100nF Keramik (16V reicht)
Widerstand 1k/0,25W (Wert unkritisch, 10k gehen auch)
Schaltdraht, Schaltlitze und/oder Flachbandkabel (Reststücke reichen)
Schrumpfschlauch dünn oder Lochrasterplatine (Reststück 10x6 Loch reicht)
Parallelportkabel 25pin D-SUB male auf beliebig, mindestens 10adrig, Länge unkritisch bis 2m
Kameragehäuse A-Bajonett nach Belieben oder AF-Zwischenring
Das Kameragehäuse oder der AF-Zwischenring und das Parallelport-Kabel werden "geopfert"!
Mittels Flachbandkabel (oder unelegant Schaltlitze) 5/6-adrig die Signale L1(MISO), L2(Vdd=4,9V), L3(SCK), L4(SS), L5(GND) und ggfs. L6(MOSI) aus dem AF-Zwischenring oder dem Kameragehäuse herausführen. Objektivkontakt-Flexi ist immer an der linken (Blick durch den Sucher! vorderen Flanke des Sucherprismas angelötet, L1 ist immer oben, sicherheitshalber gegen die Kontaktpins messen. Zum Herankommen muss nur das Oberteil abgenommen werden, allerdings sind manche Schrauben etwas versteckt. Ggfs. im Service Manual nachsehen, auch das eines ähnlichen Gehäuses gibt nützliche Hinweise zum grundsätzlichen Aufbau. Die Flexis lassen sich recht gut löten und sind temperaturbeständig, allerdings halten sie keinen mechanischen Zug aus! Also das herausgeführte Kabel zugentlasten... Zum leichteren Anlöten vorher die Litzenenden verzinnen und einen winzigen Put Zinn auf dem Flexikontakt aufbringen. Achtung, das Flexi löst sich ggfs. vom Untergrund, also gegenhalten. Am besten die Kontakte einzeln auflöten und jeweils abkühlen lassen. Nach dem Verlöten unbedingt die Flussmittelreste entfernen, Lotspritzer/-perlen entfernen und auf Kurzschlüsse usw. sichtprüfen und messen. Welche Kontaktmethode am so hergestellten Abgriff benutzt wird, bleibt der Vorliebe des Nachbauers überlassen. Ich habe die Enden verzinnt und stecke auf einem Steckbrett zusammen, was ich brauche.
Das ParPort-Kabel wird zum LA umgebaut: Dazu den Centronics-Stecker entfernen, alle Adern abisolieren und durchmessen. Es gibt verschiedene Kabel, gute haben verdrillte Adernpaare + Doppelschirm, die meisten sind schlicht 18adrig+Schirm. Wir benötigen die Kontakte (Pin-Nr des D-SUB-Steckers zum PC) 1, 2, 3, 4, 5, 6, 7, 8, 9 und GND. Bei einfachen Kabeln sind die Pins 18..25 verbunden und auf GND, bei guten einzeln als Paar! Details siehe Wikipediaarallelport. Die Pins 2..9 sind die Datenleitungen bit 0..7 bzw. Kanal 1..8. Pin1 (Strobe) wird zur Spannungsversorgung des Treiber-ICs missbraucht, dieses ist "legal".
Je nach IC liegen die Ein- und Ausgänge der Treiber auf unterschiedlichen Pins, und auch die Selektierung unterscheidet sich etwas: 244 ist ein 2x4fach-Treiber, 245 ist ein 8fach-Bidirektionaler Bustreiber. Die einzelnen Treiber sind aber in beiden Bausteinen gleich! Die Pins 2..8 werden auf die Ausgänge der 8 Treiber geschaltet, deren Eingänge sind die probes (Kontakte zum Abgreifen der Signale). Die Chip-Select und Direction-Eingänge sind entsprechen gegen GND oder mittels 1k gegen Pin1=Vcc zu legen. Pin 1 kommt an Pin20=Vcc, GND an Pin10 und wird als GND-probe herausgeführt. Der Abblockkondenstor 100nF wird so kurz als möglich zwischen Pin10 und 20 des IC eingelötet. Das ganze kann man auf Lochraster aufbauen oder fliegend verdrahten, Schrumpfschlauch in diesem Falle nicht vergessen. Ich habe vor, das Ganze zum Universellen Kamera- und Objektivsimulator auszubauen. Dies geht nur mit dem 244, nicht mit dem 245. Daher würde ich den empfehlen; auch andere Treiber, die ausgangsseitig TTL machen, mit 3,0-3,5V Vcc auskommen, 5V-tolerante Eingänge haben und maximal 10mA verbraten, sind brauchbar.
Schaltplan für beide Varianten folgt, hänge ich hier noch ein.
[attachment=7632:uAsim1.gif]
edit: 1.Schaltplanversion eingehängt. Bitte die Rev. 0.1 beachten...
edit2: Alle unbenutzten Eingänge eines CMOS sind auf definierte Pegel zu legen, da offene (floatende) Eingänge zum Schwingen neigen. Unbedingt den 4.Kanal bei Nichtgebrauch auf GND legen!
Von dem Digitrace-Vorschlag, ein rein passives Kabel zu verwenden, rate ich dringendst ab!
Als Software kommt Digitrace von JWA Systems zum Einsatz: Anleitung und Download Digitrace
Zum Installieren sowohl "The new version comes as a setupper and contains some more files:" als auch "An upgrade is available: Digitrace_0_0_0_9.zip" herunterladen.
(Direkte links lege ich nicht, es ist auf der etwas unübersichtlichen Seite aber leicht zu finden)
setupper.exe ausführen und hinterher den Inhalt von Digitrace_0_0_0_9.zip in das Programmverzeichnis entpacken.
Dann den angelegten Start-Link von "Digitrac.exe" auf "Digitrace_0_0_0_9.exe" ändern und erst jetzt das Programm aufrufen.
Unter XP ist kein Neustart erforderlich, andere BS nicht getestet.
Digitrace ist absolut minimalistisch, es benutzt den ParPort als Eingang. Es ist nicht echtzeitig, d.h es werden erst alle Samples gelesen und dann angezeigt.
Das liegt vor allem an grundsätzlichen Limits der intel-Architektur: der ParPort wird über IO-Befehle angesprochen, diese benötigen selbst auf aktuellen GHz-Prozessoren ziemlich genau 1µs zur Ausführung (der linux-Kernel benutzt Lesezugriffe auf Port80 als recht genaue Warteschleife von 1µs Dauer, die anders kaum realisierbar wären). Da nach dem Lesen des ParPort noch das Byte weggeschrieben werden muss, ist die maximale Abtastfrequenz auf ca. 800MHz = 1,2µs Sampelabstand begrenzt, es können also Signale mit maximal 400kHz erkannt werden, sicher klappt es nur bis ca. 200kHz. Der Rechner sollte beim Gebracuh sonst idle sein! Win (egal welche Version) ist genausowenig wie linux/Unix echtzeitfähig. Ich habe mit dem Laptop typisch 1,25µs Auflösung, die Werte reichen von 1,22µs - 1,40µs. Die Auflösung wird beim Starten des Programms ermittelt und nicht mit den SampleDumps gespeichert, also vor jeder Messung das Programm neu starten und die Auflösung notieren.
Die Settings des Programms, die bei mir funktionieren:
- Trigger Channel = 3 (hier liegt L4(SS) an)
- Pre Trigger Delay = 2
- Samplesize = 1000000 (1 Mio, Maximum! = Messzeit 1,25s bei 1,25µs Auflösung = 1MByte SampleDump-Größe
- Divisor = 0
- InputPort (Hex) = 378 (richtig für LPT1).
- Die Farben sind mir egal...
- Granularity kann nicht geschrieben, nur gelesen werden. Dieser Wert wird bei jedem Start neu ermittelt, unbedingt notieren, wenn eine "genaue" Analyse in der Zeitdomäne durchgeführt werden soll! Die SampleDumps enthalten diesen Wert nicht!
Genauere Beschreibung des Messablaufes folgt hier per edit. Heute wohl nicht mehr, ich werde mir Benny Rebels Show antun.
gruesze, thomas