2. 改正回路図と部品配置図、ファームウェア

 D600の制御に使うタブレットPCから定刻にビープ音を出し、これを拾って開始コマンドとしてD7100のシーケンス制御を行うモノです。
 1.で回路図をUpしましたが、そこまで満艦飾にするのはどうか・・・という事もアリ、ブリッジではなくダイオード1個で半波整流し、大容量のコンデンサで補う事として、使い慣れたトランジスタ2SC1815をスイッチ動作させることにしました。
 これまで作ってきたハードでは電池の高さを考慮する必要なくやれたのですが今度の回路は高さ制限が発生し、グリップの厚いところになる部分に部品が納まるように、電池ボックスをオフセットして付けるようにしました。
回路図
部品配置図と裏面の配線図
Index Next

E:\M_shi_Lab\MPLABXProjects\D7100Sequencer_V1.X\Sequence.c
  1     /*
  2      * File:   D7100_Ctrl.c
  3      * Author: M_shi
  4      *
  5      */
  6 
  7     #include <stdio.h>
  8     #include <stdlib.h>
  9     #include <xc.h>
 10     #define _XTAL_FREQ 1000000;
 11 
 12     /*****Configuration********/
 13     #pragma config FOSC=INTOSCIO, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF, CP=OFF, IESO=OFF//, FCMEN=OFF;
 14 
 15     int i,j,k;
 16 
 17     int main(void){
 18 
 19         ANSEL=0x00;     //all digital
 20         CMCON0=0x07;    //Comperlator off
 21         WPU=0x14;       //set pull up bit on
 22         nGPPU=0;        //pull up activate
 23         TRISIO0=0;  //GP0 output
 24         TRISIO1=0;  //GP1 output
 25         TRISIO2=0;  //GP2 output
 26         TRISIO3=1;  //GP3 input
 27         TRISIO4=0;  //GP4 output
 28         TRISIO5=0;  //GP5 output
 29 
 30             GP0 = 1;    //Speed down
 31             GP1 = 1;    //Shutter
 32             GP2 = 1;    //Speed up
 33             GP4 = 1;    //Focus
 34             GP3 = 1;    //Start Swich
 35 
 36     while(1){
 37         if(GP3 == 0){
 38             goto Start;
 39         }
 40         else
 41         {
 42             GP0 = 1;
 43             GP1 = 1;
 44             GP2 = 1;
 45             GP4 = 1;
 46             GP3 = 1;
 47         }
 48     }
 49         Start:
 50         //Diamond ring before C2 set SS=1/2000, CL=2 shot per sec.  
 51                 _delay(25000);      //wait 25ms
 52             GP4 = 0;                //Focus on
 53                 _delay(25000);       //wait 25ms
 54             GP1 = 0;                //Shutter release
 55                 _delay(12000000);   //wait 12sec
 56             GP1 = 1;                //Shutter off
 57                 _delay(25000);      //wait 25ms
 58             GP4 = 1;                 //Focus off
 59                 _delay(25000);       //wait 25ms
 60 
 61         GP2 = 0;            //Preconfig
 62         _delay(25000);      //wait 25ms
 63         for(j=1;j<=6;j++){  //Speed up from 1/2000 to 1/8000+alpha
 64                 GP0 = 0;
 65                 _delay(25000);
 66                 GP0 = 1;
 67                 _delay(25000);
 68             }
 69         GP2 = 1;
 70         _delay(25000);
 71 
 72         while(1){
 73             for(i=1; i<=6; i++){        //1/8000-1/30sec
 74                 Shutter();              // Shutter Release
 75                     _delay(480000);     // wait 480ms
 76                 GP0 = 0;                //Preconfig.
 77                     _delay(25000);      //wait 250ms
 78                 for(j=1; j<=4; j++){    //Speed Down 2EV
 79                     GP2 = 0;
 80                     _delay(25000);
 81                     GP2 = 1;
 82                     _delay(25000);
 83                 }
 84                 GP0 = 1;
 85                     _delay(25000);      //Speed down quit
 86             }
 87             for(i=1; i<=2; i++){        //1/8sec 2shot
 88                 Shutter();
 89                     _delay(590000);     //wait 590ms
 90             }
 91                 
 92 
 93             for(i=1; i<=6; i++){        //SS up from 1/8 to 1/8000sec
 94                 GP2 = 0;                //Preconfig
 95                     _delay(25000);
 96                 for(j=1; j<=4; j++){    //SS speed up
 97                     GP0 = 0;
 98                     _delay(25000);
 99                     GP0 = 1;
100                     _delay(25000);
101                 }
102                 GP2 = 1;
103                     _delay(25000);
104                 Shutter();
105                     _delay(490000);     //waite 490ms
106             }
107                 k++ ;
108                 if (k >= 12)            //After shoot 24 set
109                 {
110                     goto Multi ;
111                 }
112         }
113     Multi:
114     GP0 = 0;                            //Preconfig.
115         _delay(25000);                  //wait 25ms
116     for(j=1; j<=4; j++){               //Speed down 2EV (1/2000)
117         GP2 = 0;
118         _delay(25000);
119         GP2 = 1;
120         _delay(25000);
121     }
122         GP0 = 1;                //Capture C3 Diamond ring
123             _delay(25000);      //wait 25ms
124         GP4 = 0;                //Focus on
125             _delay(25000);      //wait 25ms
126         GP1 = 0;                //Shutter release
127             _delay(15000000);   //wait 15sec
128         GP1 = 1;                //Shutter off
129             _delay(25000);      //wait 25ms
130         GP4 = 1;                //Focus off
131             _delay(25000);      //wait 25ms
132     }
133 
134 int Shutter(void){
135         GP4 = 0;            //Focus on
136             _delay(25000);     //wait 25ms
137         GP1 = 0;            //Shutter release
138             _delay(25000);     //wait 25ms
139         GP1 = 1;            //Shutter off
140             _delay(25000);     //wait 25ms
141         GP4 = 1;            //Focus off
142             _delay(25000);     //wait 25ms
143     return 0;
144 }
145 
146 
147 
inserted by FC2 system