PIC16F1705の勉強を始めます。このPICは、これまで勉強してきたPIC16F1827などよりアナログ機能などが強化されたPICです。
具体的には、従来のPICの機能に加えて、OPアンプを2個内蔵しているほかゼロクロス検出機能やCLC機能(Configurable Logic Cell ),COG機能(Complementary Output Generator )などを有するコンパクトな14Pパッケージの新時代のPICです。
「きむ茶工房ガレージハウス」というサイトに詳しい説明があり、たいへん参考になります。
では、PICの新品種の時に行うLED点滅(Lチカ)から始めます。
なお、こちらの環境は、MPLAB X v5.05 , XC8 v2.00(またはv1.45) プログラマは、PICkit3 です。
回路図です。電源は乾電池(3V)とし、RC3にLEDを接続します。
ブレッドボードです。
プログラムです。
クロックは、内部クロック8MHzとしました。
-------------------------------------------------------------
/*
* File: main.c
* Author: JH7UBC Keiji Hata
* PIC16F1705 LED Blink
* Created on 2019/04/03
*/
* File: main.c
* Author: JH7UBC Keiji Hata
* PIC16F1705 LED Blink
* Created on 2019/04/03
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <stdlib.h>
#include <xc.h>
// CONFIG1
#pragma config FOSC = INTOSC //内部クロックを使う
#pragma config WDTE = OFF //ウォッチドックタイマー無効
#pragma config PWRTE = ON //パワーアップタイマーを有効にする
#pragma config MCLRE = OFF //MCLRピンをRA3として使用する
#pragma config CP = OFF //プログラムメモリを保護しない
#pragma config BOREN = ON //ブラウンアウトリセットを有効にする
#pragma config CLKOUTEN = OFF //クロック出力を無効とし、RA4ピンとして使用する
#pragma config IESO = OFF //内部・外部クロックの切り替えでの起動を行わない
#pragma config FCMEN = OFF //外部クロックを監視しない
#pragma config FOSC = INTOSC //内部クロックを使う
#pragma config WDTE = OFF //ウォッチドックタイマー無効
#pragma config PWRTE = ON //パワーアップタイマーを有効にする
#pragma config MCLRE = OFF //MCLRピンをRA3として使用する
#pragma config CP = OFF //プログラムメモリを保護しない
#pragma config BOREN = ON //ブラウンアウトリセットを有効にする
#pragma config CLKOUTEN = OFF //クロック出力を無効とし、RA4ピンとして使用する
#pragma config IESO = OFF //内部・外部クロックの切り替えでの起動を行わない
#pragma config FCMEN = OFF //外部クロックを監視しない
// CONFIG2
#pragma config WRT = OFF //フラッシュメモリを保護しない
#pragma config PPS1WAY = OFF //ロック解除シーケンスで何度でもPPSLOCKをセット/クリアできる
#pragma config ZCDDIS = ON //ゼロクロス検出回路無効
#pragma config PLLEN = OFF //×4PLLを動作させない
#pragma config STVREN = ON //スタックオーバーフローリセットを行う
#pragma config BORV = HI //ブラウンアウトリセット電圧を高(2.7V)に設定
#pragma config LPBOR = OFF //低消費電力ブラウンアウトリセット無効
#pragma config LVP = OFF //低電圧プログラミングを行わない
#pragma config WRT = OFF //フラッシュメモリを保護しない
#pragma config PPS1WAY = OFF //ロック解除シーケンスで何度でもPPSLOCKをセット/クリアできる
#pragma config ZCDDIS = ON //ゼロクロス検出回路無効
#pragma config PLLEN = OFF //×4PLLを動作させない
#pragma config STVREN = ON //スタックオーバーフローリセットを行う
#pragma config BORV = HI //ブラウンアウトリセット電圧を高(2.7V)に設定
#pragma config LPBOR = OFF //低消費電力ブラウンアウトリセット無効
#pragma config LVP = OFF //低電圧プログラミングを行わない
#define _XTAL_FREQ 8000000
void main() {
OSCCON = 0b01110010 ; // 内部クロック8MHz
ANSELA = 0b00000000 ; // AN0-AN3は使用しない
ANSELC = 0b00000000 ; // AN4-AN6は使用しない
TRISA = 0b00000000 ; // PORTAは全て出力
TRISC = 0b00000000 ; // PORTCは全て出力
PORTA = 0b00000000 ; // PORTA初期化
PORTC = 0b00000000 ; // PORTC初期化
while(1){
RC3 = 1; //LED ON
__delay_ms(500);
RC3 = 0; //LED OFF
__delay_ms(500);
}
}
---------------------------------------------------------------
クロックを最高速の32MHzで動作させるためには、
OSCCON = 0b01110000 ; として
CONFIG2で PLLEN = ON として×4PLLを有効にします。
更に、#define _XTAL_FREQ = 32000000 とします。
※コメント投稿者のブログIDはブログ作成者のみに通知されます