// "FreqCounter"のテスト // ★1 カウンター停止直前にオーバーフローがあったかどうかの確認 // ★2 異常オーバーフロー発生の報知 // 出力制御マクロ #define PB0_H (PORTB |= (1 << PB0)) // PB0 D8 #define PB0_L (PORTB &= ~(1 << PB0)) #define PB1_H (PORTB |= (1 << PB1)) // PB1 D9 #define PB1_L (PORTB &= ~(1 << PB1)) #define PB2_H (PORTB |= (1 << PB2)) // PB2 D10 #define PB2_L (PORTB &= ~(1 << PB2)) #define PB3_H (PORTB |= (1 << PB3)) // PB3 D11 #define PB3_L (PORTB &= ~(1 << PB3)) // "FreqCounter"データ unsigned long f_freq; volatile unsigned char f_ready; volatile unsigned char f_mlt; volatile unsigned int f_tics; volatile unsigned int f_period; volatile unsigned int f_comp; // テストデータ volatile unsigned int ovf_chk; volatile unsigned char ovf_on; /***** FreqCounter start *****/ void frqstart(int ms) { TIMSK0 &=~(1<= f_period) { delayMicroseconds(f_comp); if (TIFR1 & (1<