I'm trying to make a timelapse controller with exposure ramping.
I (want to) make use of ISO ramping icw bulbramping.
Bulbramping using the USB host/PTP protocol is not the way to go so have to combine the two methods.
1/ Changing the camera's ISO via USB host (PTP)
- this works perfectly
2/ Capture a shot by using a release cable in camer's bulb or manual mode - this works perfectly also
As soon as I capture a shot and change the ISO after that it looks like the 'set ISO' command is dropped and ignored, though. The camera's doesn't return a PTP error code...
After spending hours to find out what is going on I finally discovered after triggering the camera is too busy (by storing the picture?) to accept or process the PTP command.
After adding a delay (about 700ms) after triggering the camera it all seems to work.
I simplified the code to a minimum to illustrate what it is about.
I'm using the "USB Host Shield 2.0" and "PTP_2.0-master" libraries
uint8_t delayMs= 50;
// trigger the shutter for 50ms to let the camera make a shot (camera is in 'M'anual mode)
digitalHigh(BULB_CABLE_PORT);
delay(50);
digitalLow(BULB_CABLE_PORT);
// give it a moment
delay( delayMs );
// change the camera's ISO to ISO 800
uint16_t rc= Eos.SetProperty(EOS_DPC_Iso, (uint16_t)iso800);
if ( rc != RC_OK ) {
// show message
}
The ISO is actually changed in the camera once the delayMs has a value of appx 700 ms. or longer.
Is this normal behaviour? The delay of 700ms is pretty long and just a kind of 'an experimental value' and is probably camera dependant.
Does someone recognize this or has a better way to deal with this behaviour?