Magic Lantern Forum

Developing Magic Lantern => Reverse Engineering => Topic started by: a1ex on June 25, 2013, 11:01:20 AM

Title: ADTG and CMOS registers
Post by: a1ex on June 25, 2013, 11:01:20 AM
Code: https://bitbucket.org/hudson/magic-lantern/src/tip/modules/adtg_log/

Notes: http://magiclantern.wikia.com/wiki/ADTG

Logs:
read, compare and understand:
http://upload.g3gg0.de/pub_files/f00fa2c2cea01ee32408009b6e02fcc6/ADTG_CMOS_Writes.7z

this is only the data written to ADTG and CMOS.
try to find out as much about the registers as you can.

if all that is understood, then we have about 10% of the necessary stuff for custom resolutions.

good luck ;)
Title: Re: ADTG and CMOS registers
Post by: Andy600 on June 25, 2013, 11:40:27 AM
Looks like a big find.  8)

Is it safe to try on older cameras?
Title: Re: ADTG and CMOS registers
Post by: a1ex on June 25, 2013, 11:47:26 AM
First you need to find some stubs, they are hardcoded for 5D3 now.

Then, take the battery out as soon as you see distorted images. It will look like the CMOS is dieing ;)

I have no idea if it's actually dangerous or not. It probably is.

If you manage increase the sampling area, be prepared for buffer overflows.
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 25, 2013, 03:26:18 PM
thanks for consolidating the data and setting up the wiki page!
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 25, 2013, 03:45:23 PM
my theory about:
 8060 - shutter blanking without zoom

i think it specifies the time to wait until sensels are powered.
when they are powered, all incoming light causes the charge to increase.
as soon the video timer has expired, the ADTG will read out the sensels.

why this way and not power the sensels immediately and read out after the specified time ticks?
this way the sensels are not floating/unpowered and thus dont lose any charge before they get read out.
Title: Re: ADTG and CMOS registers
Post by: a1ex on June 25, 2013, 03:51:43 PM
This theory explains perfectly the shutter speed changes when using FPS override (you know the formula from fps-engio.c: EA = (E0 + (1/Fb - 1/F0)) * Ta / Ta0).

(changing FPS timer B in digic, but not in ADTG, will keep the blanking time constant and will stretch the exposure time)
Title: Re: ADTG and CMOS registers
Post by: ilguercio on June 25, 2013, 05:03:11 PM
I like these kind of threads :)
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on June 25, 2013, 05:29:06 PM
my theory about:
 8060 - shutter blanking without zoom

i think it specifies the time to wait until sensels are powered.
when they are powered, all incoming light causes the charge to increase.
as soon the video timer has expired, the ADTG will read out the sensels.

why this way and not power the sensels immediately and read out after the specified time ticks?
this way the sensels are not floating/unpowered and thus dont lose any charge before they get read out.

Because they must start collecting photons and then read in a precise time slot. If you power up all the rows together and then, after a while, you start to read the first row, then the second row... every subsequent row has collected too many photons if compared to the first ones, so uneven exposure. If this is your question... or try to explain better if I misunderstood you.
Normal CMOS row timings in video mode (shutterless) are normally as follows (as an example) : - power to row 1  - power to row 2 - power to row 3 - read row 1- power to 4 - read row 2 - power to row 5 - read row 3 - ... and so on...  and in photo mode (with shutter) are : - shutter down - power to all rows - shutter up - wait - shutter down - read row 1 - read row 2 - ... and so on
Title: Re: ADTG and CMOS registers
Post by: 1% on June 25, 2013, 07:16:25 PM
Have to try this on 6D, should work like 5D3.. 50D and others will have to post logs.. maybe can undo removing 0 from the shutter list since a1ex applied that fix.
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 25, 2013, 08:07:37 PM
@dlrpgmsvc:
My question was a rhetorical one which i immeadiately answered :)
Title: Re: ADTG and CMOS registers
Post by: 1% on June 26, 2013, 01:10:42 AM
For 6D I found

805F
8061

move when shutter is turned.

But

//~ #define FRAME_SHUTTER_BLANKING_ZOOM   (*(uint16_t*)0x4045184C) // ADTG register 805f
//~ #define FRAME_SHUTTER_BLANKING_NOZOOM (*(uint16_t*)0x40451850) // ADTG register 8061

This did not work. Got lines and shutter read as 1/24
Title: Re: ADTG and CMOS registers
Post by: 1% on June 26, 2013, 02:05:18 AM
How do I parse this? Do you have to hook GDB to the camera?

adtg.bin
https://mega.co.nz/#!J4RGjDCb!PDdbfC6G7QE-IuZ0AO4AyQu7b-ZKk9WeVRZbUzB-lm4

50D is 105F and 1061

Also.. on 6D the shutter bounce +/- 1? like the fps override did.. 50D is solid one setting.
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 27, 2013, 12:31:10 AM
the bin can be parsed with the python script in the module directory ;)
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 27, 2013, 01:36:35 AM
some more logs to analyze:
http://upload.g3gg0.de/pub_files/21de3733e625ce46e034292ebada10cb/ADTG_LOGS.zip

some diffs:
http://upload.g3gg0.de/pub_files/7771d7d563098b1b5a59b6c8fe4ae1ea/ADTG_diff_photo_5.html
http://upload.g3gg0.de/pub_files/ba9ad726b163bb941a257553c8db4866/ADTG_diff_photo_4.html
http://upload.g3gg0.de/pub_files/f86237df9fce070e1e179cf56e48464e/ADTG_diff_photo_3.html
http://upload.g3gg0.de/pub_files/6707b4ebfa01939ad5a2cc554bad4dc3/ADTG_diff_photo_2.html
http://upload.g3gg0.de/pub_files/e2bb46127c4ea1b8a2dd295897e3db8a/ADTG_diff_photo_1.html
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 27, 2013, 10:14:44 AM
i uploaded modified versions of adtg_log and trace to my repository.
see https://bitbucket.org/g3gg0/magic-lantern

using these modules, can someone trace crop mode ADTG configuration on 60D or 600D?
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on June 28, 2013, 11:38:54 PM
I wish to be of help into porting this to 550D : can someone help me into specify what to do ? Even preliminary tests or logs reports... but please, even if I'm a programmer, I'm quite new to this programming environment, so, something I managed to understand, while other things not: can you be as specific as you can, so I can get the point ? Many thanks in advance !  ;D
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 29, 2013, 01:10:15 AM
the most important part is trying to understand what the registers in the logs mean.
this means, finding and identifying numbers that could make up the vertical and horizontal resolution etc.

to use adtg_log, you have to find the ADTG_Write function on your camera.
its easy as it usually contains these strings:
"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
"[REG] ADTG:[%08x] <----- Excel Tab Number"

same for CMOS
Title: Re: ADTG and CMOS registers
Post by: 1% on June 29, 2013, 01:23:40 AM
EOS M and 650D might be easier to trace, we found working crop mode on that.
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on June 29, 2013, 02:15:11 AM
yeah nanomad tried, but gdb_setup() failed (return value zero) due to the M having a different IV structure.
my recommendation was

MEM(0x0C) = 0xE59FF000;

before calling gdb_setup().

can you confirm that gdb_setup() works then?
Title: Re: ADTG and CMOS registers
Post by: 1% on June 29, 2013, 05:34:10 PM
GDB setup hangs my camera.. doing that assignment gives lvalue error in the module.
Title: Re: ADTG and CMOS registers
Post by: nanomad on June 30, 2013, 09:43:50 AM
You need to expand the macro by hand. But overwriting stuff in that memory area causes tons of assertions.
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 02, 2013, 10:08:08 AM
we fixed it tonight.

just curious - you removed the volatile in MEM macro and it worked?
this is not how it is supposed to work :(
can you re-add it?

volatile just ensures that the compiler does *not* optimize the code.
the compiler will read the variable from RAM every time it is read and write back every time is is written.
without volatile, subsequent reads would get optimized and the variable is kept in registers.

btw, can you upload all those logs?

@all:
if you want to help, can you create a map of all registers and their values for every log we have?
i think it is possible to process them with shell scripts and then export it for google spreadsheet.
the last written value should be used as register value to be shown.

tried it for two 5D3 logs, but the register list will show the *first* register value only.
https://docs.google.com/spreadsheet/ccc?key=0AgQ2MOkAZTFHdHdQVFcyMVExZFdNM1A2NnJSYlFhSmc&usp=sharing
Title: Re: ADTG and CMOS registers
Post by: nanomad on July 02, 2013, 10:37:35 AM
After going back, I think the bad boy is the function that updates CMOS regs in the module causing, in turn, all kind of assertions.

Here are the LOGs
https://dl.dropboxusercontent.com/u/15964163/ML/650D.101.ADTG-LOGs.zip

edit: Your google link is read-only
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 02, 2013, 11:09:21 AM
@all:
if you want to help, can you create a map of all registers and their values for every log we have?

Please, I need a "dummy-hints" here.
Obviously I don't need a Step-by-Step guide, but only some sparse hints&tips : What I have to do just to start ? Do I must go to g3gg0 repository, download the ADTG module and makefile, then compile it to my side ?
Also, How it works and what I have to do ? Do I must activate it, and how ? Simply by loading it from modules ml menu ? Do I have to activate also raw video module ? And then, do I must make some actions on my camera in order for the log to record something ? And what actions I must do on my camera ? You are talking about ADTG and CMOS: do they are two different logs ? Or do there is a separate module for CMOS ? And where these logs are saved ? ...

Excuse me for all these questions: I'm a programmer and I work with assembly Language also, and I'm sure when I will manage to be "inside" the workflow, I will be of help. Obviously I will write a "dummy-guide" also for this so Others can help as well !  ;-)
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 02, 2013, 12:09:55 PM
edit: Your google link is read-only

fixed
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 02, 2013, 12:11:34 PM
@dlrpgmsvc:
nanomad and i uploaded lgos that contain ADTG register values for specific video modes.
what we now need, is an analysis of those logs, which registers get programmed with which values.

so just to dig the logs, create a map of all registers that are written and show their values like i did in the link i wrote above.
what i have done in this google spreadsheet, is not good as it shows the *first* write only, but we have to mapt he *last* writes.
(reason: registers are first initialized with default values, then the real values=

thats nothing to do on camera, but a logfile analysis.
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 02, 2013, 08:50:24 PM
also interesting is this one:
http://upload.g3gg0.de/pub_files/bd36e0be89208738a38c66b20c9a5538/M_crop_noncrop.html

CARTRIDGE registers comparison between M crop and non-crop modes.

is it related to FPS as they differ?
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 02, 2013, 10:34:15 PM
@dlrpgmsvc:
what i have done in this google spreadsheet, is not good as it shows the *first* write only, but we have to mapt he *last* writes.
(reason: registers are first initialized with default values, then the real values=

Do you mean, for example, line 269 of your spreadsheet is the "first" write and line 271 is the "last write" of the same register id and register address, so first value written is 03 and last is 06 ?

Lets for instance take the first log of yours: I see as the first "02 00C7 1032" so i will search for another occurrence of "02 00C7 xxxx" and then again and again and I stop at the last finding, then this is the *last write* you need ? And so on for the Others values ? And if I find only one occurence ? Do I take it into consideration or I have to delete it ? (many thanks for your patience...)
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 03, 2013, 12:59:09 AM
i just implemented it right before you asked :)

Code: [Select]
#!/bin/bash

FILE="$1"

if [ -f "./${FILE}" ]; then
    cat ${FILE} | grep -e "02 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }' > ${FILE}_adtg_2.csv
    cat ${FILE} | grep -e "04 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }'  > ${FILE}_adtg_4.csv
    cat ${FILE} | grep -e "06 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }'  > ${FILE}_adtg_6.csv
    cat ${FILE} | grep -e "08 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }'  > ${FILE}_adtg_8.csv
else
    echo "Invalid file name"
    exit 0;
fi


Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 03, 2013, 01:11:06 AM
i just implemented it right before you asked :)

Great ! So no more help needed parsing log files, right ?
So my first question apply again: what I can to do with my camera in order to extract the logs (module compiling? actions to do on camera... etc.), and where I can post them ?  ;)  I can create a folder inside your spreadsheet with the name of my camera and populate it as you have done, right ?  ;)

I can guess: activate your log module - set shutter time, aperture, iso, canon movie resolution and fps - start recording in normal canon movie mode for some seconds - stop recording        (so i should have the log files into the SD card, right ? where ?)
Title: Re: ADTG and CMOS registers
Post by: vroem on July 03, 2013, 01:16:06 AM
using these modules, can someone trace crop mode ADTG configuration on 60D or 600D?
I'm not experienced in building ML myself. I have a 60D. I tried to compile a new autoexec.bin and the adtg_log and trace modules, but when loading them I get this:
(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fs8.postimg.org%2Fooypc3pyt%2FVRAM1.png&hash=ae8055fd20139a7943265f3f1535bf41)
Title: Re: ADTG and CMOS registers
Post by: 1% on July 03, 2013, 01:20:08 AM
Enable GDB in makefile.user
Title: Re: ADTG and CMOS registers
Post by: vroem on July 03, 2013, 01:40:39 AM
[edit]ok I modified Makefile.user
magiclantern/Makefile.user

ARM_ABI=none-eabi
ARM_PATH=~/arm-toolchain
GCC_VERSION=4.7.3
CONFIG_MODULES   = y
CONFIG_TCC   = y
CONFIG_PICOC   = n
PYTHON      = python2.6
CONFIG_TINYPY    = Y
CONFIG_GDB      = Y
CONFIG_GDBSTUB  = Y

cd platform/60D.111/
make clean && make

cd ../../modules/trace/
make clean && make

cd ../../modules/adtg_log/
make clean && make

copy
autoexec.bin -> /

60D_111.sym, adtg_log.mo, trace.mo -> /ml/modules/

(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fs10.postimg.org%2Fct0m66lvd%2Ferror.png&hash=3b2f6d4089e542165143edfe2e645931)
Title: Re: ADTG and CMOS registers
Post by: 1% on July 03, 2013, 02:36:56 AM
You don't need tinypy. Check the sym file and see if those symbols are in there.
Title: Re: ADTG and CMOS registers
Post by: vroem on July 03, 2013, 02:54:08 AM
They are not
[edit:] Got it to work by adding gdb.o to src/Makefile.src
btw I'm using g3gg0's bitbucket
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 03, 2013, 07:11:32 PM
can you check if the gdb code is compiled?
Title: Re: ADTG and CMOS registers
Post by: vroem on July 03, 2013, 07:13:51 PM
Heh yes, see my edit above. Now how do I use this?
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 03, 2013, 07:30:32 PM
press set on ADTG menu entry in movie menu and switch to movie mode.
then power off the camera.
you now have a log file on your card.
Title: Re: ADTG and CMOS registers
Post by: vroem on July 03, 2013, 07:46:11 PM
Here you go. All the lines end in VSYNC. I suppose that's not what you need...  :'(
Code: [Select]
/* 00:00:03.276125  */ -------- VSYNC --------
/* 00:00:03.321890  */ -------- VSYNC --------
/* 00:00:03.367163  */ -------- VSYNC --------
...
Title: Re: ADTG and CMOS registers
Post by: vroem on July 03, 2013, 07:49:13 PM
Also getting ERR70s with
CRASH00.LOG
Code: [Select]
ASSERT: FALSE
at Memory\Memory.c:188, task adtg_log_task
lv:0 mode:10


Magic Lantern version : v2.3.NEXT.2013Jul03.60D111
Mercurial changeset   : 482b1734e293+ (unified) tip
Built on 2013-07-03 16:59:20 by magiclantern@magiclantern-VirtualBox.
Free Memory  : 470K + 1037K
 
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 18, 2013, 02:10:19 PM
It would be of help for all if someone can explain better, with an example for instance, how to find what registers do what. For example by explaining how you have found the right registers and values to implement the dual iso feature.
This will enable all of us with a minimum programming abilities to help digging out this ADTG discovery.
Title: Re: ADTG and CMOS registers
Post by: 1% on July 18, 2013, 03:22:36 PM
I made the address write to the log so now its relatively easy.
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 19, 2013, 12:18:57 PM
I made the address write to the log so now its relatively easy.

Do we must consider using the G3GG0 debug module here : https://bitbucket.org/g3gg0/magic-lantern/src/6de0d9e9a4d4db70b61149f9c212ba02a7dfd18a/modules/adtg_log?at=unified
or do we must consider using the official one at : https://bitbucket.org/hudson/magic-lantern/src/tip/modules/adtg_log/

What is better ? And where are your latest modifications you are talking about ? Many thanks !
Title: Re: ADTG and CMOS registers
Post by: Greg on July 19, 2013, 03:10:38 PM
And where are your latest modifications you are talking about ? Many thanks !

Maybe here - https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 22, 2013, 12:45:54 PM
Maybe here - https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all

Please, be patient with me: by using this version I have some compiling errors.
I'm using ubuntu virtual machine in Windows, I already successful compile the full magic lantern, but when I launch "make" inside the adtg_log module above, I get this error :

[ CC    ] adtg_log.o
/bin/sh:  1:  /home/magiclantern/arm-toolchain/bin/arm-none-eabi-gcc4.7.3: not found
make: *** [adtg_log.o] Error 127

I made "make clean" before "make". I copied "makefile.user" inside the adtg module dir and also inside "modules" dir, but the error is still the same.

How can I do ? many thanks !

[EDIT] : Nevermind, solved ! The file which module makefilings refers to is  "/home/magiclantern/arm-toolchain/bin/arm-none-eabi-gcc4.7.3" while the existent file is "/home/magiclantern/arm-toolchain/bin/arm-none-eabi-gcc-4.7.3". The reason of this is unknown ! So, a CopyPasta + Renaming did the trick. Strange but true.  ;D
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 22, 2013, 03:32:04 PM
Used this version : https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all
The ML base is the last official Hudson one.
Followed same steps as user "vroem".
I'm on a 550D, ubuntu virtual machine on Windows.
All compilations are ok, but when 550D is fired up, then red solid light and all is blocked. I must slip out the battery to turn off the light.

I need a big assistance, many thanks !   :'(
Title: Re: ADTG and CMOS registers
Post by: Stedda on July 22, 2013, 03:34:03 PM
http://www.magiclantern.fm/forum/index.php?topic=3072.msg60979;topicseen#msg60979

See the last few posts...
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 22, 2013, 03:51:46 PM
http://www.magiclantern.fm/forum/index.php?topic=3072.msg60979;topicseen#msg60979

See the last few posts...

Many thanks, Stedda ! It seems I choosed the worst moment to start this work on 550D !  >:(
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 23, 2013, 03:30:39 PM
Ok ! I went to solve the 550D lock-up problem, now the problem is this :

Modules load, but there is no ADTG menu entry in movie menu to press "set" on, and the textual  modules loading log remains over the liveview even if i turn off global draw, and "show console" option in modules menu is off! I tried to change modes with main dial to photo then return to video mode. But no log written into the sd card. How can I use this log module ?  :o

Used this log module version : https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all
The ML base is the last official Hudson one.
Followed same steps as user "vroem".
I'm on a 550D, ubuntu virtual machine on Windows.
All compilations are ok
I load manually the modules after entering ML menu the first time


The module loading log on screen is the following :

Scanning modules...
Scanning modules...
Load modules...
   [ i ] load: ADTG_LOG.MO
   [ i ] load: TRACE.MO
Linking..
Register modules...
Load configs...
Init modules...
   [ i ] Init: 'adtg_log'
_

It seems it blocks itself into initializing 'adtg_log' module (and this is the reason the log text remains on), what do you think ?
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 23, 2013, 04:18:50 PM
I think problem is inside the following function : "static unsigned int adtg_log_init()" where it blocks itself.

It calls "gdb_setup()" function and then sets a sequence of 4 watchpoints.
It could be the gdb_setup function or the watchpoints settings.

I traced it's inside "gdb_setup()" that all blocks.

I tried to eliminate all the declarations "short" by leaving them plain, because this hanged 550D on "boot_hack,c", but this didn't produced benefical effects, and the freezing still occour.

New clues indicates that the block happens BEFORE entering the function "static unsigned int adtg_log_init()".
This is odd: what is called BEFORE module initialization function ?  :o
I commented out completely all the init routine and placed inside her a well "NotifyBox", but it doesn't shows up at Runtime !
Do I'm choosing the wrong trace down method or do the problem is really before init routine ?

Now I tried the log module that come with Hudson unified: same exact problem. Even by getting rid of "short" declarations !

Now tried to eliminate the adtg_log module from the sd card : the trace module load flawlessy and then says OK near his name !
This is without any doubt a adtg_log module problem!

I'm currently investigating on this...

Side problem : I can see every camera model has different registers addresses, so... do 550D also have his own ? And how to discover them ?  :o
Title: Re: ADTG and CMOS registers
Post by: Indy on July 23, 2013, 07:14:25 PM
550d 1.0.9
 19259c ( pTgRegister->dwSrFstAdtg[4] & 0xFFFF0000 ) == 0x81720000
 1925dc ( pTgRegister->dwSrFstAdtg[5] & 0xFFFF0000 ) == 0x81730000

 26efb4 [REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]
 26efe8 [REG] ADTG:[0x%08x]
 26effc [REG] ADTG:[%08x] <----- Excel Tab Number
 26f270 [REG] ############ Start CMOS
 26f29c [REG] CMOS:[0x%04x]
 26f2b0 [REG] CMOS:[%04x] <----- Excel Tab Number
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 23, 2013, 08:06:24 PM
Whoa ! I managed to solve the problem ! Now module loads ok !  ;)
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 23, 2013, 09:20:01 PM
Do this procedure is correct to use log module ? (with all ML video and helper functions disabled) :

[1] Enter ML menu
[2] Enable adtg from MOVIE menu
[3] Exit ML menu
[4] Start video recording 1920x1080 25p
[5] Stop video recording
[6] Enter ML menu
[7] Disable adtg from MOVIE menu
[8] Shut off camera

I obtain a "ADTG.BIN" file inside the photos folder on SD.

Do this procedure is right ?
Title: Re: ADTG and CMOS registers
Post by: a1ex on July 24, 2013, 09:04:08 PM
For 550D, the address for ADTG function is at 0xff27ee34, and for CMOS, 0xff27f028.

I didn't try these numbers, and I have no idea how Indy got these RAM addresses. Afaik, the 550D runs all the code from ROM (but there may be exceptions).
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 24, 2013, 09:39:32 PM
For 550D, the address for ADTG function is at 0xff27ee34, and for CMOS, 0xff27f028.

I didn't try these numbers, and I have no idea how Indy got these RAM addresses. Afaik, the 550D runs all the code from ROM (but there may be exceptions).

Great ! Many thanks A1ex ! It works !

So, the trick is to find the nearest point around the strings (not the exact string start address) where there is the following instruction :

[1] For CMOS (it is before the strings) :       STMFD      SP!, {R4-R8, LR}
[2] For ADTG (it is before the strings)  :       STMFD      SP!, {R4-R10, LR}

Do this is correct ?

And for CARTRIDGE registers and Others (like the first strange two lines found by Indy) do it will be similar ?
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on July 26, 2013, 08:26:47 AM
Yes. The stmfd is usually the function entry.
In some rare cases you will find a mov before.
The best is to have a database that is neraly completely disassembled (a lot of 'P' presses to do ;) )
Then you see where the xrefs go.

Cardridge is the same. But its not that important. We focus on adtg at the moment.
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 26, 2013, 09:22:44 AM
Very good!

I have some toughts :

1 - these adtg registers are yet indirectly used for fps-shutter speed override and they have the same limitations (low fps still equals to low shutter speeds)

2 - resulutions can only be decreased but not increased (as for latest tests), and lower Canon in-camera standard resolutions of 720p and 480p are more than enough

So, the only real useful discovery (so far) is the CMOS16 register (only in newer cameras models) to obtain dual iso feature.
It seems we cannot squeeze nothing more out of them, at least for now, right?

This is just to know if the works for dumps on other camera models will be worthwile, or if it is better to first study the behavior of these registers on yet dumped models, until something useful will eventually arise.
Or if someone has yet some ideas to implement with these registers.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on July 26, 2013, 12:03:37 PM
I've compiled adtg_log and it loads ok but I can't get it to save a log file on the 50D. Any ideas?  ???
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 26, 2013, 12:56:56 PM
I've compiled adtg_log and it loads ok but I can't get it to save a log file on the 50D. Any ideas?  ???

Do you see the cmos values running on screen (not zeroes values) ?
Title: Re: ADTG and CMOS registers
Post by: Andy600 on July 26, 2013, 01:07:42 PM
Do you see the cmos values running on screen (not zeroes values) ?

I see 8x cmos values. Not sure what you mean by 'running'? They don't change.

The 50D doesn't have a dedicated Movie mode so I switch adtg log on, enabled movie record and powered off. No logs on the card. I've tried recording a bit too and also tried with raw video enabled and disabled.
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 26, 2013, 01:14:10 PM
I see 8x cmos values. Not sure what you mean by 'running'? They don't change.

When you enable adtg_log and then you exit from ml menu (back to liveview mode), you should see the 8 cmos values printed onto the viewfinder that change continuously. Do this happens ? It should. If you see the values unchanged and fixed at 0 value (on vf, not inside the menu), then it's a problem of start_cmos hardcoded value: are you sure it's correct ?
Title: Re: ADTG and CMOS registers
Post by: Andy600 on July 26, 2013, 01:18:37 PM
When you enable adtg_log and then you exit from ml menu (back to liveview mode), you should see the 8 cmos values printed onto the viewfinder that change continuously. Do this happens ? It should. If you see the values unchanged and fixed at 0 value (on vf, not inside the menu), then it's a problem of start_cmos hardcoded value: are you sure it's correct ?

Ok, no they don't change. Where do you change the start_cmos value?
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 26, 2013, 01:20:27 PM
Ok, no they don't change. Where do you change the start_cmos value?

it is at start of "adtg_log.c" inside "src" and then "modules" directory
Title: Re: ADTG and CMOS registers
Post by: Andy600 on July 26, 2013, 01:28:45 PM
it is at start of "adtg_log.c" inside "src" and then "modules" directory

Ok, some values have been set for the 50D in adtg_log.c but must be wrong. I don't know where or how to find the correct values. Looked in stubs etc but cant see any cmos addresses. Does it mean dumping the FW to find the correct numbers?
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on July 26, 2013, 02:06:17 PM
Ok, some values have been set for the 50D in adtg_log.c but must be wrong. I don't know where or how to find the correct values. Looked in stubs etc but cant see any cmos addresses. Does it mean dumping the FW to find the correct numbers?

Yes... however I have read that 1% managed to dump 50D and found the values, for sure. So, you can ask him or disassemble by yourself the ROM. If you decide this latter option, I can assist you.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on July 26, 2013, 02:21:12 PM
Yes... however I have read that 1% managed to dump 50D and found the values, for sure. So, you can ask him or disassemble by yourself the ROM. If you decide this latter option, I can assist you.

The values must be the ones 1% added (as I'm using Tragic Lantern source code). Probably best to wait for him to come back online then.

Thanks anyway :)
Title: Re: ADTG and CMOS registers
Post by: 1% on August 01, 2013, 08:49:26 PM
Quote
//~ #define ADTG_WRITE_FUNC   0xFFA11FDC
//~ #define CMOS_WRITE_FUNC   0xFFA12190
//~ #define CMOS16_WRITE_FUNC 0
//~ #define CARTRIDGE_WRITE_FUNC 0

Thats 50D.
Title: Re: ADTG and CMOS registers
Post by: ilguercio on August 09, 2013, 05:53:18 PM
So, what if i try poking the Digic on the 6D?
Any hint? I might have some free time tomorrow.
If you give me a hand i can try and do a bit of trial and error.
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 13, 2013, 11:38:18 PM
Is it worth trying this on a 60D?
Title: Re: ADTG and CMOS registers
Post by: Greg on August 14, 2013, 01:07:14 AM
How do I find these values ​​for the 500D?
Code: [Select]
ADTG_WRITE_FUNC
CMOS_WRITE_FUNC
CMOS16_WRITE_FUNC
CARTRIDGE_WRITE_FUNC
Title: Re: ADTG and CMOS registers
Post by: coutts on August 14, 2013, 02:51:44 PM
How do I find these values ​​for the 500D?
Code: [Select]
ADTG_WRITE_FUNC
CMOS_WRITE_FUNC
CMOS16_WRITE_FUNC
CARTRIDGE_WRITE_FUNC
you have ida right or arm console for firmware analysis
Title: Re: ADTG and CMOS registers
Post by: Greg on August 18, 2013, 05:07:41 PM
you have ida right or arm console for firmware analysis
I do not know how to do it  :o


I found such a value, I do not know if they are correct.
500D:
Code: [Select]
#define ADTG_WRITE_FUNC   0xFF23FB4C
#define CMOS_WRITE_FUNC   0xFF23FB90
Title: Re: ADTG and CMOS registers
Post by: Greg on August 22, 2013, 02:50:37 AM
Did I do something wrong?
Code: [Select]
Traceback (most recent call last):
  File "parse_bin.py", line 21, in <module>
    with open(filename,"rb") as f:
TypeError: coercing to Unicode: need string or buffer, NoneType found

edit:

It does not look good.
Code: [Select]
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
Title: Re: ADTG and CMOS registers
Post by: 1% on August 24, 2013, 06:19:21 PM
//60D
//~ #define ADTG_WRITE_FUNC   0xFF2C9788 //"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
//~ #define CMOS_WRITE_FUNC   0xFF2C997C //"[REG] ############ Start CMOS"
//~ #define CMOS16_WRITE_FUNC 0x0 //"[REG] ############ Start CMOS16 OC_KICK"
//~ #define CARTRIDGE_WRITE_FUNC 0xFF402884 //CARTRIDGE1_ADDR Adder ==> 0x%


For 500D just look for the strings.. im not sure on cartridge.. I've never seen anything come out of that.
Title: Re: ADTG and CMOS registers
Post by: Greg on August 25, 2013, 07:38:48 PM
I lost a couple of hours and found nothing.
Each time:
Code: [Select]
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
[----------- VSYNC ------------]   
Title: Re: ADTG and CMOS registers
Post by: 1% on August 25, 2013, 09:21:04 PM
Have the firmware? I can double check them.
Title: Re: ADTG and CMOS registers
Post by: Greg on August 26, 2013, 03:08:07 PM
Maybe it?
500D
Code: [Select]
#define ADTG_WRITE_FUNC   0xFF236538
#define CMOS_WRITE_FUNC   0xFF236688
Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 26, 2013, 03:35:14 PM
Maybe it?
500D
Code: [Select]
#define ADTG_WRITE_FUNC   0xFF236538
#define CMOS_WRITE_FUNC   0xFF236688
Tested, these are not it for 500D
Title: Re: ADTG and CMOS registers
Post by: 1% on August 26, 2013, 03:38:09 PM
Those land in the middle of functions for me.... I had to cut your rom and add the correct start address I think. If you have FFFFFFFF at the start your addresses will be off which is probably why its not working for you.

Stuff seems to be matching the stubs and I'm running some scripts on the file so I don't have to hunt so much... but I found the strings will post them when the scripts are done.

500D
//~ #define ADTG_WRITE_FUNC   0xFF22F8F4 //"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
//~ #define CMOS_WRITE_FUNC   0xFF22F9DC //"[REG] ############ Start CMOS"
//~ #define CMOS16_WRITE_FUNC 0x0 //"[REG] ############ Start CMOS16 OC_KICK"
//~ #define CARTRIDGE_WRITE_FUNC 0x0 //CARTRIDGE1_ADDR Adder ==> 0x%

Didn't find any cartridge but thats ok I guess... use my module source if you want it to print regs and just uncomment the camera you're using.
Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 26, 2013, 03:39:06 PM

I found such a value, I do not know if they are correct.
500D:
Code: [Select]
#define ADTG_WRITE_FUNC   0xFF23FB4C
#define CMOS_WRITE_FUNC   0xFF23FB90
These are not them either.
Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 26, 2013, 03:41:01 PM
Those land in the middle of functions for me.... I had to cut your rom and add the correct start address I think. If you have FFFFFFFF at the start your addresses will be off which is probably why its not working for you.

Stuff seems to be matching the stubs and I'm running some scripts on the file so I don't have to hunt so much... but I found the strings will post them when the scripts are done.
Sounds good 1%, I will take things from there Greg since I still have my 500D laying around somewhere in the dust  ;)
Title: Re: ADTG and CMOS registers
Post by: Greg on August 26, 2013, 03:52:33 PM
500D
//~ #define ADTG_WRITE_FUNC   0xFF22F8F4 //"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
//~ #define CMOS_WRITE_FUNC   0xFF22F9DC //"[REG] ############ Start CMOS"
//~ #define CMOS16_WRITE_FUNC 0x0 //"[REG] ############ Start CMOS16 OC_KICK"
//~ #define CARTRIDGE_WRITE_FUNC 0x0 //CARTRIDGE1_ADDR Adder ==> 0x%

This work!
Thanks!  ;D


1/200 F4.5 ISO 100 no LV (photo mode) :
Code: [Select]
[ADTG3]   Reg: 0007  Data: 4046 (16454)  [ADTG3]   Reg: 0005  Data: 7F84 (32644)
[ADTG3]   Reg: 0002  Data: 804C (32844)  [ADTG3]   Reg: 0003  Data: FF88 (65416)
[ADTG3]   Reg: 0002  Data: A44C (42060)  [ADTG3]   Reg: 0003  Data: C788 (51080)
[ADTG3]   Reg: 0000  Data: 0111 (  273)  [ADTG3]   Reg: 0000  Data: 01E1 (  481)
[ADTG3]   Reg: 0001  Data: E004 (57348)  [ADTG3]   Reg: 0001  Data: BFF8 (49144)
[ADTG3]   Reg: 0003  Data: 0111 (  273)  [ADTG3]   Reg: 0002  Data: 01E1 (  481)
[ADTG3]   Reg: 0004  Data: 0800 ( 2048)  [ADTG3]   Reg: 0007  Data: 0FFF ( 4095)
[ADTG3]   Reg: 0006  Data: 7000 (28672)  [ADTG3]   Reg: 0004  Data: 5FFF (24575)
[ADTG3]   Reg: 0009  Data: 3212 (12818)  [ADTG3]   Reg: 000E  Data: 23E3 ( 9187)
[ADTG3]   Reg: 000A  Data: 8000 (32768)  [ADTG3]   Reg: 000C  Data: FFFF (65535)
[ADTG3]   Reg: 000B  Data: B212 (45586)  [ADTG3]   Reg: 000D  Data: DC1C (56348)
[ADTG3]   Reg: 000D  Data: 7800 (30720)  [ADTG3]   Reg: 0009  Data: 5000 (20480)
[ADTG3]   Reg: 0010  Data: 0828 ( 2088)  [ADTG3]   Reg: 001F  Data: 0FCF ( 4047)
[ADTG3]   Reg: 0011  Data: 0828 ( 2088)  [ADTG3]   Reg: 001E  Data: 0FCF ( 4047)
[ADTG3]   Reg: 0012  Data: 003B (   59)  [ADTG3]   Reg: 001C  Data: 002D (   45)
[ADTG3]   Reg: 0013  Data: 8004 (32772)  [ADTG3]   Reg: 001D  Data: FFF8 (65528)
[ADTG3]   Reg: 0017  Data: 0030 (   48)  [ADTG3]   Reg: 001A  Data: 0020 (   32)
[ADTG3]   Reg: 1280  Data: 0001 (    1)  [ADTG3]   Reg: 1CFF  Data: 0001 (    1)
[ADTG3]   Reg: 11A4  Data: 2C01 (11265)  [ADTG3]   Reg: 1EC7  Data: 37FE (14334)
[ADTG3]   Reg: 102C  Data: 0001 (    1)  [ADTG3]   Reg: 1FC8  Data: 0001 (    1)
[ADTG3]   Reg: 102C  Data: 0000 (    0)  [ADTG3]   Reg: 1FC8  Data: 0000 (    0)
[ADTG3]   Reg: 1130  Data: 0001 (    1)  [ADTG3]   Reg: 1E20  Data: 0001 (    1)
[ADTG3]   Reg: 1130  Data: 0000 (    0)  [ADTG3]   Reg: 1E20  Data: 0000 (    0)
[ADTG3]   Reg: 1003  Data: 3000 (12288)  [ADTG3]   Reg: 1FFD  Data: 2000 ( 8192)
[ADTG3]   Reg: 1006  Data: 068B ( 1675)  [ADTG3]   Reg: 1FFB  Data: 04F2 ( 1266)
[ADTG3]   Reg: 100A  Data: 0001 (    1)  [ADTG3]   Reg: 1FF3  Data: 0001 (    1)
[ADTG3]   Reg: 1026  Data: 0006 (    6)  [ADTG3]   Reg: 1FC4  Data: 0004 (    4)
[ADTG3]   Reg: 1027  Data: 0019 (   25)  [ADTG3]   Reg: 1FC5  Data: 0011 (   17)
[ADTG3]   Reg: 102F  Data: 1E9A ( 7834)  [ADTG3]   Reg: 1FCA  Data: 14EC ( 5356)
[ADTG3]   Reg: 1030  Data: 1E85 ( 7813)  [ADTG3]   Reg: 1FDF  Data: 14F9 ( 5369)
[ADTG3]   Reg: 104A  Data: 1F80 ( 8064)  [ADTG3]   Reg: 1F8C  Data: 1500 ( 5376)
[ADTG3]   Reg: 104B  Data: 1F93 ( 8083)  [ADTG3]   Reg: 1F8D  Data: 151D ( 5405)
[ADTG3]   Reg: 1069  Data: 1F8C ( 8076)  [ADTG3]   Reg: 1FB1  Data: 1508 ( 5384)
[ADTG3]   Reg: 106A  Data: 1F9F ( 8095)  [ADTG3]   Reg: 1FB3  Data: 1515 ( 5397)
[ADTG3]   Reg: 106F  Data: 0002 (    2)  [ADTG3]   Reg: 1FB5  Data: 0003 (    3)
[ADTG3]   Reg: 1070  Data: 000A (   10)  [ADTG3]   Reg: 1FA0  Data: 000C (   12)
[ADTG3]   Reg: 1081  Data: 000A (   10)  [ADTG3]   Reg: 1F01  Data: 000C (   12)
[ADTG3]   Reg: 1082  Data: 0001 (    1)  [ADTG3]   Reg: 1F03  Data: 0001 (    1)
[ADTG3]   Reg: 1088  Data: 0017 (   23)  [ADTG3]   Reg: 1F0F  Data: 001A (   26)
[ADTG3]   Reg: 1089  Data: 01C5 (  453)  [ADTG3]   Reg: 1F0E  Data: 0179 (  377)
[ADTG3]   Reg: 1097  Data: 001A (   26)  [ADTG3]   Reg: 1F1A  Data: 0013 (   19)
[ADTG3]   Reg: 1098  Data: 1E97 ( 7831)  [ADTG3]   Reg: 1F10  Data: 14E5 ( 5349)
[ADTG3]   Reg: 109D  Data: 00F0 (  240)  [ADTG3]   Reg: 1F16  Data: 00A0 (  160)
[ADTG3]   Reg: 109E  Data: 00A8 (  168)  [ADTG3]   Reg: 1F14  Data: 00CF (  207)
[ADTG3]   Reg: 109F  Data: 01C5 (  453)  [ADTG3]   Reg: 1F15  Data: 0179 (  377)
[ADTG3]   Reg: 10A0  Data: 0175 (  373)  [ADTG3]   Reg: 1F3F  Data: 01A6 (  422)
[ADTG3]   Reg: 10AE  Data: 0001 (    1)  [ADTG3]   Reg: 1F34  Data: 0001 (    1)
[ADTG3]   Reg: 10AF  Data: 0017 (   23)  [ADTG3]   Reg: 1F35  Data: 001A (   26)
[ADTG3]   Reg: 10B0  Data: 00D1 (  209)  [ADTG3]   Reg: 1F20  Data: 009E (  158)
[ADTG3]   Reg: 10B1  Data: 01CD (  461)  [ADTG3]   Reg: 1F21  Data: 0176 (  374)
[ADTG3]   Reg: 10C9  Data: 0001 (    1)  [ADTG3]   Reg: 1F71  Data: 0001 (    1)
[ADTG3]   Reg: 10CA  Data: 0017 (   23)  [ADTG3]   Reg: 1F73  Data: 001A (   26)
[ADTG3]   Reg: 10CB  Data: 0068 (  104)  [ADTG3]   Reg: 1F72  Data: 004F (   79)
[ADTG3]   Reg: 10CC  Data: 00DF (  223)  [ADTG3]   Reg: 1F77  Data: 0095 (  149)
[ADTG3]   Reg: 10E5  Data: 0001 (    1)  [ADTG3]   Reg: 1F46  Data: 0001 (    1)
[ADTG3]   Reg: 10E6  Data: 006F (  111)  [ADTG3]   Reg: 1F44  Data: 004A (   74)
[ADTG3]   Reg: 1101  Data: 0017 (   23)  [ADTG3]   Reg: 1E01  Data: 001A (   26)
[ADTG3]   Reg: 1102  Data: 01C5 (  453)  [ADTG3]   Reg: 1E03  Data: 0179 (  377)
[ADTG3]   Reg: 113A  Data: 0100 (  256)  [ADTG3]   Reg: 1E2C  Data: 01FF (  511)
[ADTG3]   Reg: 114D  Data: 01C4 (  452)  [ADTG3]   Reg: 1E76  Data: 0178 (  376)
[ADTG3]   Reg: 114E  Data: 01C7 (  455)  [ADTG3]   Reg: 1E74  Data: 017A (  378)
[ADTG3]   Reg: 114F  Data: 01C2 (  450)  [ADTG3]   Reg: 1E75  Data: 017C (  380)
[ADTG3]   Reg: 1155  Data: 0010 (   16)  [ADTG3]   Reg: 1E66  Data: 001F (   31)
[ADTG3]   Reg: 1170  Data: 0051 (   81)  [ADTG3]   Reg: 1E5F  Data: 0061 (   97)
[ADTG3]   Reg: 117A  Data: 0000 (    0)  [ADTG3]   Reg: 1E53  Data: 0000 (    0)
[ADTG3]   Reg: 117B  Data: 0000 (    0)  [ADTG3]   Reg: 1E52  Data: 0000 (    0)
[ADTG3]   Reg: 11A0  Data: 0000 (    0)  [ADTG3]   Reg: 1EC0  Data: 0000 (    0)
[ADTG3]   Reg: 11A2  Data: 0001 (    1)  [ADTG3]   Reg: 1EC3  Data: 0001 (    1)
[ADTG3]   Reg: 11A8  Data: 0001 (    1)  [ADTG3]   Reg: 1ECF  Data: 0001 (    1)
[ADTG3]   Reg: 11A9  Data: 0000 (    0)  [ADTG3]   Reg: 1ECE  Data: 0000 (    0)
[ADTG3]   Reg: 11AA  Data: 0AC6 ( 2758)  [ADTG3]   Reg: 1ECC  Data: 0C84 ( 3204)
[ADTG3]   Reg: 11AB  Data: 01C7 (  455)  [ADTG3]   Reg: 1ECD  Data: 017A (  378)
[ADTG3]   Reg: 11AC  Data: 01C1 (  449)  [ADTG3]   Reg: 1EC8  Data: 017E (  382)
[ADTG3]   Reg: 1201  Data: 0000 (    0)  [ADTG3]   Reg: 1C01  Data: 0000 (    0)
[ADTG3]   Reg: 1202  Data: 0000 (    0)  [ADTG3]   Reg: 1C03  Data: 0000 (    0)
[ADTG3]   Reg: 1203  Data: 0000 (    0)  [ADTG3]   Reg: 1C02  Data: 0000 (    0)
[ADTG3]   Reg: 1204  Data: 0000 (    0)  [ADTG3]   Reg: 1C07  Data: 0000 (    0)
[ADTG3]   Reg: 1205  Data: 0000 (    0)  [ADTG3]   Reg: 1C06  Data: 0000 (    0)
[ADTG3]   Reg: 1206  Data: 0000 (    0)  [ADTG3]   Reg: 1C04  Data: 0000 (    0)
[ADTG3]   Reg: 1207  Data: 0004 (    4)  [ADTG3]   Reg: 1C05  Data: 0007 (    7)
[ADTG3]   Reg: 1208  Data: 0008 (    8)  [ADTG3]   Reg: 1C0F  Data: 000F (   15)
[ADTG3]   Reg: 1209  Data: 0008 (    8)  [ADTG3]   Reg: 1C0E  Data: 000F (   15)
[ADTG3]   Reg: 120A  Data: 0AC6 ( 2758)  [ADTG3]   Reg: 1C0C  Data: 0C84 ( 3204)
[ADTG3]   Reg: 1219  Data: 0149 (  329)  [ADTG3]   Reg: 1C11  Data: 018E (  398)
[ADTG3]   Reg: 121A  Data: 0159 (  345)  [ADTG3]   Reg: 1C13  Data: 0191 (  401)
[ADTG3]   Reg: 1231  Data: 0000 (    0)  [ADTG3]   Reg: 1C21  Data: 0000 (    0)
[ADTG3]   Reg: 1232  Data: 0000 (    0)  [ADTG3]   Reg: 1C23  Data: 0000 (    0)
[ADTG3]   Reg: 1233  Data: 0176 (  374)  [ADTG3]   Reg: 1C22  Data: 01A4 (  420)
[ADTG3]   Reg: 1234  Data: 07D6 ( 2006)  [ADTG3]   Reg: 1C27  Data: 0564 ( 1380)
[ADTG3]   Reg: 1235  Data: 0176 (  374)  [ADTG3]   Reg: 1C26  Data: 01A4 (  420)
[ADTG3]   Reg: 1236  Data: 07D6 ( 2006)  [ADTG3]   Reg: 1C24  Data: 0564 ( 1380)
[ADTG3]   Reg: 1237  Data: 0176 (  374)  [ADTG3]   Reg: 1C25  Data: 01A4 (  420)
[ADTG3]   Reg: 1238  Data: 07D6 ( 2006)  [ADTG3]   Reg: 1C2F  Data: 0564 ( 1380)
[ADTG3]   Reg: 1243  Data: 02CE (  718)  [ADTG3]   Reg: 1C7D  Data: 0374 (  884)
[ADTG3]   Reg: 1245  Data: 000C (   12)  [ADTG3]   Reg: 1C79  Data: 0008 (    8)
[ADTG3]   Reg: 1248  Data: 023E (  574)  [ADTG3]   Reg: 1C70  Data: 03D4 (  980)
[ADTG3]   Reg: 1249  Data: 0234 (  564)  [ADTG3]   Reg: 1C71  Data: 03D8 (  984)
[ADTG3]   Reg: 124A  Data: 010E (  270)  [ADTG3]   Reg: 1C73  Data: 01F4 (  500)
[ADTG3]   Reg: 124B  Data: 0104 (  260)  [ADTG3]   Reg: 1C72  Data: 01F8 (  504)
[ADTG3]   Reg: 124C  Data: 010E (  270)  [ADTG3]   Reg: 1C77  Data: 01F4 (  500)
[ADTG3]   Reg: 124D  Data: 0104 (  260)  [ADTG3]   Reg: 1C76  Data: 01F8 (  504)
[ADTG3]   Reg: 124E  Data: 010E (  270)  [ADTG3]   Reg: 1C74  Data: 01F4 (  500)
[ADTG3]   Reg: 124F  Data: 0104 (  260)  [ADTG3]   Reg: 1C75  Data: 01F8 (  504)
[ADTG3]   Reg: 1264  Data: 000C (   12)  [ADTG3]   Reg: 1C47  Data: 0008 (    8)
[ADTG3]   Reg: 1265  Data: 000F (   15)  [ADTG3]   Reg: 1C46  Data: 000A (   10)
[ADTG3]   Reg: 1266  Data: 000A (   10)  [ADTG3]   Reg: 1C44  Data: 000C (   12)
[ADTG3]   Reg: 1267  Data: 0009 (    9)  [ADTG3]   Reg: 1C45  Data: 000E (   14)
[ADTG3]   Reg: 1279  Data: 91CB (37323)  [ADTG3]   Reg: 1C51  Data: E172 (57714)
[ADTG3]   Reg: 127A  Data: 0200 (  512)  [ADTG3]   Reg: 1C53  Data: 03FF ( 1023)
[ADTG3]   Reg: 0013  Data: 8004 (32772)  [ADTG3]   Reg: 001D  Data: FFF8 (65528)
[ADTG3]   Reg: 0014  Data: 0000 (    0)  [ADTG3]   Reg: 0018  Data: 0000 (    0)
[ADTG3]   Reg: 0015  Data: 0000 (    0)  [ADTG3]   Reg: 0019  Data: 0000 (    0)
[CMOS]    Reg:    0  Data:  000  (   0)  [CMOS]    Reg:    0  Data:  000  (   0)
[CMOS]    Reg:    1  Data:  001  (   1)  [CMOS]    Reg:    1  Data:  001  (   1)
[CMOS]    Reg:    2  Data:  000  (   0)  [CMOS]    Reg:    2  Data:  000  (   0)
[CMOS]    Reg:    3  Data:  810  (2064)  [CMOS]    Reg:    3  Data:  FE0  (4064)
[CMOS]    Reg:    4  Data:  C05  (3077)  [CMOS]    Reg:    4  Data:  806  (2054)
[CMOS]    Reg:    5  Data:  000  (   0)  [CMOS]    Reg:    5  Data:  000  (   0)
[CMOS]    Reg:    6  Data:  081  ( 129)  [CMOS]    Reg:    6  Data:  0FE  ( 254)
[ADTG3]   Reg: 1000  Data: 0003 (    3)  [ADTG3]   Reg: 1FFF  Data: 0002 (    2)
[ADTG3]   Reg: 1200  Data: 0002 (    2)  [ADTG3]   Reg: 1C00  Data: 0003 (    3)
[ADTG3]   Reg: 124A  Data: 010E (  270)  [ADTG3]   Reg: 1C73  Data: 01F4 (  500)
[ADTG3]   Reg: 124B  Data: 0104 (  260)  [ADTG3]   Reg: 1C72  Data: 01F8 (  504)
[ADTG3]   Reg: 124C  Data: 010E (  270)  [ADTG3]   Reg: 1C77  Data: 01F4 (  500)
[ADTG3]   Reg: 124D  Data: 0104 (  260)  [ADTG3]   Reg: 1C76  Data: 01F8 (  504)
[ADTG3]   Reg: 124E  Data: 010E (  270)  [ADTG3]   Reg: 1C74  Data: 01F4 (  500)
[ADTG3]   Reg: 124F  Data: 0104 (  260)  [ADTG3]   Reg: 1C75  Data: 01F8 (  504)
[ADTG3]   Reg: 1026  Data: 0006 (    6)  [ADTG3]   Reg: 1FC4  Data: 0004 (    4)
[ADTG3]   Reg: 1027  Data: 0019 (   25)  [ADTG3]   Reg: 1FC5  Data: 0011 (   17)
[ADTG3]   Reg: 1097  Data: 001A (   26)  [ADTG3]   Reg: 1F1A  Data: 0013 (   19)
[ADTG3]   Reg: 1098  Data: 1E97 ( 7831)  [ADTG3]   Reg: 1F10  Data: 14E5 ( 5349)
[ADTG3]   Reg: 106C  Data: 0000 (    0)  [ADTG3]   Reg: 1FB7  Data: 0000 (    0)
[ADTG3]   Reg: 109A  Data: 0000 (    0)  [ADTG3]   Reg: 1F13  Data: 0000 (    0)
[ADTG3]   Reg: 1000  Data: 0005 (    5)  [ADTG3]   Reg: 1FFF  Data: 0006 (    6)
[ADTG3]   Reg: 1200  Data: 0001 (    1)  [ADTG3]   Reg: 1C00  Data: 0001 (    1)
[ADTG3]   Reg: 1113  Data: 0000 (    0)  [ADTG3]   Reg: 1E1D  Data: 0000 (    0)
[ADTG3]   Reg: 0009  Data: 2B0B (11019)  [ADTG3]   Reg: 000E  Data: 320D (12813)
[ADTG3]   Reg: 000B  Data: AB0B (43787)  [ADTG3]   Reg: 000D  Data: CDF2 (52722)
[ADTG3]   Reg: 0000  Data: 0149 (  329)  [ADTG3]   Reg: 0000  Data: 018E (  398)
[ADTG3]   Reg: 0003  Data: 014A (  330)  [ADTG3]   Reg: 0002  Data: 018C (  396)
[ADTG3]   Reg: 0013  Data: 8000 (32768)  [ADTG3]   Reg: 001D  Data: FFFF (65535)
[ADTG3]   Reg: 0002  Data: E44C (58444)  [ADTG3]   Reg: 0003  Data: B877 (47223)
[CMOS]    Reg:    0  Data:  000  (   0)  [CMOS]    Reg:    0  Data:  000  (   0)
[ADTG3]   Reg: 1170  Data: 0011 (   17)  [ADTG3]   Reg: 1E5F  Data: 001E (   30)
[ADTG3]   Reg: 1000  Data: 0000 (    0)  [ADTG3]   Reg: 1FFF  Data: 0000 (    0)
[ADTG3]   Reg: 1200  Data: 0000 (    0)  [ADTG3]   Reg: 1C00  Data: 0000 (    0)
[ADTG3]   Reg: 1170  Data: 0051 (   81)  [ADTG3]   Reg: 1E5F  Data: 0061 (   97)
[ADTG3]   Reg: 0013  Data: 8004 (32772)  [ADTG3]   Reg: 001D  Data: FFF8 (65528)
Title: Re: ADTG and CMOS registers
Post by: Greg on August 26, 2013, 04:56:36 PM
1/200 F4.5 ISO 200 no LV (photo mode) :
Code: [Select]
[ADTG3]   Reg: 0007  Data: 4046 (16454)  [ADTG3]   Reg: 0005  Data: 7F84 (32644)
[ADTG3]   Reg: 0002  Data: 804C (32844)  [ADTG3]   Reg: 0003  Data: FF88 (65416)
[ADTG3]   Reg: 0002  Data: A44C (42060)  [ADTG3]   Reg: 0003  Data: C788 (51080)
[ADTG3]   Reg: 0000  Data: 0111 (  273)  [ADTG3]   Reg: 0000  Data: 01E1 (  481)
[ADTG3]   Reg: 0001  Data: E004 (57348)  [ADTG3]   Reg: 0001  Data: BFF8 (49144)
[ADTG3]   Reg: 0003  Data: 0111 (  273)  [ADTG3]   Reg: 0002  Data: 01E1 (  481)
[ADTG3]   Reg: 0004  Data: 0800 ( 2048)  [ADTG3]   Reg: 0007  Data: 0FFF ( 4095)
[ADTG3]   Reg: 0006  Data: 7000 (28672)  [ADTG3]   Reg: 0004  Data: 5FFF (24575)
[ADTG3]   Reg: 0009  Data: 3212 (12818)  [ADTG3]   Reg: 000E  Data: 23E3 ( 9187)
[ADTG3]   Reg: 000A  Data: 8000 (32768)  [ADTG3]   Reg: 000C  Data: FFFF (65535)
[ADTG3]   Reg: 000B  Data: B212 (45586)  [ADTG3]   Reg: 000D  Data: DC1C (56348)
[ADTG3]   Reg: 000D  Data: 7800 (30720)  [ADTG3]   Reg: 0009  Data: 5000 (20480)
[ADTG3]   Reg: 0010  Data: 0828 ( 2088)  [ADTG3]   Reg: 001F  Data: 0FCF ( 4047)
[ADTG3]   Reg: 0011  Data: 0828 ( 2088)  [ADTG3]   Reg: 001E  Data: 0FCF ( 4047)
[ADTG3]   Reg: 0012  Data: 003B (   59)  [ADTG3]   Reg: 001C  Data: 002D (   45)
[ADTG3]   Reg: 0013  Data: 8004 (32772)  [ADTG3]   Reg: 001D  Data: FFF8 (65528)
[ADTG3]   Reg: 0017  Data: 0030 (   48)  [ADTG3]   Reg: 001A  Data: 0020 (   32)
[ADTG3]   Reg: 1280  Data: 0001 (    1)  [ADTG3]   Reg: 1CFF  Data: 0001 (    1)
[ADTG3]   Reg: 11A4  Data: 2C01 (11265)  [ADTG3]   Reg: 1EC7  Data: 37FE (14334)
[ADTG3]   Reg: 102C  Data: 0001 (    1)  [ADTG3]   Reg: 1FC8  Data: 0001 (    1)
[ADTG3]   Reg: 102C  Data: 0000 (    0)  [ADTG3]   Reg: 1FC8  Data: 0000 (    0)
[ADTG3]   Reg: 1130  Data: 0001 (    1)  [ADTG3]   Reg: 1E20  Data: 0001 (    1)
[ADTG3]   Reg: 1130  Data: 0000 (    0)  [ADTG3]   Reg: 1E20  Data: 0000 (    0)
[ADTG3]   Reg: 1003  Data: 3000 (12288)  [ADTG3]   Reg: 1FFD  Data: 2000 ( 8192)
[ADTG3]   Reg: 1006  Data: 068B ( 1675)  [ADTG3]   Reg: 1FFB  Data: 04F2 ( 1266)
[ADTG3]   Reg: 100A  Data: 0001 (    1)  [ADTG3]   Reg: 1FF3  Data: 0001 (    1)
[ADTG3]   Reg: 1026  Data: 0006 (    6)  [ADTG3]   Reg: 1FC4  Data: 0004 (    4)
[ADTG3]   Reg: 1027  Data: 0019 (   25)  [ADTG3]   Reg: 1FC5  Data: 0011 (   17)
[ADTG3]   Reg: 102F  Data: 1E9A ( 7834)  [ADTG3]   Reg: 1FCA  Data: 14EC ( 5356)
[ADTG3]   Reg: 1030  Data: 1E85 ( 7813)  [ADTG3]   Reg: 1FDF  Data: 14F9 ( 5369)
[ADTG3]   Reg: 104A  Data: 1F80 ( 8064)  [ADTG3]   Reg: 1F8C  Data: 1500 ( 5376)
[ADTG3]   Reg: 104B  Data: 1F93 ( 8083)  [ADTG3]   Reg: 1F8D  Data: 151D ( 5405)
[ADTG3]   Reg: 1069  Data: 1F8C ( 8076)  [ADTG3]   Reg: 1FB1  Data: 1508 ( 5384)
[ADTG3]   Reg: 106A  Data: 1F9F ( 8095)  [ADTG3]   Reg: 1FB3  Data: 1515 ( 5397)
[ADTG3]   Reg: 106F  Data: 0002 (    2)  [ADTG3]   Reg: 1FB5  Data: 0003 (    3)
[ADTG3]   Reg: 1070  Data: 000A (   10)  [ADTG3]   Reg: 1FA0  Data: 000C (   12)
[ADTG3]   Reg: 1081  Data: 000A (   10)  [ADTG3]   Reg: 1F01  Data: 000C (   12)
[ADTG3]   Reg: 1082  Data: 0001 (    1)  [ADTG3]   Reg: 1F03  Data: 0001 (    1)
[ADTG3]   Reg: 1088  Data: 0017 (   23)  [ADTG3]   Reg: 1F0F  Data: 001A (   26)
[ADTG3]   Reg: 1089  Data: 01C5 (  453)  [ADTG3]   Reg: 1F0E  Data: 0179 (  377)
[ADTG3]   Reg: 1097  Data: 001A (   26)  [ADTG3]   Reg: 1F1A  Data: 0013 (   19)
[ADTG3]   Reg: 1098  Data: 1E97 ( 7831)  [ADTG3]   Reg: 1F10  Data: 14E5 ( 5349)
[ADTG3]   Reg: 109D  Data: 00F0 (  240)  [ADTG3]   Reg: 1F16  Data: 00A0 (  160)
[ADTG3]   Reg: 109E  Data: 00A8 (  168)  [ADTG3]   Reg: 1F14  Data: 00CF (  207)
[ADTG3]   Reg: 109F  Data: 01C5 (  453)  [ADTG3]   Reg: 1F15  Data: 0179 (  377)
[ADTG3]   Reg: 10A0  Data: 0175 (  373)  [ADTG3]   Reg: 1F3F  Data: 01A6 (  422)
[ADTG3]   Reg: 10AE  Data: 0001 (    1)  [ADTG3]   Reg: 1F34  Data: 0001 (    1)
[ADTG3]   Reg: 10AF  Data: 0017 (   23)  [ADTG3]   Reg: 1F35  Data: 001A (   26)
[ADTG3]   Reg: 10B0  Data: 00D1 (  209)  [ADTG3]   Reg: 1F20  Data: 009E (  158)
[ADTG3]   Reg: 10B1  Data: 01CD (  461)  [ADTG3]   Reg: 1F21  Data: 0176 (  374)
[ADTG3]   Reg: 10C9  Data: 0001 (    1)  [ADTG3]   Reg: 1F71  Data: 0001 (    1)
[ADTG3]   Reg: 10CA  Data: 0017 (   23)  [ADTG3]   Reg: 1F73  Data: 001A (   26)
[ADTG3]   Reg: 10CB  Data: 0068 (  104)  [ADTG3]   Reg: 1F72  Data: 004F (   79)
[ADTG3]   Reg: 10CC  Data: 00DF (  223)  [ADTG3]   Reg: 1F77  Data: 0095 (  149)
[ADTG3]   Reg: 10E5  Data: 0001 (    1)  [ADTG3]   Reg: 1F46  Data: 0001 (    1)
[ADTG3]   Reg: 10E6  Data: 006F (  111)  [ADTG3]   Reg: 1F44  Data: 004A (   74)
[ADTG3]   Reg: 1101  Data: 0017 (   23)  [ADTG3]   Reg: 1E01  Data: 001A (   26)
[ADTG3]   Reg: 1102  Data: 01C5 (  453)  [ADTG3]   Reg: 1E03  Data: 0179 (  377)
[ADTG3]   Reg: 113A  Data: 0100 (  256)  [ADTG3]   Reg: 1E2C  Data: 01FF (  511)
[ADTG3]   Reg: 114D  Data: 01C4 (  452)  [ADTG3]   Reg: 1E76  Data: 0178 (  376)
[ADTG3]   Reg: 114E  Data: 01C7 (  455)  [ADTG3]   Reg: 1E74  Data: 017A (  378)
[ADTG3]   Reg: 114F  Data: 01C2 (  450)  [ADTG3]   Reg: 1E75  Data: 017C (  380)
[ADTG3]   Reg: 1155  Data: 0010 (   16)  [ADTG3]   Reg: 1E66  Data: 001F (   31)
[ADTG3]   Reg: 1170  Data: 0051 (   81)  [ADTG3]   Reg: 1E5F  Data: 0061 (   97)
[ADTG3]   Reg: 117A  Data: 0000 (    0)  [ADTG3]   Reg: 1E53  Data: 0000 (    0)
[ADTG3]   Reg: 117B  Data: 0000 (    0)  [ADTG3]   Reg: 1E52  Data: 0000 (    0)
[ADTG3]   Reg: 11A0  Data: 0000 (    0)  [ADTG3]   Reg: 1EC0  Data: 0000 (    0)
[ADTG3]   Reg: 11A2  Data: 0001 (    1)  [ADTG3]   Reg: 1EC3  Data: 0001 (    1)
[ADTG3]   Reg: 11A8  Data: 0001 (    1)  [ADTG3]   Reg: 1ECF  Data: 0001 (    1)
[ADTG3]   Reg: 11A9  Data: 0000 (    0)  [ADTG3]   Reg: 1ECE  Data: 0000 (    0)
[ADTG3]   Reg: 11AA  Data: 0AC6 ( 2758)  [ADTG3]   Reg: 1ECC  Data: 0C84 ( 3204)
[ADTG3]   Reg: 11AB  Data: 01C7 (  455)  [ADTG3]   Reg: 1ECD  Data: 017A (  378)
[ADTG3]   Reg: 11AC  Data: 01C1 (  449)  [ADTG3]   Reg: 1EC8  Data: 017E (  382)
[ADTG3]   Reg: 1201  Data: 0000 (    0)  [ADTG3]   Reg: 1C01  Data: 0000 (    0)
[ADTG3]   Reg: 1202  Data: 0000 (    0)  [ADTG3]   Reg: 1C03  Data: 0000 (    0)
[ADTG3]   Reg: 1203  Data: 0000 (    0)  [ADTG3]   Reg: 1C02  Data: 0000 (    0)
[ADTG3]   Reg: 1204  Data: 0000 (    0)  [ADTG3]   Reg: 1C07  Data: 0000 (    0)
[ADTG3]   Reg: 1205  Data: 0000 (    0)  [ADTG3]   Reg: 1C06  Data: 0000 (    0)
[ADTG3]   Reg: 1206  Data: 0000 (    0)  [ADTG3]   Reg: 1C04  Data: 0000 (    0)
[ADTG3]   Reg: 1207  Data: 0004 (    4)  [ADTG3]   Reg: 1C05  Data: 0007 (    7)
[ADTG3]   Reg: 1208  Data: 0008 (    8)  [ADTG3]   Reg: 1C0F  Data: 000F (   15)
[ADTG3]   Reg: 1209  Data: 0008 (    8)  [ADTG3]   Reg: 1C0E  Data: 000F (   15)
[ADTG3]   Reg: 120A  Data: 0AC6 ( 2758)  [ADTG3]   Reg: 1C0C  Data: 0C84 ( 3204)
[ADTG3]   Reg: 1219  Data: 0149 (  329)  [ADTG3]   Reg: 1C11  Data: 018E (  398)
[ADTG3]   Reg: 121A  Data: 0159 (  345)  [ADTG3]   Reg: 1C13  Data: 0191 (  401)
[ADTG3]   Reg: 1231  Data: 0000 (    0)  [ADTG3]   Reg: 1C21  Data: 0000 (    0)
[ADTG3]   Reg: 1232  Data: 0000 (    0)  [ADTG3]   Reg: 1C23  Data: 0000 (    0)
[ADTG3]   Reg: 1233  Data: 0176 (  374)  [ADTG3]   Reg: 1C22  Data: 01A4 (  420)
[ADTG3]   Reg: 1234  Data: 07D6 ( 2006)  [ADTG3]   Reg: 1C27  Data: 0564 ( 1380)
[ADTG3]   Reg: 1235  Data: 0176 (  374)  [ADTG3]   Reg: 1C26  Data: 01A4 (  420)
[ADTG3]   Reg: 1236  Data: 07D6 ( 2006)  [ADTG3]   Reg: 1C24  Data: 0564 ( 1380)
[ADTG3]   Reg: 1237  Data: 0176 (  374)  [ADTG3]   Reg: 1C25  Data: 01A4 (  420)
[ADTG3]   Reg: 1238  Data: 07D6 ( 2006)  [ADTG3]   Reg: 1C2F  Data: 0564 ( 1380)
[ADTG3]   Reg: 1243  Data: 02CE (  718)  [ADTG3]   Reg: 1C7D  Data: 0374 (  884)
[ADTG3]   Reg: 1245  Data: 000C (   12)  [ADTG3]   Reg: 1C79  Data: 0008 (    8)
[ADTG3]   Reg: 1248  Data: 023E (  574)  [ADTG3]   Reg: 1C70  Data: 03D4 (  980)
[ADTG3]   Reg: 1249  Data: 0234 (  564)  [ADTG3]   Reg: 1C71  Data: 03D8 (  984)
[ADTG3]   Reg: 124A  Data: 010E (  270)  [ADTG3]   Reg: 1C73  Data: 01F4 (  500)
[ADTG3]   Reg: 124B  Data: 0104 (  260)  [ADTG3]   Reg: 1C72  Data: 01F8 (  504)
[ADTG3]   Reg: 124C  Data: 010E (  270)  [ADTG3]   Reg: 1C77  Data: 01F4 (  500)
[ADTG3]   Reg: 124D  Data: 0104 (  260)  [ADTG3]   Reg: 1C76  Data: 01F8 (  504)
[ADTG3]   Reg: 124E  Data: 010E (  270)  [ADTG3]   Reg: 1C74  Data: 01F4 (  500)
[ADTG3]   Reg: 124F  Data: 0104 (  260)  [ADTG3]   Reg: 1C75  Data: 01F8 (  504)
[ADTG3]   Reg: 1264  Data: 000C (   12)  [ADTG3]   Reg: 1C47  Data: 0008 (    8)
[ADTG3]   Reg: 1265  Data: 000F (   15)  [ADTG3]   Reg: 1C46  Data: 000A (   10)
[ADTG3]   Reg: 1266  Data: 000A (   10)  [ADTG3]   Reg: 1C44  Data: 000C (   12)
[ADTG3]   Reg: 1267  Data: 0009 (    9)  [ADTG3]   Reg: 1C45  Data: 000E (   14)
[ADTG3]   Reg: 1279  Data: 91CB (37323)  [ADTG3]   Reg: 1C51  Data: E172 (57714)
[ADTG3]   Reg: 127A  Data: 0200 (  512)  [ADTG3]   Reg: 1C53  Data: 03FF ( 1023)
[ADTG3]   Reg: 0013  Data: 8004 (32772)  [ADTG3]   Reg: 001D  Data: FFF8 (65528)
[ADTG3]   Reg: 0014  Data: 0000 (    0)  [ADTG3]   Reg: 0018  Data: 0000 (    0)
[ADTG3]   Reg: 0015  Data: 0000 (    0)  [ADTG3]   Reg: 0019  Data: 0000 (    0)
[CMOS]    Reg:    0  Data:  000  (   0)  [CMOS]    Reg:    0  Data:  000  (   0)
[CMOS]    Reg:    1  Data:  001  (   1)  [CMOS]    Reg:    1  Data:  001  (   1)
[CMOS]    Reg:    2  Data:  000  (   0)  [CMOS]    Reg:    2  Data:  000  (   0)
[CMOS]    Reg:    3  Data:  810  (2064)  [CMOS]    Reg:    3  Data:  FE0  (4064)
[CMOS]    Reg:    4  Data:  C05  (3077)  [CMOS]    Reg:    4  Data:  806  (2054)
[CMOS]    Reg:    5  Data:  000  (   0)  [CMOS]    Reg:    5  Data:  000  (   0)
[CMOS]    Reg:    6  Data:  081  ( 129)  [CMOS]    Reg:    6  Data:  0FE  ( 254)
[ADTG3]   Reg: 1000  Data: 0003 (    3)  [ADTG3]   Reg: 1FFF  Data: 0002 (    2)
[ADTG3]   Reg: 1200  Data: 0002 (    2)  [ADTG3]   Reg: 1C00  Data: 0003 (    3)
[ADTG3]   Reg: 124A  Data: 010E (  270)  [ADTG3]   Reg: 1C73  Data: 01F4 (  500)
[ADTG3]   Reg: 124B  Data: 0104 (  260)  [ADTG3]   Reg: 1C72  Data: 01F8 (  504)
[ADTG3]   Reg: 124C  Data: 010E (  270)  [ADTG3]   Reg: 1C77  Data: 01F4 (  500)
[ADTG3]   Reg: 124D  Data: 0104 (  260)  [ADTG3]   Reg: 1C76  Data: 01F8 (  504)
[ADTG3]   Reg: 124E  Data: 010E (  270)  [ADTG3]   Reg: 1C74  Data: 01F4 (  500)
[ADTG3]   Reg: 124F  Data: 0104 (  260)  [ADTG3]   Reg: 1C75  Data: 01F8 (  504)
[ADTG3]   Reg: 1026  Data: 0006 (    6)  [ADTG3]   Reg: 1FC4  Data: 0004 (    4)
[ADTG3]   Reg: 1027  Data: 0019 (   25)  [ADTG3]   Reg: 1FC5  Data: 0011 (   17)
[ADTG3]   Reg: 1097  Data: 001A (   26)  [ADTG3]   Reg: 1F1A  Data: 0013 (   19)
[ADTG3]   Reg: 1098  Data: 1E97 ( 7831)  [ADTG3]   Reg: 1F10  Data: 14E5 ( 5349)
[ADTG3]   Reg: 106C  Data: 0000 (    0)  [ADTG3]   Reg: 1FB7  Data: 0000 (    0)
[ADTG3]   Reg: 109A  Data: 0000 (    0)  [ADTG3]   Reg: 1F13  Data: 0000 (    0)
[ADTG3]   Reg: 1000  Data: 0005 (    5)  [ADTG3]   Reg: 1FFF  Data: 0006 (    6)
[ADTG3]   Reg: 1200  Data: 0001 (    1)  [ADTG3]   Reg: 1C00  Data: 0001 (    1)
[ADTG3]   Reg: 1113  Data: 0000 (    0)  [ADTG3]   Reg: 1E1D  Data: 0000 (    0)
[ADTG3]   Reg: 0009  Data: 2B0B (11019)  [ADTG3]   Reg: 000E  Data: 320D (12813)
[ADTG3]   Reg: 000B  Data: AB0B (43787)  [ADTG3]   Reg: 000D  Data: CDF2 (52722)
[ADTG3]   Reg: 0000  Data: 0149 (  329)  [ADTG3]   Reg: 0000  Data: 018E (  398)
[ADTG3]   Reg: 0003  Data: 014A (  330)  [ADTG3]   Reg: 0002  Data: 018C (  396)
[ADTG3]   Reg: 0013  Data: 8000 (32768)  [ADTG3]   Reg: 001D  Data: FFFF (65535)
[ADTG3]   Reg: 0002  Data: E44C (58444)  [ADTG3]   Reg: 0003  Data: B877 (47223)
[CMOS]    Reg:    0  Data:  090  ( 144)  [CMOS]    Reg:    0  Data:  0E0  ( 224)
[ADTG3]   Reg: 1170  Data: 0011 (   17)  [ADTG3]   Reg: 1E5F  Data: 001E (   30)
[ADTG3]   Reg: 1000  Data: 0000 (    0)  [ADTG3]   Reg: 1FFF  Data: 0000 (    0)
[ADTG3]   Reg: 1200  Data: 0000 (    0)  [ADTG3]   Reg: 1C00  Data: 0000 (    0)
[ADTG3]   Reg: 1170  Data: 0051 (   81)  [ADTG3]   Reg: 1E5F  Data: 0061 (   97)
[ADTG3]   Reg: 0013  Data: 8004 (32772)  [ADTG3]   Reg: 001D  Data: FFF8 (65528)
Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 26, 2013, 05:07:54 PM
For 500D
//  00 0000 405C56C2  = 100
//  00 0090 405C56D0  = 200
//  00 01B0 405C56DE  = 400
//  00 01F8 405C56EC  = 800
//  00 0168 405C56FA  = 1600

Is what I got in Photo Mode but getting PH err 2

Not sure what to set these at
        CMOS_ISO_BITS = 3;
        CMOS_FLAG_BITS = 3;
        CMOS_EXPECTED_FLAG = 4;

But for these I put
        PHOTO_CMOS_ISO_START = 0x405C56C2; // CMOS register 0000 - for photo mode, ISO 100
        PHOTO_CMOS_ISO_COUNT =          5; // from ISO 100 to 1600
        PHOTO_CMOS_ISO_SIZE  =         14; // distance between ISO 100 and ISO 200 addresses, in bytes

Live view while getting values flickered the screen so prob not going to be a live view cam
Title: Re: ADTG and CMOS registers
Post by: 1% on August 26, 2013, 05:13:06 PM
Break them out into binary to see the flags.

E is the right spacing, expected flag is what that ISOISO[XXX] is. It would be 4 to binary with what you have here.

For LV the regs are different, it can flicker and do funny stuff but if the reg changes you are likely most of the way there. The logging does really wack stuff to 6D while its working, flicker, purple, etc.

You can comment out or remove some of the warnings/holdups, they are different for different cameras.


Title: Re: ADTG and CMOS registers
Post by: Greg on August 26, 2013, 06:19:48 PM
I use :

Code: [Select]
CMOS_ISO_BITS = 3;
CMOS_FLAG_BITS = 3;
CMOS_EXPECTED_FLAG = 0;

Code: [Select]
if ( (iso1 < prev_iso) && !is_500d) /* the list should be ascending */

                return 4;

(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fimageshack.us%2Fa%2Fimg163%2F6874%2Fnndk.jpg&hash=93c4e2c422172709803f111d5a4bb68e)
 ;D
Title: Re: ADTG and CMOS registers
Post by: Greg on August 26, 2013, 06:31:23 PM
First test 500D :

ISO 100
http://imageshack.us/a/img191/4602/pmom.jpg

Dual ISO 100-800
http://imageshack.us/a/img829/8850/5jay.jpg

shadow is green
Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 26, 2013, 06:31:43 PM
I use :

Code: [Select]
if ( (iso1 < prev_iso) && !is_500d) /* the list should be ascending */

                return 4;

lol, I knew i forgot to add something lol
Title: Re: ADTG and CMOS registers
Post by: 1% on August 26, 2013, 06:37:12 PM
50D had green shadows problem too with the windows version of the converter. Try on other OS.
Title: Re: ADTG and CMOS registers
Post by: dlrpgmsvc on August 26, 2013, 07:37:19 PM
Now that mk11174 managed on how to find the registers to do Dual ISO for video also for 550D, do it's easier to find also them for 50D, that is doing only dual ISO for photo ? If someone can tell me the current state-of-the art on dual iso for video on 50D, I can inform me from mk11174 on how to proceed also for 50D ! Many thanks anyone !  ;)
Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 26, 2013, 07:45:50 PM
In Live View Movie Mode 500D
I dont see the address changing even when I switch ISO using ISO lOCK or ML  but the numbers before the addresses change?

ISO 100
/* 00:00:00.239508  */     00 0000 405C62AC
/* 00:00:00.239565  */     01 0001 405C62AE
/* 00:00:00.239619  */     02 0000 405C62B0
/* 00:00:00.239672  */     03 0818 405C62B2
/* 00:00:00.239727  */     04 0C0D 405C62B4
/* 00:00:00.239776  */     05 0400 405C62B6
/* 00:00:00.239827  */     06 01B1 405C62B8


ISO 200
/* 00:00:00.006544  */     00 0090 405C62AC
/* 00:00:00.006591  */     01 0001 405C62AE
/* 00:00:00.006638  */     02 0000 405C62B0
/* 00:00:00.006683  */     03 0818 405C62B2
/* 00:00:00.006725  */     04 0C0D 405C62B4
/* 00:00:00.006767  */     05 0400 405C62B6
/* 00:00:00.006810  */     06 01B1 405C62B8
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on August 26, 2013, 08:52:19 PM
I dont see the address changing even when I switch ISO using ISO lOCK or ML  but the numbers before the addresses change?

the number in front of the address is the value written into the register :)
Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 26, 2013, 10:02:12 PM
the number in front of the address is the value written into the register :)
But since the register is not changing does this mean Live View will not work out? I am trying to figure out the differ between 100 and 200 for Live View? I did not have this issue on the 550D cause the register changed as well?

It acts like it is a digital setting when in PHOTO Mode if you try to go up from 1600 - 3200 it just changes the value written into the register, but the 1600 register does not change. So does that mean the 500D is all digital values from 100 ISO so it can't be used with Dual ISO?

If anyone knows, please tell me so I am not wasting my time, LOL!
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 27, 2013, 10:15:16 AM
They are not
[edit:] Got it to work by adding gdb.o to src/Makefile.src
btw I'm using g3gg0's bitbucket
I'm trying to get this to work on my 60d but I get the same error as vroem
where / how do I add gdb.o into makefile.src?
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 27, 2013, 11:36:10 PM
I tried copying the gdb values from makefile.src.config into makfile.src but I still get the same error

tcc: error: undefined symbol 'gdb_setup'
tcc: error: undefined symbol 'gdb_delete_bkpt'
tcc: error: undefined symbol 'gdb_add_watchpoint'
   [E] failed to link modules

I'm using the latest from here: https://bitbucket.org/hudson/magic-lantern (https://bitbucket.org/hudson/magic-lantern) 
With the adtg_log module from here: https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/src/00c59f38f28a02170ab1ce8bedea7fbf285ed692/modules/adtg_log?at=unified (https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/src/00c59f38f28a02170ab1ce8bedea7fbf285ed692/modules/adtg_log?at=unified)
Title: Re: ADTG and CMOS registers
Post by: 1% on August 28, 2013, 01:24:16 AM
50D/500D are a similar generation. If the reg isn't changing and only the value is then it probably won't work for LV. Try setting it manually and see what happens, when I did on 50D it was big fat nothing.

Title: Re: ADTG and CMOS registers
Post by: mk11174 on August 28, 2013, 02:47:37 AM
50D/500D are a similar generation. If the reg isn't changing and only the value is then it probably won't work for LV. Try setting it manually and see what happens, when I did on 50D it was big fat nothing.
Yep, same, I am glad I have a 550D and now a 600D, I only wanted to get it to work for others, but it clearly wont, at least it was tried for, just a bust.
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 11:05:56 AM
I wanted some way to inspect and modify the ADTG registers directly from menu, not via log files (so I could play with it in the train, for example) => I wrote a modified version of adtg_log: it's adtg_gui (https://bitbucket.org/hudson/magic-lantern/commits/3f752403dbdb). Now that's it seems to work pretty smoothly, I thought you may find it useful.

Warning: this is not a toy; it can destroy your sensor.

What's different from adtg_log:

- it appears in Debug menu

- no log files, it's all in the menu

- all intercepted registers are displayed after Canon code touches them
   => [photo mode] first enable logging - simply open the ADTG registers menu - then take a picture, for example, then look in menu again
   => [LiveView] some registers are updated continuously, but there are a lot more that are updated when changing video modes or when going in and out of LiveView (so, to see everything, first open ADTG menu to enable logging, then go to LiveView, then look in menu again)

- for registers that we have some idea about what they do, it displays a short description
  => you can add help lines if you understand some more registers

- you can display diffs (e.g. enable logging, take a pic, select "show modified registers", change ISO, take another pic, then look in the menu)

- you can override any register
  => if you don't have dual ISO yet on your camera, just change CMOS[0] manually, then take pics ;)
  => you can find some funky crop modes (e.g. if you change the line skipping factor)
  => now it's easier than ever to kill your sensor for science

- camera is autodetected (I've added the stubs from this thread and 1% repo for 5D3, 5D2, 60D, 500D, 550D, 50D, 6D, EOSM and tried on the first 3; 7D will not work by design).

- if in doubt, take the battery out. Quickly! (well, that's what I do)

Tip: some registers use NRZI values (they are displayed with a N), others use normal values. If the value doesn't make sense (e.g. something affects brightness, but it seems kinda random, not gradual changes), try flipping the is_nrzi flag from known_regs. You can't do it from the menu yet.

(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fa1ex.magiclantern.fm%2Fbleeding-edge%2Fadtg_gui.png&hash=55bca73228b570fd0a0259dc8e174d11)
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 30, 2013, 12:41:15 PM
@alex

I've been trying to get the adtg_log module working on my 60D but I always get a gdb error
http://sdrv.ms/16VZ5DQ (http://sdrv.ms/16VZ5DQ)
I also tried adtg.gui just now but I get the same error
http://sdrv.ms/15aOS3s (http://sdrv.ms/15aOS3s)
Any ideas what I doing wrong / not doing?
I'd like to get Dual ISO working for 60Ds if I can.
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 12:45:24 PM
Did you enable CONFIG_GDB?
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 30, 2013, 01:04:45 PM
Like this?

Makefile.user:

ARM_ABI=none-eabi
ARM_PATH=~/arm-toolchain
GCC_VERSION=-4.7.3
CONFIG_MODULES   = y
CONFIG_TCC   = y
CONFIG_PICOC   = n
PYTHON      = python2.6
CONFIG_TINYPY    = n
CONFIG_GDB      = Y
CONFIG_GDBSTUB  = Y

I also tried adding:

ifeq ($(CONFIG_GDB),y)
CFLAGS += -DCONFIG_GDB

ML_OBJS-y += \
   gdb.o
endif

ifeq ($(CONFIG_GDBSTUB),y)
CFLAGS += -DCONFIG_GDB -DCONFIG_GDBSTUB
endif

to src/makefile.src
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 01:06:42 PM
It's case-sensitive ;)
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 30, 2013, 01:34:28 PM
Awesome it works :) Thanks a lot.
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 30, 2013, 02:06:58 PM
CMOS[0] for 60d is

Iso 100 0x0
     200 0x24
     400 0x48
     800 0x6c
     1600 0x90
     3200 0xb4

Liveview Cmos[0]  0x407458fc
Photo Cmos[0]   0x4074464c

Is this what we need for Dual ISO?
Or do I need to find some more?

Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 30, 2013, 02:18:35 PM
 }
    else if (streq(camera_model_short, "60D"))
    { 
        /*
        100 - 0
        200 - 0x024
        400 - 0x048
        800 - 0x06c
        1600 -0x090
        3200 -0x0b4
        */
        is_60d = 1;   

        FRAME_CMOS_ISO_START = 0x407458fc; //
        FRAME_CMOS_ISO_COUNT =          7; //
        FRAME_CMOS_ISO_SIZE  =         32; //

        PHOTO_CMOS_ISO_START = 0x4074464c; //
        PHOTO_CMOS_ISO_COUNT =          6; //
        PHOTO_CMOS_ISO_SIZE  =         18; //

        CMOS_ISO_BITS = 3;
        CMOS_FLAG_BITS = 2;
        CMOS_EXPECTED_FLAG = 0;

Would this work?
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 30, 2013, 02:48:57 PM

  => you can find some funky crop modes (e.g. if you change the line skipping factor)


I'm having an 'ask dumb questions day' but does this mean we 'might' be able to increase frame size by reducing line skipping? A kind of semi-crop mode
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 02:51:30 PM
I've published the code so you can investigate ;)
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 30, 2013, 02:57:28 PM
I've published the code so you can investigate ;)

How can I resist the challenge? ;D

Compiling it now. If I don't reappear it's because I've trashed my sensor.

Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 30, 2013, 03:40:05 PM
I get a compile error for the ADTG_GUI module:

make[2]: Entering directory `/home/magiclantern/tl50d/modules/adtg_gui'
[ DEPENDS  ]   adtg_gui.dep
Will NOT load on:
    50D (gdb_setup, gdb_add_watchpoint, gdb_delete_bkpt)
Not checked (compile ML for these cameras first):
    100D, 1100D, 40D, 500D, 550D, 5D2, 5D3, 5DC, 600D, 60D, 650D.101, 650D.104, 6D.112, 6D.113, 700D, 7D, EOSM.106, EOSM.202
make[2]: *** [adtg_gui.dep] Error 1
make[2]: Leaving directory `/home/magiclantern/tl50d/modules/adtg_gui'
make[1]: *** [adtg_gui] Error 2
make[1]: Leaving directory `/home/magiclantern/tl50d/modules'
make: *** [CONFIG_MODULES_compile] Error 2
magiclantern@magiclantern-VirtualBox:~/tl50d/platform/50D.109$
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 03:58:23 PM
Already answered today in this thread.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 30, 2013, 04:20:24 PM
Already answered today in this thread.

Thanks a1ex, got it. I made exactly the same case mistake  :-[

Title: Re: ADTG and CMOS registers
Post by: 1% on August 30, 2013, 04:25:14 PM
I've got GDB on in the repo so people can play like this. DigicV has problems with CMOS on the fly but ADTG should be good to change to whatever.
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 04:29:56 PM
Hm, with 5D3 I can change stuff on the fly without problems.
Title: Re: ADTG and CMOS registers
Post by: Greg on August 30, 2013, 05:05:27 PM
I test the 500D module adtg_gui

Silent Pic DNG :
http://imageshack.us/a/img854/7167/ahfr.jpg

Silent Pic DNG processed cr2hdr :
http://imageshack.us/a/img844/8874/otin.jpg
Title: Re: ADTG and CMOS registers
Post by: 1% on August 30, 2013, 05:25:52 PM
If I change CMOS on the fly from the old ADTG log It prduces corruption on the screen that gets worse and worse the more you change it. Only on M and 6D maybe?
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 05:28:41 PM
Does it do the same with this one?
Title: Re: ADTG and CMOS registers
Post by: Greg on August 30, 2013, 05:42:45 PM
500D (photo mode)
0000 405C56C2  = 100
0090 405C56D0  = 200
01B0 405C56DE  = 400
01F8 405C56EC  = 800
0168 405C56FA  = 1600
0168 405C5708  = 3200
0168 405C5716  = 6400
0168 405C5724  = 12800

Why over 1600 is a constant value 168?
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 05:43:42 PM
Because the other ISOs are just digital gain.
Title: Re: ADTG and CMOS registers
Post by: Greg on August 30, 2013, 05:52:06 PM
Because the other ISOs are just digital gain.

The specification is written that is 100-3200 Analog, Digital 6400 and 12800.
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 05:55:07 PM
It may be analog, but the dynamic range tests say there's no improvement above 1600, at least on 5D2: http://www.guillermoluijk.com/article/isos5dmkii/index.htm

Or maybe it's some other analog amplifier enabled from elsewhere.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 30, 2013, 08:55:19 PM
Not sure if this is anything but:

from 50D 2.35:1 aspect ratio (crop mode)

CMOS[4]   0x481 -> 0x489 looks like vertical interlacing or Dual ISO or something

It's vertically stretched in crop mode.

The jpeg is resized so download the DNG if needed

(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fi.imgbox.com%2Fabyhwcg4.jpg&hash=c2a987e48dce3bc01a17ea7d7d30592f)

DNG: http://we.tl/Kmt4CRbFPs




Title: Re: ADTG and CMOS registers
Post by: a1ex on August 30, 2013, 09:26:38 PM
I like it. cr2hdr should process it with minimal changes (you need to rotate the image).
Title: Re: ADTG and CMOS registers
Post by: Greg on August 30, 2013, 10:05:42 PM
I played a little bit. I received an error and the screen flickering even on the menu.
I think it's an error 500D. I'll leave the camera at night without a battery, it should work ;)
Title: Re: ADTG and CMOS registers
Post by: v8rrc on August 30, 2013, 11:04:32 PM
How do I work out what values these need to be?
 
        PHOTO_CMOS_ISO_COUNT =          6; //
        PHOTO_CMOS_ISO_SIZE  =         18;
 
        CMOS_ISO_BITS = 3;
        CMOS_FLAG_BITS = 2;
        CMOS_EXPECTED_FLAG = 0;

I can get Dual ISO photos and video from atdg_gui but when I tried the Dual ISO module with the addresses changed I get  "ISOless PH err(4)" error
Title: Re: ADTG and CMOS registers
Post by: 1% on August 31, 2013, 12:34:11 AM
Seems to be working OK.

CMOS 6 Is horizontal alignment of some sort, I can move the image to the left but not the right.
CMOS 7 Moves the image up and down, both work.

6, unused portion is black, 7 white.

The ADTG don't seem to be changing.
Title: Re: ADTG and CMOS registers
Post by: Audionut on August 31, 2013, 01:43:16 AM
ADTG2[8882]
ADTG2[8884]
ADTG2[8886]

These are interesting.  Appear to change the sensitivity of the color channels.

They're @ ADTG6 also.

(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F34113196%2FML%2FADTG%2F1.PNG&hash=834b38bfdacacd57ebf8b1188b2006c6)
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F34113196%2FML%2FADTG%2F2.PNG&hash=8102a10c7056f1d30190d67206164724)
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F34113196%2FML%2FADTG%2F3.PNG&hash=c5e16e99a883d6d1e0bb6ed29a276ef6)



ADTG6[21] is doing some funky stuff.  0x2aab is like some crop mode in LV.  0x2bab-0x2bde is like some gain control.
Title: Re: ADTG and CMOS registers
Post by: Greg on August 31, 2013, 02:09:28 AM
500D:
ADTG3[0] - change the color temperature warm - cold Maybe, sensitivity of the blue channel.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 31, 2013, 02:15:55 AM
ADTG1[13] = everything goes red
ADTG1[1061] = changes shutter, seems quite random
Title: Re: ADTG and CMOS registers
Post by: g3gg0 on August 31, 2013, 02:37:09 AM
we already described some of the registers here:
http://magiclantern.wikia.com/wiki/ADTG
Title: Re: ADTG and CMOS registers
Post by: 1% on August 31, 2013, 03:51:59 AM
Quote
ADTG1[1061] = changes shutter, seems quite random

This is shutter in zoom mode I think. For some reason still doesn't want to go over 110... this is the only camera I have with this behavior.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 31, 2013, 05:55:26 AM
This is shutter in zoom mode I think. For some reason still doesn't want to go over 110... this is the only camera I have with this behavior.

How is the 5d MkII shutter?

Could it be something to do with the 50D not having native 24/25p and needing FPS override? FPS Override modes (hi jello, low light etc) increase/decrease shutter speed. Maybe there is another timer address?
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 31, 2013, 06:47:05 AM
This is shutter in zoom mode I think. For some reason still doesn't want to go over 110... this is the only camera I have with this behavior.

I think this might be shutter in zoom: ADTG[105f] N 0x5d7
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 31, 2013, 08:50:22 AM
from 50D 2.35:1 aspect ratio (crop mode)

CMOS[4]   0x481 -> 0x489 looks like vertical interlacing or Dual ISO or something

This looks like some really extreme HDR (columns 1 and 2 are pretty much normal, columns 3 and 4 look like they were taken at 1/50000)
Title: Re: ADTG and CMOS registers
Post by: a1ex on August 31, 2013, 08:56:59 AM
ADTG1[1061] = changes shutter, seems quite random

Try adding this line:

    {DST_ADTG, 0x1061, 1, "changes shutter"},

=> that 1 means the register is using NRZI values, so it should no longer be random.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 31, 2013, 04:48:18 PM
Try adding this line:

    {DST_ADTG, 0x1061, 1, "changes shutter"},

=> that 1 means the register is using NRZI values, so it should no longer be random.

Yes, that did the trick. It's 1x shutter control. Just noticed that it's what 1% has already used.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on August 31, 2013, 07:50:24 PM
This looks like some really extreme HDR (columns 1 and 2 are pretty much normal, columns 3 and 4 look like they were taken at 1/50000)

I also found some less extreme variations between dark and light lines at some settings and some alternated each line, not 2x2 (need to find it again because my battery died). Could this be useful for a psuedo Dual ISO video mode on the 50D? The shot was a frame grab from raw video so it definitely is recordable but vertical rather than horizontal. Not sure if a horizontal reg exists that does the same. I couldn't get cr2hdr to process it because I couldn't re-save as raw after rotation.

BTW, is a similar module for Digic possible? I remember ages ago running a build on the 600D that had some Digic reg viewing thing but I didn't really understand it at the time.
Title: Re: ADTG and CMOS registers
Post by: 1% on August 31, 2013, 08:25:58 PM
I think digic poke is included.
Title: Re: ADTG and CMOS registers
Post by: Greg on August 31, 2013, 09:00:54 PM
500D:
ADTG3[0] - 0x149 - color channel
ADTG3[3] - 0x14a - color channel

These values ​​should be the same?
Title: Re: ADTG and CMOS registers
Post by: marekk on September 01, 2013, 03:50:47 PM
For 60D it should be:

Code: [Select]
FRAME_CMOS_ISO_START = 0x407458FC; // CMOS register 0000 - for LiveView, ISO 100 (check in movie mode, not photo!)
 FRAME_CMOS_ISO_COUNT =  6; // from ISO 100 to 3200
 FRAME_CMOS_ISO_SIZE  =  30; // distance between ISO 100 and ISO 200 addresses, in bytes

 PHOTO_CMOS_ISO_START = 0x4074464C; // CMOS register 0000 - for photo mode, ISO 100
 PHOTO_CMOS_ISO_COUNT = 6; // from ISO 100 to 3200
 PHOTO_CMOS_ISO_SIZE  =  18; // distance between ISO 100 and ISO 200 addresses, in bytes

but I don't know how to set:
CMOS_ISO_BITS = ;
CMOS_FLAG_BITS = ;
CMOS_EXPECTED_FLAG = ;


}
    else if (streq(camera_model_short, "60D"))
    { 
        /*
        100 - 0
        200 - 0x024
        400 - 0x048
        800 - 0x06c
        1600 -0x090
        3200 -0x0b4
        */
        is_60d = 1;   

        FRAME_CMOS_ISO_START = 0x407458fc; //
        FRAME_CMOS_ISO_COUNT =          7; //
        FRAME_CMOS_ISO_SIZE  =         32; //

        PHOTO_CMOS_ISO_START = 0x4074464c; //
        PHOTO_CMOS_ISO_COUNT =          6; //
        PHOTO_CMOS_ISO_SIZE  =         18; //

        CMOS_ISO_BITS = 3;
        CMOS_FLAG_BITS = 2;
        CMOS_EXPECTED_FLAG = 0;

Would this work?
Title: Re: ADTG and CMOS registers
Post by: 1% on September 01, 2013, 04:04:40 PM
It looks like similar values to 600D.
Title: Re: ADTG and CMOS registers
Post by: marekk on September 01, 2013, 04:52:41 PM
I've just tested it and I think it works.

It looks like similar values to 600D.
Title: Re: ADTG and CMOS registers
Post by: a1ex on September 01, 2013, 07:26:51 PM
I also found some less extreme variations between dark and light lines at some settings and some alternated each line, not 2x2 (need to find it again because my battery died). Could this be useful for a psuedo Dual ISO video mode on the 50D?

That would be some sort of dual shutter, which will be a lot more powerful in really extreme situations (e.g. shooting from a dark cave outside), but will have some more motion artifacts.

Postprocessing will be the same, as long as the pattern is two bright lines / two dark lines (or columns, since rotation is trivial).
Title: Re: ADTG and CMOS registers
Post by: Greg on September 01, 2013, 08:45:46 PM
CMOS[4] - scroll horizontal in 5x zoom mode
Title: Re: ADTG and CMOS registers
Post by: 1% on September 01, 2013, 08:59:00 PM
So those are the instant zoom area moves? I was moving it in 1X mode, maybe thats why it acted so odd.
Title: Re: ADTG and CMOS registers
Post by: Audionut on September 10, 2013, 05:40:26 AM
Is PHOTO_CMOS_ISO_COUNT a simple count of the amount of ISO steps?

100
200
400
800

would = PHOTO_CMOS_ISO_COUNT = 4?
Title: Re: ADTG and CMOS registers
Post by: nanomad on September 10, 2013, 01:44:11 PM
Yes if 1600 has the same cmos the value as 800
Title: Re: ADTG and CMOS registers
Post by: Audionut on September 10, 2013, 03:17:02 PM
There's some weird settings in dual_iso.c

6D has a count of 7 to ISO 12800 and 25600  ???  Copy/pasting comments?  And why only 7, it should be doing atleast ISO 12800?
Title: Re: ADTG and CMOS registers
Post by: nanomad on September 10, 2013, 03:37:54 PM
Well, that depends on the hardware. You should check what ISOs make the CMOS register change and what no. Sometimes the comments can be a bit off. I don't have a 6D but maybe 1% can comment on it
Title: Re: ADTG and CMOS registers
Post by: 1% on September 10, 2013, 04:17:29 PM
6D is like this:

Code: [Select]
6D 03
- 100 - 0
- 200 - 11
- 400 - 0x22
800 - 0x33
1600 - 0x44
3200 - 0x55
6400 - 0x77
128K+ 0x77

0x77 is the highest the ISO goes which is 6400.
Title: Re: ADTG and CMOS registers
Post by: Audionut on September 11, 2013, 12:55:35 AM
Thanks guys.
Title: Re: ADTG and CMOS registers
Post by: Andy600 on September 23, 2013, 01:38:24 AM
I've found an interesting one on 50D (I think) but it's difficult to explain properly  ???

ADTG3[1000]  0x6 ->0x1205 - you need to zoom then return to unzoomed state for it to take effect. I changed values with 256 (x <<8 )

The image is vertically stretched a bit but also has a realtime ghost image from a different area of sensor that changes with focusing (which is strange because I use manual lenses) plus it goes green when panning over lighter areas - It's recordable too. I can send devs a PM with a link to some video.
Title: Re: ADTG and CMOS registers
Post by: Audionut on February 25, 2014, 05:28:48 PM
These are all ADTG2 (5D3).

809f - Reduces WL, increases stdev, regains highlight detail, works both ways, Canon adjusted, appears to be blue/red channel

80a0 - same as above.  possibly in different color channels.  See screenshot 1 below (interesting noise pattern).

80a4   - increases stdev both ways

80cc   - lower values increase stdev, Canon adjusted    0x100 screenshot 2

80d8   - lower values increase stdev, increases stdev significantly at 0x1,0x2 and 0x3, canon adjusted

8108- lower values increase stdev, banding in highlights

813a   - default 0x110, below 0x100 reduces WL to 2070 and reduces stdev.

82f0   - default 0x401, slightly lower values produce black image,  0x3a9 (and other lower values) does something to the green channel in the shadows

fe - default 0x4, lower values reduce stdev, higher values increase stdev

Screenshot 1
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fs15.postimg.cc%2F4m0raudln%2Fscreenshot1.png&hash=16a293ad817d00c4c3d507194fb698be)

Screenshot 2
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fs15.postimg.cc%2Fazpue3q7f%2Fscreenshot2.png&hash=417c25426e1a5ae16baf92dde72ca2b7)
Title: Re: ADTG and CMOS registers
Post by: waza57 on March 01, 2016, 12:38:11 PM
Hi and thank you so much for all that work.

Dual iso video works on my 5d2 but .......only when i'm playing with ADTG_gui
 
Like this:

1. load atdg_gui module.
2. Play with cmos[0] with movie mode on.
3. found  at iso 100 dual iso video working for CMOS[0] 0x301  -> 0x305        ( addr= 0x404B490, value 0x301, nrzi=513(0x201).

Im not  a developper, Just a player and i don't know how to implement this in dual_iso.c .

I tried to do something like this but i just got an "ISOless LV err(2)":

Code: [Select]
is_5d2 = 1;
        FRAME_CMOS_ISO_START = 0x404b4590; // CMOS register 0000 - for LiveView, ISO 100 (check in movie mode, not photo!)
        FRAME_CMOS_ISO_COUNT =          5; // from ISO 100 to 25600
        FRAME_CMOS_ISO_SIZE  =         30; // distance between ISO 100 and ISO 200 addresses, in bytes
       
        PHOTO_CMOS_ISO_START = 0x404b3b5c; // CMOS register 0000 - for photo mode, ISO 100
        PHOTO_CMOS_ISO_COUNT =          5; // from ISO 100 to 1600
        PHOTO_CMOS_ISO_SIZE  =         14; // distance between ISO 100 and ISO 200 addresses, in bytes

        CMOS_ISO_BITS = 3;
        CMOS_FLAG_BITS = 2;
        CMOS_EXPECTED_FLAG = 3;

If someone has an idea ?  ;)

P.S. Sorry for my bad english
Title: Re: ADTG and CMOS registers
Post by: a1ex on March 01, 2016, 02:19:09 PM
You have to find a way to override that value, preferably without using code hooks. If you find a way to patch some RAM values that are not changed by Canon code, that method is easiest and should be pretty reliable (that's how it's implemented on the other cameras).

Unfortunately, the value at the address used in 5D2 is modified by Canon code (when you switch to another ISO, and maybe also continuously, don't remember). So, one has to find the address (or the logic) where this value comes from, and overwrite that one.

Using code hooks may work, but it's a little more error prone. This library should help a bit:
https://bitbucket.org/hudson/magic-lantern/pull-requests/687/patch-manager-wip/diff

However, I'm not sure it's worth the effort, because of the heavy aliasing in this mode.
Title: Re: ADTG and CMOS registers
Post by: waza57 on March 01, 2016, 06:54:21 PM
I'm not sure to have the required level for all that.
I will try, however.
whatever happens, thank you very much.
Title: Re: ADTG and CMOS registers
Post by: reddeercity on March 01, 2016, 09:45:02 PM
Quote
Dual iso video works on my 5d2 but .......only when i'm playing with ADTG_gui
@waza57 that sound great !
So you used latest Nightly Build & the atdg_gui module on the 5D2 ?
Did you have to compile the atdg_gui module for the 5D2 ?

Well anyways if there something I can do to help I would be glad do what I can.
As a 5D2  user I would like to see this come to full light. Or the very least I would like to test it out
to see if the video is  usable .
if you like to can PM me

Quote
However, I'm not sure it's worth the effort, because of the heavy aliasing in this mode
@a1ex , is that reason way to didn't implement dual iso video for the 5d2 .
Title: Re: ADTG and CMOS registers
Post by: mothaibaphoto on March 02, 2016, 05:30:36 AM
Dual iso video works on my 5d2 but .......only when i'm playing with ADTG_gui
Whats funny, dual iso video stops working for me when  i'm playing with ADTG_gui on 5D3 :)
Title: Re: ADTG and CMOS registers
Post by: waza57 on March 02, 2016, 03:24:31 PM
@reddeercity
Quote
So you used latest Nightly Build & the atdg_gui module on the 5D2 ?
No, but with several versions like this one for example:

Magic Lantern v2.3.NEXT.2016Feb29.5D2212
Mercurial changeset: 63b2f145cb3b+ (unified).

I think it' works for the most of  Nightly Build's .

Quote
Did you have to compile the atdg_gui module for the 5D2 ?
Yes i did. I don't know if there is a precompiled one.

Quote
Well anyways if there something I can do to help I would be glad do what I can.
As a 5D2  user I would like to see this come to full light. Or the very least I would like to test it out
to see if the video is  usable .
if you like to can PM me
OK, thanks . You can also pm me. My first problem is to understand the code of dual-iso.c.
I could post a video later if you're interested but it is wobbly since it is with adtg_gui.mo and I don't know really the values of effectives 2 iso.
actually I trying  the alex's idea with memory patches. It's very difficult for me.


 
Title: Re: ADTG and CMOS registers
Post by: reddeercity on March 02, 2016, 10:43:37 PM
@waza57 Sounds great sure , My coding skill are limited but I'm willing to learn what I don't understand  ;D
I'll have a look at the code in  dual iso.c first to get a understanding what going .
Going to need to do some reading  , I think  we should start a video dual iso thread for 5D2 and continue there.
So the whole ML community can contribute if there like .
Yea can you post some video samples , I'm mostly interested in the aliasing factor .

I will not have much time this week to work on this , (just finishing up a work project)
next week I'll be able to spend time on this .


Title: Re: ADTG and CMOS registers
Post by: nikfreak on March 13, 2016, 11:50:44 AM
.
Title: Re: ADTG and CMOS registers
Post by: Levas on September 19, 2018, 05:20:28 PM
Just wondering how ADTG detects registers.
Once I enable ADTG module, I think it only shows registers it detects. This detecting is done by seeing the registers being changed by Canon firmware I guess ?
Could it be the case that there are registers available that don't show up in ADTG module, because these registers are never being changed by Canon firmware ?
Title: Re: ADTG and CMOS registers
Post by: a1ex on September 19, 2018, 06:43:47 PM
Once I enable ADTG module, I think it only shows registers it detects. This detecting is done by seeing the registers being changed by Canon firmware I guess ?

That's exactly how it works - all of the ADTG register writes are generally*) done with the same routine (we call it adtg_write). So, we place a hooking function over that routine, that's going to see its arguments, i.e. a list of ADTG registers to be updated. Each camera may use its own set of registers, so they are not known in advance; they are discovered when Canon firmware changes them.

If you just enable adtg_gui in LiveView, it's going to see only the registers that are refreshed continuously, at every single frame.

Once you exit LiveView and get back, adtg_gui is going to see those registers that were changed by Canon firmware during the initialization phase, too. To update them, until recently you also had to get out of LiveView and back, as the override operates when Canon firmware writes to them. Recent adtg_gui has a trick that allows updating these registers on the fly, although I'm not 100% happy with it - sometimes it just locks up.

*) on some recent models, such as 100D, EOSM2 and most D6/7 models, there's also ADTGDMA, that's not handled by adtg_gui yet.


Could it be the case that there are registers available that don't show up in ADTG module, because these registers are never being changed by Canon firmware ?

Quite possible, although I didn't try to find out. Brute forcing the entire register address space (16-bit) should work. A script would be required to try a couple of values for every register, and check the results against the reference image (before the change). Need to make sure any change made to an ADTG register can be undone, e.g. by getting out of LiveView and back. Worst case, that would require a reboot (so the script would have to be prepared for lockups by saving its state in a config file). Lua is not exactly ready for that (no image analysis functions).
Title: Re: ADTG and CMOS registers
Post by: Levas on September 19, 2018, 07:22:40 PM
Does firmware have to set all possible registers at startup ?
And is it possible to somehow log this, or is this impossible because ML is loaded at startup by the canon firmware so maybe registers are already set before ML is even loaded ?
Title: Re: ADTG and CMOS registers
Post by: a1ex on September 19, 2018, 07:55:34 PM
No, some devices are initialized on demand. Some cameras do some sort of bad pixel calibration at startup, but from what I could tell, that doesn't trigger any image capture; maybe it's just loading saved correction data into the image processor, or something like that. But image capture is powered on when entering LiveView or when taking a photo, and powered off when finished. Complete configuration happens after powering on, i.e. it's visible in adtg_gui.

However, some registers are configured with different values at different stages; for example, before capturing a photo, most cameras also capture a partial dark frame, apparently for figuring out the vertical stripe pattern. The 500D and 1100D don't do this, but most other cameras do. The calibration frame has different vertical size, so FPS timer B is set to different values. Currently, adtg_gui doesn't handle this very well, so it's hard to override values just at one stage of the image capture sequence; by default, it overrides a register in all places where it's modified by Canon code.

Look at this screenshot:

(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fa1ex.magiclantern.fm%2Fbleeding-edge%2Fgradient%2F6D%2Ffps-registers.jpg&hash=9275672fd0a0070d051d6574adecd21a)

FPS register B was set a couple of times during the image capture process, to different values. By default, adtg_gui shows just the last value for each register. If you change the "unique key" option (caveat: you need to do that before enabling the main ADTG menu entry!), you can see, to some extent, the different values as long as they were changed from different parts of Canon code. You can't just see the entire sequence in the menu yet; that's a bit more difficult to solve, especially if you will want to override things.

You can log the complete communication between the ARM CPU and its peripherals - remember these thousands of registers (https://bitbucket.org/hudson/magic-lantern/pull-requests/900/mmio-tracing-backend-insanely-powerful)?

You should find every single register read/write in those huge logs (https://www.magiclantern.fm/forum/index.php?topic=2388.msg197313#msg197313).

You can see everything the firmware does, before ML is loaded, in QEMU (-d io). It's not touching the image capture stuff.
Title: Re: ADTG and CMOS registers
Post by: Danne on September 19, 2018, 08:01:14 PM
before capturing a photo, most cameras also capture a partial dark frame, apparently for figuring out the vertical stripe pattern.
Interesting. How did you find out? Is this done before every single photo?
Title: Re: ADTG and CMOS registers
Post by: a1ex on September 19, 2018, 08:10:42 PM
Yes, before every single photo; look up "scsDummyReadoutDone".

700D:
Code: [Select]
cat "700D.115/cr2 capture 1_50.LOG" | grep 'SW2\|scs\|Readout\|C0F06' |grep -v 0x00000000

 2.248.468    EventMgr:ff227544:8d:03: emDeliverMulticastEvent : SW2ON
 2.248.618  ShootCaptu:ff14beec:93:03: scsReleaseOn
 2.248.656  ShootCaptu:ff148058:93:03: scsReleaseStart
 2.273.205  ShootCaptu:ff2c2d14:MMIO : [0xC0F06800] <- 0x00030010
 2.273.207  ShootCaptu:ff2c2d14:MMIO : [0xC0F06804] <- 0x0DCC0538
 2.273.208  ShootCaptu:ff2c2d14:MMIO : [0xC0F06808] <- 0xFFFFFFFF
 2.273.210  ShootCaptu:ff2c2d14:MMIO : [0xC0F0680C] <- 0xFFFFFFFF
 2.273.211  ShootCaptu:ff2c2d14:MMIO : [0xC0F06810] <- 0xFFFFFFFF
 2.273.213  ShootCaptu:ff2c2d14:MMIO : [0xC0F06814] <- 0xFFFFFFFF
 2.273.216  ShootCaptu:ff2c2d14:MMIO : [0xC0F06824] <- 0x0000056A
 2.273.217  ShootCaptu:ff2c2d14:MMIO : [0xC0F06828] <- 0x0000056A
 2.273.219  ShootCaptu:ff2c2d14:MMIO : [0xC0F0682C] <- 0x0000056A
 2.273.220  ShootCaptu:ff2c2d14:MMIO : [0xC0F06830] <- 0x0000056A
 2.273.226  ShootCaptu:ff2c2d14:MMIO : [0xC0F06008] <- 0x056B056B
 2.273.228  ShootCaptu:ff2c2d14:MMIO : [0xC0F0600C] <- 0x056B056B
 2.273.229  ShootCaptu:ff2c2d14:MMIO : [0xC0F06010] <- 0x0000056B
 2.273.290  ShootCaptu:ff2c2d14:MMIO : [0xC0F060D0] <- 0x00000001
 2.273.301  ShootCaptu:ff2c2d14:MMIO : [0xC0F06018] <- 0x00000020
 2.273.302  ShootCaptu:ff2c2d14:MMIO : [0xC0F06020] <- 0x00000002
 2.276.526  ShootCaptu:ff1488ac:93:03: scsReleaseData
 2.282.642  ShootCaptu:ff148e94:93:03: NormalCapture(scsReleaseData)             <-- calibration frame starts
 2.283.855  ShootCaptu:ff2c2d14:MMIO : [0xC0F06800] <- 0x00030010
 2.283.857  ShootCaptu:ff2c2d14:MMIO : [0xC0F06804] <- 0x0DCC0538                <-- capture resolution: (0x538-0x10)*4 x (0xdcc-3) = 5280x3529
 2.283.858  ShootCaptu:ff2c2d14:MMIO : [0xC0F06808] <- 0xFFFFFFFF
 2.283.860  ShootCaptu:ff2c2d14:MMIO : [0xC0F0680C] <- 0xFFFFFFFF
 2.283.861  ShootCaptu:ff2c2d14:MMIO : [0xC0F06810] <- 0xFFFFFFFF
 2.283.863  ShootCaptu:ff2c2d14:MMIO : [0xC0F06814] <- 0xFFFFFFFF
 2.283.866  ShootCaptu:ff2c2d14:MMIO : [0xC0F06824] <- 0x0000056A
 2.283.867  ShootCaptu:ff2c2d14:MMIO : [0xC0F06828] <- 0x0000056A
 2.283.869  ShootCaptu:ff2c2d14:MMIO : [0xC0F0682C] <- 0x0000056A
 2.283.870  ShootCaptu:ff2c2d14:MMIO : [0xC0F06830] <- 0x0000056A
 2.283.876  ShootCaptu:ff2c2d14:MMIO : [0xC0F06008] <- 0x056B056B
 2.283.878  ShootCaptu:ff2c2d14:MMIO : [0xC0F0600C] <- 0x056B056B
 2.283.879  ShootCaptu:ff2c2d14:MMIO : [0xC0F06010] <- 0x0000056B
 2.283.940  ShootCaptu:ff2c2d14:MMIO : [0xC0F060D0] <- 0x00000001
 2.283.951  ShootCaptu:ff2c2d14:MMIO : [0xC0F06018] <- 0x00000020
 2.283.953  ShootCaptu:ff2c2d14:MMIO : [0xC0F06020] <- 0x00000002
 2.284.192  ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x0000020F                <--- capturing just ~ 528 lines?!
 2.284.193  ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
 2.284.949  ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x0000138B                <--- ???
 2.284.951  ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
 2.290.801  ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x16)
 2.307.318  **INT-6Ah*:ff148168:93:03: Dummy ReadoutDone(1085)
 2.307.403  ShootCaptu:ff149798:93:03: scsPreCapReadyReadoutDone                 <-- calibration frame captured, took 22.9 ms = 528e3/(32e6/0x56c)
 2.307.870  ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x000002C9                <--- ???
 2.307.872  ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
 2.314.267  ShootCaptu:ff149d44:93:03: scsCapReady
 2.314.289  ShootCaptu:ff149d9c:93:03: scsCapReady
 2.331.825  ShootCaptu:ff2c2d14:MMIO : [0xC0F06004] <- 0x00000001
 2.331.827  ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
 2.336.084  ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x00000DCB                <-- actual image capture starts here
 2.336.085  ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
 2.345.476  ShootCaptu:ff14a0bc:93:03: scsCapEnd
 2.345.614  ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
 2.365.449    EventMgr:ff0d12b4:93:03: scsAFPINTParamCBR(JobID=1085)
 2.365.961    EventMgr:ff0d1220:93:03: scsIMAGEParamCBR(JobID=1085)
 2.366.998    EventMgr:ff0d17c8:93:03: scsAfterReleaseDataCBR(1085)
 2.432.586    EventMgr:ff2276f0:8d:03: emDeliverMulticastEvent : SW2OFF
 2.432.979  ShootCaptu:ff14ad74:93:03: scsReleaseEnd
 2.433.014  ShootCaptu:ff14bf2c:93:03: scsReleaseOff
 2.442.875  ShootCaptu:ff14a294:93:03: scsSAFAreaStart
 2.478.005     CtrlSrv:ff39dc40:83:03: IDLEHandler PRESS_SW2_BUTTON              <-- what's this doing here?! SW2 was pressed a long time ago
 2.498.579  **INT-6Ah*:ff14a038:93:03: ReadoutDone(1085)
 2.498.792  ShootCaptu:ff14a328:93:03: scsFinalReadoutDone
 2.499.022  ShootCaptu:ff14a34c:93:03: End Mem1 Crosstalk scsFinalReadoutDone    <-- Crosstalk? AF pixels related?
 2.503.772  ShootCaptu:ff14a810:93:03: scsFinalReadoutDone (2121)
 2.505.425  ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x14)
 2.554.713     CtrlSrv:ff39dc40:83:03: IDLEHandler UNPRESS_SW2_BUTTON
 2.555.880    Fstorage:ff1d07e8:9e:03: fssSW2On
 2.555.912    Fstorage:ff1d0918:9e:03: fssSW2Off (ID = 1085)
 2.906.650  ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x10)
 2.906.702  ShootCaptu:ff14bc8c:93:03: scsDevDone[1]
 3.604.399  ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x0)
 3.604.451  ShootCaptu:ff14bc8c:93:03: scsDevDone[0]

Postprocessing happens in other tasks: ShootPreDevelop, ShootSsDevelop, YMMV on other models.
Title: Re: ADTG and CMOS registers
Post by: Levas on September 19, 2018, 11:31:31 PM
Interesting stuff, didn’t know that that much was going on, with every single photo capture.

You can see everything the firmware does, before ML is loaded, in QEMU (-d io). It's not touching the image capture stuff.

But this, this probably says it all for me, all intersting stuff, movie/photo modes, are seen by adtg module.
Title: Re: ADTG and CMOS registers
Post by: reddeercity on October 10, 2019, 12:59:29 AM
Trying to find the "PowerSaveTiming" Reg's  for d4 5D2 & 50D , I did find something close in the 5d2 rom disassembly

Code: [Select]
ffccf734: STRING:  'EnablePowerSave'
ffccf744: STRING:  'DisablePowerSave'
below is what was in the dm-0003_Photo_Liveview_reviewing_cr2.log
Code: [Select]
0BE05>    Startup:ff871ad4:00:01: [PM] DisablePowerSave (Counter = 2)
0BE43>    Startup:ff871b44:00:01: [PM] EnablePowerSave (Counter = 1)
0BE82> **INT-50h*:ff871ad4:00:01: [PM] DisablePowerSave (Counter = 2)
0BEBA> **INT-50h*:ff871b44:00:01: [PM] EnablePowerSave (Counter = 1)
0C03C> **INT-50h*:ff871ad4:00:01: [PM] DisablePowerSave (Counter = 2)
0C094> **INT-50h*:ff871b44:00:01: [PM] EnablePowerSave (Counter = 1)

So is "EnablePowerSave" & "DisablePowerSave" the same as "PowerSaveTiming On" & "PowerSaveTiming Off" on d5 5d3 ?
Title: Re: ADTG and CMOS registers
Post by: Whr on February 24, 2021, 12:37:45 PM
https://www.magiclantern.fm/forum/index.php?topic=25839 (https://www.magiclantern.fm/forum/index.php?topic=25839)
I'm having some problems trying to compile the firmware for Canon 500D. Maybe there's something wrong with the code. I don't know how to solve it.