Microsoft PowerPoint - 第8α章.ppt [互換モード]



Similar documents
スライド 1

スライド 1

スライド 1

PowerPoint プレゼンテーション

untitled

スライド 1

,, ( ) 5 ma ( ) 5V V 5 6 A B C D E F G H I J , LED LED, LED, 7 LED,, 7 LED ( ) V LED VCC 5V 7 LED VCC f g f a g b a b c e d e d c dp dp VCC (

untitled

前付(念).indd

3 4 PIC

Taro11-…e…L…X…g.jtd

3 1EEPROMElectrically Erasable PROM PROMProgrammable ROM 2 EEPROM 3

PowerPoint プレゼンテーション

Microsoft Word - 工学ゼミ3_テキスト

1 4 8 (DC) PWM.

Microsoft Word - テキスト.docx

スライド 1

Microsoft Word - 工学ゼミ3_テキスト

Microsoft Word - 4章.doc

回路 : Vdd GND 回路図と呼べるようなものではありません オシレータは外部 ( セラミック発振子 ) なので GP4 と GP5 は使えません 四角の枠内はモジュールなので ここから VDD GND TX RX の4 本をつなぐだけです 測定端子 (GP0) は 1MΩの抵抗と 2MΩの半固

実習内容 PIC18C242 のポート B に接続した LED を点滅させます ( 他の実習と同じ内容です ) 8 個の LED に表示される値が +3 ずつインクリメントします MPLAB を使って MPASM アセンブラのソース ファイルをアセンブルします MPLAB とソース ファイルは配布し

BSF PORTA BCF PORTA MOVLWB MOVLWB MOVLWB MOVLWB , E=1, E=0 8 ビット 行表示 ディスプレイ制御 表示クリア エントリーモード CALLDSP MAIN BCF PORTA,3 R

DS30292A-J-page 2 Preliminary 2000 Microchip Technology Inc. PIC16F876/

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

卒 業 研 究 報 告

PowerPoint プレゼンテーション

スライド 1

Microsoft Word - 組込みプログラミング2018テキスト

RTC 時計誤差補正回路シミュレータ V1.1 マニュアル

PIC (, 2, 3 ) PIC ( 1, 2, 3 ) 1 2 (, 2 ) PIC ( 1, 2 ) 2.1 (p.34) define #define (define ) (p.61) 1 30 (RD 7 /P SP 7 ) 32 (V DD ) IC

PIC16C7X日本語データシート

余白 : 上下 25.4mm, 左右 19mm (Word2012 での やや狭い 設定 ) マイコンプログラミング演習 I レポート 1 実験日 提出日 回路構築 /LED を用いた I/O 制御 [16pt] 班員と担当責任者第 0 班レポート作成

BANK1 MOVLW b' ' PIC16F648A独自 MOVWF CMCON コンパレータ OFF BCF INTCON,PEIE 周辺割り込み OFF PIC16F648A独自 MOVLW B' ' RB2/TX, RB1/RX PIC16F648A独自 MOVW

#define HOUR 0x04 #define DAY 0x05 #define WEEKDAY 0x06 #define MONTH 0x07 #define YEAR 0x08 #define CKOUT 0x0D #define CTRLT 0x0E // CLKOUT // TIMER

C言語によるPIC(16F88)プログラミング実習テキスト

も 常に 2 つのコイルに電圧を印加する 2 層励磁方式や 1 つのコイルと 2 つのコイルに交互に電圧を印 2

正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

スライド 1

#include "uart.h" // #define RTC8583 0xA0 // RTC address #define CTRL 0x00 // RTC register notation START/STOP #defin

2. アーキテクチャ 概 要 PIC16F8x ファミリは 命 令 語 長 14bit の RISC[1]で 命 令 は35 種 類 である 1 命 令 は4クロックで 実 行 されるが 実 際 にはパイプライン 処 理 [2]されている ノイマン 型 コンピュータ[3]と 違 いプログラムとデータ

USB モジュール

Microsoft Word - 第3章.doc

PowerPoint プレゼンテーション

養 老 保 険 の 減 額 払 済 保 険 への 変 更 1. 設 例 会 社 が 役 員 を 被 保 険 者 とし 死 亡 保 険 金 及 び 満 期 保 険 金 のいずれも 会 社 を 受 取 人 とする 養 老 保 険 に 加 入 してい る 場 合 を 解 説 します 資 金 繰 りの 都

勤 怠 項 目 6~10の 追 加 < 概 要 > 勤 怠 項 目 6~10を 追 加 しました それに 伴 い 下 記 の 箇 所 が 変 更 になりました ページ 場 所 誤 25 給 与 奉 行 への テキスト 書 出 順 勤 怠 項 目 1~ 勤 怠 項 目 5 27 内 容 勤 怠 項 目

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

-2-

PIC18 Istructios PIC16, PIC x Microchip Techology Icorporated. All Rights Reserved. PICmicro PIC18 52

(Microsoft Word - Word\211\236\227p8\217\315.docx)

返還同意書作成支援 操作説明書

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

第三十六号の二様式(第五条関係)(A4)

01_07_01 データのインポート_エクスポート_1

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

1. 手 続 の 流 れ( 補 助 金 の 申 請 から 受 け 取 りまで) 加 美 町 申 請 者 受 付 審 査 補 助 金 交 付 申 請 書 ( 様 式 第 1 号 ) 申 請 交 付 決 定 申 込 順 に 予 算 の 範 囲 内 で 決 定 します 交 付 決 定 通 知 書 ( 様

現 行 工 業 地 域 準 工 業 地 域 商 業 地 域 近 隣 商 業 地 域 改 正 後 準 工 業 地 域 ( 特 別 業 務 地 区 ( 第 2 種 ) 及 び 指 定 集 積 区 域 を 除 く) 近 隣 商 業 地 域 2 / 7

AutomaticTelegraphKeyProject.c

DS30430C-J2-page 2 : 1998 Microchip Technology Inc.

事 業 税 の 外 形 標 準 課 税 事 業 税 は 都 道 府 県 が 所 得 ( 利 益 )に 対 して 課 税 します 1. 個 人 事 業 税 業 種 区 分 税 率 ( 標 準 税 率 ) 第 1 種 事 業 ( 物 品 販 売 業 製 造 業 金 銭 貸 付 業 飲 食 店 業 不 動

4 参 加 資 格 要 件 本 提 案 への 参 加 予 定 者 は 以 下 の 条 件 を 全 て 満 たすこと 1 地 方 自 治 法 施 行 令 ( 昭 和 22 年 政 令 第 16 号 ) 第 167 条 の4 第 1 項 各 号 の 規 定 に 該 当 しない 者 であること 2 会 社

目 次 必 ずお 読 みください 接 続 方 法 WEB ブラウザ 操 作 方 法 閲 覧 用 PC で 直 接 ZERO 本 体 と 接 続 する 場 合 各 ページについて 発 電 状 況 画 面 表 示... 3

私立大学等研究設備整備費等補助金(私立大学等

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

目 次 1. 積 算 内 訳 書 に 関 する 留 意 事 項 1 ページ 2. 積 算 内 訳 書 のダウンロード 3 ページ 3. 積 算 内 訳 書 の 作 成 (Excel 2003の 場 合 ) 6 ページ 4. 積 算 内 訳 書 の 作 成 (Excel 2007の 場 合 ) 13

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

平成15・16年度の建設工事入札参加資格の認定について

同 期 を 開 始 する( 初 期 設 定 ) 2 1 Remote Link PC Sync を 起 動 する 2 1 接 続 機 器 の [PIN コード ] [ ユーザー 名 ] [ パスワード ] を 入 力 する [PIN コード ] などの 情 報 は 接 続 機 器 の 設 定 画 面

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

富士山チェックリスト

<4D F736F F D2095CA8E A90DA91B18C9F93A289F1939A8F D8288B3816A5F E646F63>

03_主要処理画面.xlsx

第 1 章 : 概 要 このウェブサイトでは ウェブブラウザに 必 要 とする 電 動 機 スペックを 入 力 する 事 により 誘 導 電 動 機 の 外 形 図 を 検 索 & 照 会 すること ができます 画 面 の 紹 介 ログインボタン 一 覧 表 形 式 で 選 定 ボタン ログイン 画

「給与・年金の方」からの確定申告書作成編

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

目 次 1.はじめに 1-1. はじめに 2. 操 作 2-1. 概 要 2-2. 操 作 方 法 ( 調 査 依 頼 の 確 認 ) 2-3. 操 作 方 法 ( 回 答 登 録 ) 2-4. 操 作 方 法 (ワークシート 出 力 ) 2-5. 操 作 方 法 (ワークシート 取 込 ) 3.

untitled

電子納品チェックシステム利用マニュアル

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

WebMail ユーザーズガイド

Microsoft PowerPoint - NxLec ppt

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

目 論 見 書 補 完 書 面 ( 投 資 信 託 ) <コード 8027> 当 ファンドに 係 る 当 社 は ファンドの 販 売 会 社 として 募 集 の 取 扱 いおよび 販 売 等 に 関 する 事 務 を 行 います 金 融 商 品 取 引 契 約 の 概 要 当 社 が 行 う 金 融

<4D F736F F F696E74202D D382E982B382C68AF1958D8BE090A C98AD682B782E B83678C8B89CA81698CF6955C A2E >

kyoukai.indd

容 積 率 制 限 の 概 要 1 容 積 率 制 限 の 目 的 地 域 で 行 われる 各 種 の 社 会 経 済 活 動 の 総 量 を 誘 導 することにより 建 築 物 と 道 路 等 の 公 共 施 設 とのバランスを 確 保 することを 目 的 として 行 われており 市 街 地 環

Microsoft Word - 収納オンライン(個人情報の種類)

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編


学 校 紹 介 ページ 公 開 までの 流 れ 2 管 理 画 面 よりログイン お 知 らせいたしますID PASSにて 管 理 画 面 よりログインします さんぽう 進 学 ネットモバイル 看 護 医 療 進 学 ネット のIDにつきましては 2010 年 度 用 と2011 年 度 用 とで

PICkit 3 Starter Kit User’s Guide

年齢別人数計算ツールマニュアル

PC 移 行 は 以 下 の 流 れで 行 います 次 ページ 以 降 に 各 手 順 を 記 載 しますのでご 確 認 ください ( をクリックすると 該 当 の 説 明 にジャンプします ) 移 行 元 のPCでの 作 業 Step1 移 行 するデータをバックアップする (3ページ) [データ

- INDEX - 1 ご 利 用 時 間 1 2 メニュー 1 3 ご 利 用 になる 前 に 行 っていただきたいこと 3 (1) 所 在 地 沿 線 設 定 3 (2) 会 員 情 報 の 管 理 ( 自 社 情 報 の 設 定 ) 5 4 物 件 情 報 の 登 録 8 (1) 操 作 概

WCS β版用簡易マニュアル

を 行 うこと 又 は 必 要 な 機 能 を 追 加 することをいう ( 補 助 対 象 事 業 ) 第 3 条 補 助 金 の 交 付 対 象 となる 事 業 ( 以 下 補 助 対 象 事 業 という )は, 次 条 に 規 定 するこの 補 助 金 の 交 付 の 対 象 となる 者 ( 以

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

5 振 込 依 頼 書 の 作 成 方 法 ()ツールの 起 動 コピーまたはダウンロードしたツールをダブルクリックして 開 いてください (ツール 起 動 の 際 マクロを 有 効 にしてください ) ダブルクリック 後 以 下 のメッセージが 出 力 されますので 読 み 取 り 専 用 ボタン

Transcription:

第 8α 章 PIC16F88を 用 いたステッピングモータ の 速 度 制 御 本 稿 のWebページ 目 次 8-1. PIC16F88を 用 いたステッピングモータ 制 御 の 実 験 回 路 図 回 路 図 立 体 配 線 図 完 成 写 真 8-2.ステッビングモータの 定 速 駆 動 8-3.タイマ0 割 り 込 みによる 制 御 周 期 管 理 8-4. A/D 変 換 モジュール 8-5. ステッピングモータの 速 度 制 御 1

PICアセンブラ 入 門 演 習 の 第 8 章 にPIC16F84Aを 用 い たステッピングモータの 速 度 制 御 回 路 とアセンブラ プログラムを 紹 介 したところ,とても 多 くの 方 から アクセスを 受 けています. 本 章 ではPIC16F88を 用 いたステッピングモータの 速 度 制 御 回 路 とアセンブラプログラムを 紹 介 します. この 速 度 制 御 は,PIC16F88 内 蔵 のA/D 変 換 器 により 回 転 数 指 令 値 を 読 み 込 み,その 値 を 用 いてタイマ0の 割 り 込 み 周 期 を 設 定 してステッピングモータの 速 度 制 御 を 行 っています. PIC16F88は 吉 田 靖 幸 氏 (トランジスタ 技 術 2012 年 6 月 号 p.74)によると,2011 年 に 秋 月 電 子 通 商 で 最 も 売 れたPICマイコンです.ユーザの 根 強 い 支 持 があると 推 測 されます. 2

DIP タイプのPIC16F88 と PIC16F84A では, 共 通 モ ジュールのピン 配 置 は 同 じです.このため 第 0 章 の 図 19 の 回 路 図 においてPIC16F88をPIC16F84Aと 置 き 換 えて, 速 度 制 御 用 の 外 部 回 路 を 一 部 変 更 するだけでステッピン グモータの 制 御 ができます. 次 のスライドから 始 まる 図 1~4に 本 章 の 制 御 のために 改 造 した 回 路 図 と 立 体 配 線 図 を 示 します. 図 中 の 一 点 鎖 線 で 囲 った 部 分 が 変 更 箇 所 です. 第 0 章 の 図 19の 可 変 抵 抗 VR 1, 抵 抗 R 1, R 2,トランジスタTr 1,コンデンサC から なる 回 路 を 可 変 抵 抗 VR 1 のみの 回 路 に 変 更 してあります. 3

8-1. ステッピングモータ 制 御 の 実 験 回 路 図 +12V +12V VR 1 10k セラミック 発 振 子 4MHz RA1 RA0 OSC1 OSC2 RA2 RA3 RA4 MCLR Vdd RB7 PIC16F88 CY8C 24123 Vss RB0 RB6 RB1 RB5 RB2 RB4 RB3 ステッピ ングモー タ 駆 動 回 路 R 6 R 7 R 8 R 5 10k R 9 +6V RR3RR 4 10k 10k MCLR Vdd Vss PGD PGC LVP R 3 SW 2 SW 1 GND PICkit3 用 コネクタ GND 図 1 マイコン 回 路

X Vdc X Y Vdc Y +12V D 1 D 2 D 3 D 4 Tr 2 2SC2120 Tr 3 Tr 4 Tr 5 2SC2120 2SC2120 2SC2120 マイコン 回 路 R 6 R 7 R 8 R 9 510 510 510 RB0 RB1 RB2 RB3 GND 図 2 ステッピングモータ 駆 動 回 路

+12V +12V VR 1 10k 電 池 ボックス 単 3 4 セラミック 発 振 子 4MHz SW 2 SW 1 PIC16F88 ステッ ピング モータ 駆 動 回 路 2 駆 動 回 電 池 ボックス 単 3 4 +6V R 3 10k PICkit3 用 コネクタ MCLR Vdd Vss PGD PGC LVP R 4 10k R 5 10k R 6 R 7 R 8 R 9 GND 図 3 マイコン 回 路 の 立 体 配 線 図 GND

+12V Vdc X X Y Y D 1 D 2 D 3 D 4 Tr 2 2SC2120 Tr 3 2SC2120 Tr 4 2SC2120 Tr 5 2SC2120 マイコン 回 路 R 6 510 R 7 R 8 R 9 RB0 RB1 RB2 RB3 GND 図 4ステッピングモータ 駆 動 回 路 の 立 体 配 線 図

図 5 完 成 写 真 (マイコン 回 路 +ステッピングモータ 駆 動 回 路 ) 8

RA2 1 18 RA1 RA2/AN2/VREF- 18 RA3 RA4 MCLR VSS RB0/INT RB1 RB2 RB3 2 3 4 PIC16F8 84A 17 16 15 CY8C 24123 5 6 7 8 9 14 13 12 11 10 RA0 OSC1 OSC2 VDD RB7/PGD RB6/PGC RB5 RB4 RA3/AN3/VREF+ RA4/AN4 RA5/MCLR VSS RB0/INT/CCP1 RB1 RB2 RB3/PGM/CCP1 1 RA1/AN1 2 17 RA0/AN0 3 16 RA7/OSC1 4 15 RA6/OSC2 5 14 VDD 6 13 RB7/AN6/PGD 7 12 RB6/AN5/PGC 8 11 RB5 9 10 RB4 PIC16F8 88 CY8C 24123 (a) () PIC16F84Aのピン 配 置 (b) PIC16F88のピン 配 置 図 6 PIC16F88とPIC16F84Aのピン と 配 置 9

8-2. ステッビングモータの 定 速 駆 動 本 節 では 第 8 章 8.1 節 のPIC16F84A 用 のステッピング モータの 定 速 駆 動 プログラムをPIC16F88 用 に 書 き 直 す. PIC16F84A 用 プログラムとの 違 いを 朱 書 きで 示 す. 10

;Stepping Motor Control Program (Speed fixed) INCLUDE"p16F88 p16f88.inc" list p=16f88 SW1を 押 すとステッピングモータが 時 計 方 向 に 回 転 SW2を 押 すと 反 時 計 方 向 に 回 転 ステッピングモータの 回 転 速 度 は 一 定 第 8 章 81 8.1 節 のPIC16F84Aのプログラムとの 違 いを 朱 書 きで 示 す. 注 意 CONFIGの 前 のアンダーバーは2つあります. CONFIG _CONFIG1, _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF Register EQU 0x20 MEM1 EQU Register +0 ;MEM1 at 20 TIME1 EQU Register +1 ;TIME1 at 21 TIME2 EQU Register +2 ;TIME2 at 22 TIME3 EQU Register +3 ;TIME3 at 23 ORG 0 GOTO START ;Main Program starts at START 詳 細 はp.14, はp.15~19に 15に ORG 4 START ;Setting of Port B BSF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 1 MOVLW B'11000000' MOVWF TRISB ;RB0-5 -> Output Port, RB6,7 -> Input Port BCF ANSEL, 6 ;RB7/AN6 Digital Input BCF ANSEL, 5 ;RB6/AN5 Digital Input BCF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 0 MOVLW B'00000101' ;'00001010' -> (W) MOVWF PORTB ;(W) -> (PORTB) 11

; Main Program 第 8 章 8.1 節 のPIC16F84Aのプログラムと 全 く 一 緒 STEP1 MOVF PORTB,0 ;(RB)->(W) ANDLW B'11000000' ;(W) and 11000000 -> (W) MOVWF MEM1 ;(W) -> (MEM1) ;End of Main Program BTFSS MEM1,7 ;If the 7th bit = 1, Then skip CALL RotateR BTFSS MEM1,6 ;If the 6th bit = 1, Then skip CALL RotateL GOTO STEP1 ;Sub Routine1 RotateR MOVLW B'00000101' ;'00000101' -> >(W) MOVWF PORTB ;(W) -> (PORTB) CALL MOVLW MOVWF CALL MOVLW MOVWF CALL MOVLW MOVWF CALL RETURN COUNT1 B'00000110' PORTB COUNT1 B'00001010' PORTB COUNT1 B'00001001' PORTB COUNT1 12

第 8 章 8.1 節 のPIC16F84Aのプログラムと 全 く 一 緒 ;Sub Program2 RotateL MOVLW MOVWF CALL MOVLW MOVWF CALL MOVLW MOVWF CALL MOVLW MOVWF CALL RETURN B'00000101' PORTB COUNT1 B'00001001' PORTB COUNT1 B'00001010' PORTB COUNT1 B'00000110' PORTB COUNT1 ;Idling timer COUNT1 MOVLW 0x10 MOVWF STEPM MOVWF TIME2 STEPM1 MOVWF TIME3 STEPM2 DECFSZ TIME3,1 GOTO DECFSZ GOTO DECFSZ GOTO RETURN END TIME1 STEPM2 TIME2,1 STEPM1 TIME1,1 STEPM 13

新 しいプロジェクトの 設 定 MPLAB IDE v8.84をダブルクリック Project Project Wizard PIC16F88 を 選 択 第 0 章 p.19と 同 様 に 設 定 する. 14

ステッピングモータの 定 速 駆 動 プログラム( 本 章 p.11)の 詳 細 説 明 (1) ;Stepping Motor Control Program (Speed fixed) INCLUDE P16F88.INC" list p=16f88 PIC16F88とする. CONFIG _CONFIG1, _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF コンフィギュレーション: PIC16F88 の デ ー タ シートによると, PIC16F88 にはCONFIGURATION WORD REGISTERがCONFIG1とCONFIG2の2つあ る. それぞれを 設 定 する 必 要 がある. 各 用 語 の 説 明 は Microchip MPASM Suiteのフォ ルダ 内 のP16F88.INC 内 に 記 載 されている. 工 場 出 荷 時 にはLVPはONに 設 定 され ている.このとき9 番 ピンはPGMが 有 効 となっていて, 入 出 力 ピンRB3とし ては 使 えない.データシートのBLOCK DIAGRAM OF RB3/PGM/CCP1 PIN 参 照. そこで,LVPをOFFとする.LVP (Low Voltage Programming)は,5[V]レベル でのプログラム 書 き 込 みを 可 能 とす る 機 能 であるが,PICKit3を 利 用 する 場 合 には 必 要 ない. 15

ステッピングモータの 定 速 駆 動 プログラム( 本 章 p.11)の 詳 細 説 明 (2) Register EQU 0x20 MEM1 EQU Register +0 ;MEM1 at 20 TIME1 EQU Register +1 ;TIME1 at 21 TIME2 EQU Register +2 ;TIME2 at 22 TIME3 EQU Register +3 ;TIME3 at 23 PIC16F88にはファイルレジスタが4Bankある( 次 ページの 図 7 参 照 ). 汎 用 レジスタ(General Purpose Register)は Bank 1の 20h~7Fh 番 地 Bank 2の A0h~ Efh 番 地 Bank 3の 120h~16Fh 番 地 Bank 4の1A0h~1EFh 番 地 にある. 上 記 の 設 定 ではBank 0の20h~23h 番 地 を 使 う 設 定 である.これらのメモリにアクセス するためには 事 前 にBank 0を 選 定 しておかなけ ればならない. 16

TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h PCL 02h PCL 82h PCL 102h PCL 182h STATUS 03h STATUS 83h STATUS 103h STATUS 183h FSR 04h FSR 84h FSR 104h FSR 184h PORTA 05h TRISA 85h WDTCON 105h 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h 07h 87h 107h 187h 08h 88h 108h 188h 09h 89h 109h 189h PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2 18Dh TMR1L 0Eh PCON 8Eh EEDATH 10Eh 18Eh TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh 18Fh T1CON 10h OSCTUNE 90h 110h 190h TMR2 11h 91h T2CON 12h PR2 92h SSPBUF 13h SSPADD 93h SSPCON 14h SSPSTAT 94h CCPR1L 15h 95h CCPR1H 16h 96h General General CCP1CON 17h 97h Purpose Purpose RCSTA 18h TXSTA 98h Register Register TXREG 19h SPBRG 99h 16バイト 16バイト RCREG 1Ah 9Ah 1Bh ANSEL 9Bh 1Ch CMCON 9Ch 1Dh CVRCON 9Dh ADRESH 1Eh ADRESL 9Eh ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh 20h General A0h General 120h General 1A0h General Purpose Register 96バイト Purpose Register 80バイト Purpose Register Purpose Register Efh 80バイト 16Fh 80バイト 1EFh F0h 170h 1F0h 図 7 File Register Map 7Fh FFh 17Fh 1FFh Bank 0 Bank 1 Bank 2 Bank 3 17

ステッピングモータの 定 速 駆 動 プログラム( 本 章 p.11)の 詳 細 説 明 (3) ORG 0 ; 電 源 が 入 るとこの 番 地 からプログラム 実 行 を 開 始 する. GOTO START ORG 4 START ;Setting of Port B BSF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 1 MOVLW B'11000000' MOVWF TRISB ;RB0-5 -> Output Port, ;RB6,7 -> Input Port BCF ANSEL, 6 ;RB7/AN6 Digital Input BCF ANSEL, 5 ;RB6/AN5Digital Input 図 7 によるとTRISB が Bank 1にあるので,Bank 1を 選 定 している. Bankの 選 定 は,データ シートのARITHMETIC STATUS REGISTERによ ると, RP1, RP0 = 11 Bank3 = 10 Bank2 = 01 Bank1 = 00 Bank0 である.なお,STATUS レジスタは4バンクに 共 通 している. データシートのTRISB REGISTERによると, TRISB bit = 1 PORTB ピン 入 力 ポート レジスタは4バンクに 共 =0 出 力 ポート ANSEL:ANALOG SELECT REGISTERによると ANSELbit = 1 Analog I/O =0 Digital I/O 18

ステッピングモータの 定 速 駆 動 プログラム( 本 章 p.11)の 詳 細 説 明 (4) BCF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 0 MOVLW B'00000101 MOVWF PORTB ;'00001010' -> (W) ;(W) -> (PORTB) 図 7よりPORTBはBank 0にある.そこで,Bank 0 を 選 定 している. また, MEM1,TIME1,TIME2,TIME3はBank 0の 20h~23h 番 地 を 指 定 した.ここでBank 0を 選 定 したことで, 以 降 Bankの 選 定 を 変 えない 限 り, これらのレジスタにもアクセス 可 能 である. 19

8-3. タイマ0 割 り 込 みによる 制 御 周 期 管 理 ;タイマ0による 割 り 込 みプログラム INCLUDE"p16F88.inc" list p=16f88 CONFIG _CONFIG1, _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF OFF START ;ポートBの 設 定 ;タイマ0の 設 定 ORG 0 ; 電 源 が 入 るとこの 番 地 からプログラム 実 行 を 開 始 する. GOTO START ORG 4 ; 割 り 込 みがかかるとこの 番 地 から 開 始 する. CALL Timer0_interrupt RETFIE ; 割 り 込 み 処 理 ルーチンからメインプログラムへ 復 帰 BSF STATUS,RP0 BCF STATUS,RP1 バンク1の 選 択 MOVLW B'00000000' MOVWF TRISB ;RB0-7を 出 力 ポートに 設 定 RB0(6 番 ピン)に1と0を 周 期 的 に 出 力 するプログ ラム 新 しいところを 朱 書 きで 示 す. 詳 細 は 本 章 p.22 以 降 BCF OPTION_REG, T0CS ;システムクロック(FOSC)を 選 択. 実 際 には FOSC/4 = 4MHz/4 = 1MHz BCF OPTION_REG, PSA ;プリスケーラをタイマ0 用 に 設 定.(PSA = 1とすると,プリスケーラはWDT 専 用 となる.) BSF OPTION_REG, PS2 ; BSF OPTION_REG, PS1 ; BSF OPTION_REG, PS0 ;PS2 PS1 PS0 = 111 とすることでタイマ0のクロックをFOSC/4/256 と 設 定. ; 割 込 みの 設 定 BSF INTCON, GIE ;マスクされていない 全 ての 割 込 みを 可 とする. BSF INTCON, PEIE ;マスクされていない 全 ての 周 辺 モジュールからの 割 込 みを 可 とする. BSF INTCON, TMR0IE ;タイマ0の 割 込 みを 可 とする. BCF INTCON, TMR0IF ;タイマ0の 割 込 みフラグをクリアする. BCF STATUS,RP0 BCF STATUS,RP1 ;バンク0の 選 択 20

タイマ0による 割 り 込 みプログラム(つづき) ;メインルーチン STEP1 GOTO STEP1 ;STEP1にジャンプすることを ジ 繰 り 返 す 永 久 ループ ;サブルーチン Timer0_interrupt MOVLW B'00000001' ;'00000001' -> >(W) MOVWF PORTB ;(W) -> (PORTB) MOVLW B'00000000' MOVWF PORTB MOVLW B'11100000' ;11100000 ->(W) ;タイマ0はこの 値 を 初 期 値 としてカウントアップする. ;( 次 の 割 り 込 みは11111111 -> 00000000 となるタイミング) MOVWF TMR0 ;(W) -> TMR0 BCF INTCON, TMR0IF ;TMR0による 再 割 り 込 みを 可 能 とする. RETURN END 21

タイマ0による 割 り 込 みプログラム( 本 章 p.20, 21)の 詳 細 説 明 (1) ORG 0 ; 電 源 が 入 るとこの 番 地 からプログラム 実 行 を 開 始 する. GOTO START ORG 4 ; 割 り 込 みがかかるとこの 番 地 から 開 始 する. CALL Timer0_interrupt ;Timer0_interruptルーチンへの 分 岐 RETFIE ; 割 り 込 み 処 理 ルーチンからメインルーチンへ 復 帰 START ;ポートBの 設 定 BSF STATUS,RP0 BCF STATUS,RP1 ;バンク1の 選 択 MOVLW B'00000000' MOVWF TRISB ;RB0-7を 出 力 ポートに 設 定 22

タイマ0による 割 り 込 みプログラム( 本 章 p.20, 21)の 詳 細 説 明 (2) ;タイマ0の 設 定 BCF OPTION_REG, T0CS ;システムクロック(FOSC)を 選 択. ; 実 際 には FOSC/4 = 4MHz/4 = 1MHz BCF OPTION_REG, PSA ;プリスケーラをタイマ0 用 に 設 定. ;(PSA = 1とすると,プリスケーラはWDT 専 用 となる.) BSF OPTION_REG, PS2 ; PS2 PS1 PS0 = 111 とすることで BSF OPTION_REG, PS1 ;タイマ0のクロックをFOSC/4/256 と 設 定. BSF OPTION_REG, PS0 ; データシートによるとOPTION_REG Register ( 図 7 Bank1, 3に 共 通 )の 各 ビッ トによりタイマ0のクロックの 選 定,タイマ0のプリスケーラの 設 定 ができる. 上 のプログラムの 設 定 によりタイマ0の 入 力 クロックは,セラミック 発 振 子 に4[MHz]のものを 用 いた 場 合,4 [MHz]/4/256 = 3.906 [khz]となる. このクロックによりタイマ0をカウントアップして,タイマ0がオーバフロー (B 11111111 B 00000000 )するタイミングで 割 り 込 みをかけることができ る(ORG 4からのプログラムを 実 行 する). 割 り 込 み 処 理 プログラムの 中 で タイマ0の 値 を 例 えばB 11100000 と 設 定 すれば, (B 100000000 - B 11100000 )/3 )/3.906[kHz] = (256 224)/3.906[kHz] = 8.193 [ms] 後 に 再 び 割 り 込 みがかけられる. 23

3 番 ピン FOSC/4 T0SE MUX1 0 1 T0CS MUX2 1 0 PSA Sync 2 Cycles Data Bus 8 TMR0 reg Set TMR0IF on Overflow 0 MUX3 Prescaler 8-bit Prescaler WDT (Watch Dog Timer) + WDT prescaler 1 PSA 8 8-to-1 MUX PS2:PS0 0 1 MUX4 PSA WDT Timer-out 図 8 タイマ0のプリスケーラ のブロック 図 MUX:マルチプレクサ(Multiplexer), 複 数 の 入 力 のいずれかを 選 んで 出 力 する, 入 力 切 り 替 え 器 例 えばMUX1はT0CS=0のとき 入 力 のFOSC/4を / 出 力 する.T0CS=1のときはXORの 値 を 出 力 する. Prescaler: プリスケーラ,クロックの 分 周 器. 上 図 の 設 定 例 ではタイマ0に 入 る 前 のクロックを(1/2) n 倍 (n = 1~8)する.nはPS2~PS0により 設 定 できる. WDT: ウォッチドッグタイマ(Watch Dog Timer),コンフィギュレーションにて( CONFIG _CONFIG1, _WDT_ON) とすると,WDTが 起 動 する. 設 定 時 間 内 にプログラムがCLRWDT 命 令 を 実 行 して,WDTとそのWDT prescaler をクリア(0を 代 入 )しないとプログラム 実 行 が 強 制 リセットされる.プログラムが 暴 走 した 場 合 などにWDTは 有 効. 番 犬 タイマという 意 味. Sync 2 Cycles: Data BusからTMR0 registerに 値 を 書 き 込 む 際 に,FOSC/4の2クロックの 間,TMR0 registerの 入 力 (MUX2の 出 力 )は 無 視 される. 24

タイマ0による 割 り 込 みプログラム( 本 章 p.20, 21)の 詳 細 説 明 (4) ; 割 込 みの 設 定 BSF INTCON, GIE ;マスクされていない 全 ての 割 込 みを 可 とする. BSF INTCON, PEIE ;マスクされていない 全 ての 周 辺 モジュールからの 割 込 みを 可 とする. BSF INTCON, TMR0IE ;タイマ0の 割 込 みを 可 とする. BCF INTCON, TMR0IF ;タイマ0の 割 込 みフラグをクリアする. BCF STATUS,RP0 BCF STATUS,RP1 ;バンク0の 選 択 図 7よりPORTBはBank 0 データシートによるとINTCON Register ( 図 にある. 割 り 込 み 処 理 7 Bank0~3に 共 通 )の 各 ビットによりタイマ ルーチンにてPORTBを 0の 割 り 込 みを 設 定 できる. 利 用 するので,Bank 0を を 上 記 のGIE, PEIE, TMR0IEのビットを1に 選 択 しておく. セットし, TMR0IFを0にクリアすることで, タイマ0がオーバフローしたときに, 割 り 込 みをかけることができる.なお,タイマ0が オーバフローした 際 にはTMR0IFはセットさ れるので, 割 り 込 み 処 理 プログラムの 中 で, TMR0IFをクリアしておく 必 要 がある.これ によりタイマ0による 割 り 込 みをかけ 続 ける ことができる. 25

タイマ0による 割 り 込 みプログラム( 本 章 p.20, 21)の 詳 細 説 明 (5) ;サブルーチン Timer0_interrupt MOVLW B'00000001 MOVWF PORTB MOVLW B'00000000' MOVWF PORTB ;'00000001' -> (W) ;(W) -> (PORTB) RB0(6 番 ピン)に1を 出 力 する. RB0に0を 出 力 する. MOVLW B'11100000 ;11100000 ->(W) ;タイマ0はこの 値 を 初 期 値 としてカウントアップする. MOVWF TMR0 ;(W) -> TMR0 BCF INTCON, TMR0IF ;TMR0による 再 割 り 込 みを 可 能 とする. RETURN タイマ0がオーバフローした 際 タイマ0の 初 期 値 をB 11100000 = 224に 設 定. にはTMR0IFはセットされるの この 値 からカウントアップしてオーバフロー で, 割 り 込 み 処 理 プログラムの (B 11111111 B 00000000 )するタイミングで 中 で, TMR0IFをクリアしてお 割 り 込 みをかけることができる. 割 り 込 み 周 期 く 必 要 がある.これにより 再 び は タイマ0による 割 り 込 みをかけ (B 100000000 - B 11100000 )/3.906[kHz] = (256 ることができる. 224)/3.906[kHz] = 8.193 [ms] となる. 26

MOVLW MOVWF MOVLW MOVWF B'00000001 PORTB B'00000000 PORTB 2 [V] FOSC/4 = 1 [MHz] 1[ s]を1 サイクルとして, 各 命 令 の 実 行 に1サイクルを 要 する.1を 出 力 してから0を 出 力 するまで に2サイクル= 2[ s]を 要 してい ることが 分 かる. 図 9 タイマ0による 割 り 込 み プログラム 実 行 時 の6 番 ピンの 出 力 波 形 1 [ s] オシロスコープの 周 波 数 カウンタ 機 能 による 割 り 込 み 周 波 数 の 計 測 結 果. 割 り 込 み 周 波 数 = 121.704[Hz] 割 り 込 み 周 期 計 算 値 (256 224)/3.906[kHz] = 8.193 [ms] 割 り 込 み 周 波 数 計 算 値 1/8.193[ms] = 122.1 [Hz] 誤 差 の 主 な 原 因 は セラミック 発 振 子 の 発 信 振 周 波 数 が 4[MHz]よりわずか 少 し 低 に 低 いことによる. 27

8-4. A/D 変 換 モジュール A/D 変 換 プログラム ;AD Converter program INCLUDE"p16F88.inc" list p=16f88 AN1(18 番 ピン)からアナログ 電 圧 をA/D 変 換 モ ジュールにより 読 み 込 み,タイマ0による 割 り 込 み 周 期 をアナログ 電 圧 に 応 じて 可 変 とするプロ グラム.8α-3 節 のタイマ0による 割 り 込 みプログ ラムに 対 して 新 しく 追 加 した 箇 所 を 朱 書 きで 示 す. 詳 細 は 本 章 p.31 以 降 CONFIG _CONFIG1, _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF START ORG 0 GOTO START ;Main Program starts from START ORG 4 CALL Timer0_interrupt RETFIE ;Setting of Port B BSF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 1 MOVLW B'00000000' MOVWF TRISB ;RB0-7 -> Output Port MOVLW B'00000010' MOVWf TRISA ;RA1 -> Input Port ;Setting of Timer0 BCF OPTION_REG, T0CS ;Internal instruction cycle clock (CLKO) BCF OPTION_REG, PSA ;Internal instruction cycle clock (CLKO) BSF OPTION_REG, PS2 ; BSF OPTION_REG, PS1 ; BSF OPTION_REG, PS0 ;Timer0 Rate 1:256 28

A/D 変 換 プログラム(つづき) ;Setting of Interrupt BSF INTCON, GIE ;Enables all unmasked interrupts BSF INTCON, PEIE ;Enables all unmasked peripheral interrupts BSF INTCON, TMR0IE ;Enables the TMR0 interrupt BCF INTCON, TMR0IF ;TMR0 register did not overflow ;Setting of AD Converter MOVLW B'00000010' MOVWF ANSEL ;AN1:Analog I/O BCF ADCON1, ADFM ;Left Justified BCF ADCON1, ADCS2 ;ADCS2 = 0, ADCS = 01 -> A/D Conversion Clock = FOSC/8 BCF ADCON1, VCFG1 ;Voltage Reference = VSS BCF ADCON1, VCFG0 ;Voltage Reference =VDD BCF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 0 BCF ADCON0, ADCS1 ; BSF ADCON0, ADCS0 ; ADCS2 = 0, ADCS = 01 -> A/D Conversion Clock = FOSC/8 BCF ADCON0, CHS2 BCF ADCON0, CHS1 BSF ADCON0, CHS0 ;CHS = 001 -> AN1 BSF ADCON0, ADON ;A/D converter module is operating 29

A/D 変 換 プログラム(つづき) ; Main Program STEP1 GOTO STEP1 ;End of Main Program ;Sub Routine1 Timer0_interrupt MOVLW B'00000001 ;'00000001' -> (W) MOVWF PORTB ;(W) -> (PORTB) BSF ADCON0, GO ;AD Conversion Start AD_Wait BTFSC ADCON0, 2 GOTO AD_Wait ;Wait until AD conv is done MOVF ADRESH, 0 ;ADRESH -> (W) MOVWF TMR0 ;(W) -> TMR0 MOVLW MOVWF B'00000000' PORTB BCF INTCON, TMR0IF ;TMR0 register did not overflow RETURN END 30

A/D 変 換 プログラム( 本 章 p.28~30)の 詳 細 説 明 (1) ANSEL:ANALOG SELECT REGISTERによると ANSELbit = 1 Analog I/O ;Setting of AD Converter = 0 Digital I/O MOVLW B'00000010' MOVWF ANSEL ;AN1:Analog I/O BCF ADCON1, ADFM ;Left Justified BCF ADCON1, ADCS2 ;ADCS2 = 0, ADCS = 01 -> A/D Conversion Clock = FOSC/8 BCF ADCON1, VCFG1 ;Voltage Reference = VSS BCF ADCON1, VCFG0 ;Voltage Reference = VDD データシートのADCON1 Register( 図 10のBank 1にある)によると,A/D 変 換 結 果 は(ADDRESH, ADDRESLの2つの8ビットレジスタからなる)16ビットのレジスタに 格 納 される.A/D 変 換 結 果 は10ビットである, 今,その 値 がB 1010101001 であるとする.16ビットのレジスタへの 入 れ 方 は ADFM = 0 のとき 左 寄 せ. 1 0 1 0 1 0 1 0 0 1 * * * * * * ADFM = 1 のとき 右 寄 せ. となる. * * * * * * 1 0 1 0 1 0 1 0 0 1 ADCS2: 次 ページに 解 説 VCFG1 = 0 のとき 参 照 電 圧 は 5 番 ピンのVSS =1 1 番 ピンのVREF- VCFG0 = 0 のとき 参 照 電 圧 は14 番 ピンのVDD =1 2 番 ピンのVREF+ 図 11 参 照 31

A/D 変 換 プログラム( 本 章 p.28~30)の 詳 細 説 明 (2) BCF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 0 BCF ADCON0, ADCS1 ; BSF ADCON0, ADCS0 ; ADCS2 = 0, ADCS = 01 -> A/D Conversion Clock = FOSC/8 BCF ADCON0, CHS2 BCF ADCON0, CHS1 BSF ADCON0, CHS0 ;CHS = 001 -> AN1 BSF ADCON0, ADON ;A/D converter module is operating データシートのADCON0 Register( 図 10のBank 0にある)によると, A/D 変 換 モジュールのクロック 周 波 数 (FAD )は ADCS2 ADCS1 ADCS0 = 000 のとき FAD =FOSC/2 = 001 のとき FAD =FOSC/8 = 010 のとき FAD =FOSC/32 =011のとき FAD =FRC( 内 蔵 のA/Dモジュール 用 RC 発 振 器 の 出 力 ) = 100 のとき FAD =FOSC/4 = 101 のとき FAD =FOSC/16 =110のとき FAD =FOSC/64 = 111 のとき FAD =FRC( 内 蔵 のA/Dモジュール 用 RC 発 振 器 の 出 力 ) となる.ただし,セラミック 発 振 子 が4 [MHz]のときFOSC=4[MHz].A/D 変 換 モジュールのクロッ ク 周 期 (TAD =1/FAD)は,データシートのTAD vs. Maximum Device Operating Frequencyによると,1.6 s < TAD < 6.4 sでないといけない. よって,FOSC = 4 [MHz] のとき,TAD として8/FOSC = 2 s, 16/FOSC = 4 sの 二 通 りの 設 定 が 選 べる. 上 のプログラムではFAD =FOSC/8を 選 定 している. CHS2 CHS1 CHS0 = 000 ~110に 応 じてAN0~AN6を 選 定 ( 図 11 参 照 ) ADON = 1 のときA/D 変 換 モジュールの 電 源 が 入 る. 32

TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h PCL 02h PCL 82h PCL 102h PCL 182h STATUS 03h STATUS 83h STATUS 103h STATUS 183h FSR 04h FSR 84h FSR 104h FSR 184h PORTA 05h TRISA 85h WDTCON 105h 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h 07h 87h 107h 187h 08h 88h 108h 188h 09h 89h 109h 189h PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2 18Dh TMR1L 0Eh PCON 8Eh EEDATH 10Eh 18Eh TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh 18Fh T1CON 10h OSCTUNE 90h 110h 190h TMR2 11h 91h T2CON 12h PR2 92h SSPBUF 13h SSPADD 93h SSPCON 14h SSPSTAT 94h CCPR1L 15h 95h CCPR1H 16h 96h CCP1CON 17h 97h RCSTA 18h TXSTA 98h TXREG 19h SPBRG 99h RCREG 1Ah 9Ah General Purpose Register 16バイト General Purpose Register 16バイト 1Bh ANSEL 9Bh 1Ch CMCON 9Ch 1Dh CVRCON 9Dh ADRESH 1Eh ADRESL 9Eh ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh 20h A0h 120h 1A0h General Purpose Register 96バイト General General General Purpose Purpose Purpose Register Register Register 80バイト Efh 80バイト 16Fh 80バイト 1EFh F0h 170h 1F0h 図 10 File Register Map 7Fh FFh 17Fh 1FFh Bank 0 Bank 1 Bank 2 Bank 3 33

CHS2~CHS0 A/D Converter Positive ref voltage 0 VDD 110 101 100 011 010 001 000 RB7/AN6 RB6/AN5 RA4/AN4 RA3/AN3/REF+ RA2/AN2/REF- RA1/AN1 RA0/AN0 1 Negative ref voltage VCFG0 1 0 VCFG1 VSS 図 11 A/D 変 換 モジュールのブロック 図 34

A/D 変 換 プログラム( 本 章 p.28~30)の 詳 細 説 明 (3) ;Sub Routine1 Timer0_interrupt MOVLW B'00000001 ;'00000001' -> (W) MOVWF PORTB ;(W) -> (PORTB) BSF ADCON0, GO ;ADConversion Start AD_Wait BTFSC ADCON0, 2 GOTO AD_Wait ;Wait until AD conv is done MOVF ADRESH, 0 ;ADRESH -> (W) MOVWF TMR0 ;(W) -> TMR0 MOVLW MOVWF B'00000000' PORTB BCF INTCON, TMR0IF ;TMR0 register did not overflow RETURN データシートのADCON0 Register( 図 10のBank 0にある)によると, GO = 1 とするとA/D 変 換 モジュールはA/D 変 換 を 開 始 する. 変 換 が 終 了 するとADCON0 Registerの 第 2ビットが0にクリアされる.そこで, AD_Wait BTFSC ADCON0, 2 GOTO AD_Wait により, 変 換 が 終 了 する( 第 2ビットが0にクリアされる)まで 待 つことにする. 変 換 終 了 後, ADRESHには 変 換 結 果 の 上 位 8ビットが 格 納 されているので,これを8ビットのTMR0 Registerに 転 送 し,タイマ0のカウントアップの 初 期 値 とする. 35

MOVLW B'00000001 MOVWF PORTB BSF ADCON0, GO AD_Wait BTFSC ADCON0, 2 GOTO AD_Wait MOVF ADRESH, 0 MOVWF TMR0 2 [V] MOVLW B'00000000' MOVWF PORTB 10 [ s] 図 12 タイマ0による 割 り 込 みプログラム(A/D 変 換 モジュール) 実 行 時 の 6 番 ピンの 出 力 波 形 オシロスコープの 周 波 数 カウ ンタ 機 能 による 割 り 込 み 周 波 数 の 計 測 結 果. 図 3のVR 1 のつまみを 廻 すことで, 割 り 込 み 周 波 数 を15[Hz]~3.4 [khz] の 範 囲 で 可 変 とする. FOSC/4 = 1 [MHz] 1[ s]を1 サイクルとして, 各 命 令 の 実 行 に1サイクル,ジャンプ 実 行 時 に2サイクルを 要 する.A/D 変 換 にはMax 12TAD = 12 2 [ s] = 24 [ s]を 要 する. RB0(6 番 ピン)に1を 出 力 してか ら0を 出 力 するまでに BSF 1 BTFSC 24 + 2 MOVF 1 MOVWF 1 MOVLW 1 MOVWF 1 計 31[ s]を 要 している. A/D 変 換 の 所 要 時 間 はA/D Conversion TAD Cyclesによる. 36

8-5. ステッピングモー タの 速 度 制 御 ;AD Converter program INCLUDE"p16F88.inc" list p=16f88 AN1(18 番 ピン)からアナログ 電 圧 をA/D 変 換 モジュールによ り 読 み 込 み,タイマ0による 割 り 込 み 周 期 をアナログ 電 圧 に 応 じて 可 変 とする. 割 り 込 み 処 理 プログラムの 中 にステッピン グモータの 駆 動 信 号 生 成 プログラムを 書 くことで.ステッピ ングモータの 速 度 制 御 を 実 現 している.8α-4 節 のA/D 変 換 モ ジュールに 対 して 新 しく 追 加 した 箇 所 を 朱 書 きで 示 す. 詳 細 は 本 章 p.41 以 降 CONFIG _CONFIG1, _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF OutMode EQU 0x20 0 ;OutMode ORG 0 GOTO START ;Main Program starts from START ORG 4 CALL Timer0_interrupt RETFIE START ;Setting of Port A and B BSF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 1 MOVLW B'00000000' MOVWF TRISB ;RB0-7 -> Output Port MOVLW B'00000010' MOVWf TRISA ;RA1 -> Input Port ;Setting of Timer0 BCF OPTION_REG, T0CS ;Internal instruction cycle clock (CLKO) BCF OPTION_REG, PSA ;Internal instruction cycle clock (CLKO) BSF OPTION_REG, PS2 ; BSF OPTION_REG, PS1 ; BSF OPTION_REG, PS0 ;Timer0 Rate 1:256 37

;Setting of Interrupt BSF INTCON, GIE ;Enables all unmasked interrupts BSF INTCON, PEIE ;Enables all unmasked peripheral interrupts BSF INTCON, TMR0IE ;Enables the TMR0 interrupt BCF INTCON, TMR0IF ;TMR0 register did not overflow ;Setting of AD Converter MOVLW B'00000010' MOVWF ANSEL ;AN1:Analog I/O BCF ADCON1, ADFM ;Left Justified BCF ADCON1, ADCS2 ;ADCS2 = 0, ADCS = 01 -> A/D Conversion Clock = FOSC/8 BCF ADCON1, VCFG1 ;Voltage Reference = VSS BCF ADCON1, VCFG0 ;Voltage Reference = VDD BCF STATUS,RP0 BCF STATUS,RP1 ;Selection of Bank 0 BCF ADCON0, ADCS1 ; BSF ADCON0, ADCS0 ;ADCS2 = 0, ADCS = 01 -> A/D Conversion Clock = FOSC/8 BCF ADCON0, CHS2 BCF ADCON0, CHS1 BSF ADCON0, CHS0 ;CHS = 001 -> AN1 BSF ADCON0, ADON ;A/D converter module is operating ;Setting of Initial Value of PORTB & the Register OutMode MOVLW B'00000101' ;'00000101' -> (W) MOVWF PORTB ;(W) -> (PORTB) MOVLW MOVWF B'00000000' OutMode 38

; Main Program STEP1 GOTO STEP1 ;End of Main Program ;Sub Routine1 Timer0_interrupt MOVLW B'00000100 ;'00000100' -> (W) MOVWF PORTA ;(W) -> (PORTA) AD_Wait BSF ADCON0, GO ;AD Conversion Start BTFSC ADCON0, 2 GOTO AD_Wait ;Wait untiladconv isdone MOVF ADRESH, 0 ;ADRESH -> (W) MOVWF TMR0 ;(W) -> TMR0 CALL Rotate MOVLW B'00000000 ;'00000000' -> (W) MOVWF PORTA ;(W) -> (PORTA) BCF INTCON, TMR0IF ;TMR0 register did not overflow RETURN 39

第 8 章 のPIC16F84Aの8.2 節 のサブルーチンと 全 く 一 緒 ;Rotating Step Motor routine Rotate BTFSS OutMode,0 ;If the 0-th bit = 1, then skip the next command line GOTO CaseX0 GOTO CaseX1 CaseX0 BTFSS OutMode,1 ;If the 1-th bit = 1, then skip the next command line GOTO Case00 GOTO Case10 CaseX1 BTFSS OutMode,1 ;If the 1-th bit = 1, then skip the next command line GOTO Case01 GOTO Case11 Case00 MOVLW B'00000110' ; '00000101' -> '00000110' GOTO Fin Case01 MOVLW B'00001010' ; '00000110' -> '00001010' GOTO Fin Case10 MOVLW B'00001001' ; '00001010' -> '00001001' GOTO Fin Case11 MOVLW B'00000101' ;'00001001' -> '00000101' Fin MOVWF PORTB ;(W) ->(PORTB) INCF OutMode,1 ;(OutMode) + 1 -> (OutMode) RETURN END 40

ステッピングモータの 速 度 制 御 プログラム( 本 章 p.37~40)の 詳 細 説 明 (1) ;AD Converter program INCLUDE"p16F88.inc" list p=16f88 CONFIG _CONFIG1, _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF OutMode EQU 0x20 ;OutMode 汎 用 レジスタ(General Purpose Register)のBank 1 の 20h 番 地 のレジスタをOutModeと 命 名 ;Setting of Initial Value of PORTB & the Register OutMode MOVLW B'00000101' ;'00000101' -> (W) MOVWF PORTB ;(W) -> (PORTB) MOVLW B'00000000' MOVWF OutMode レジスタOutModeの 初 期 値 を0 に 設 定 RB3~RB0の 初 期 値 を 設 定. RB3に 0,RB2に1,RB1に0,RB0に1 を 出 力. 41

ステッピングモータの 速 度 制 御 プログラム( 本 章 p.37~40)の 詳 細 説 明 (2) ;Sub Routine1 Timer0_interrupt AD_Wait MOVLW B'00000100 ;'00000100' -> (W) MOVWF PORTA ;(W) -> (PORTA) BSF ADCON0, GO ;AD Conversion Start BTFSC ADCON0, 2 GOTO AD_Wait ;Wait until AD conv is done RA2 (1 番 ピン)に 1を 出 力. MOVF ADRESH, 0 ;ADRESH -> (W) MOVWF TMR0 ;(W) -> >TMR0 CALL Rotate MOVLW B'00000000 ;'00000000' -> (W) MOVWF PORTA ;(W) -> (PORTA) BCF INTCON, TMR0IF ;TMR0 register did not overflow RETURN P.40 のサブルーチン をコール. RA2 に 0を 出 力. 42

MOVWF PORTA BSF ADCON0, GO AD_Wait BTFSC ADCON0, 2 GOTO AD_Wait MOVF ADRESH, 0 MOVWF TMR0 CALL Rotate 5 [V] MOVLW B'00000000 MOVWF PORTA 10 [ s] BSF 1 BTFSC 24 + 2 MOVF 1 MOVWF 1 CALL 15 or 16 MOVLW 1 MOVWF 1 計 46 or 47[ s] を 要 している. 図 13 タイマ0による 割 り 込 みプログラム(A/D 変 換 モジュール+ステッピ ングモータの 速 度 制 御 ) 実 行 時 のRA2(1 番 ピン)の 出 力 波 形 ( 黄 )と RB0(6 番 ピン) の 出 力 波 形 ( 青 ) 図 3のVR 1 のつまみを 廻 すことで, 割 り 込 み 周 波 数 を15[Hz]~3.4 [khz]の 範 囲 で 可 変 とする. 図 1の ようにステッピングモータの 電 源 電 圧 12 [V]の 場 合,タイマ0による 割 り 込 み 周 波 数 が760[Hz]を 超 えると,モータはトランジスタのオン/オフの 切 換 の 速 さ(760/4 = 190 [Hz])について 行 けなくなっ て 止 まってしまう.これを 脱 調 という. 43

トランジスタTr 2 ~Tr 4 の 駆 動 波 形 RB0 RB1 5 [V] RB2 RB3 図 14 タイマ0による 割 り 込 みプログ ラム(A/D 変 換 モジュール+ス テッピングモータの 速 度 制 御 ) 実 行 時 のRB0~RB3(6~9 RB3(6 9 番 ピン)の 出 力 波 形 ( 順 に 黄, 青, 紫, 緑 ) 1 [ms] タイマ0による 割 り 込 み 周 波 数 が760[Hz]のとき, 各 トランジ スタのオン/オフの 切 換 周 波 数 は760/4 = 190 [Hz]である. 44

2012 年 11 月 45