static unsigned int tachoCnt, cnt, maxcnt, cycle_data ;
static char buf[6];
static double cycleTime, minRotationCnt, cycleTime1, cycleTime2 ;
double measurement()
{
// TIMER1の設定
PIE1.TMR1IE = 0;
PIR1.TMR1IF = 0;
T1CON.T1RUN = 0;
T1CON.T1CKPS0 = 1;
T1CON.T1CKPS1 = 1;
T1CON.T1OSCEN = 0;
T1CON.NOT_T1SYNC = 1;
T1CON.TMR1CS = 0;
T1CON.TMR1ON = 0;
TMR1L = 0;
TMR1H = 0;
//信号の立ち上がりをチェックする。
while (TA_SIG != ON)
;
while (TA_SIG != OFF)
;
//TIMER1を開始する。
T1CON.TMR1ON = 1;
//信号の立ち上がりをチェックする。
while (TA_SIG != ON)
;
while (TA_SIG != OFF)
;
//TIMER1を停止する。
T1CON.TMR1ON = 0;
//オーバーフローをチェックする。
if (PIR1.TMR1IF == 1)
return (-1.0);
//実時間に変換する。
cnt = TMR1H << 8;
cnt = cnt | TMR1L;
return ((double)cnt 4.0); // (1/8000000)481000000
}