290 likes | 581 Views
2003年度 電子工学工房専門コース 第2日目 9月18日(木). PIC 回路の基礎と製作実習. 資料作成 鈴木 聡(唐沢研). 本日の予定. 午前の部(10時40分~12時10分) 講義. PICの基本(PICの特徴・最小構成・書き込み等) PICプログラミング(PICアーキテクチャ・アセンブラ) 実習内容・実習方法について. 午後の部(13時~) 実習. プログラミング実習 AKIーPICマイコン開発キット使用. PICとは?. IC(集積回路)の一種 マイコンと呼ばれる領域のIC. IC. 入力. 出力. 入出力を制御する。.
E N D
2003年度 電子工学工房専門コース 第2日目 9月18日(木)2003年度 電子工学工房専門コース 第2日目 9月18日(木) PIC回路の基礎と製作実習 資料作成 鈴木 聡(唐沢研)
本日の予定 午前の部(10時40分~12時10分) 講義 • PICの基本(PICの特徴・最小構成・書き込み等) • PICプログラミング(PICアーキテクチャ・アセンブラ) • 実習内容・実習方法について 午後の部(13時~) 実習 • プログラミング実習 AKIーPICマイコン開発キット使用
PICとは? • IC(集積回路)の一種 • マイコンと呼ばれる領域のIC IC 入力 出力 入出力を制御する。 プログラミングすることができる PIC
PICを使うと何が出来るか? • 入出力(I/O)を制御することが出来る。 スイッチを押したら(入力) LEDが点灯する(出力) センサーが反応したら(入力) モーターを動かす(出力) PCから信号がきたら(入力) PCに信号を返す(出力) ICから信号がきたら(入力) ICに信号を返す(出力) 電圧の大きさに応じて(アナログ入力) LCDに電圧を表示する(出力) • 自走することが出来る。 一定時間経過したら、出力を出す(時計等)
PICの特徴 • 開発元・・・米国マイクロチップテクノロジ社(Microchip Technology Co.) • 姿形・・・・ 主に8ピンDIP、18ピンDIP、28ピンDIP、40ピンDIP • 処理能力・・・・ 12ビット、14ビット、16ビットのRISC型コンピュータ • 速度・・・・ 最大1命令200ns(最大クロック周波数20MHz) • 動作電圧・・・・最小2Vから6Vで動作 消費電力最小30uA • 入出力ピン・・・LED直接駆動可能な容量、入力/出力プログラマブル • 開発環境・・・・アセンブラ、統合環境はフリーソフト • ROMライタ・・・秋月電子で6,700円で販売。1000円程度で自作も可能 • 価格・・・・秋葉原で1個数百円~で入手可能 • 周辺機能・・・・A/Dコンバータ、シリアルポート、タイマーなど
PICの最小構成(使用方法) 電源回路(5V)とクロック発信回路のみで動作する。 PIC 電源回路(5V) 発振回路(セラロック、水晶発振子等) 外部にコンデンサが必要 3端子レギュレータを用いた安定化を行うことが多い
PICの種類 「C]はワンタイムタイプ 「F」はフラッシュタイプを意味する
ワンタイムタイプとフラッシュタイプの違い • ワンタイムタイプ(型番にCがついている) → 一度書き込むと書き換えることが出来ない (紫外線で消去出来るタイプもある) • フラッシュタイプ(型番にFがついている) → 何度でも書き換えて使うことが出来る。 (1000回~1万回)
PICの書き込みについて(PICライター) • 専用のPICライターを用いて10秒から60秒程度 • PICはICソケットを用いて着脱式にするのが一般的 • フラッシュタイプは電気的に書き込み・消去が可能 PIC書き込みソフト 秋月電子製PICライター
PICを用いた装置の製作の流れ どんなものを作りたいか? 情報収集 回路設計 仕様の決定 プログラミング アセンブラ PIC書き込み PICライター 動作テスト 各種測定器
PICプログラミング言語 • アセンブラ(機械語、マシン語) PICの性能を限界まで引き出せるため高速。 1命令ごとの実行時間を正確に計算出来る。 大規模な開発には不向き。 • C言語 汎用の高級言語であるため開発、デバッグが容易。 動作速度はアセンブラより遅い。 コンパイラは基本的に有料で高価
アセンブラについて • 命令数は全部で35個。以下の5つに分類出来る。 バイト処理命令・・・1バイトごとの加減算や条件分岐 ビット処理命令・・・1ビットごとのセット・リセットや条件分岐 リテラル命令・・・定数の加減算等 ジャンプ命令・・・サブルーチン命令やジャンプ命令等 その他・・・スリープモード等 1ビット 例 「01001101」(1バイト)の0ビット目は0である。 7 6 5 4 3 2 1 0 1バイト
Wreg(Working Register)とデータメモリ • Wreg(Working Register)は1つ(1バイト)。メモリは複数存在。 • 演算は Wreg 対 メモリ(レジスタ)で行われる。 • メモリ対メモリの演算は一度片方のメモリをWregに格納してから行う。 例 MOVF MEMORY,W ;MEMORYの内容をWregに格納 • 定数計算(リテラル処理命令)の結果はWregだけにしか格納できないのでメモリに定数を格納したい場合は一度Wregを介してから行う。 以上の、Wregとメモリの関係を把握することが重要である。
PICのメモリ構造 • プログラムメモリ・・・プログラムを格納しておくメモリ (プログラムカウンタとページの概念) • データメモリ・・・SFR(Special Function Memory) と汎用メモリ領域が存在 • EEPROM・・・独立に用意された不揮発メモリ 電源がOFFの間も消え無い
PICのデータメモリとSFRについて PICが直接指定できるメモリ範囲は「7F」までである。そのためBANKという概念が存在する。 BANKの切換はSTATUSレジスタで行う。 STATUS:演算結果のフラグとデータ メモリのBANK指定 OPTION_REG:PICの内部の制御を 行うレジスタ PORT*:ポートの入力および出力 TRIS*:ポートの入出力モード切り換え SFR 汎用 メモリ 16F84のデータメモリ構造
プログラムの基本構造 プログラムを分かりやすくするためにラベル定義を行う。(EQU命令) プログラムスタート(ORG 00H)。ここでPICの初期設定(ポートの設定等)や各種周辺装置の初期化を行う 基本的にはメインルーチンの繰り返しである。 必要があればサブルーチンをコールする形にすると処理が階層的になり分かりやすい。 ラベル定義 初期設定 メインルーチン サブルーチン1 サブルーチン2 ラベル定義には、汎用メモリのアドレスを表すものと、ビットの機能を表すものがある。アセンブラソフトの補助的な機能であってPICの動作には直接関わらない。 サブルーチン3
アセンブラの基本 (ラベル) 命令 数値、格納先 ;コメント (ラベル) W 又は F WAIT ;サブルーチン WAIT MOVLW H’20’ ;20H(32)をWに格納(繰り返し回数) MOVWF COUNT ;WをCOUNTレジスタ(汎用レジスタ)に格納 LOOP NOP ;何もしない DECFSZ COUNT,F ;COUNT-1をしてCOUNTに格納。結果0ならスキップ GOTO LOOP ;LOOPに戻る RETURN ;メインループに戻る
命令一覧表の見方 命令 機能 影響フラグ サイクル ADDWF f , d 加算 W + f → W か f へ格納 C , DC , Z1 f:メモリ(レジスタ)のアドレス(ラベルの場合もある) k:定数値( D’61’ H’3D’ B’00111101’等 1バイト) b:ビットの位置(0~7) d:格納先(WかFを指定。WならWreg、Fなら指定メモリ) 影響フラグ(STATUSレジスタの指定ビットに自動的に反映される) Z:ゼロステータス(結果がゼロなら1) C:キャリーステータス(結果が正なら1) DC:下位4ビットキャリーステータス サイクル 実行時間を表す。10MHzのとき1サイクルは0.4μ秒
統合環境MPLAB エディタ・アセンブラ(MPASM)・シミュレータ等が全て統合されtた開発環境
ASMファイルとHEXファイル PICのプログラミングをするファイル (ASMファイル) アセンブル(MPLAB) PICに書き込むファイル (HEXファイル) PICライターではHEXファイルを指定する。
PIC16F84(A)について • 小型 ・・・・ 18ピンDIP フラッシュタイプ • 命令数 ・・・・ 35個 • 動作電圧 ・・・・ 最小2Vから6Vで動作 Typical 2mA • メモリ ・・・・ 1KWordのEEPROMと64ByteのEEPROMデータメモリ • レジスタ数 ・・・・ 64個の汎用レジスタを持つ • 入出力ピン ・・・・ LED直接駆動可能な容量(シンク25mAMax) PORTA:5ポート PORTB:8ポート の計13ポート • 価格 ・・・・ 秋葉原で1個350円で入手可能
入出力ピンの使い方 I/O 入出力モード設定方法 STATUSレジスタからBANK1に切り換えてTRISレジスタに入出力定義をセットする。0=OUTPUT、1=INPUT 入力方法 MOVF PORTA,W ;PORTAをWレジスタに入力 MOVWF DEF ;入力したPORTAのデータをDEFに格納 出力方法 MOVLW B’00001100’ ;00001100をWに格納 MOVWF PORTB ;WからPORTBに格納。 RB2,3=HIGH(点灯)
実習内容 • 「AKI-PICマイコン開発キット」を用いてPICの使用方法を学ぶ。 • サンプルプログラムを練習問題に沿って書き換えながら、PICアセンブラを理解する。 • より高度なプログラミングに挑戦したい人は応用問題に取り組む。 練習問題 1.基本的なI/O(入出力)コントロール 2.LCD(液晶モジュール)を使う 3.2台のPIC同士で通信をする 応用問題 PICの周辺機能を使いこなす 割り込み・EEPROM・タイマー・RS-232C・A/D変換・モータ回路
AKI-PICマイコン開発キット • 使用するPICはPIC16F84 • PIC部分はモジュール化されていて、電源回路、発振回路(10MHz)、RS-232Cインターフェースが搭載されている。また開発ボードにはスイッチ、LED、LCD(液晶モジュール)が搭載されている。 • 電源は3端子レギュレータで5Vに安定化されるので、7V~12V程度の直流電源を用いる。 • サンプルプログラムは以下からダウンロード http://ssro.ee.uec.ac.jp/lab_tomi/e-lab/lecture/PIC/index.html
実習の進め方 • Microchip MPLAB を起動する。 • 別紙手順に従いプロジェクトの新規作成を行う。(あらかじめ適当な場所にフォルダを作成しておくと良い) プロジェクト名: picboard.pjt Development Mode: MPLAB-SIM Processor 16F84 ADD node で picboard.asm を追加する。 • File → Open で picboard.asm を選択し、ソースファイルを表示する。 • 目的に従い、コードの変更、プログラミングを行う。 • project → Make Project (F10でも可)でアセンブルする。(エラーが無ければ picboard.hexが出力される) • picboard.hex をフロッピーディスクにコピーし、TA に渡してPICへ書き込みをしてもらう。 • (ライターがある人はライターを用いても書き込みをしても良い) • PICを開発ボードにセットして動作確認をする。 • 4に戻って、デバッグを行う。
PICライターの使用方法 RS-232C端子へ 15V電源 ここにPICを入れる。向きがあるので注意
PICライターの使用方法 ①PIC16F84を指定 ③ FOSC:HS WDTE:Disable PWRTE:Enable CP:Disable であることを確認。 ②HEXファイルロード ⑤終了メッセージを確認してからPICを取り外す。 ④「プログラム」を押して書き込みを行う