moin,
hier kommt die erste Version der Auswertung: [attachment=7638:3000i_mA...oo_122_1.zip]
Enthalten sind:
- dgtana.v05 = Auswerteprogramm, läuft unter linux/Unix/..., wenn sh&gawk vorhanden sind (Standard bei linux). Knoppix-Live-System von CD geht.
- 3000i_mAF24F28_mfoo_122-1.dgt = Sample-Datei von Digitrace, 1MByte entpackt. Ansehen ist mit Digitrace (File>Load) möglich!
- 3000i_mAF24F28_mfoo_122-1.uat = trace/debug-Datei von dgtana, enthält Zeitstempel usw, 41kByte entpackt.
- 3000i_mAF24F28_mfoo_122-1.uaa = die Auswertung... zur Ansicht unten auch im code-Block.
dgtana erwartet genau ein Argument, eine *.dgt-Datei. Diese kann mit Pfad angegeben werden, die Auswertung und der trace werden aber immer im lokalen Verzeichnis abgelegt.
Bitte unbedingt die 5-segmentige Benennung einhalten:
<body>_<lens>_<settings>_<granularity>-<lfn>.dgt mit
body = Kameraseitiges Gerät
lens = Objektivseitiges Gerät
settings = Einstellungen wie MF/AF, Brennweite bei Zoom, Fokusdistanz, Andrücken oder Auslösen, Fokusstop, Makroschalter usw.
granularity = Wert aus dem Lauf von Digitrace in 10ns-Einheiten (1.22 µs also als 122 OHNE Punkt)
KEINE Leerzeichen im Dateinamen (ist eine Unsitte, dafür ist der Unterstich da), Namen mit Leerzeichen fange ich im Programm nicht ab.
dgtana ist gawk (+ ein winziges Bisschen sh) und steht unter GPL v2only.
Eigentlich ist (g)awk für Stringverarbeitung, aber auch gut als rapid prototyper für ANSI-C (k-Kerningham, der von K&R-C ...).
Es müsste auch unter Win (in der Cygwin-Umgebung) laufen, allerdings könnte es Probleme geben, da ich ganz frech die Datei von 1MByte als eine Zeile einlese. Unter linux geht das...
Wer in den code hineinsieht, rauft sich die Haare. Ist grausam, unoptimiert und aus mehreren Teilen quick'n'dirty zusammengeflickt. Kann nur besser werden... deshalb v0.5!
so, hier das mAF24F28o als Analyse. Es wird der Ablauf beim Andrücken des Auslösers ohne Auslösen im MF-Modus gezeigt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
body=3000i lens=mAF24F28 settings=mfoo lfn=1
block 1
0x00: FF
0x00: 80 20 50 00 18 11 21 28 23 00 FB 41 F8 00 00 48 ED 88 00 00 00 00 00 00 00 00 00 00 00 00 3D 64
0x20:_00_00_00_00_00_00_00_00
block 2
0x29: FF
0x00: 80 20 50 00 18 11 21 28 23 00 FB 41 F8 00 00 48 ED_00_00_00_00_00_00_00_00
block 3
0x00:_67_75_00_00_00_00_00_00
block 4
0x4B: FF
0x00: 80 20 50 00 18 11 21 28 23 00 FB 41 F8 00 00 48 ED_00_00_00_00_00_00_00_00_65_6F_00_00_00_00_00
0x20:_00
analysis of the first 32 byte content block:
LensID (last2B): 25661
RomRevision : 0x80/0
Anfangsöffnung : 2.83
Kleinste Blende: 22.63
Blendenoffset : 0.00
Makrobit (7): 0
Byte 0x04 : 0x18 00011000 24
Byte 0x05 : 0x11 00010001 17
Byte 0x06 : 0x21 00100001 33
Brennweite : 24 mm (0x28)
Byte 0x08 p.unk: 0x23 00100011 35 partly unknown
MF-bit (7): 0
MF2-bit? (6): 0
Byte 0x09 p.unk: 0x00 0 0 partly unknown
AFStop-bit (2): 0
Byte 0x0A p.unk: 0xFB 11111011 251 partly unknown
ROMlen-bit (2): 0
noAFStop? (0): 1
Byte 0x0B : 0x41 01000001 65
Byte 0x0C : 0xF8 11111000 248
Byte 0x0D : 0x00 0 0
Byte 0x0E : 0x00 0 0
Byte 0x0F : 0x48 01001000 72
Byte 0x10 : 0xED 11101101 237
Byte 0x11 : 0x88 10001000 136
Byte 0x12 : 0x00 0 0
Byte 0x13 : 0x00 0 0
Byte 0x14 : 0x00 0 0
Byte 0x15 : 0x00 0 0
Byte 0x16 : 0x00 0 0
Byte 0x17 : 0x00 0 0
Byte 0x18 : 0x00 0 0
Byte 0x19 : 0x00 0 0
Byte 0x1A : 0x00 0 0
Byte 0x1B : 0x00 0 0
Byte 0x1C : 0x00 0 0
Byte 0x1D : 0x00 0 0
Die Unterstriche VOR den Bytes bedeuten, dass diese Byte übertragen wurde, während SS inaktiv war.
Hier findet ein Handshake statt. Im Ruhezustand ist SS inaktiv (high), MISO high und SCK low. Wenn die Kamera was zu sagen hat, zieht sie SS auf low (aktiv) und legt SCK an, der erste 8bit-Burst wird vom Objektiv mit Stillhalten = 0xFF quittiert. Daraufhin werden die Bytes durchgegeben, SS geht inaktiv (high) und die Kamera sendet 8 weitere 8bit-Bursts, das Objektiv hält solange MISO auf low =0x00. Dann hört SCK auf, bleibt low und MOSI geht ebenfalls high.
Wenn das Objektiv was loswerden möchte, signalisiert es dies, indem es MOSI auf low legt, ohne das SS aktiv ist oder SCK taktet. Die Kamera antwortet daraufhin mit Taktbursts. Die Objektive senden 2Byte, und die Kamera taktet noch 6 Leerbytes hinterher.
Wie ich gerade festgestellt habe, tritt der 4. Block nur beim Andrücken das Auslösers auf, wenn nicht ausgelöst wird. Wenn man durchdrückt (die Kamera steht auf MF!, gibt es einen kurzen MISO-drop von ca. 270µs Dauer ohne Datenübertragung (vor dem Auslösen?) und danach (?) bei SS inaktiv eine vom Objektiv veranlasste Übetragung von nur einem Byte ohne folgende Leer-Taktbursts. (Beim mAF2450F40o hier 0x2A richtigrum). Später folgt dann vom Objektiv angefordert ein 8Byte-Block ohne Inhalt, und dann ein normaler 18Byte-Block mit 8Byte-Leerquittung am Ende wie sonst als 4.Block.
Was ich noch nicht getestet habe, was bei der Erstinitialisierung passiert: durch Drücken der Objektiventriegelung wird die Spannung abgeschaltet und beim Loslassen wieder aktiviert und das Objektiv initialisiert.
Ebensowenig habe ich bisher im AF-Modus probiert, da die Kamera auf dem Rücken liegt und keinen Fokus an der weißen Decke findet.
Grade versehentlich getestet: je AFlock-Pieps wird der 4.Block wiederholt.
Ich wollte erstmal interessantere Objektive auslesen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
body=3000i lens=SAL16F28 settings=mfoo lfn=1
block 1
0x00: FF
0x00: 80 20 50 00 18 11 10 1E 21 00 FB 54 02 00 00 46 E8 89 00 00 00 00 00 00 00 00 00 00 00 00 B5 64
0x20:_00_00_00_00_00_00_00_00
block 2
0x29: FF
0x00: 80 20 50 00 18 11 10 1E 21 00 FB 54 02 00 00 46 E8_00_00_00_00_00_00_00_00
block 3
0x00:_55_54_00_00_00_00_00_00
block 4
0x4B: FF
0x00: 80 20 50 00 18 11 10 1E 21 00 FB 54 02 00 00 46 E8_00_00_00_00_00_00_00_00_55_53_00_00_00_00_00
0x20:_00
analysis of the first 32 byte content block:
LensID (last2B): 25781
RomRevision : 0x80/0
Anfangsöffnung : 2.83
Kleinste Blende: 22.63
Blendenoffset : 0.00
Makrobit (7): 0
Byte 0x04 : 0x18 00011000 24
Byte 0x05 : 0x11 00010001 17
Byte 0x06 : 0x10 00010000 16
Brennweite : 15 mm (0x1E)
Byte 0x08 p.unk: 0x21 00100001 33 partly unknown
MF-bit (7): 0
MF2-bit? (6): 0
Byte 0x09 p.unk: 0x00 0 0 partly unknown
AFStop-bit (2): 0
Byte 0x0A p.unk: 0xFB 11111011 251 partly unknown
ROMlen-bit (2): 0
noAFStop? (0): 1
Byte 0x0B : 0x54 01010100 84
Byte 0x0C : 0x02 00000010 2
Byte 0x0D : 0x00 0 0
Byte 0x0E : 0x00 0 0
Byte 0x0F : 0x46 01000110 70
Byte 0x10 : 0xE8 11101000 232
Byte 0x11 : 0x89 10001001 137 (Rest 0x00 weggelassen)
offensichtlich ist die Brennweitenformel noch nicht perfekt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
body=3000i lens=SAL500R80 settings=mfoo+ lfn=1
block 1
0x00: FF
0x00: 81 37 37 00 34 11 2F 6D 35 00 F9 1A 20 00 04 00 00 ED 20 F4 4C 00 00 2B C3 BD 00 00 F8 00 79 64
0x20:_00_00_00_00_00_00_00_00
block 2
0x29: FF
0x00: 81 37 37 00 34 11 2F 6D 35 00 F9 1A 20 00 04 00 00_00_00_00_00_00_00_00_00
block 3
0x00:_58_63_00_00_00_00_00_00
block 4
0x4B: FF
0x00: 81 37 37 00 34 11 2F 6D 35 00 F9 1A 20 00 04 00 00_00_00_00_00_00_00_00_00_57_60_00_00_00_00_00
0x20:_00
analysis of the first 32 byte content block:
LensID (last2B): 25721
RomRevision : 0x81/0
Anfangsöffnung : 7.66
Kleinste Blende: 7.66
Blendenoffset : 0.00
Makrobit (7): 0
Byte 0x04 : 0x34 00110100 52
Byte 0x05 : 0x11 00010001 17
Byte 0x06 : 0x2F 00101111 47
Brennweite : 512 mm (0x6D)
Byte 0x08 p.unk: 0x35 00110101 53 partly unknown
MF-bit (7): 0
MF2-bit? (6): 0
Byte 0x09 p.unk: 0x00 0 0 partly unknown
AFStop-bit (2): 0
Byte 0x0A p.unk: 0xF9 11111001 249 partly unknown
ROMlen-bit (2): 0
noAFStop? (0): 1
Byte 0x0B : 0x1A 00011010 26
Byte 0x0C : 0x20 00100000 32
Byte 0x0D : 0x00 0 0
Byte 0x0E : 0x04 00000100 4
Byte 0x0F : 0x00 0 0
Byte 0x10 : 0x00 0 0
Byte 0x11 : 0xED 11101101 237
Byte 0x12 : 0x20 00100000 32
Byte 0x13 : 0xF4 11110100 244
Byte 0x14 : 0x4C 01001100 76
Byte 0x15 : 0x00 0 0
Byte 0x16 : 0x00 0 0
Byte 0x17 : 0x2B 00101011 43
Byte 0x18 : 0xC3 11000011 195
Byte 0x19 : 0xBD 10111101 189
Byte 0x1A : 0x00 0 0
Byte 0x1B : 0x00 0 0
Byte 0x1C : 0xF8 11111000 248
Byte 0x1D : 0x00 0 0
auch das Spiegelchen liegt brennweitenmäßig leicht daneben und hat wie das 200/2.8APO ein 0x81/32-Rom (wobei, gibt es die 0x81/45Byte wirklich?).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
body=3000i lens=SAL135S28 settings=mf45oo lfn=1
block 1
0x00: FF
0x00: 81 2C 2C 00 18 11 0E 4F 58 80 04 00 00 DA 00 00 00 00 00 00 00 00 00 26 2F 8B 00 00 53 00 DF B2
0x20:_00_00_00_00_00_00_00_00
block 2
0x29: FF
0x00: 81 2C 2C 00 18 11 0E 4F 58 80 04 00 00 DA 00 00 00_00_00_00_00_00_00_00_00
block 3
0x00:_63_76_00_00_00_00_00_00
block 4
0x4B: FF
0x00: 81 2C 2C 00 18 11 0E 4F 58 80 04 00 00 DA 00 00 00_00_00_00_00_00_00_00_00_60_71_00_00_00_00_00
0x20:_00
analysis of the first 32 byte content block:
LensID (last2B): 45791
RomRevision : 0x81/0
Anfangsöffnung : 4.76
Kleinste Blende: 4.76
Blendenoffset : 0.00
Makrobit (7): 0
Byte 0x04 : 0x18 00011000 24
Byte 0x05 : 0x11 00010001 17
Byte 0x06 : 0x0E 00001110 14
Brennweite : 135 mm (0x4F)
Byte 0x08 p.unk: 0x58 01011000 88 partly unknown
MF-bit (7): 0
MF2-bit? (6): 1
Byte 0x09 p.unk: 0x80 10000000 128 partly unknown
AFStop-bit (2): 0
Byte 0x0A p.unk: 0x04 00000100 4 partly unknown
ROMlen-bit (2): 1
noAFStop? (0): 0
Byte 0x0B : 0x00 0 0
Byte 0x0C : 0x00 0 0
Byte 0x0D : 0xDA 11011010 218
Byte 0x0E : 0x00 0 0
Byte 0x0F : 0x00 0 0
Byte 0x10 : 0x00 0 0
Byte 0x11 : 0x00 0 0
Byte 0x12 : 0x00 0 0
Byte 0x13 : 0x00 0 0
Byte 0x14 : 0x00 0 0
Byte 0x15 : 0x00 0 0
Byte 0x16 : 0x00 0 0
Byte 0x17 : 0x26 00100110 38
Byte 0x18 : 0x2F 00101111 47
Byte 0x19 : 0x8B 10001011 139
Byte 0x1A : 0x00 0 0
Byte 0x1B : 0x00 0 0
Byte 0x1C : 0x53 01010011 83
Byte 0x1D : 0x00 0 0
Überraschung... Das STF sollte doch die LensID 20 haben?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
body=3000i lens=SAL70300F4556G settings=mf70oo+ lfn=1
block 1
0x00: FF
0x00: 81 2B 50 00 23 00 00 40 31 00 FE 66 FE 00 00 64 00 DB 00 33 51 F8 ED 26 5B 25 20 00 E5 00 11 B3
0x20:_00_00_00_00_00_00_00 E0
block 2
0x00: 3F 70 05 0A 60 04 00 00 28 06 C0 DF CC 1F 00 80 0C_00_00_00_00_00_00_00_00_E0
block 3
0x00:_35_06_00_00_00_00_00 F0
block 4
0x00: 1F B8 02 05 30 02 00 00 14 03 E0 6F E6 0F 00 40 06_00_00_00_00_00_00_00_00_E0_45_06_00_00_00_00
0x20:_00 00
analysis of the first 32 byte content block:
LensID (last2B): 45841
RomRevision : 0x81/0
Anfangsöffnung : 4.56
Kleinste Blende: 22.63
Blendenoffset : 0.00
Makrobit (7): 0
Byte 0x04 : 0x23 00100011 35
Byte 0x05 : 0x00 0 0
Byte 0x06 : 0x00 0 0
Brennweite : 69 mm (0x40)
Byte 0x08 p.unk: 0x31 00110001 49 partly unknown
MF-bit (7): 0
MF2-bit? (6): 0
Byte 0x09 p.unk: 0x00 0 0 partly unknown
AFStop-bit (2): 0
Byte 0x0A p.unk: 0xFE 11111110 254 partly unknown
ROMlen-bit (2): 1
noAFStop? (0): 0
Byte 0x0B : 0x66 01100110 102
Byte 0x0C : 0xFE 11111110 254
Byte 0x0D : 0x00 0 0
Byte 0x0E : 0x00 0 0
Byte 0x0F : 0x64 01100100 100
Byte 0x10 : 0x00 0 0
Byte 0x11 : 0xDB 11011011 219
Byte 0x12 : 0x00 0 0
Byte 0x13 : 0x33 00110011 51
Byte 0x14 : 0x51 01010001 81
Byte 0x15 : 0xF8 11111000 248
Byte 0x16 : 0xED 11101101 237
Byte 0x17 : 0x26 00100110 38
Byte 0x18 : 0x5B 01011011 91
Byte 0x19 : 0x25 00100101 37
Byte 0x1A : 0x20 00100000 32
Byte 0x1B : 0x00 0 0
Byte 0x1C : 0xE5 11100101 229
Byte 0x1D : 0x00 0 0
und das erste SSM. Leider habe ich hier Probleme, in den Handshake-Blöcken fehlen bits. Die ersten 33 Byte sind aber korrekt, der Rest Müll infolge verschobenem Leserasters. Bei mehrfachen Messungen traten die Fehler an verschiedenen Stellen auf, das kläre ich heute Abend nicht mehr. Auch hier stimmt die LensID nicht mit der bekannten überein...
Alle bisher getesteten Objektive verhalten sich an der 3000i absolut identisch, was das Timing und die Blocklänge beim Andrücken des Auslösers betrifft.
schluss für heute, gruesze, thomas