JavaScript が無効です。有効にしてください。
ななよんのホームページ
トップ > 電子工作 > PIC マイコン > PIC10F222 使い方

PIC10F222 使い方

最終更新日さいしゅうこうしんび:2023-08-10

 PIC10F222 はベースラインシリーズに分類される 6 ピンの PIC マイコンで、2023-03-16 現在 秋月電子通商で 45 円と最も安い PIC マイコンです。GPIO は入力専用ピンを含めて 4 ピンで、DIP 8-pin パッケージでは 2 つのピンが NC となっています。

10F222 について

 PIC10F222 は冒頭でも説明したように、ベースラインなので、機能は少ないですが安価です。10F220 の上位版(容量が多い)で、入出力可能ピンは 3 ピン、入力専用ピン(/MCLR と共用)が 1 本の計 4 本の GPIO が使えます。電源電圧範囲は 2.0 ~ 5.5 V、クロックは内蔵の 4 MHz または 8 MHz で外付け不可、プログラムメモリは 512 ワードで RAM が 23 バイトです。ペリフェラルは 8 ビットのタイマ 0(割り込み不可)と 8 ビットの ADC が 2 ch 使えます。

ピン配置図

レジスタの説明

 10F222 は機能が少ない分レジスタも最小限で初心者にはわかりやすいと思います。INDF、PCL、STATUS、FSRは(C 言語で開発をする際は)あまり使用しないので、それ以外のレジスタを解説します。

TMR0

 8 ビットタイマ(タイマ 0)の値です。読み書きが可能です。

OSCCAL

MSB LSB
CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 FOSC4

 内部発振の校正ができます。CAL = 0000000 が中心周波数で、MSB(左端)が 0 のときプラス、1 のときマイナス方向に増減します。つまり、0111111 が最大周波数、1000000 が最小周波数になります。

 FOSC4 = 1 のとき、GP2 へ INTOSC/4 すなわち内部発振の 4 分の 1 を出力します。0 では GP2 として使用できます。

GPIO

MSB LSB
- - - - GP3 GP2 GP1 GP0

 GPIO(汎用入出力)ポートの値を読み書きします。GP3 は入力専用なので、書き込みはできません。0 が L、1 が H です。例えば GP0 を H にするとき(1 を出力)GP0 ビットを 1 にします。「-」は実装されていないので、0 として扱われます。


広告

ADCON0

MSB LSB
ANS1 ANS0 - - CHS1 CHS0 GO/DONE ADON

 ANSn = 1 で当該ピンはアナログ入力、ANSn = 0 でデジタル入出力になります。ANS1 で GP1 ピン、ANS0 で GP0 ピンの設定ができます。GP2 および GP3 はアナログ入力にはできません。

 CHS は ADC チャネルを選択します。00 で GP0 が、01 で GP1 が選択されます。1X(X は 0 または 1)のとき 0.6V の内部絶対電圧リファレンスが選択されます。
GO/DONE = 1 は AD 変換の実行中を示し、1 にセットすることで AD 変換が開始します。AD 変換が完了すると 0 にクリアされ、手動でクリアすることで AD 変換を停止することが可能です。

 ADON では ADC の有効化を行います。0 にして ADC を停止することで、消費電力を抑えられます。

ADRES

 ADC の値(変換結果)です。読み出し専用です。

TRISGPIO

MSB LSB
- - - - GP3 GP2 GP1 GP0

 GPIO ピンの入出力方向を決定します。1 が入力、0 が出力です、INPUT の I、OUTPUT の O と似てると覚えましょう。GP3 は入力専用ピンなので注意してください。初期値はすべて 1(入力)です。

OPTION

MSB LSB
/GPWU /GPPU T0CS T0SE PSA PS2 PS1 PS0

 /GPWU を 0 にすると、入力ピンの状態変化によりスリープからの起床(ウェイクアップ)ができます。

 /GPPU は GP0、GP1、GP3 のプルアップを選択します。0 で有効です。ピンごとの設定はできず、GP2 は使えませんので注意が必要です。

 T0CS はタイマ 0 のクロック源を選択します。1 で GP2(T0CKI)ピンを入力とし、0 で FOSC/4 がタイマ 0 のクロックになります。つまり、1 で T0CKI を有効にすれば外部からの入力を数えることができます。

 T0SE はタイマ 0 クロック源のエッジを選択します。1 で立下り(H から L)でインクリメント、0 で立ち上がりエッジでのインクリメントになります。

 PSA はプリスケーラ(分周器)の割り当てを決定します。1 で WDT(ウォッチドッグタイマ)に、0 でタイマ 0 に割り当てます。プリスケーラの分周比は PS で決定します。

PS の値 タイマ 0 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

 タイマ 0 の入力を FOSC/4 にする場合、コンフィギュレーションビットの設定でクロックを 4 MHz にすれば、1 MHz のクロックでタイマ 0 がインクリメントすることになります。さらに、プリスケーラをタイマ 0 に割り当ててあげれば PS = 000 で 500 kHz、PS = 111 で 3906.25 Hz になります。

プログラミング

コンフィギュレーションビットの設定

 まず、コンフィギュレーションビットの設定を行います。画面上部のメニューバー「Window」をクリックし、「Target Memory Bits」内にある「Configuration Bits」をクリックします。すると、画面右下にコンフィギュレーションを設定する画面が表示されます。ここでコンフィグレーションの設定をし、「Generate Source Code to Output」をクリックすると #pragma config が生成されますので、ソースファイルに貼り付けてコンフィギュレーションの設定ができます。今回は下の画像のように設定しました。

Configuration Bits 画面の開き方 Configuration Bits 画面を開いた様子

 各ビットの説明をします。

ビット 説明
MCLRE GP3 ピン機能 1: /MCLR として使う
0: GP3(入力ピン)として使う
/CP コードプロテクション 1 でコードプロテクション オフ
WDTE ウォッチドッグタイマ 1 で WDT 有効
/MCPU /MCPU プルアップ 1 で /MCLR のプルアップ有効
(MCLRE が 1 のとき有効)
IOSCFS クロック周波数 1 で 8 MHz、0 で 4 MHz

広告

L チカをしてみる。

 L チカとは、LED チカチカのことで、マイコンの入門や動作確認で最初に行う、LED を点滅させるだけのプログラムです。10F222 で L チカを実装してみます。今回は LED を GP2 に接続しましたが、入力専用ピンである GP3 以外であればどのピンでも動くはずです。

#include <xc.h>

// _XTAL_FREQ にクロック周波数の定義をしないと、delay が使えません
#define _XTAL_FREQ 4000000

#pragma config IOSCFS = 4MHZ
#pragma config MCPU = OFF
#pragma config WDTE = OFF
#pragma config CP = OFF
#pragma config MCLRE = OFF

void main(void) {
    // 入力ピンをオープンにしたいので、プルアップを設定する
    OPTION = 0b10000000;
    // 今回は ADC は使用しない
    ADCON0 = 0b00000000;
    // 入力専用ピンである GP3 以外を出力に設定
    TRISGPIO = 0b00001000;
    // 出力初期化
    GPIO = 0;
    
    while(1) {
        // GP2 を反転させる
        GP2 = !GP2;
        // 500 ms 待つ
        __delay_ms(500);
    }
}

書き込み

 Pickit4 から流せる電流は少ないので(50 mA)、外部電源を用意するほうがいいのですが、今回は LED を点滅させるだけなので、Pickit から電源供給をします。Pickit4 を接続しツールを選択したあと、プロジェクトプロパティで「Pickit4」を選び、プルダウンメニューで「Power」を選び、チェックボックスを入れ OK でウィインドゥを閉じます。

Power の設定

 Pickit4 と 10F222 は同じ名前のピン同士を接続します。PGC は ICSPSLK、PGD は ICSPDAT です。GP2 に LED も接続しました。これで下向き矢印のボタンを押すと、PIC に書き込みができます。L チカを書き込み、LED が点滅することを確認してください。

 また、ビルド後左下の画面ダッシュボードにプログラムメモリや RAM の使用量が出ます。10F222 は容量が少ないので、LED を点滅させるだけで 30 % のメモリを消費しています。

メモリ使用率

随時更新予定


戻る
広告

右メニュー

【表示がおかしい・崩れる場合】PC では Shift と F5 を同時押し。スマホではキャッシュを削除してみてください。



とうサイトでは Cookieくっきー使用しようします。くわしくは上記じょうきの「プライバシーポリシー・免責事項等めんせきじこうとう」もご確認かくにんください。



上へ戻る