Bug reports are welcome (preferably with a description on how to reproduce).
The script does not correctly handle the situation where the camera wants to insert the ND filter and reports using a smaller f-stop setting as a result. It assumes the reported Av value is the actual aperture f-stop setting and does its exposure calculations based on that. When the actual shot occurs, it ends up using calculations based on the ND filter being inserted even though it does not insert that filter.
Once that gets sorted out, we can worry about possible Tv override bugs. The fix for cameras without an adjustable aperture is to use
get_prop(props.MIN_AV) to determine the actual Av96 value of the aperture rather than the
get_av96() function.
I have applied the 'short shutter press' override fix in changesets 3264, 3265, but I'm not sure if that will have any influence on this script.
Thanks for that. Reading your commit comments, it appear this only happens on the first shot? In this case, according to the script's log, if there is a bug then it is happening through-out the intervalometer run on many shots.
Also, if your second svn commit comment :
The camera may engage the ND filter in bright light, but take the picture without it (not CHDK related).is about the issue here, that's a script logic problem and not related to the patch?
I posted a patched script file for Wreck to try. With the ND filter issue fixed, we can work on whether there is an issue with the exif value not matching the override or with the override not actually being applied. The shooting part of the script code is pretty much standard stuff :
-- set up all exposure overrides
set_tv96_direct(tv96setpoint)
set_sv96(sv96setpoint)
if( av96setpoint ~= nil) then set_av96_direct(av96setpoint) end
nd_string="none"
if(Av_mode > 1) then -- ND filter available ?
if ( insert_ND_filter == true ) then
set_nd_filter(1) -- activate the ND filter
nd_string="NDin"
else
set_nd_filter(2) -- make sure the ND filter does not activate
nd_string="NDout"
end
end
-- and finally shoot the image
press("shoot_full_only")
sleep(100)
release("shoot_full")
repeat sleep(50) until get_shooting() == false