Forum: Mikrocontroller und Digitale Elektronik Logic Analyzer / Serielles Protokoll reverse-engineeren (Mamiya)


von Dennis B. (dcfoto)


Lesenswert?

Hallo! Ich versuche, das Kommunikations-Protokoll zu verstehen, über das 
meine Kamera mit den Objektiven kommuniziert. Ich bin auch schon so 
weit, dass ich die Kommunikation mitgeschnitten habe; nur weiß ich nicht 
so recht, wie ich die Daten interpretieren soll. Mein Ziel ist, eine 
Kamera zu emulieren, so dass ich die Blende regeln kann (was leider nur 
digital geht) und so die Objektive an einer Großformatkamera betreiben 
kann.

Die Kamera ist eine Mamiya 645DF+. Die Verbindung hat 8 Pins (neuere 
Objektive haben noch 2 mehr, vermutlich für den Zentralverschluss). Mit 
dem Multimeter habe ich ermittelt, dass scheinbar Pin1 Masse und Pin5 
+2V ist (Blick auf die Kamera, von rechts gezählt). Warum gerade 2V? 
Naja. Pins 6-8 bleiben low während des Abblendens, sind also hierfür 
offenbar nicht relevant. Interessant sind jetzt Pins 2-4.

Wie ich mit dem Oszilloskop sehen kann, gibt es scheinbar kein 
Clock-Signal. Deutet auf UART hin, oder? Habe den Bus Pirate (von 
Dangerous Prototypes) als Logic Analyzer bemüht und damit beobachtet, 
was sich an den Pins tut, während ein Objektiv angeschlossen ist und ich 
von Offenblende abblende.

Ergebnisse siehe hier:
https://dl.dropboxusercontent.com/u/11865476/MamiyaLensProtocol.pdf

Es gibt zweimal Aktivität mit einer Pause dazwischen. Vermutlich ist das 
erste der Befehl der Kamera zum Abblenden und das zweite die Antwort 
"fertig". Dafür spricht auch, dass der zeitliche Abstand zwischen den 
beiden größer wird, wenn auf einen höheren Blendenwert abgeblendet wird 
(was ja mechanisch auch länger dauert).

Nur: wie muss ich jetzt die Daten interpretieren? Irgendwie muss da ja 
der Wert der Zielblende übertragen werden, damit das Objektiv weiß, was 
es tun muss (beim Einstellen der Blende in der Kamera wird nämlich 
nichts übertragen, Aktivität auf dem Bus ist tatsächlich erst beim 
Abblenden). Allerdings sieht der Mitschnitt immer sehr ähnlich aus, egal 
was ich einstelle. Das verstehe ich noch nicht.

Im Signal sind zwischen dem, was ich als Bits interpretiere oftmals noch 
ganz kurze Spitzen (wenn ich mit höherer Frequenz sample, sieht man da 
sogar sehr schnelle Oszillationen aber immer nur ganz kurz). Ich 
vermute, dass da das Signal durch logische Kombinatorik propagiert und 
nur die breiten Blöcke "echte" Werte sind. Oder sieht das jemand anders?

Wenn ich mal versuche, zu denken wie ein UART, dann werde ich noch nicht 
schlau aus dem Signalverlauf. Am ehesten sieht das noch aus wie 3 
Start-Bits, 7 Datenbits und ein halbes Stop-Bit.

Was die lange high-Phase in Ch0 (siehe Bild) vor der Antwort soll, ist 
mir auch nicht nicht klar.

Als nächstes fällt auf, dass im ersten Block ein Bit ca. 1,11ms lang 
ist, im zweiten Block dagegen nur ca. 0,88ms. Für zwei Systeme die sich 
auf eine Baudrate geeinigt haben sollten, finde ich diese Abweichung 
ziemlich groß... warum ist das wohl so?

Ich habe dann auch mal ein anderes Objektiv angeschlossen: hier findet 
die Kommunikation deutlich schneller statt. Da kommt mein primitiver 
Logic Analyer schon an seine Grenzen... aber wenn ich die Kommunikation 
mit dem ersten Objektiv richtig deuten könnte, wäre ich ja schon 
glücklich :) Ich bin ein Software-Mensch und weiß eher wenig über 
Hardware. Hat jemand gute Ideen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dennis B. schrieb:
> Mein Ziel ist, eine Kamera zu emulieren, so dass ich die Blende regeln
> kann (was leider nur digital geht) und so die Objektive an einer
> Großformatkamera betreiben kann.

Schönes Projekt (und schöne Kamera, ich habe nur 'ne ältere 645 Super, 
also noch ohne jedwede Objektivelektronik).

Was für eine Großformatkamera ist's denn, und welches Format möchtest Du 
belichten? Der Bildkreis der Objektive dürfte recht überschaubar sein.

> Im Signal sind zwischen dem, was ich als Bits interpretiere oftmals noch
> ganz kurze Spitzen (wenn ich mit höherer Frequenz sample, sieht man da
> sogar sehr schnelle Oszillationen aber immer nur ganz kurz).

Das klingt danach, als ob Du da mal ein deutlich schnelleres 
Speicheroszilloskop dranhängen solltest, um sicherzustellen, daß das 
wirklich so aussieht. Wenn Du mit Signalen zu tun hast, die so schnell 
sind wie Dein LA, kannst Du sehr "interessante" Effekte erzielen, die 
alles mögliche zudecken können.

von Dennis B. (dcfoto)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Was für eine Großformatkamera ist's denn, und welches Format möchtest Du
> belichten? Der Bildkreis der Objektive dürfte recht überschaubar sein.

Ich habe verschiedene halbe Fachkameras, nicht nur Großformat, u.a. 
Horseman und Silvestri. Bei kleinem Bildkreis kann man zumindest die 
Bildstandarte schwenken, sofern der Platz ausreicht (Auflagemaß bei 
Mamiya ist nur 63,3mm). Ich wollte allerdings hier bewusst nicht zu sehr 
in das fotografische Thema einsteigen, damit ich Antworten auf meine 
elektrischen Fragen bekomme :)

> Das klingt danach, als ob Du da mal ein deutlich schnelleres
> Speicheroszilloskop dranhängen solltest, um sicherzustellen, daß das
> wirklich so aussieht. Wenn Du mit Signalen zu tun hast, die so schnell
> sind wie Dein LA, kannst Du sehr "interessante" Effekte erzielen, die
> alles mögliche zudecken können.

Hmmmm. Die Schwierigkeit ist eher, dass der Speicher ein bisschen klein 
ist und ich daher mit der Frequenz runtergehen muss, um längere 
Sequenzen beobachten zu können. Die Baudrate scheint mir beim alten 
Objektiv in der Größenordnung von 1kbps zu liegen, d.h. 1kHz 
Taktfrequenz. Dafür sollte mein Bus Pirat noch ausreichen, auch wenn 
seine maximale Samplingfrequenz mit 1MHz für viele andere Anwendungen zu 
bescheiden ist.

Das setzt aber voraus, dass ich diese "Spitzen" richtig interpretiert 
habe. Mein Gedankengang war: es gibt ja offenbar eine Reihe von 
Pegeländerungen mit einer Frequenz um 1kHz, daher scheint das die 
maßgebliche Frequenz zu sein. Nun gibt es immer genau an den Zeitpunkten 
dieser Übergänge ein paar Schwingungen (die ich nur bei hoher 
Samplingfrequenz sehe). Ich bin davon ausgegangen, dass das Müll 
zwischen den Bitwerten ist, der keine Information enthält. Wenn da 
tatsächlich Information drin ist, dann muss ich natürlich höher 
auflösen. Glaubt Ihr, dass ich da richtig liege?

Und dann werde ich halt generell noch nicht schlau aus den Signalen...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dennis B. schrieb:
> Und dann werde ich halt generell noch nicht schlau aus den Signalen...

Naja, das kann halt irgendwas sein. Ärgerlicherweise haben sich die 
Kamerahersteller weder auf irgendeinen Standard geeinigt, noch sind sie 
daran interessiert, daß man ihren Kram durch "reverse engineering" 
nachbilden kann.

> Die Schwierigkeit ist eher, dass der Speicher ein bisschen klein ist

Ein Logikanalysator mit "differentiellem Speicher", also einer der Daten 
komprimiert, statt fest im Zeitraster Speicher zu verbrauchen, auch wenn 
sich auf den Datenleitungen nichts tut, ist da ganz praktisch.

Ob die von Dir beobachteten höherfrequenten Signale irgendeine Bedeutung 
haben können, ist ohne Betrachtung der genauen Signalform schwer 
einzuschätzen.
Bedenke, daß ein Logikanalysator --und erst recht Dein "Buspirat"-- 
nicht das tatsächliche Signal abbildet, sondern seine Interpretation. 
Wenn also z.B. eine recht flach steigende Signalflanke (durch die 
Kombination von Open-Collector/-Drain-Ausgang und Pullup-Widerstand 
erzeugt) vorhanden ist, ist das mit einem LA nicht zu sehen; irgendwann 
wird die Schaltschwelle überschritten und der LA macht daraus einen 
0-1-Übergang zu einem eher als willkürlich zu bezeichnenden Zeitpunkt.
Insofern kann auch das von Dir bislang aufgenommene durch derartige 
Effekte verfälscht sein.


Wie hast Du eigentlich den Abgriff der Objektivkontakte gelöst? 
Zwischenring mit angelöteten Drähten, oder hast Du gar Deine Kamera 
zerlegt?

von chris (Gast)


Lesenswert?

Dennis B. schrieb:
> Dafür sollte mein Bus Pirat noch ausreichen, auch wenn
> seine maximale Samplingfrequenz mit 1MHz für viele andere Anwendungen zu
> bescheiden ist.

Du könntest dir sowas zulegen, die Investition hält sich finanziell ja 
sehr in Grenzen und man kann es immer mal brauchen:

http://www.ebay.de/itm/USB-Saleae-24M-8CH-24MHZ-8-Kanal-Logikanalysator-Logic-Analyzer-/321654462143?pt=LH_DefaultDomain_77&hash=item4ae41996bf

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

chris schrieb:
> Ebay-Artikel Nr. 321654462143

Uuuiuiuiui ... daß die das Ding auch noch als "Saleae" bezeichnen, ist 
hart.

Das ist ein Nachbau. Ein sehr günstiger Nachbau, aber nichtsdestotrotz 
ein Nachbau.

Das hier https://www.saleae.com/ ist das Original, und auf die von denen 
geschriebene Software stützen sich auch die Nachbauer.

von Gerhard Z. (germel)


Lesenswert?

Zur Info:

ich hab den gleichen direkt aus China (unter 10 €) und der läuft 
wunderbar mit Sigrok. Die haben dafür sogar einen eigenen Hardware 
Treiber. Man braucht die Saleae Software nicht.

Gerhard

von Sebastian (Gast)


Lesenswert?

Diese Logicanalyzer gibt es mit diversen Aufschriften. Eventuell kommt 
er besser durch den Zoll, wenn nicht "Saleae" draufsteht.
Ansonsten kann ich Gerhard nur zustimmen. Der Betrieb dieser Geräte mit 
Sigrok ist legal und unproblematisch.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und jetzt erklärt ihr mir noch, warum der chinesische Nachbauer die 
Dinger "saleae" nennt. Daß sie mit alternativer Software verwendbar 
sind, ändert ja nichts an dieser Tatsache.

von Walter (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Und jetzt erklärt ihr mir noch, warum der chinesische Nachbauer die
> Dinger "saleae" nennt.

der Verkäufername  fair*world zeigt doch dass alles korrekt ist ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.