
32.768KHzの水晶をOSI/OSO端子につなげてタイマー1のT1CONで外部クロック入力を設定しましたがデバッグ用にRA0にLEDを付け点滅させるようにしましたが、
何故か水晶を外してコンデンサがついてるだけの状態にしても約0.5Hzで動きます。
どこがおかしいのでしょうか。
よろしくお願いします。
以下抜粋
void interrupt InterTimer( void ){
if (TMR1IF == 1) { // タイマー1の割込み発生か?
TMR1H = (T1INIT >> 8) ; // タイマー1の再初期値設定
TMR1L = (T1INIT & 0x00ff) ;
TMR1IF = 0 ; // タイマー1の割込フラグをリセット
second++;
if(LEDflg == 0){
LEDflg = 1;
}else{
LEDflg = 0;
}
if (second >= 60) {
Minits ++;
second = 0;
if (Minits >= 60) {
Hours ++;
Minits = 0;
if (Hours >= 24) {
Hours = 0;
}
}
}
}
void main(){
OSCCON = 0b01110010 ; // 内部クロックは8MHzとする
ANSELA = 0b00000000 ; // AN0-AN4は使用しない全てデジタルI/Oとする
ANSELB = 0b00000000 ; // AN8-AN13は使用しない全てデジタルI/Oとする
TRISA = 0b00000000 ; // ピン(RA)は全て出力に割当てる(0:出力 1:入力)
TRISB = 0b01110000 ; // ピン(RB)は全て出力に割当てる
TRISC = 0b00000000 ; // ピン(RC)は全て出力に割当てる
PORTA = 0b00000000 ; // RA出力ピンの初期化(全てLOWにする)
PORTB = 0b00000000 ; // RB出力ピンの初期化(全てLOWにする)
PORTC = 0b00000000 ; // RC出力ピンの初期化(全てLOWにする)
T1CON = 0b10011101; // 外部クロック(32.768KHz)でTIMER1をカウントする、プリスケーラカウント 1:2
TMR1H = (T1INIT >> 8); // タイマー1の初期化
TMR1L = (T1INIT & 0x00ff);
TMR1IF = 0; // タイマー1割込フラグを0にする
TMR1IE = 1; // タイマー1割り込みを許可する
while(1) {
if(LEDflg == 0){
RA0 = 1;
}else{
RA0 = 0;
}
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ちょっと不確かなんですが・・・
16F1933は32.768KHzの水晶発振回路とは別に31KHzの内部発振回路を持っています。
32.768KHzの水晶発振回路を使っているつもりが31KHzの回路につながっていませんか?
この発振回路はマニュアルでは LFINTOSC とか 31kHz と書いてあります。これを追ってみてください。
はっきり確認していないのですが水晶発振回路が停止した時には自動的に31KHzの発振回路に切り替わるのかもしれません。
関係するレジスタがクロック発振関係だけでも OSCCON のほか、CONFIG1、同2 というレジスタが関係します。CONFIG1、2 はどちらも14ビットの特殊レジスタで、ソフトで設定するのではなくソースリストの最初あたりで宣言するようになっていると思います。確認してください。
マニュアルを見直したのですが関連が複雑なので最後までフォローしていません。
以上でご勘弁を。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
スマホのバッテリー消費につい...
-
Microsoft365で作ったword文書...
-
PD充電器について
-
MMDでavi出力が出来ない
-
FLEXSOLARパネルからAmazonで買...
-
コンセントの電力は入力と出力...
-
ACアダプタの適合性・互換性に...
-
KEYENCEのシーケンスプログラム...
-
スマホ充電器購入にあたり
-
【PowerPoint VBAの高速化】
-
Excel VBAで値を変えながら、pd...
-
TOSHIBAブースターTHC-77FCSS3...
-
OBS配信すると、マイクが途切れ...
-
VBAのExecメソッドで画面を非表...
-
【ExcelVBA】最終行の取得で困...
-
ActiveReportsで動的に列追加の...
-
Access 抽出結果をExcelへ出力
-
coutで出力した文字を消去する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
Accessのテーブルからcsv出力す...
-
FLEXSOLARパネルからAmazonで買...
-
真空管 300 B の前段について
-
cout と cerrの違い
-
printfとputcharの違いは
-
スマホ充電器購入にあたり
-
PD充電器について
-
TV出力ポートをOFFにすれば良い...
-
COBOLのMOVEで桁数が異なる場合
-
Windows Formアプリからコンソ...
-
CrystalReportの文字列の折返し...
-
C#でアクセス権限の取得方法が...
-
coutで出力した文字を消去する...
-
【UWSC】WEBページ中の特定文字...
-
KEYENCEのシーケンスプログラム...
-
CRC16計算について
-
標準出力の上書き
おすすめ情報