12F629 / プリスケーラ
メモです。
bit 3 PSA: プリスケーラ用途指定ビット
- 1 = プリスケーラを WDT に割り当てる
- 0 = プリスケーラを TIMER0 に割り当てる
bit 2-0 PS2:PS0: プリスケーラ分周比選択ビット
値 | TMR0 分周比 | WDT 分周比 |
000 | 1 : 2 | 1 : 1 |
001 | 1 : 4 | 1 : 2 |
010 | 1 : 8 | 1 : 4 |
011 | 1 : 16 | 1 : 8 |
100 | 1 : 32 | 1 : 16 |
101 | 1 : 64 | 1 : 32 |
110 | 1 : 128 | 1 : 64 |
111 | 1 : 256 | 1 : 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