今回は自分用に、PIC16F1619とPIC16F18346のタイマ機能を比較してみました。
なお、Bloggerは組み込みのテーブルツールなどがないので、テーブルの作成は HTML Table Generator を使ってみました。
まずはLibreOffice Calcで表を作成し、これをCSVで保存します。HTML Table GeneratorにCSVファイルをインポートして、各種装飾を施し、その出力をクリップボードにコピーして貼り付けます。
まず最初にPIC16F1619。これはCuriosity Development Boardに付属してくるPICです。
PIC16F1619のタイマー構成 | |||
---|---|---|---|
TIMER0 | TIMER1/3/5 | TIMER2/4/6 | |
機能 | 8bit Timer/Counter | 16bit Timer/Counter | 8bit Timer/Period |
タイマーレジスタ | 8 bit TMR0 | 16bit TMR1H/1L | 8bit TMR2 |
ピリオドレジスタ | なし | なし | 8bit PR2 |
プリスケーラ | 3bit 1/1 – 1/256 | 2bit1/1, ½, ¼, 1/8 | 3bit 1/1 – 1/128 |
ポストスケーラ | - | - | 4bit 1/1 – 1/16 |
クロック | 各種選択可 EXTCLKエッジ選択 | T1CKI入力 Fosc Fosc/4 LFINTOSC | 4bit 12種類から選択可 |
ステータスフラグ | |||
割り込み要因 | オーバーフロー TMR0IF | オーバーフロー TMR1IF | マッチ PR2 |
リセット/リスタート | あり | 14種類から選択可 T2RST | |
ゲート制御 | ゲート極性選択 トグルモード シングルパルスモード 値ゲート ゲートイベント割り込み | ||
その他 | TMR1のゲートとして使用可 | コンパレータ出力 ADCトリガー | フリーランカウンタ ワンショット モノステーブル PWMとして利用可 |
一方、PIC16F18346は以下のようになります。
PIC16F18346のタイマー構成 | |||
TIMER0 | TIMER1/3/5 | TIMER2/4/6 | |
機能 | 16bit Timer/Counter 8bit Timer/Counter/Period | 16bit Timer/Counter | 8bit Timer/Period |
タイマーレジスタ | 8 or 16( selectable) 16 (TMR0H/TMR0L) | 16bit TMR1H/1L | 8bit TMR2 |
ピリオドレジスタ | 8bit TMR0H | なし | 8bit PR2 |
プリスケーラ | 4bit 1/1 – 1/32768 | 2bit 1/1, ½, ¼, 1/8 | 2bit 1/1, ¼, 1/16, 1/64 |
ポストスケーラ | 4bit 1/1 – 1/16 | - | 4bit 1/1 – 1/16 |
クロック | 3bit 7種から選択可 | T1CKI Fosc Fosc/4 | Fosc/4 |
割り込み要因 | マッチ(8bit) またはオーバーフロー(16bit) | オーバーフロー | マッチ PR2 |
出力 | ピンまたは他のペリフェラル | ||
リセット/リスタート | あり | ||
ゲート制御 | ゲート極性選択 トグルモード シングルパルスモード 値ゲート ゲートイベント割り込み | ||
その他 | コンパレータ出力 ADCトリガー Capture/Compare | MSSPxのシフトクロックとして使用可 |
mTouchのCVD実装ではピリオドタイマとしてTMR2/4/6を選択できるようになっていましたが、PIC16F18346 を使えば TMR0 も選択肢に入れられそうです。ただし、MCCでは 2/4/6 からのみ選択できるようになっているので、その部分は自分で実装しないといけません。CuriosityでmTouchを試してみる。その4で、
他のタイマに変更できないのか、できるとすればどうすればいいのかはちょっと調べてみたいと思います。と書きましたが、MCC上から簡単にできました。mTouchのAFAの設定でタイマを指定できるようになっています。またAFA(Automatic Frequency Adaptation)を使用しない(つまりソフトでゴリゴリ実装する)方法も選ぶことができますが、これだとタイミングを正確に取れないのでやめたほうがよさそうなのですが、もしかしてTMR0を使うならこの方法を使うしかないのかもしれません。その場合、AFAで何をやっているのかをソースを追いかけて、同様の処理をTMR0で実現すれば使えるのかも。
0 件のコメント:
コメントを投稿