1.ハードウェア 回路図・部品配置図はここ、縦位置グリップの改造はこことこことここ 2.ファームウェア タイムシーケンスとフローチャートは下の図1.と図2.にあります。 3.使い方
III-1'にある通り、ロータリースイッチをエミュレートするGP0, GP2ピンの接続が逆になっているときは、ファームウェアのGP0とGP2を入れ替える必要があります。私の場合、このファームウェアで1/2の確率でうまくいったためファームウェアを弄ることはなかったです。また、2コマ/秒以下の速度で連続撮像するため、延々撮像してくれるようです。D600はこれに比べると癖があるので、ファームウェアを調整する必要がありました。 |
D7100Ctrl.c |
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 19 20 21 int main(void){ 22 23 //OSCCON = 0x40; //set1MHz 24 ANSEL=0x00; //alldigital 25 CMCON0=0x07; //Comperlator off 26 WPU=0x14; //set pull up bit on 27 nGPPU=0; //pull up activate 28 TRISIO0=0; //GP1 output 29 TRISIO1=0; //GP2 output 30 TRISIO2=0; //GP3 output 31 TRISIO3=1; //GP4 input 32 TRISIO4=0; //GP5 output 33 TRISIO5=0; //GP6 output 34 35 GP0 = 1; //Speed down 36 GP1 = 1; //Shutter 37 GP2 = 1; //Speed up 38 GP4 = 1; //Focus 39 GP3 = 1; 40 while(1){ //All out off 41 if(GP3 == 0){ 42 goto Start1; 43 } 44 } 45 Start1: 46 _delay(25000); //wait 100ms 47 GP4 = 0; //Focus on 48 _delay(25000); //wait 100ms 49 GP1 = 0; //Shutter release 50 _delay(14000000); //wait 12sec 51 GP1 = 1; //Shutter off 52 _delay(25000); //wait 100ms 53 GP4 = 1; //Focus off 54 _delay(25000); //wait 100ms 55 GP2 = 0; //Preconfig 56 _delay(25000); //wait 100ms 57 58 for(j=1;j<=6;j++){ //Speed up from 1/1000 to 1/8000+alpha 59 GP0 = 0; 60 _delay(25000); 61 GP0 = 1; 62 _delay(25000); 63 } 64 65 while(1){ 66 GP2 = 1; 67 _delay(25000); 68 for(i=1; i<=7; i++){ //1/8000-1/60sec 69 GP4 = 0; //Focus on 70 _delay(25000); //wait 100ms 71 GP1 = 0; //Shutter release 72 _delay(25000); //wait 100ms 73 GP1 = 1; //Shutter off 74 _delay(25000); //wait 100ms 75 GP4 = 1; //Focus off 76 _delay(500000); //wait 500ms 77 GP0 = 0; //Preconfig. 78 _delay(25000); //wait 100ms 79 for(j=1; j<=2; j++){ //Speed Down 80 GP2 = 0; 81 _delay(25000); 82 GP2 = 1; 83 _delay(150000); 84 } 85 GP0 = 1; 86 _delay(25000); 87 } 88 for(i=1; i<=3; i++){ //1/30-1/8sec 89 GP4 = 0; //Focus on 90 _delay(25000); //wait 100ms 91 GP1 = 0; //Shutter release 92 _delay(25000); //wait 100ms 93 GP1 = 1; //Shutter off 94 _delay(25000); //wait 100ms 95 GP4 = 1; //Focus off 96 _delay(750000); //wait 1s 97 GP0 = 0; //Preconfig. 98 _delay(25000); //wait 100ms 99 for(j=1; j<=2; j++){ //Speed Down 100 GP2 = 0; 101 _delay(25000); 102 GP2 = 1; 103 _delay(25000); 104 } 105 GP0 = 1; //Preconfig. 106 _delay(150000); //wait 100ms 107 } 108 109 _delay(25000); 110 GP4 = 0; //Focus on 111 _delay(25000); //wait 100ms 112 GP1 = 0; //Shutter release 113 _delay(25000); //wait 12sec 30000000=12000*250 114 GP1 = 1; //Shutter off 115 _delay(25000); //wait 100ms 116 GP4 = 1; //Focus off 117 _delay(750000); //wait 800ms 118 119 120 121 for(i=1; i<=3; i++){ //1/8-1/30sec 122 GP2 = 1; 123 _delay(25000); 124 GP4 = 0; //Focus on 125 _delay(25000); //wait 100ms 126 GP1 = 0; //Shutter release 127 _delay(25000); //wait 12sec 30000000=12000*250 128 GP1 = 1; //Shutter off 129 _delay(25000); //wait 100ms 130 GP4 = 1; //Focus off 131 _delay(750000); //wait 800ms 132 GP2 = 0; 133 _delay(25000); 134 for(j=1; j<=2; j++){ //Speed Down 135 GP0 = 0; 136 _delay(25000); 137 GP0 = 1; 138 _delay(25000); 139 } 140 GP2 = 1; 141 _delay(150000); 142 } 143 144 for(i=1; i<=7; i++){ //1/60-1/8000sec 145 GP2=1; 146 _delay(25000); 147 GP4 = 0; //Focus on 148 _delay(25000); //wait 100ms 149 GP1 = 0; //Shutter release 150 _delay(25000); //wait 12sec 151 GP1 = 1; //Shutter off 152 _delay(25000); //wait 100ms 153 GP4 = 1; //Focus off 154 _delay(500000); //wait 800ms 155 GP2 = 0; 156 _delay(25000); 157 for(j=1; j<=2; j++){ //Speed Down 158 GP0 = 0; 159 _delay(25000); 160 GP0 = 1; 161 _delay(25000); 162 } 163 GP2 = 1; 164 _delay(150000); 165 } 166 167 _delay(25000); 168 GP4 = 0; //Focus on 169 _delay(25000); //wait 100ms 170 GP1 = 0; //Shutter release 171 _delay(25000); //wait 12sec 172 GP1 = 1; //Shutter off 173 _delay(25000); //wait 100ms 174 GP4 = 1; //Focus off 175 _delay(500000); //wait 500ms 176 177 for(i=1; i<=3; i++){ 178 GP2 = 0; 179 _delay(25000); 180 for(j=1; j<=4; j++){ //Speed Down 181 GP0 = 0; 182 _delay(25000); 183 GP0 = 1; 184 _delay(25000); 185 } 186 GP2 = 1; 187 _delay(25000); 188 } 189 190 k++ ; 191 if (k >= 6) 192 { 193 goto Multi ; 194 } 195 } 196 197 Multi: 198 GP0 = 0; //Preconfig. 199 _delay(25000); //wait 100ms 200 for(j=1; j<=4; j++){ //Speed Down 201 GP2 = 0; 202 _delay(25000); 203 GP2 = 1; 204 _delay(25000); 205 } 206 GP0 = 1; 207 _delay(25000); 208 GP4 = 0; //Focus on 209 _delay(25000); //wait 100ms 210 GP1 = 0; //Shutter release 211 _delay(20000000); //wait 15sec 212 GP1 = 1; //Shutter off 213 _delay(25000); //wait 100ms 214 GP4 = 1; //Focus off 215 _delay(25000); //wait 100ms 216 } 217 //return(); 218