PIC16F1789 & MPUトレーナー 10 / パルス幅を測る

参考: 定番!ARMキット&PIC用Cプログラムでいきなりマイコン制御[DVD-ROM付き] (マイコン活用シリーズ), pp.99-102


Timer1 のクロックを 1 MHz (= 16 MHz / 4 クロック / 4 分周) にすると、Timer1 は 1 μsec (= 1/(1 MHz)) ごとにインクリメントする。
16 ビットカウンターであるので、被測定パルスの立ち上がりエッジで Timer1 をスタートして被測定パルスの立ち下がりエッジで Timer1 をストップすれば 1 μsec × (2^16-1) = 65.535 msec までのパルス幅が測れる。
f:id:ti-nspire:20170322142525p:plain:h250 f:id:ti-nspire:20170322141602j:plain:h250 f:id:ti-nspire:20170322141751p:plain:h250 f:id:ti-nspire:20170322141548j:plain:h250


main.c

// テキスト p.101、リスト 11-2 のまま


.ino

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH); delay(50);
  digitalWrite(13, LOW ); delay( 1);
}

PIC16F1789 & MPUトレーナー 9 / 周波数を測る

参考: 定番!ARMキット&PIC用Cプログラムでいきなりマイコン制御[DVD-ROM付き] (マイコン活用シリーズ), pp.95-98


Timer1 を周波数カウンターに使う。Timer1 のクロックソースを外部クロックに設定し、その外部クロックの数 (下の例では Genuino101 から出力されるパルスの数) を 1 秒間カウントする。16 ビットカウンターであるので、分周比を 1 にすれば (1/1) × (2^16-1) = 65.535 kHz まで測れる。さらに高い周波数まで測りたいときは分周比を上げるか測定時間を短くするかする。

f:id:ti-nspire:20170321153918p:plain:h200  f:id:ti-nspire:20170321154206p:plain:h200


f:id:ti-nspire:20170321152929j:plain:h250  f:id:ti-nspire:20170321153001p:plain:h250


main.c

// テキスト p.97、リスト 10-2 のまま