PICマイコンの使い方

PICマイコンの8bitマイコンから32bitマイコンまで使いこなすぞ! 周辺機能やアセンブラ、C言語を使いこなすぞ。ARMには負けないぞ! 頼みの綱はPIC32MZだ!たのしみだなー

PIC12F

【PIC12F1822】AD変換を使ってみる2

■PIC12F1822のAD変換を使ってみる!その2
データシートのP138を参照にアセンブラコードを書きましたが、
ハイパーターミナル出力はいつも「0000」・・・
何かがおかしい・・・



そこで下記のようにAD変換後のデーター退避の際にもバンクを切り替えました。













BSFADCON0,ADGO;A/D変換開始
BTFSCADCON0,ADGO;変換待ち
GOTO$-1;
BANKSELADRESH;BANK1
MOVFADRESH,W;W←ADRESH
BANKSELH_BYTE;バンク切り替え
MOVWFH_BYTE;上位退避
BANKSELADRESL;BANK1
MOVFADRESL,W;W←ADRESL
BANKSELL_BYTE;バンク切り替え
MOVWFL_BYTE;下位退避
MOVLB0;BANK0

その1:回路と設定
間違ってたらゴメンネ!

【PIC12F1822】AD変換を使ってみる



■PIC12F1822のAD変換を使ってみる!
データシートのP133~145を参照しました。
仕様はチャンネルAN0で10bit変換に挑戦します。
10bitなので0~1023の変化量になります。



①ADCON1レジスタでは変換の仕様が設定できます。
(データシートP140参照)
・「ADFM(B7)=1」→左詰め(P136)
・「ADCS(B6~B4)=100」→Fosc/4
・「ADPREF(B1,B0)=00」→基準は電源

ADCON1 = 0B11000000;(0xC0)
Fosc/4が限界でした。
①ADCON0レジスタでは使用するチャンネルが設定できます。
(データシートP139参照)
・「CHS(B6~2)=00000」→AN0
・「GO/DONE(B1)」→ステータスビット
・「ADON(B0)」→ADC有効ビット

ADCON0 = 0B00000001;(0x01)
右上の写真はハイパーターミナルでデバックしてるところです。
それぞれの実行時間は
・ADC:9usec
・BCD:113usec(AN526を使いました。)
・文字変換:3usec(左ニブルに3を付ける作業)
Total:125usecなのでなかなかの早さですね。
・USART
 ・9.6k:6.1msec(かかりすぎww)
 ・115.2k:385usec(まあまあかな)
間違ってたらゴメンネ!
↓実験回路図



【PIC12F1822】システムクロックを32MHzで使う



PIC12F1822をシステムクロック32MHzで使うには?
OSCCONレジスタを下記の様に設定する必要があります。



(データシートP68参照)
・「SPLLEN(B7)=1」→PLL×4
・「IRCF(B6~B3)=1110」→8MHz
・「SCS(B1,B0)=00」→P61参照

OSCCON = 0B11110000;(0xF0)
システムクロック8MHz×PLL4=32MHzとなります。
1サイクル=4クロックかかるので実質8MHzですね
右上の写真はLATA1をパタパタさせたときの波形です。
BSFとBCFの間に
GOTO $+1 ←4回
NOP    ←1回
計10サイクル入れて見やすくしてます。
オシロ実測では1.25usec(10×0.125usec)なので、まあ合ってるのかな
12F675の時は1usecだから8倍速ですね。同じ8pinなのにスゴイ!
間違ってたらゴメンネ!



割り込み機能について

割り込み機能について

・複数の特定機能のトリガーに対応して割り込み発生させることが出来る。

・たとえば、

  ・A/D変換が完了したとき。

  ・タイマーカウントがオーバフローしたとき。

・それぞれビットフィールドの設定で使いこなせる。



A/D機能について

A/D機能について

・A/D変換に一定の時間を要する。

・変換後データはADRASH、ADRESLをみる。

・同時に複数のA/D変換ができない。

(変換が終わったら、同じことを別のチャンネルでやればよい。)








ギャラリー
  • 【PIC24F08KL200】PIC24F08KL200でsprintfを使う
  • 【PIC24F08KL200】PIC24F08KL200でsprintfを使う
  • 【PIC24F08KL200】PIC24F08KL200でsprintfを使う
  • 【PIC24F08KL200】PIC24F08KL200でsprintfを使う
  • 【PIC24F08KL200】PIC24F08KL200でsprintfを使う
  • 【PIC24F04KA200】PIC24F04KA200ではsprintfが使えない件
  • 【PIC24F04KA200】PIC24F04KA200ではsprintfが使えない件
  • 【PIC24F04KA200】PIC24F04KA200ではsprintfが使えない件
  • 【PIC24F04KA200】PIC24F04KA200ではsprintfが使えない件
メッセージはこちちらからお願いします。

名前
メール
本文
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

ブログパーツ
  • SEOブログパーツ
にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村
アクセスカウンタ
アクセスランキング