楽々PIC

水田除草と言うブログを書いていますが、PIC関連の記事が意外に人気で驚いています。 PICを使った電子工作に興味を持つ方が多いことを知って、一緒にPICを学ぶブログを作りたいと思いました。 「楽々PIC」は教材と言うよりも少し実用性?のある楽しい道具を作りながら学ぶブログを目指します。

タイマー

汎用タイマーの構想

 RRP1320-1-02 は表示器(LCD)と入力装置(赤外線リモコン)を備えた小さな制御装置を実現し、工夫次第で様々な用途に使えると期待しています。 LCDと赤外線リモコンは必要な間だけ取り付けてプログラム定数の設定等を行いますが、入力操作やLCD表示を必要としない場面ではLCDを取り外して動作させることが出来ます。

このような応用例の一つとして、汎用タイマーを作ってみようと思います。 内臓クロック 8MHz だけで動作する為、高精度とは言えませんがおよそ5分間隔でブザーを鳴らしたりLEDを点滅させたいと言った用途は多いと思います。 ブザーをピピピピっと鳴らしたり(0.1秒鳴動0.1秒無音を4回繰り返し)、数時間に一回の繰り返し作業にも使えるようにと下図のような汎用タイマーを RRP1320-1-03 で実現したいと考えています。

汎用タイマー
10/19日 図差し替え

50msec間隔に設定した TIMER0 割り込みをカウントしてタイマーにします。 内臓クロックの発振周波数バラツキの他、割り込み処理で TMR0H , TMR0L に初期値を書き込む際に生ずる遅れが累積する為、時間の精度は期待できません。 精度を要求する場合はハードウェアの変更が必要です。

RRP1320-1-03 の汎用タイマーは以下3つの減算タイマーで構成します。
 (1)プリタイマー (最大18時間、1秒刻み)
 (2)イベントピッチタイマー(最大1時間、0.1秒刻み)
 (3)イベントタイマー(最大1時間、0.1秒刻み)
    ただし、(2)>(3)>0 に設定します。

プリタイマーは以下2つのサブルーチンを CALL します。
 (A)減算開始時に「プリタイマー開始」を CALL します。
 (B)減算結果0になった時に「イベント開始」を CALL します。 10/19日削除
イベントタイマーは、
 (C)減算結果0になった時に「イベント終了」を CALL します。
イベントピッチタイマーは、
 (B)減算結果0になった時に「イベント開始」を CALL します。 10/19日削除
 (B)減算開始時に「イベント開始」を CALL します。       10/19日追記


上図は(A)でクリア、(B)でセット、(C)でクリアした場合のポート出力を示します。

プリタイマーと、イベントピッチタイマーには各々繰り返し回数を設定します。 繰り返し回数が0に設定された時は、電源が切られるまで繰り返します。 プリタイマーの繰り返し回数は上図(シーケンス)の繰り返し回数になります。

以上の構想を元に、RRP-1320-1-03 を作る予定です。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



RRP1320-1 回路図

 以前、「楽々PICとは」と言う記事に、このブログを通して進めるPICの学習方針のようなものを次のように書いています。

 学習ツールのような基板と開発環境を動かしながら、一部のプログラムを変更してみて、思い通りの変化が得られるかを確かめて勉強する方が近道だと思います。 このブログは「教える」程の知識の無い私が書き進める都合上、「学習ツール」のように広く学べる基板を使うのではなくて、「楽しんで使える道具」を作りながら勉強することを狙います。

これまでに幾つかの機能を試して、私自身ある程度PICが使えることを確かめ、「楽しんで使える道具」を構成するパーツとしてのプログラムを作って来ました。 USB など、まだまだ勉強が必要なこともありますが、そろそろ「楽しんで使える道具」を具体化したいと考えていました。

様々なキーワードでブログを訪れてくれる様子を見ながら、ゼロから学ぶからこそ目に見える成果が少なく、退屈な作業の中で挫折しかねないアセンブラ初心者の方々を支援したいと思います。 そして、工夫次第で使える道具を作り、応用例を紹介する予定です。 応用例はマイコンを勉強中の方でなくても興味を持って貰えるものを目指します。 道具を構成するハードウェアはブレッドボードで作ります。 特に気に入ったり、繰り返し使いたい場合はユニバーサル基板等でより小型軽量に作ることも可能です。

その回路に名前を付けてシリーズ化します。 シリーズ最初の回路 RRP1320-1 は下図の予定です。

RRP1320-1_回路図


表示器としてLCDを採用し、タイマーやスイッチ、温度センサー、赤外線リモコンと言った入力をトリガーに FET 出力を作り出します。 LCD制御や、赤外線リモコンなどの制御をゼロから学ぶのではなくて、初めは動作確認されたプログラムを使い、その機能と他の入出力を結びつけるプログラムを自作するだけで「目に見える成果を出せる環境」を提供することで支援したいと思います。 そして、公開されているソースを見て、あるいは一部を変更して結果を確かめながらLCD制御や赤外線リモコンの制御も自作できるようになると思います。 

アセンブラは他の人が作ったソフトウェア資産を活用し難いと思いますが、同じハードウェアであれば再利用可能な形で提供できると思います。 例えばLCD制御はデータ・メモリーの所定の範囲(仮想V-RAM)に ASCII コードを書くだけで(見かけ)自動的にLCDに表示される機能を提供ます。 この仮想V-RAMは PIC18F1320 には無いけれど RRP1320-1 にはある SFR のような存在と言えそうです。 既に「LCDに自動転送」と言う記事で機能を確認済みですが、少しでも利用しやすいように調整中です。

RRP1320-1_1

以下のサイトでは、部品表やブレッドボード配線図、プログラムの使い方など詳細なドキュメントと一緒にプロジェクト一式をダウンロード可能な形で提供しています。

rrpdlc



以下は関連記事のインデックスにします。

RRP1320-1-01 概要 
 一部をブレッドボードに実現して、所定のデーター・メモリーの内容をLCDに自動転送するプログラムを作りました。 データ・メモリーの所定の範囲(仮想V-RAM)に ASCII コードを書くだけで(見かけ)自動的にLCDに表示される機能を提供ます。

RRP1320-1-02 概要 
  RRP1320-1-01 に赤外線リモコン受信機能を追加して、RRP1320-1-02 を作りました。 赤外線リモコンを受光するとLCDの2行目に受信コードを表示します。 登録できる赤外線コードは16個、これに登録外の場合も合わせて17個のサブルーチンを準備して、赤外線リモコン受信の都度、17個の中のどれかをサブルーチン・コールします。

RRP1320-1-03 概要 
 「汎用タイマーの構想」に基づいて、RRP1320-1-03 を作りました。 内臓クロックを使ったタイマーですから、3%程度の誤差があるとは思いますが、使える場面が多いと思います。 プレタイマー、イベントタイマー、イベントピッチと言った時間や、繰り返し回数と言った定数は所定の範囲内で変更可能です。

RRP1320-1-04 概要 
 RRP1320-1-03 に温度制御機能を追加しました。 パン作りのイースト発酵などに応用出来そうです。 温度制御用に加温用と冷却用の出力を準備しました。 各々 EEPROM に保存した温度を超えると動作します。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。





PIC18F1320の入出力ピン

 PICのプログラムは、PICデバイスに書き込んで周辺回路を動かしてなんぼのものです。 このブログでも小規模ながら実際に基板を製作し、周辺回路の動作を確かめてPICについて学びたいと思います。

最初に作る基板(RRP1320-0)はPICKit3と接続してPIC18F1320を動かすに必要な最小限の機能を持った物にします。 その後に幾つかの周辺回路基板を作って、RRP1320-0と接続すれば目に見える入出力結果を楽しめるようにしたいと考えています。

PIC18F1320の概要は以下の通りです。
 ピン数                           18pin
 プログラム・メモリー     4Kワード(8Kbyte)
 データ・メモリー             256byte
 EEPROMメモリー        256byte
 I/Oポート ポート           A,B
 ADC                              7入力
 USART                          1ch
 CCP                              1個

PIC18Fシリーズの中で、最もピン数の少ないPICデバイスですが、最小規模の18F1220に比べて2倍のプログラム・メモリー容量を持っています。

ピン配置は下図のようになっています。
1320pin

18ピンの内、以下のピンは自由に使えない(使い難い)ピンで、残り11ピンが使えます。
 1.電源ピン ( 5 , 14 )
 2.PICKit3と接続 ( 4 , 12 , 13 )
 3.クロック接続 ( 15 , 16 )


下表は、18F1320各ピンの機能概要で、左端の数字はピン番号を示します。

1RA0/AN0
 入出力ポート or ADC入力
2RA1/AN1/LVDIN
 入出力ポート or ADC入力 or LVD外部電圧設定
3RA4/T0CKI
 入出力ポート(OD) or TIMER0外部クロック入力
4MCLR~/Vpp/RA5
 MCLR~ or 入力専用ポート
5VSS/AVSS
 電源VSS
6RA2/AN2/Vref-
 入出力ポート or ADC入力 or Vref-
7RA3/AN3/Vref+
 入出力ポート or ADC入力 or Vref+
8RB0/AN4/INT0
 入出力ポート or ADC入力 or INT0入力
9RB1/AN5/TX/CK/INT1
 入出力ポート or ADC入力 or USART CK/TX
10RB4/AN6/RX/DT/KBI0
 入出力ポート(状態変化割込) or ADC入力 or USART RX/DT
11RB5/PGM/KBI1
 PGM or 入出力ポート(状態変化割込)
12RB6/PGC/T1OSO/T13CKI/P1C/KBI2
 PGC or 入出力ポート(状態変化割込) or タイマー入出力
13RB7/PGD/T1OSI/P1D/KBI3
 PGD or 入出力ポート(状態変化割込) or タイマー出力
14VDD/AVDD
 電源VDD
15OSC2/CLKO/RA6
 OSC2 or クロック出力 or 入出力ポート
16OSC1/CLKI/RA7
 OSC1 or クロック入力 or 入出力ポート
17RB2/P1B/INT2
 入出力ポート or INT2入力
18RB3/CCP1/P1A
 入出力ポート or CCP入出力

ピン名称が赤色のものはPICKit3を接続してデバックやプログラミングをする間、決められた負荷以外は接続できません。 ピン番号が青色のもの ( RB ) はプログラムで内部プルアップ抵抗の有無を設定出来るピンです。 ピン番号が緑色のRA4はオープンドレイン出力です。(知らずにロジックICを接続するとスゴ~ク悩みます。)

各ピン毎に機能が決められていて、なおかつ複数の機能を受け持っています。 今回は以上の説明にとどめます。


RRP1320-0 関連記事のインデックスはこちら → RRP1320-0 回路図


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



ダウンロードコーナー
記事検索
アンケートに御協力下さい


アーカイブ
楽々PIC 宛てBlogMail


--- ご了承下さい ---

注意して記事を書いていますが、記事及びリンク先の情報による不利益について、一切責任を負い(負え)ません。
QRコード
QRコード
アクセスカウンター

    Atsuhiro Imai

    バナーを作成


    プロフィール

    jyosou_robot

    • ライブドアブログ