• Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Mitmachen beim DSLR-Forum Fotowettbewerb Mai 2025.
    Thema: "Grün"

    Jeden Monat attraktive Gewinnprämien, gesponsert von unserem Partner PixelfotoExpress.
    Alle Infos zum Mai-Wettbewerb hier!
  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

Canon-EOS-Protokoll

Ich glaub ich habe mich schlecht ausgedrückt:
Im Mikroprozessor soll folgendes ablaufen: Er liest das Protokoll mit. Immer wenn er 7 Bit gelesen hat, prüft er ob bisher wert 18 gelesen hat; Wenn ja: Wartet er einen halben Takt, Setze den Pin auf Low, wartet ca 1,5 Zakte, lässt den Pin wieder frei.

Das Problem könnt nur folgendes sein: Bei i²c-Protokoll ist es so, das wenn chip "A" eine 1 Sendet, und chip "B" überschreibt das mit einer 0, heist das chip "B" übernimmt die Kontrolle über den Bus und Chip "A" hört auf zu senden.

Das könnte bei der Kamera natürlich auch sein.

Ich hatte mich gewundert das dieser einfachere Ansatz noch von keinem umgesetzt wurde.

es ist Motorola Protokoll soweit ich weiss, ich weiss nicht mal ob aktiv low oder aktiv high, aber eines ist doch nach lesen des Threads hier klar, du musst den Code auswerten, kannst nicht JEDE ! 19 des Bits berauben ! ohne die ganze Sequenz zu kennen, also Code auswerten und reagieren, klar geht es offensichtlich im verzögerten Datenstrom, aber live ? bezweifel ich halt.
 
es ist Motorola Protokoll soweit ich weiss, ich weiss nicht mal ob aktiv low oder aktiv high, aber eines ist doch nach lesen des Threads hier klar, du musst den Code auswerten, kannst nicht JEDE ! 19 des Bits berauben ! ohne die ganze Sequenz zu kennen, also Code auswerten und reagieren, klar geht es offensichtlich im verzögerten Datenstrom, aber live ? bezweifel ich halt.

Also hiernach müsste es aktive-high sein: https://www.dslr-forum.de/showpost.php?p=6458130&postcount=43

Natürlich muss dann das ganze Protokoll gelesen werden. Im Grunde genommen muss folgendes gemacht werden: Ist das gelesene Zeichen ein Normaler Befehl oder ein Befehl auf den ein oder 2 Zahlenwerte folgen? Im letzteren Fall muss die Funktion für die nächsten ein oder 2 Byte ausgeschaltet werden.

Es wird übrigens ein 8051er-System werden; at89c2051, at89lp2051 oder so...
 
und du willst dann das Bit hochziehen ? :confused: oder gibst du auf ?

Wieso hochziehen?
Das ist doch positive Logik (aktive-high)
Und ich muss aus einer 19 eine 18 machen (Also 00001011 eine 00001010 machen.)
Theoretisch kann es wohl auch negative Logik sein. Dann wäre 255 der NoOperation Befehl, und man müßte aus 236 eine 237 machen. Das ist ja letztens nur Definitionssache.

Aber da Nightshot von dem 0 & 10 von der Kamera und 170 als Antwort vom Objektiv geschrieben hat, gehe ich davon aus das er pos. Logik verwendet hat.

Ich hab noch mal ein beschrifteten Ausschnitt der Grafik von Nightshot angehängt, um zu zeigen was ich meine
 
Wieso hochziehen?
Das ist doch positive Logik (aktive-high)
Und ich muss aus einer 19 eine 18 machen (Also 00001011 eine 00001010 machen.)
Theoretisch kann es wohl auch negative Logik sein. Dann wäre 255 der NoOperation Befehl, und man müßte aus 236 eine 237 machen. Das ist ja letztens nur Definitionssache.

Aber da Nightshot von dem 0 & 10 von der Kamera und 170 als Antwort vom Objektiv geschrieben hat, gehe ich davon aus das er pos. Logik verwendet hat.

Ich hab noch mal ein beschrifteten Ausschnitt der Grafik von Nightshot angehängt, um zu zeigen was ich meine

OK ich war verdreht, also willst du das zur Laufzeit dekodieren und dann bitgenau auf Null ziehen (hoffentlich killt das nicht den Treiber der ja versucht +V zu liefern), viel Spass ich drück dir die Daumen, ich würde ja den schon beschrittenen Weg wählen und den AVR in die Datenleitung hängen ;)

aber sag mal ob du Erfolg hattest.....
 
Hello again guys!

I bought an Sony PMW F3 camera and will make an adapter for it. So far I managed to have nice talk with the lenses - with ack/busy processing.

What I can do is: set aperture, change focus, (calibrate aperture / focus steps), read af/mf state, enable/disable IS, read zoom and aperture range.

Is there anything else (I know only about getting focus distance in cm, but I do not yet own an canon L lens) what is possible to do with the canon lenses?

Also I wrote a scanner algorithm, I can discover the applicable command codes and argument size, but I have no idea what these commands do. Also some commands are implemented only on some of my lenses - I am doing testing with three different efs lenses (and one 50mm ef).
 
Neuste Nachrichten von der Blendenfront.

Wer sich für die ganzen Technischen Details nicht interessiert, kann das hier in Blau alles überspringen



Also was hab ich bisher gemacht?
Ich habe ein an ein altes (defektes aber digitaltaugliches) sigma 28-300 ein Flachbandkabel angelötet

Mit einem DSO hab ich mit das timing der Clock-Leitung angeschaut. Also bevor ein neues Zeichen übertragen wird, ist die Leitung mindestens 60us auf high.

Einen at89c2051 mit 20 MHz auf einem Experimentierboard habe ich mit den Leitungen verbunden. Wenn die Taktleitung über 50us af high war sollte er mit jeder fallenden Flanke die beiden Bits von den beiden Leitungen einlesen.
Am ende dann als Dezimalzahl ausgeben. Da der Abstand zwischen 2 Bytes aber nur 200us beträgt ich aber rund 1000us für das ausgeben eines Zeichen brauche (9600Baud), dachte ich lege die Clockleitung für die zeit des Ausgebens auf low. Das funktioniert aber nicht. (Fehlermeldung der Kamera). Zumindest die Werte die ankamen waren zumindest Plausibel.

Dann habe ich halt die ausgegebenen Zeichen in des Speicher des Mikroprozessors geschrieben, und wenn der voll war, die dann ausgegeben. Komischer weise erhielt ich fast nur noch Werte 255. :confused: Es hat einiges gedauert bis gemerkt habe. Der Mikroprozessor hat nur 128Byte Speicher und nicht 256! (Für die Ganz blöden steht es sogar auf dem Gehäuse at89c2051 1 für 128 Byte):D

Danach konnte ich die Initalisierung gemäß den Angaben von Nightshot verifizieren. Ja Funzt. Supi :top:

Das Problem. Während der Mikroprozessor die daten ausgibt, kann er keine neuen Daten einlesen. Also als nächstes Ausgaberoutine raus geschmissen. Und nur noch wenn er eine 18 empfängt soll er ein "A" für Analog und bei 19 ein "D" für Digital herausgeben.
Und auch das Funktionierte. Wenn ich bei der Eos100 die Abblendtaste gedrückt habe kam ein A und bei der 450d ein D. :D

Als nächstes eine Funktion eingebaut die wenn nach 7 Bits eine 18 Empfangen wurde, das Datenleitung für einen Takt auf low legt. (Ich hatte schon vorher getestet das die Leitung wirklich nur mit Pull-Up Widerständen auf high gezogen wird)
Und siehe da: Es funktioniert nicht. Die Kamera konnte nicht mehr richtig auf das Objektiv zugreifen.:( aber komischerweise nicht nur die 450d sondern auch die 100 ... :confused:
Es hat etwas gedauert festzustellen das der Mikroprozessor das letzte Bit nach Lust und Laune auf 0 gezogen hat (auch bei nicht 18 und 19)
War nur ein kleiner Fehler CJNE und das Carry-Bit :rolleyes: (Die die 8051er programmieren werden jetzt innerlich leidvoll aufstöhnen.)
Und siehe da: Es geht. Keine Fehlermeldung mehr. Allerdings konnte das Sigma 28-300 sowieso die 19 verstehen.

Deshalb kam jetzt das 400er Sigma an die Reihe. Vorsichtig aufgeschraubt, angelötet und provisorisch zugeschraubt.
Und..
Und..



Und Ja es geht.:D
Siehe Bilder

Was jetzt noch kommt:
1. Befehlserkennung. Im Moment ersetzt er noch jede 19 durch 18
2. Sleep mode für den Mikroprozessor
3.Einbau ins Objektiv (So ist es doch noch etwas unhandlich... ;))
4. Den Code etwas aufräumen. Damit ich den hier auch guten Gewissens veröffentlichen kann
5. Evtl Power On Rest für den Mikroprozessor
Aktuelle Codegröße 260 Byte
 
Einen at89c2051 mit 20 MHz auf einem Experimentierboard habe ich mit den Leitungen verbunden. Wenn die Taktleitung über 50us af high war sollte er mit jeder fallenden Flanke die beiden Bits von den beiden Leitungen einlesen.
Am ende dann als Dezimalzahl ausgeben. Da der Abstand zwischen 2 Bytes aber nur 200us beträgt ich aber rund 1000us für das ausgeben eines Zeichen brauche (9600Baud), dachte ich lege die Clockleitung für die zeit des Ausgebens auf low. Das funktioniert aber nicht. (Fehlermeldung der Kamera). Zumindest die Werte die ankamen waren zumindest Plausibel.
:top:
Was jetzt noch kommt:
1. Befehlserkennung. Im Moment ersetzt er noch jede 19 durch 18
2. Sleep mode für den Mikroprozessor
3.Einbau ins Objektiv (So ist es doch noch etwas unhandlich... ;))
4. Den Code etwas aufräumen. Damit ich den hier auch guten Gewissens veröffentlichen kann
5. Evtl Power On Rest für den Mikroprozessor
Aktuelle Codegröße 260 Byte

warum at89c2051 und nicht ATmega ?
warum 9600 Bd beim AVR mit 18,432 MHz (kaum langsamer) habe ich 115k Bd ausgegeben
Frage Befehlserkennung nötig ? kommt eigentlich an anderer Stelle ein 19 ?
 
warum at89c2051 und nicht ATmega ?
Vermutlich noch rumliegen gehabt?! Wenn man einen Programmer für einen bestimmten µC hat dann wechselt man nur wenns nicht anders geht.

Das Breadboard sieht auch irgendwie nach Kettenraucherbastelbude aus :ugly:

Sowas lässt sich auch mit einem ATtiny9 als SOT-23 machen, aber zum Experimentieren nimmt man halt das was da ist.

@h^3
hast du das Objektiv ehrlich mit dem Kabel zwischen dem Bajonett auf deine Cam bekommen?! Sieht ja abenteuerlich aus :D
 
Zuletzt bearbeitet:
Vermutlich noch rumliegen gehabt?! Wenn man einen Programmer für einen bestimmten µC hat dann wechselt man nur wenns nicht anders geht.
Genau das ist es. Ich wollte schon mal länger wechseln, aber bislang bin ich nicht wirklich dazu gekommen.
Das Breadboard sieht auch irgendwie nach Kettenraucherbastelbude aus :ugly:
Nichtraucher! Das Board hatte ich mal vor etwa 15 Jahren von einem kleiner Elektronikhändler gekauft. Der hatte das (gefühlte) 10 Jahr im Schaufenster zum Süden hin stehen. Mit Kondensatoren drin Stecken. Hatte ich glaub ich damals für 5 DM gekauft. Wenn man genau hinschaut sieht man die Hellen Flecken wo die gesteckt haben.
@h^3
hast du das Objektiv ehrlich mit dem Kabel zwischen dem Bajonett auf deine Cam bekommen?! Sieht ja abenteuerlich aus :D
nein Nein
Die Leitungen gehen zwischen Objektivgehäuse und Bajonettring des Objektivs lang. Natürlich hab ich die schrauben nur leicht angezogen so das sich dort nichts verzieht.
warum 9600 Bd beim AVR mit 18,432 MHz (kaum langsamer) habe ich 115k Bd ausgegeben
Anders herum wird ein Schuh daraus: Der AVR ist erheblich schneller. Er schaft etwa 18 Millionen Befehle in der Sekunde, der At89er mit MHz nur etwa 1,6 Millionen.
Dafür sind die die 8051er Befehle effizienter. (zumindest etwas :rolleyes:)
Auch der Baudgenerator läuft mit maximal mit einem 192stel der Taktfrequenz.
Andereseit bitet jetzt Atmel einen At89lp2051 an der 20 Mips schafft. :)
Frage Befehlserkennung nötig ? kommt eigentlich an anderer Stelle ein 19 ?
Es könnt wohl sein Das die Kamera Sagt: Stelle auf Blende 1.9 (unwahrscheinlich für das Objektiv)
oder aber Stell den AF Motor 19 Schritte nach + (oder -). Und dann würde der Motor nur 18 Schritte machen. (Oder Stell den AF Motor 4864 Schritte nach + und machen würde das Objektiv nur 4608.)
 
Es könnt wohl sein Das die Kamera Sagt: Stelle auf Blende 1.9 (unwahrscheinlich für das Objektiv)
oder aber Stell den AF Motor 19 Schritte nach + (oder -). Und dann würde der Motor nur 18 Schritte machen. (Oder Stell den AF Motor 4864 Schritte nach + und machen würde das Objektiv nur 4608.)

OK

das könnte schwierig werden,

ich hab mal einen Parser geschrieben für einen Tokenauswerter

Txt 2 Befehlsimage PC1500, dort sind ja auch variable Befehlslängen
es gab 1Byte Befehle, 2-5 Byte Befehle, also man muss viele Bytes scannen bevor man den Befehl entschlüsselt hat und weiss welche 18/19 gilt die man ändern darf....
 
So da es bisher keine Zusammenfassung gegeben hat, mach ich die mal:

Code:
Allgemein:
SPI 8 Bit MSB first
83kHz oder 500KHz


Befehl |		- Bedeutung
von    |		- Es Folgt darauf
der    |		- Antwort der Linse
Kamera |
-----------------------------------------------
	   |
0		Null Byte Dummy

5		Fahre Fokus in den Nahbereich

6		Fahre Fokus nach unendlich

7		Init oder Reset?

10	 	Init?
		Gefolgt von: 	0
		Antwort:		170
		
12		???
		Gefolgt von: 	(0)
		Antwort:		12
		
14 		Init oder Reset?
		
15		???
		Gefolgt von: 	(0)
		Antwort:		15
	
18 		Setze Blende Analog
		Gefolgt von: 	Blendenwert
						(0)
		Antwort:		18 18

19      Setze Blende Digital
		Gefolgt von: 	Blendenwert
						(0)
		Antwort:		19 19 (18 Wird auch akzeptiert)

21		Siehe 5?		

22 		Siehe 6?

37		Siehe 5?		

38 		Siehe 6?

68		Focus Motor Ansteuern
		Gefolgt von: 	MSB Schritte
						LSB Schritte
						(0)
		Antwort:		?

80		Setze AF Speed?
 		
128 	Benutze als nächsten den alternativen befehl
		Gefolgt von: 	2. Befehl
		Antwort:		Lens ID?
	
128 10	Fordert Objektivdaten an	
		Gefolgt von: 	Kamera ID
						Kamera ID 
						0 0 0 0 (0)
		Antwort: 		Lens ID
						MSB Min Brennweite
						LSB Min Brennweite
						MSB Max Brennweite
						LSB Max Brennweite 
						Protokoll version
						0?
						0?
						
144		Globaler Status
		Gefolgt von:	0 0 (0)
		Antwort:		0?
						0,1 Af oder MF?
						0?
												
176		Fordert Blendenwerte an
		Gefolgt von:	0 0 (0)
		Antwort:		wahre Offenblende 
						Angezeigte Blende
						Minimale Blende

178		?
						
160		Aktuelle Brenweite
		Gefolgt von:	0 (0)
		Antwort:		MSB Brennweite
						LSB Brennweite
						


194		Entfernung zum Objekt laut Fokus im cm für USM min EF Version 4
		gefolgt von:		0 0 0 (0)						
		Antwort: 		MSB Min Entfernung?
						LSB Min Entfernung?
						MSB Max Entfernung?
						LSB Max Entfernung? 		

196		Entfernung zum Objekt laut Fokus (Zwischen welchen werten)
		gefolgt von:		0 0 0 (0)						
		Antwort: 		MSB Min Entfernung
						LSB Min Entfernung
						MSB Max Entfernung
						LSB Max Entfernung 	

224		AF-Justage Wert Korrektur zu 228
		gefolgt von:	0 (0) 
		Antwort:		MSB AF-Justage Wert
						LSB AF-Justage Wert
						
228		Lens extension response factor (Motorschritte in Linsenbewegung)
		gefolgt von:	0 0 
		Antwort:		37
						231
													
232		Lens Extension Correction Value (Unendlich)
		Gefolgt von: 	0 0 0 0 0 (0)
		Antwort:		Wert
						Wert
						Wert
						Wert
						Wert
						Wert
					
234		Lens Extension Correction Value (Nahbereich)
		Gefolgt von: 	0 0 0 0 0 (0)
		Antwort:		Wert
						Wert
						Wert
						Wert
						Wert
						Wert
						
248		Af Justage wert für Blende5.6						
		Gefolgt von: 	(0)
		Antwort:		Af Wewrt
		
250		Af Justage wert für Blende 2.8
		Gefolgt von: 	(0)
		Antwort:		Af Wewrt
		
252		Af Justage wert für Blende ?
		Gefolgt von: 	(0)
		Antwort:		Af Wewrt
		
254		Af Justage wert für Blende ?
		Gefolgt von: 	(0)
		Antwort:		Af Wewrt
						
						

Legende:

(0) 		Es kann eine 0 kommen oder ein anderer Befehl
23 56 78 98 Es kommen die Daten nacheinander
0 0 0 0  	Es kommen 0 Werte Nacheinander
?			Unbekannt oder nicht sicher
23,24		Es kann eine dieser Werte kommen

Ich hoffe ich habe das alles richtig aus den letzten 50 Seiten zusammengetragen
 
Zuletzt bearbeitet:
Hi,
I want to make a converter for old Sigma lens for the aperature command. The old analog aperature command was 0x12h and the digital body was changed to 0x13h. My converter will sample the data fom the body and when capture a 0x13h command will transform to 0x12h for the lens. My problem is how did i known when command and when data is transmitted to the lens to modify just the command not the data byte ?
I knew the sollution posted here with atmega but I want to use pic micro SOT-23.
My idea was to put a serial resistor to the dataline and "wach" the data on it, when recives the command 13h actuali just the 9h to pull down the line transform the 13h to 12h.

body----resistor----lens
I---Picmicro( 10F320/sot-23 @16Mhz)
and ofcourse a clock line.
13h: 00010011 - > 9h: 0001001 after recieve this data pulled down and the result will be:
12h: 00010010

With this metod will be no time shift.
The problem is to separate the command from the data to not mess up the 13H data just the command.

Thank in advance
Andy

ps: Sorry for english.

If this line is driven open collector from the body no resistor is needed.
 
Zuletzt bearbeitet von einem Moderator:
cirki,
If you look carefully the Atmega solution presented here, in addition to the 13h, you must also examine the byte preceding the 13h, and it must be either 00h, 01h, or 07h. In other words, you have to first wait for either 00h, OR 01h, OR 07, then wait for 09h to pull the line.

I don't know if the output from the camera is open collector or not. Since you are using 10F320, can you take advantage of the logic cell (CLC) in 10F320 instead of resistor? The CLC will be an AND gate.

body--->CLC--->lens

This will have very little time shift.
 
Zuletzt bearbeitet:
Lejaune,
So I have to sample the data and store the last byte for compare and if 00, 01 or 07 is followed by 09 (and will be 13H) it means that is the aperature command and need to change. (after 09 to pull low the data line to transfor the last bit to 0 and that will transform 13H to 12H).

As I read the lens can pull low the line for busy state so I think it is driven open collector so the PIC can "anytime" pull down.

I don't really get the idea with the CLC . Can you explain a litle bit more ? As I see you ar familiar with the PIC micros, did you try the 10F320 ?
 
cirki,
Since you suggested the use of pull-down using the signal from the PIC10F320, my suggestion is instead of relying on the open collector, you could use the internal CLC to act as an "AND" gate and achieve the same result. The DCL from camera will be one input to the AND gate and the "pulldown" from the MCU is another input to the AND gate. The out put of the AND gate goes to the lens.

I did not use the 10F320 because it's too new and my JDM programming tool does not support it. I used 12F629 for the 13h to 12h modification but there is a delay of a few microseconds. I like to try 10F320 when I have the updated tool and have time.
 
Hallo zusammen,

vielen Dank an diverse User hier die eine "Cheap Trick" Lösung für ältere Sigma Objektive angeboten und Dokumentiert haben.
Durch diese Lösung habe ich ein Sigma 70-210 2.8 wieder zum Leben erwecken können. Das Objektiv ist sicherlich nicht sonderlich gut, aber zu schlecht zum wegwerfen.
Bilder habe ich mir gespart, da SLEIN ja alles schon schön Dokumentiert hat. Die Anschlußbelegung am Bajonett findet sich über google ja auch schnell.
Schön wäre sicherlich noch ein Stromsparmechanismus, aber dazu bin ich im Moment zu wenig in der Materie drin.

Gruß und nochmals danke, Markus
 
hi. i am working to mod a sigma 50 macro but is not working. i thing that may be because the data from lens and clock have noise when the line is not high (5v). any suggestions pls?
 
hi. i am working to mod a sigma 50 macro but is not working. i thing that may be because the data from lens and clock have noise when the line is not high (5v). any suggestions pls?


ok it is not noise, is data but my acquisition board can not sample fast enough.

i'm using attyini44. i've recompiled the source code replaceing #include<attinny24> with #include<attiny44.h> . it is enough?

the uc is putting nothing on the pa0
please hellp
 
hi,

the change of tiny24 to tiny44 should ne enough. the tiny44 is good too, it have 4k flash instead of 2k flash of the 24.

did you programmed the fuses so that the tiny startup in fastest mode and run with 8mhz internal oscilator (deselect the ckdiv8) ?

can you check the clk and the dcl input to the attiny with an scope?

regards, markus
 
WERBUNG
Zurück
Oben Unten