12F629 / プリスケーラ


メモです。

bit 3 PSA: プリスケーラ用途指定ビット

  • 1 = プリスケーラを WDT に割り当てる
  • 0 = プリスケーラを TIMER0 に割り当てる

bit 2-0 PS2:PS0: プリスケーラ分周比選択ビット

TMR0 分周比WDT 分周比
0001 : 21 : 1
0011 : 41 : 2
0101 : 81 : 4
0111 : 161 : 8
1001 : 321 : 16
1011 : 641 : 32
1101 : 1281 : 64
1111 : 2561 : 128

4.4.1 プリスケーラの設定切り替え_

プリスケーラの設定はすべてソフトウェア的に行います(プログラム実行中にチャチャっと変更できます)。Timer0からWDTへプリスケーラの割り当てを変える場合、以下の命令順序(例 4-1)で実行すれば、意図しないデバイスリセットを避けられます。

逆に、WDTからTimer0へプリスケーラの割り当てを変える場合、以下の命令順序(例 4-2)を使用します。例えWDTが無効にしてあっても、この方法を利用すべきです。

EXAMPLE 4-1: CHANGING PRESCALER (TIMER0→WDT)

bcf    STATUS,RP0    ;Bank 0
clrwdt               ;Clear WDT
clrf   TMR0          ;Clear TMR0 and
                     ; prescaler
bsf    STATUS,RP0    ;Bank 1
movlw  b’00101111’ ;Required if desired
movwf  OPTION_REG    ; PS2:PS0 is
clrwdt               ; 000 or 001
                     ;
movlw  b’00101xxx’ ;Set postscaler to
movwf  OPTION_REG    ; desired WDT rate
bcf    STATUS,RP0    ;Bank 0

EXAMPLE 4-2: CHANGING PRESCALER (WDT→TIMER0)

clrwdt               ;Clear WDT and
                     ; postscaler
bsf    STATUS,RP0    ;Bank 1
movlw  b’xxxx0xxx’ ;Select TMR0,
                     ; prescale, and
                     ; clock source
movwf  OPTION_REG    ;
bcf    STATUS,RP0    ;Bank 0

ナビゲーション

プロフィール

Photo Hondarer  My status

自分に正直に、目指す物を目指すかたちで、全ての人が幸せになれるシステムを削り出す職人でありたい。

Powered by
HndWiki 021250