SX10 Shutter Speeds - page 2 - General Discussion and Assistance - CHDK Forum

SX10 Shutter Speeds

  • 47 Replies
  • 21392 Views
*

Offline reyalp

  • ******
  • 14138
Re: SX10 Shutter Speeds
« Reply #10 on: 04 / October / 2009, 21:21:35 »
Advertisements
which sx10 firmware do you have ? I have an idea.
Don't forget what the H stands for.

Re: SX10 Shutter Speeds
« Reply #11 on: 04 / October / 2009, 21:23:22 »
One more tidbit I found.  The max shutter on the cam is 1/3200 at F8, but is only 1/1600 at F2.8 (nothing unusual, as expected) so I set the camera to F2.8 and tried a series of shutters from 1/1250 to 1/3200 and found that 1/1250 and 1/1600 worked fine, but after that they were identical to 1/1600.  So it appears that how/where the shutter override is getting limited, it is being done in accordance with the built-in limits.  This may indicate that it is indeed not a physical limitation but software.
Now if only I could figure out if it is an unchangeable software limit or if something needs to modified for the SX10 build.  Where would I begin looking?  I tried looking into the C source code, but I really don't know where to start or if I need to go deeper and it's something in the FW dumps.

Re: SX10 Shutter Speeds
« Reply #12 on: 04 / October / 2009, 21:25:02 »
which sx10 firmware do you have ? I have an idea.

103A, build 811

*

Offline reyalp

  • ******
  • 14138
Re: SX10 Shutter Speeds
« Reply #13 on: 04 / October / 2009, 21:43:35 »
OK. Here's a test build. Note, if the existing limit is there to protect your camera from damage this might damage your camera. If that's not OK, do not try it. You have been warned.

The idea is to use the same function we use to get super long exposures to force a super short exposure. Maybe the high speed limit happens somewhere else, but it seem a logical thing to try. So generic/wrappers.c apex2us becomes
Code: [Select]
int  apex2us(int apex_tv){
#if CAM_EXT_TV_RANGE
 if (apex_tv<-576 || apex_tv>960) return 1000000.0*pow(2.0, -apex_tv/96.0);
 else return _apex2us(apex_tv);
#else
 return 0;
#endif
}
I've picked 960 (apex 10, 1/1024th) arbitrarily, since your exact limit varies.
Don't forget what the H stands for.

Re: SX10 Shutter Speeds
« Reply #14 on: 06 / October / 2009, 15:29:16 »
Thanks, I may try this when I get home to see if it helps.

I did some snooping around in the builds and have a few questions:
It appears that shutter speed simply get set by the propcase.
What are the difference between NSTUB in "stubs_entry.S" and NHSTUB in "stubs_entry_2.S"
EG for
NSTUB(SetPropertyCase, 0xff865f8c)
vs
NHSTUB(SetPropertyCase, 0xFF879670)

-tgq

Re: SX10 Shutter Speeds
« Reply #15 on: 06 / October / 2009, 15:43:42 »
"Trying is the first step towards failure." (Homer Simpson)

*

Offline reyalp

  • ******
  • 14138
Re: SX10 Shutter Speeds
« Reply #16 on: 06 / October / 2009, 16:18:06 »
I did some snooping around in the builds and have a few questions:
It appears that shutter speed simply get set by the propcase.
For normal overrides this is true. For the extreme long exposure, they are done much later (in exp_drv_task), eventually reaching the code I listed above.

Note that if what posted doesn't work, or if you don't want to try overriding it there, you could see whether the high speed override makes it to that point. edit: for example, by comparing the incoming APEX value with the value set in the override code, and setting a flag that is displayed in misc debug values.

That part of the code (as the name suggests) takes the APEX*96 value from the propcase and turns it into a time value in microseconds. We replace the canon function to remove the bounds checking ;)
Don't forget what the H stands for.

Re: SX10 Shutter Speeds
« Reply #17 on: 06 / October / 2009, 20:50:10 »
Good effort, but no luck.  It still caps out at 1/3200.

Is there anything else that you changed in that build.  For some reason it broke a lot of my scripts.  I would always get and expected "=" for the last line of the script, didnt really pinpoint the offending function.

I guess the shutter limit must be elsewhere, which may seem logical as it is related to the aperture selected.

What exactly does the apex2us function do?  Is it an internal Canon function that converts to microseconds and you are overriding it?

*

Offline reyalp

  • ******
  • 14138
Re: SX10 Shutter Speeds
« Reply #18 on: 06 / October / 2009, 21:30:09 »
Good effort, but no luck.  It still caps out at 1/3200.

Is there anything else that you changed in that build.  For some reason it broke a lot of my scripts.  I would always get and expected "=" for the last line of the script, didnt really pinpoint the offending function.
Nothing related to script is different in that build. It does have the misc debug display hard coded on though. Ooops.
Quote
I guess the shutter limit must be elsewhere, which may seem logical as it is related to the aperture selected.
Quite possible.
Quote
What exactly does the apex2us function do?  Is it an internal Canon function that converts to microseconds and you are overriding it?
It does what I said in the previous post. It takes the APEX*96 value for shutter speed, and returns a time in microseconds. In CHDK, we modify ExpDrvTask (a "task" or process whose name presumable stands for something like Exposure Driver) and replace the call to the canon function with our own function. Our function normally just calls the canon function, unless an a longer than 64 second exposure is called for.

As I suggested earlier, if you want to dig into the code you can test whether the short exposure override value makes it to that point. If it doesn't, you could try resetting it there.

Without a camera that exhibits this behavior, there's not much I can do. Trying to do this sort of thing remotely through the forum is to frustrating to spend much time on.
Don't forget what the H stands for.

Re: SX10 Shutter Speeds
« Reply #19 on: 06 / October / 2009, 21:40:05 »
Thanks for the efforts, they are much appreciated.  I gues I may have to try to learn a bit about how to read the firmware code.

How would I setup a debug on the function, can that be done through the CHDK debug menu, or would it be in the core code and I would need to compile it?

 

Related Topics


SimplePortal © 2008-2014, SimplePortal