PIC18(L)F1XK22 を使用しています。タイマー 3 を同期カウンターとして使用しようとしています。
PIC は内部発振器を使用して動作しています。
CONFIG FOSC = IRC ; Internal oscillator
これにより、ピン RA5 の外部オシレータとしての使用がオフになります。
T1CON の T1OSCEN は 0、T3CON の TMR3CS は 1 です。RA5 TRIS ビットをセットし、RA5 WPU ビットをクリアしました。
私の問題は、ピン RA5 (T13CLKI) がアクティブなプルアップを持っているか、何かによって駆動されているように見えることです。
RA5 の前に次の抵抗ネットワークがあります。
+5---10K------X-----24K----->RA5
ポイント X は、ホール効果センサーによって駆動されます。X が 0 ボルトの場合、RA5 は 2.2 ボルトです。24K 抵抗を 10K に減らすと、X が 1.1 ボルトに減少します。カウンターが機能する前に、抵抗を約 4K に減らす必要があります。
タイマーを設定するために使用したコードは次のとおりです...
#define TM3CK_TRIS TRISA,TRISA5,A
#define TM3CK_WPU WPUA,WPUA5,A
BCF PIE2,TMR3IE,A ; Disable Timer3 interrupt
BSF TM3CK_TRIS ; set RA5 (T13CKI) as input
BCF TM3CK_WPU ; disable weak pull up on RA5
; pull up and isolation resistor are external
CLRF TMR3H,A ; clear Timer 3
CLRF TMR3L,A
MOVLW 0x8F ; 1xxx xxxx RD16 16 bit read/write
; x0xx xxxx unused bit
; xx00 xxxx T3CKPS 1:1 prescale
; xxxx 1xxx T3CCP1 something to do with comparators
; xxxx x1xx T3SYNC Do not sychronize with external clock
; xxxx xx1x TMR3CS external clock from RA5 (T13CKI)
; xxxx xxx1 TMR3ON enable timer
MOVWF T3CON,A
BCF TM3CK_WPU
BSF INTCON2,RABPU,A ; disable all pull ups
最後の 2 行は、タイマーが開始された後にすべてのプルアップをオフにする無駄な試みで追加されました。
どんな助けやアイデアも大歓迎です。