先に書いたD600のシーケンス制御のためのファームウェアでは、1)設定値が思ったように必ず1段ずつシャッター速度を遅くしたり早くしたりすることができなかった。また、2)12秒間の2コマ/秒の連写の後、バッファがない中で多段階撮像に突入するため、上手くシャッターが切れないことがありました。 1)の対策として、シャッターを切った後の待ち時間を少し短くし、シャッター速度を設定した後の待ち時間をその分少し長くする。トータルで1コマ撮像する時間を少し削りました。 2)の対策として、連写後、および多段階撮像後少し待ち時間をおいてバッファからメモリカードへの書き込み時間を取りました。 またシャッターを切ってから次までの待ち時間を少し削れた分、8セットの撮像から9セットの13段階露光(1/4000~1sec)が可能になりました。また、第3接触の撮像のための連写の前にもバッファ書き込み時間を入れることができました。 |
D600用シーケンス制御プログラム改 |
1 /* 2 *File:CameraCtrl.c 3 *Author:M氏 4 * 5 *Createdon2014/06/27,21:48 6 */ 7 8 #include<stdio.h> 9 #include<stdlib.h> 10 #include<xc.h> 11 #define _XTAL_FREQ 1000000; 12 13 14 /*****Configuration********/ 15 #pragma config FOSC=INTOSCIO, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF, CP=OFF, IESO=OFF//, FCMEN=OFF; 16 17 int i,j,k; 18 int Time = 147; 19 20 21 22 int main(void){ 23 24 //OSCCON = 0x40; //set1MHz 25 ANSEL=0x00; //alldigital 26 CMCON0=0x07; //Comperlator off 27 WPU=0x14; //set pull up bit on 28 nGPPU=0; //pull up activate 29 TRISIO0=0; //GP1 output 30 TRISIO1=0; //GP2 output 31 TRISIO2=0; //GP3 output 32 TRISIO3=1; //GP4 input 33 TRISIO4=0; //GP5 output 34 TRISIO5=0; //GP6 output 35 while(1){ //All out off 36 GP0 = 1; //Speed down 37 GP1 = 1; //Shutter 38 GP2 = 1; //Speed up 39 GP4 = 1; //Focus 40 GP3 = 1; 41 while(1){ 42 if(GP3 == 0){ 43 goto Start1; 44 } 45 } 46 Start1: 47 48 _delay(250000); //wait 49 GP4 = 0; //Focus on 50 _delay(250000); //wait 51 GP1 = 0; //Shutter release 52 _delay(12000000); //wait 12sec 53 GP1 = 1; //Shutter off 54 _delay(25000); //wait 55 GP4 = 1; //Focus off 56 _delay(25000); //wait 57 GP2 = 0; //Preconfig. 58 _delay(25000); //wait 59 for(j=1;j<=7;j++){ //Speed up from 1/500 to 1/4000+alpha 60 GP0 = 0; 61 _delay(25000); 62 GP0 = 1; 63 _delay(25000); 64 } 65 GP2=1; 66 67 while(1){ 68 _delay(1700000); //バッファ書き込み待ち 69 GP2 = 1; 70 for(i=1; i<=7; i++){ //1/4000-1/60sec 71 _delay(100000); 72 GP4 = 0; //Focus on 73 _delay(25000); //wait 74 GP1 = 0; //Shutter release 75 _delay(25000); //wait 76 GP1 = 1; //Shutter off 77 _delay(25000); //wait 78 GP4 = 1; //Focus off 79 _delay(800000); //wait 900ms 80 GP0 = 0; //Preconfig. 81 _delay(25000); //wait 82 for(j=1; j<=2; j++){ //Speed Down 83 GP2 = 0; 84 _delay(25000); 85 GP2 = 1; 86 _delay(25000); 87 } 88 GP0 = 1; 89 _delay(50000); 90 } 91 for(i=1; i<=5; i++){ //1/30-1/2sec 92 _delay(200000); 93 GP4 = 0; //Focus on 94 _delay(25000); //wait 95 GP1 = 0; //Shutter release 96 _delay(25000); //wait 97 GP1 = 1; //Shutter off 98 _delay(25000); //wait 99 GP4 = 1; //Focus off 100 _delay(1000000); //wait 1200ms 101 GP0 = 0; //Preconfig. 102 _delay(25000); //wait 103 for(j=1; j<=2; j++){ //Speed Down 104 GP2 = 0; 105 _delay(25000); 106 GP2 = 1; 107 _delay(25000); 108 } 109 GP0 = 1; //Preconfig. 110 _delay(200000); //wait 111 } 112 113 for(i=1; i<=2; i++){ //1sec x2 shot 114 _delay(300000); 115 GP4 = 0; //Focus on 116 _delay(20000); //wait 117 GP1 = 0; //Shutter release 118 _delay(30000); //wait 119 GP1 = 1; //Shutter off 120 _delay(20000); //wait 121 GP4 = 1; //Focus off 122 _delay(1300000); //wait 1500ms 123 k++; 124 if(k>=10){ 125 goto Multi; 126 } 127 } 128 129 for(i=1; i<=5; i++){ //1/2-1/30sec 130 _delay(200000); 131 GP2 = 0; 132 _delay(25000); 133 for(j=1; j<=2; j++){ //Speed Down 134 GP0 = 0; 135 _delay(25000); 136 GP0 = 1; 137 _delay(25000); 138 } 139 GP2 = 1; 140 _delay(25000); 141 GP4 = 0; //Focus on 142 _delay(25000); //wait 143 GP1 = 0; //Shutter release 144 _delay(25000); //wait 145 GP1 = 1; //Shutter off 146 _delay(25000); //wait 147 GP4 = 1; //Focus off 148 _delay(1000000); //wait 1200ms 149 } 150 for(i=1; i<=7; i++){ //1/60-1/4000sec 151 _delay(200000); 152 GP2 = 0; 153 _delay(25000); 154 for(j=1; j<=2; j++){ //Speed Down 155 GP0 = 0; 156 _delay(25000); 157 GP0 = 1; 158 _delay(25000); 159 } 160 GP2=1; 161 _delay(20000); 162 GP4 = 0; //Focus on 163 _delay(20000); //waits 164 GP1 = 0; //Shutter release 165 _delay(30000); //wait 166 GP1 = 1; //Shutter off 167 _delay(20000); //wait 168 GP4 = 1; //Focus off 169 _delay(800000); //wait 900ms 170 } 171 for(i=1; i<=2; i++){ //1/250-1/4000sec 172 GP2 = 0; 173 _delay(25000); 174 for(j=1; j<=3; j++){ //Speed Down 175 GP0 = 0; 176 _delay(25000); 177 GP0 = 1; 178 _delay(25000); 179 } 180 GP2 = 1; 181 _delay(50000); 182 } 183 184 k++; 185 186 } 187 } 188 Multi: 189 _delay(3000000); //バッファ書き込み待ち 190 GP2 = 0; //Preconfig. 191 _delay(25000); //wait 250ms 192 for(j=1; j<=20; j++){ //Speed Down 193 GP0 = 0; 194 _delay(25000); 195 GP0 = 1; 196 _delay(25000); 197 } 198 GP2 = 1; 199 _delay(25000); 200 GP4 = 0; //Focus on 201 _delay(25000); //wait 202 GP1 = 0; //Shutter release 203 _delay(20000000); //wait 20sec 204 GP1 = 1; //Shutter off 205 _delay(25000); //wait 206 GP4 = 1; //Focus off 207 _delay(25000); //wait 208 } 209 //return(); 210