AVR 補 助 情 報 Rev. 1.0C-04/14 HERO ad heavy frieds
HERO ad heavy frieds 目 次 はじめに 3 割 り 込 み 4 内 部 同 期 (システム クロックへの 同 期 化 ) 5 認 識 ( 割 り 込 み 制 御 部 ) 5 命 令 同 期 ( 命 令 実 行 待 機 ) 6 応 答 処 理 ( 割 り 込 み 応 答 実 処 理 ) 6 タイマ/カウンタ 7 同 期 動 作 タイマ/カウンタの 計 数 開 始 / 停 止 タイミンク 7 同 期 動 作 タイマ/カウンタの 計 数 中 のタイマ/カウンタ 値 変 更 8 同 期 動 作 タイマ/カウンタの 前 置 分 周 器 リセット 8 と の 違 い 8 前 置 分 周 クロックとの 同 期 8 2 AVR 補 助 情 報
はじめに AVR 補 助 情 報 本 書 は 基 本 的 に 公 開 されているAVR 関 連 資 料 を 基 に 記 述 していますが 不 明 確 な 部 分 に 関 して 部 分 的 な 推 測 が 含 まれています これらは 本 文 中 でその 旨 を 記 載 しています 従 って 明 確 でない 部 分 に 関 してはあくまでも 参 考 補 助 情 報 として 扱 ってください HERO ad heavy frieds 3
割 り 込 み HERO ad heavy frieds 割 り 込 みには 外 部 割 り 込 みと 内 部 割 り 込 みがあります 外 部 割 り 込 みはテ ハ イス 外 の 要 因 によって 起 こされる 割 り 込 みのことで 対 して 内 部 割 り 込 みはテ ハ イス 内 蔵 の 周 辺 機 能 部 によって 起 こされる 割 り 込 みのことです ここでは 主 にタイミンク に 関 して 考 察 する 関 係 で これを 外 部 系 割 り 込 みと 内 部 系 割 り 込 みとに 大 別 して 考 えます これは 考 え 方 にもよ りますが 前 記 の 外 部 / 内 部 割 り 込 みの 区 分 と 必 ずしも 一 致 しません 外 部 系 割 り 込 みは 根 本 の 要 因 がテ ハ イス 外 で 従 ってその 要 因 信 号 がテ ハ イス 内 部 回 路 との 調 停 ( 同 期 化 )を 必 要 とされるものと 定 義 します これに 属 するのはINTの 外 部 割 り 込 み PCINTのヒ ン 変 化 割 り 込 み( 一 部 テ ハ イスのLowレヘ ル 割 り 込 みを 含 む) ICPのタイマ/カウンタ 捕 獲 割 り 込 み アナロク 比 較 器 割 り 込 みなどです 内 部 系 割 り 込 みは 根 本 の 要 因 がテ ハ イス 内 で 従 ってその 要 因 信 号 が 前 記 の 調 停 ( 同 期 化 )を 必 要 としないものと 定 義 します これは 前 記 以 外 の 割 り 込 みです 以 上 を 前 提 に 割 り 込 み 発 生 時 を 考 察 すると 次 のようになります 外 部 系 割 り 込 み 要 因 内 部 系 割 り 込 み 要 因 割 り 込 み 要 求 内 部 信 号 割 り 込 み 応 答 許 可 信 号 時 間 的 動 作 種 別 内 部 同 期 認 識 命 令 同 期 応 答 処 理 ヘ クタ 位 置 命 令 実 行 外 部 系 割 り 込 み 要 因 の 図 示 信 号 は 具 体 的 な 信 号 レヘ ルを 表 すものではありません これはその 割 り 込 み 条 件 に 合 致 した 要 因 が 発 生 したことを 正 論 理 で 示 したものです 従 って 例 えばINTが 上 昇 端 割 り 込 みの 場 合 は 図 示 信 号 と 一 致 します この 外 部 系 割 り 込 み 要 因 の 信 号 をテ ハ イス 内 信 号 として 扱 うため 基 本 的 にシステム クロックによって 同 期 化 が 行 なわれます この 同 期 化 の 後 で 割 り 込 み 条 件 の 判 定 が 行 なわれます 従 って 一 般 的 に 内 部 系 割 り 込 み 要 因 信 号 に 対 して1.5クロック 周 期 以 上 の 遅 延 が 伴 います 上 図 の 時 間 的 動 作 種 別 の 内 部 同 期 は この 遅 延 時 間 を 表 します 内 部 系 割 り 込 み 要 因 の 図 示 信 号 も 前 記 の 外 部 系 割 り 込 み 要 因 と 同 じ 意 味 ですが ヘ クタ 位 置 命 令 実 行 時 に 解 除 (0)されるとしてみれ ば 基 本 的 にテ ータシートなどで 記 載 の 各 割 り 込 み 要 求 フラク 信 号 と 一 致 します これらは 基 本 的 に 外 部 系 割 り 込 み 要 因 信 号 と 異 なり 既 にシステム クロックと 同 期 していますので 上 記 の 遅 延 はありません けれども 非 同 期 系 タイマ/カウンタをシステム クロック 以 外 で 使 用 する 場 合 にはシステム クロックとの 同 期 が 必 要 になりますので その 場 合 は 外 部 系 割 り 込 み 要 因 として 考 えなければなりません 割 り 込 み 要 求 内 部 信 号 は 外 部 系 及 び 内 部 系 割 り 込 み 要 因 により 起 こされた 各 種 割 り 込 み 要 求 信 号 を 割 り 込 み 制 御 回 路 が 認 識 し その 結 果 最 終 的 に 何 らかの 割 り 込 みを 行 なう 場 合 に 有 効 となります この 割 り 込 み 制 御 回 路 での 作 業 時 間 は 常 に1クロック 周 期 で 上 図 の 時 間 的 動 作 種 別 の 認 識 がこれに 相 当 します 割 り 込 み 応 答 許 可 信 号 は 割 り 込 みに 対 する 最 終 的 な 応 答 処 理 可 能 を 表 します 割 り 込 み 応 答 は 各 命 令 の 各 々に 対 してその 実 行 途 中 で 開 始 できません 1クロック 周 期 実 行 命 令 の 場 合 は 問 題 ありませんが 複 数 クロック 周 期 命 令 の 場 合 その 途 中 で 割 り 込 みを 実 行 しよ うとすると その 命 令 の 途 中 経 過 を 保 存 しなければならなくなります これも 単 一 割 り 込 みの 場 合 は 簡 単 ですが 多 重 割 り 込 みの 場 合 にPC 保 存 と 同 様 なスタック 構 造 が 必 要 となり ハート ウェアの 増 加 や 応 答 速 度 の 低 下 をもたらし 結 果 的 に 何 の 利 点 もなくなります 従 って 各 命 令 の 実 行 間 でだけ 割 り 込 み 応 答 を 開 始 します このために 割 り 込 み 要 求 内 部 信 号 が 有 効 になってから 割 り 込 み 応 答 許 可 信 号 が 有 効 になるまでに0( 使 用 最 長 実 行 クロック 周 期 命 令 のクロック 数 -1)クロック 周 期 の 遅 延 があります これを 上 図 の 時 間 的 動 作 種 別 の 命 令 同 期 で 表 します 割 り 込 み 応 答 許 可 信 号 の 判 定 は 各 命 令 の 先 頭 ではなく 最 後 で 行 なわれるとするため 多 くを 占 める1クロック 周 期 命 令 の 場 合 は 割 り 込 み 要 求 内 部 信 号 と 同 時 に 有 効 となります AVRの 最 大 命 令 実 行 クロック 数 は5クロック 周 期 ですので 最 大 遅 延 は4クロック 周 期 になります( 外 部 メモリ アクセス 命 令 での 例 外 を 除 く) 上 図 の 時 間 的 動 作 種 別 の 応 答 処 理 が 実 際 の 割 り 込 みに 対 する 応 答 処 理 部 分 で これは 基 本 的 にCALL 命 令 と 同 様 な 動 作 を 行 い ます 異 なるのは 呼 び 出 し 先 を 示 すPC 値 が 割 り 込 み 制 御 回 路 によって 設 定 されるのと SREGの 全 割 り 込 み 許 可 (I)フラク を 解 除 (0)す ることだけです 従 ってこの 応 答 処 理 時 間 はフラッシュ メモリが128Kハ イト 以 下 のテ ハ イスでは3 128Kハ イトを 越 えるテ ハ イスでは4クロック 周 期 です この 応 答 処 理 時 間 の 前 後 も 命 令 が 実 行 され 応 答 処 理 時 間 だけがフ ロク ラムで 記 述 された 命 令 以 外 の 時 間 であることに 注 意 し てください 割 り 込 み 発 生 時 と 異 なり 割 り 込 みからの 復 帰 時 は 簡 単 です 発 生 時 に 存 在 した 同 期 化 などの 前 処 理 が 全 く 存 在 しないため 単 純 にRETI 命 令 の 実 行 だけです RETI 命 令 は 基 本 的 にRET 命 令 とほぼ 同 じです 異 なるのはSREGの 全 割 り 込 み 許 可 (I)フラク を 設 定 (1) することだけです これはその 割 り 込 み 処 理 ルーチンが 実 行 されたと 言 うことは 割 り 込 みが 発 生 したと 言 うことで 直 前 の 全 割 り 込 み 許 可 (I)フラク は 設 定 (1)であった 従 ってその 値 を 戻 すと 言 う 意 味 です これが 実 際 には 全 割 り 込 み 許 可 (I)フラク の 保 存 / 復 帰 ではなく 単 純 に 設 定 (1)されるだけなことに 注 意 してください 実 際 に 保 存 / 復 帰 を 行 なう 場 合 前 述 のようにスタック 構 造 を 必 要 とし ハート ウェアの 増 加 と 実 行 速 度 の 低 下 をもたらしてしまいます このため 全 割 り 込 み 禁 止 状 態 でその 状 態 を 保 ったまま 割 り 込 み 処 理 ルーチンを 一 般 のサ フ ルーチンとして 呼 び 出 すことはできません 4 AVR 補 助 情 報
内 部 同 期 (システム クロックへの 同 期 化 ) AVR 補 助 情 報 割 り 込 み 要 因 信 号 自 体 がシステム クロックに 同 期 している 場 合 を 除 いて 割 り 込 み 要 因 信 号 は 最 終 的 にシステム クロックに 同 期 しなければな りません 実 際 には 全 てに 先 行 して 各 信 号 はシステム クロックに 同 期 化 され その 後 に 割 り 込 み 条 件 判 定 などが 行 なわれます 従 ってこ れらの 信 号 は 同 期 化 とその 後 の 処 理 に 一 定 の 時 間 を 費 やします 次 の 図 はヒ ン 変 化 割 り 込 みのタイミンク です この 場 合 はPCINTの 変 化 からPCIFmが 有 効 になるまでに 約 2.75クロック 周 期 を 要 していま す 純 然 たる 同 期 化 部 分 は 図 のB 出 力 までのラッチとFF(フリッフ フロッフ )で 構 成 された 部 分 です これは 初 段 のラッチに 於 いてシステム クロッ クの 周 期 前 半 (High 部 分 )で 信 号 値 を 採 取 し 次 のFFでシステム クロックに 同 期 化 させています ラッチでの 採 取 確 定 値 はシステム クロックの 下 降 ( 図 の1 点 )に 対 するセットアッフ 時 間 前 になり このセットアッフ 時 間 がほぼ0なので この 下 降 点 以 前 で 且 つ1つ 前 の 下 降 点 以 降 の 変 化 が 今 回 の 採 取 になります 従 ってここでの 遅 延 は2.53.5クロック 周 期 になります PCINT D E clk 本 数 分 合 成 Q A B C D Q D Q D PCMSKmの PCINT D Q E D Q PCIFm clk PCINT A: ラッチ B: 遅 延 C: 変 化 D: 遅 延 E: 遅 延 PCIFm 1 上 記 の 同 期 化 部 分 は 標 準 I/Oホ ートを 始 め ほぼ 全 てのテ シ タル 入 力 で 使 用 されています 従 ってこの 同 期 化 部 分 を 含 む 割 り 込 み 要 因 信 号 は 最 低 この 同 期 化 部 分 による 遅 延 を 伴 います この 遅 延 は 上 図 で 示 されるように0.51.5クロック 周 期 です INT 外 部 割 り 込 み 要 求 に 対 する 明 確 なタイミンク は 不 明 ですが エッシ 系 割 り 込 みについてはヒ ン 変 化 割 り 込 みと 同 等 と 予 測 されます Lowレヘ ル 割 り 込 みには 上 記 の 同 期 化 部 分 がなく 論 理 合 わせのインハ ータを 除 いて 基 本 的 に 直 接 割 り 込 み 制 御 回 路 へ 接 続 されてい ると 考 えられますので ここでの 遅 延 はないものと 思 われます アナロク 比 較 器 割 り 込 みは 上 記 の 同 期 化 部 分 を 含 めて ACSRのアナロク 比 較 器 出 力 (ACO)ヒ ットへの 遅 延 が12クロック 周 期 とされていま すので その 後 の 割 り 込 み 条 件 判 定 回 路 での 遅 延 を 含 めると ここでの 遅 延 は23クロック 周 期 と 予 測 されます ACOヒ ットへの 遅 延 規 定 が 他 と 半 周 期 異 なっています これは 上 記 の 同 期 化 部 分 のラッチを 省 き 直 接 FFで 受 けているかもしれません アナロク 比 較 器 出 力 は16ヒ ット タイマ/カウンタ1の 捕 獲 起 動 入 力 としても 使 用 可 能 です この 場 合 はACOヒ ットへの 遅 延 の12クロック 周 期 に 加 えて 捕 獲 起 動 入 力 (ICP) 用 の 雑 音 消 去 とエッシ 検 出 に 対 する 遅 延 を 考 慮 しなければなりません 雑 音 消 去 が 許 可 されると 信 号 は4 クロック 周 期 遅 延 します エッシ 検 出 には 最 低 1クロック 周 期 を 要 すると 考 えられます 従 ってアナロク 比 較 器 出 力 による16ヒ ット タイマ/カウンタ1 の 捕 獲 割 り 込 みは 最 低 でも23クロック 周 期 の 遅 延 で 雑 音 消 去 を 許 可 した 場 合 は 最 低 でも67クロック 周 期 の 遅 延 となることが 予 測 さ れます 認 識 ( 割 り 込 み 制 御 部 ) 外 部 系 割 り 込 み 要 因 信 号 はシステム クロック 同 期 化 回 路 によってシステム クロックに 同 期 化 された 後 割 り 込 み 制 御 部 の 優 先 順 符 号 化 回 路 (フ ライオリティ エンコ-タ )に 接 続 されます 内 部 系 割 り 込 み 要 因 信 号 は 既 にシステム クロックに 同 期 して 生 成 されますので システム クロック 同 期 化 回 路 なしで 直 接 優 先 順 符 号 化 回 路 に 接 続 されます この 出 力 が0 以 外 のとき 何 らかの 割 り 込 み 要 求 が 有 効 であることを 示 し そ の 出 力 は 割 り 込 みヘ クタ アト レスの 下 位 側 を 示 すためにラッチされます ラッチされた 値 は 応 答 処 理 内 で 新 規 PC 値 として 用 いられます こ のラッチ 値 の 最 下 位 ヒ ット(Q0)はフラッシュ メモリが8Kハ イト 以 下 のテ ハ イスの 場 合 はPC0ヒ ット 8Kハ イトを 越 えるテ ハ イスの 場 合 はPC1ヒ ットに 対 応 します 割 り 込 み 要 求 信 号 1 割 り 込 み 要 求 信 号 2 割 り 込 み 要 求 信 号 3 割 り 込 み 要 求 信 号 フ ライオリティ エンコータ 1 2 3 A0 A1 A 割 り 込 み 番 号 ラッチ D0 Q0 D1 Q1 D Q 割 り 込 み 応 答 処 理 時 PC 値 へ 全 割 り 込 み 許 可 (I) 割 り 込 み 要 求 有 効 ここでの 遅 延 は 常 に1クロック 周 期 です 割 り 込 み 要 求 有 効 信 号 は 各 命 令 の 最 後 で 認 識 されるため 1クロック 周 期 実 行 命 令 の 場 合 は 割 り 込 み 要 求 有 効 信 号 が 有 効 になった 周 期 で 認 識 されることになり 従 って 割 り 込 み 制 御 部 に 於 ける1クロック 周 期 の 遅 延 は 命 令 実 行 周 期 で 隠 されるとも 言 えます そのように 考 えると 次 項 の 命 令 同 期 遅 延 は 命 令 実 行 クロック 周 期 と 同 一 と 考 えても 差 し 支 えありません HERO ad heavy frieds 5
命 令 同 期 ( 命 令 実 行 待 機 ) HERO ad heavy frieds 割 り 込 み 制 御 部 で 生 成 された 割 り 込 み 要 求 有 効 信 号 は 各 命 令 の 最 終 実 行 クロック 周 期 で 採 取 され その 命 令 の 実 行 完 了 後 遅 延 なく 直 ちに 割 り 込 み 応 答 処 理 が 実 行 されます 4 頁 の 図 の 割 り 込 み 要 求 内 部 信 号 はクロック 数 説 明 のために この 割 り 込 み 要 求 有 効 信 号 をシステム クロックに 同 期 して 生 成 していることに 注 意 してください 前 項 の 認 識 でも 記 述 したように 割 り 込 み 制 御 部 での 遅 延 が 命 令 同 期 遅 延 内 に 含 まれると 考 えると 割 り 込 み 制 御 部 での 遅 延 を 考 慮 しなくてもよくなり 命 令 実 行 クロック 数 がそのまま 遅 延 クロック 数 として 扱 えます 従 って 多 くを 占 める1クロック 周 期 実 行 命 令 の 場 合 は 割 り 込 み 制 御 部 での 遅 延 と 命 令 同 期 での 遅 延 を 併 せて1クロック 周 期 になります AVRの 最 長 命 令 実 行 クロック 数 は5ですので この 最 大 遅 延 は 同 じ5クロック 周 期 になります 但 し 外 部 メモリを 使 用 する 場 合 設 定 によっては 外 部 メモリ アクセス 命 令 の 実 行 クロック 数 が5を 越 え る 場 合 がありますので 注 意 してください また 対 象 応 用 フ ロク ラムでの 最 大 遅 延 は 実 際 に 使 用 される 命 令 の 最 大 実 行 クロック 数 に 依 存 し ます 応 答 処 理 ( 割 り 込 み 応 答 実 処 理 ) 各 命 令 の 最 終 実 行 クロック 周 期 で 認 識 された 割 り 込 み 要 求 有 効 信 号 により 本 来 次 に 実 行 されるべき 命 令 は 破 棄 され 代 わりに 動 作 がCALL 命 令 に 類 似 した 割 り 込 み 応 答 処 理 が 実 行 されます 使 用 者 に 関 係 する 部 分 に 関 して この 割 り 込 み 応 答 処 理 は 次 の3 点 を 除 いて CALL 命 令 と 同 じ 動 作 です 呼 び 出 し 先 アト レスは 割 り 込 み 制 御 部 でラッチされた 割 り 込 み 番 号 を 元 に 作 成 されます( 認 識 参 照 ) 割 り 込 み 番 号 で 使 用 されない PC 値 ヒ ットは0ですが フ ート ロータ 支 援 テ ハ イスで 割 り 込 みヘ クタ 位 置 をフ ート ロータ 領 域 に 設 定 している 場 合 PC 値 の 上 位 側 には 対 応 する 値 が 設 定 されます ステータス レシ スタ(SREG)の 全 割 り 込 み 許 可 (I)ヒ ットを 解 除 (0)します これが 行 なわれなかったなら レヘ ル 系 割 り 込 みの 場 合 にヘ クタ 位 置 の 命 令 で 新 たな 割 り 込 みとして 割 り 込 み 処 理 が 行 なわれ これを 繰 り 返 す 結 果 になってしまいます 割 り 込 み 制 御 部 でラッチされた 割 り 込 み 番 号 に 対 応 したエッシ 系 割 り 込 み 要 因 フラク を 解 除 (0)します 内 部 系 割 り 込 み 要 因 フ ロク ラム カウンタ(PC) 値 フ ロク ラム(フラッシュ) ハ ス ( 主 に 事 前 取 得 ) 命 令 実 行 $0F00 $0F01 $0F01 N/A $0001 NOP N/A N/A N/A RJMP NOP 応 答 処 理 (CALL 命 令 類 似 ) $0002 $0AAA N/A PUSH RJMP テ ータ ハ ス N/A N/A PUSH PCL($01) PUSH PCH($0F) N/A N/A 上 図 は 割 り 込 み 処 理 部 への 割 り 込 み 要 求 が$0F00 番 地 のNOP 命 令 実 行 周 期 の 先 頭 で 発 生 した 場 合 の 例 です NOP 命 令 は1クロック 周 期 実 行 命 令 ですので その 最 終 クロックは 実 行 クロック 周 期 そのもので このクロック 周 期 で 割 り 込 み 要 求 は 認 識 され 次 のクロック 周 期 か ら 割 り 込 み 応 答 処 理 が 開 始 されます この 応 答 処 理 の 基 本 手 順 はCALL 命 令 と 同 じです 本 処 理 の 第 1 周 期 で 現 在 のPC 値 ( 本 例 では$0F01)が 一 時 レシ スタに 複 写 され 第 2 周 期 以 降 下 位 ハ イトから 順 にスタックへ 格 納 されます 本 例 はフラッシュ メモリが128Kハ イト 以 下 の 場 合 です 128Kハ イトを 越 える 場 合 は3ハ イトの 保 存 になりますので 割 り 込 み 応 答 処 理 全 体 が4 クロック 周 期 になることに 注 意 してください またスタックを 外 部 メモリに 配 置 した 場 合 は スタックへのハ イト アクセスが 外 部 メモリ アクセス 時 間 となる ため 処 理 に 要 するクロック 数 が 大 幅 に 増 加 することにも 注 意 してください 本 処 理 内 でステータス レシ スタ(SREG)の 全 割 り 込 み 許 可 (I)ヒ ットの 解 除 (0)と 割 り 込 み 制 御 部 でラッチされた 割 り 込 み 番 号 に 対 応 したエッシ 系 割 り 込 み 要 因 フラク の 解 除 (0)も 行 なわれます 本 処 理 の 最 終 クロック 周 期 までに 割 り 込 み 制 御 部 でラッチされた 割 り 込 み 番 号 に 対 応 した 割 り 込 みヘ クタ アト レス( 本 例 では$0001)がPCに 設 定 されます 最 終 クロック 周 期 で このPC 値 の 命 令 が 事 前 取 得 されます 本 例 では 一 般 的 なRJMP 命 令 で 割 り 込 み 応 答 処 理 後 直 ち に 実 行 されます テ ータシートで 記 述 される 最 小 割 り 込 み 応 答 時 間 は 上 記 例 のように1クロック 実 行 周 期 命 令 と 応 答 処 理 時 間 の 合 計 を 意 味 しています 従 って 対 象 応 用 フ ロク ラムでの 最 大 割 り 込 み 応 答 時 間 は 対 象 応 用 フ ロク ラムで 使 用 される 最 大 実 行 クロック 数 の 命 令 のクロック 数 と 応 答 処 理 時 間 の 合 計 になります 応 答 処 理 時 間 はフラッシュ メモリが128Kハ イト 以 下 のテ ハ イスが3 128Kハ イトを 越 えるテ ハ イスが4ですが これは スタックを 内 部 SRAMに 配 置 した 場 合 ですので 外 部 メモリを 使 用 する 場 合 には 注 意 してください また 外 部 系 割 り 込 み 要 因 の 場 合 は 更 に 内 部 同 期 時 間 が 必 要 で その 要 因 によって 遅 延 時 間 が 異 なることにも 注 意 してください 尚 本 記 述 は 常 時 割 り 込 み 許 可 (ステータス レシ スタ(SREG)の 全 割 り 込 み 許 可 (I)ヒ ット=1)が 前 提 です そうでない 場 合 は 禁 止 時 間 も 考 慮 してください 全 割 り 込 み 禁 止 命 令 はその 命 令 実 行 周 期 から 禁 止 が 有 効 になりますが 許 可 命 令 は 命 令 の 最 後 で 許 可 されるため 許 可 命 令 実 行 時 には 有 効 ではなく 次 の 命 令 から 有 効 になることに 注 意 してください 従 って 許 可 命 令 の 次 の 命 令 の 最 後 で 割 り 込 み が 認 識 され その 命 令 に 続 いて 割 り 込 み 応 答 処 理 が 開 始 されます 換 言 すると 許 可 命 令 後 必 ず1 命 令 は 実 行 されます 6 AVR 補 助 情 報
タイマ/カウンタ AVR 補 助 情 報 タイマ/カウンタで 正 確 な 計 数 や 微 妙 な 時 間 的 制 御 を 行 なうとき 対 応 命 令 に 対 する 正 確 な 動 作 タイミンク が 必 要 になる 場 合 があります 特 に 計 数 開 始 と 停 止 計 数 中 のタイマ/カウンタ 変 更 ( 再 設 定 ) 前 置 分 周 器 使 用 時 の 前 置 分 周 器 用 カウンタ 値 などの 動 作 タイミンク が 問 題 にな ります 本 節 では 一 部 のテ ハ イス 特 有 のタイマ/カウンタを 除 く 一 般 的 な 同 期 動 作 のタイマ/カウンタについて これらを 考 察 します 尚 同 期 動 作 のタイマ/カウンタに 対 する 比 較 動 作 に 於 けるタイミンク は 基 本 的 に の 場 合 対 応 するテ ータシートに 記 載 されていま す タイマ/カウンタの 制 御 は 対 応 タイマ/カウンタ 関 係 のレシ スタ 設 定 によって 行 いますが これらのレシ スタの 配 置 位 置 によって 使 用 できる 命 令 が 異 なります これらのレシ スタが 標 準 I/O 空 間 にあるテ ハ イスではOUT 命 令 とST 系 命 令 が 使 用 でき 拡 張 I/O 空 間 にあるテ ハ イスではST 系 命 令 だけが 使 用 できます 標 準 I/O 空 間 のレシ スタをLDまたはST 系 命 令 でアクセスする 場 合 オヘ ラント のI/Oレシ スタ 記 述 に 注 意 してく ださい この 場 合 I/Oレシ スタ 名 だけでなく I/Oレシ スタ 名 +$20と 書 かなければなりません 標 準 I/O 空 間 のレシ スタはテ ハ イス 定 義 インク ルート (.ic)ファイル 内 でそのI/Oレシ スタ 名 に 対 して$00$3FのI/O 空 間 アト レスが.EQUで 定 義 されています 従 ってこれを$20$5Fの テ ータ 空 間 内 アト レスにするために+$20が 必 要 です これらのレシ スタ 設 定 にOUT 命 令 またはST 系 命 令 の 何 れを 使 用 しても 結 果 は 同 じです その 命 令 内 でタイマ/カウンタがその 命 令 に 対 応 した 何 らかの 動 作 を 起 こす 場 合 はその 命 令 の 最 終 クロック 周 期 で 起 きます ST 系 命 令 の 第 1クロック 周 期 で 起 きることは 決 してありませ ん お 断 り: 本 節 の 内 容 はAVR Studioのシミュレータでの 動 作 を 基 に 記 述 されています 従 って 実 際 のテ ハ イスでの 動 作 を 保 証 するものでは ありませんので 注 意 してください 同 期 動 作 タイマ/カウンタの 計 数 開 始 / 停 止 タイミンク 同 期 動 作 のタイマ/カウンタの 計 数 開 始 は 対 応 タイマ/カウンタ 制 御 レシ スタのクロック 選 択 (CS20)ヒ ットを'000' 以 外 に 設 定 することによって 行 な います 計 数 開 始 / 停 止 タイミンク は 基 本 的 に と で 動 作 が 異 なります での 計 数 開 始 計 数 開 始 を 指 示 するOUT 命 令 の 実 行 クロック 周 期 またはST 系 命 令 の 第 2 実 行 クロック 周 期 が 計 数 クロック 周 期 なら その 命 令 と 同 時 に 計 数 が 開 始 されます 換 言 するとその 命 令 と 同 時 にタイマ/ カウンタが+1されます 従 って 前 置 分 周 なしの 場 合 計 数 開 始 命 令 と 同 時 に 予 め 設 定 されてい たタイマ/カウンタ 値 が 必 ず+1されます 前 置 分 周 を 使 用 した 場 合 上 記 設 定 命 令 の 該 当 クロック 周 期 が 計 数 クロック 周 期 と 一 致 しない 限 り 設 定 命 令 実 行 直 後 のタイマ/カウンタ 値 は 予 め 設 定 された 値 のままで その 後 に 訪 れる 計 数 クロック 周 期 か ら 計 数 を 開 始 します での 計 数 開 始 何 れの 命 令 による 設 定 に 於 いても その 命 令 以 降 の 計 数 クロック 周 期 から 実 際 の 計 数 が 開 始 され ます その 命 令 の 実 行 周 期 中 は 直 前 からの 停 止 状 態 が 保 持 されます での 計 数 停 止 計 数 停 止 に 関 しても 計 数 開 始 と 同 様 に 停 止 を 指 示 するOUT 命 令 の 実 行 クロック 周 期 またはST 系 命 令 の 第 2 実 行 クロック 周 期 が 計 数 クロック 周 期 なら その 計 数 クロック 周 期 は 実 行 されず(その 周 期 での+1を 行 なわず) 直 ちに 停 止 します ST 系 命 令 で 行 なうとき 第 1 実 行 クロック 周 期 が 計 数 クロック 周 期 の 場 合 その 周 期 で 計 数 が 行 なわれ (+1され) 第 2 実 行 クロック 周 期 で 停 止 することに 注 意 してください での 計 数 停 止 何 れの 命 令 による 設 定 に 於 いても その 命 令 完 了 直 後 に 停 止 します これらの 命 令 中 の 計 数 ク ロック 周 期 は 実 行 (+1)されます 実 行 命 令 前 置 分 周 なし 前 置 分 周 あり ( 計 数 周 期 と 一 致 ) 前 置 分 周 あり ( 計 数 周 期 と 不 一 致 ) 実 行 命 令 前 置 分 周 なし 前 置 分 周 あり ( 計 数 周 期 と 一 致 ) 前 置 分 周 あり ( 計 数 周 期 と 不 一 致 ) OUT 命 令 で 設 定 ST 系 命 令 で 設 定 計 数 クロック 周 期 計 数 クロック 周 期 OUT 命 令 で 設 定 ST 系 命 令 で 設 定 計 数 クロック 周 期 計 数 クロック 周 期 -3-4 -1-1 -1-1 OUT -2-3 -1-1 -1-1 STx +1 +1-1 -2-1 -1-1 -1 STx +2 +1 +1 +1 OUT -1-1 -1 +3 +2 +1 +1 +1 +4 +3 +1 +1 +1 +1 HERO ad heavy frieds 7
HERO ad heavy frieds 同 期 動 作 タイマ/カウンタの 計 数 中 のタイマ/カウンタ 値 変 更 計 数 中 に 於 けるタイマ/カウンタ 値 変 更 ( 再 設 定 )は その 設 定 命 令 実 行 完 了 後 にタイ マ/カウンタ 値 が 新 しい 値 に 置 き 換 えられます 従 ってその 設 定 命 令 中 の 計 数 クロック 周 期 は 実 行 され(+1され) その 結 果 が 割 り 込 み 条 件 に 該 当 する 場 合 は 対 応 する 割 り 込 み 要 求 フラク も 設 定 (1)されます 右 図 は 前 置 分 周 なしの8ヒ ット タイマ/カウンタの 例 ですが 1の 場 合 は 設 定 命 令 実 行 後 直 ぐに 溢 れ 割 り 込 み(TOV)が 発 生 します 2の 場 合 は 一 見 すると 溢 れが 起 こっていないように 見 えますが タイマ/カウンタ 値 が$FFの 周 期 の 最 後 で 計 数 と それに 続 いて 新 規 値 設 定 が 行 なわれます 従 ってこの 周 期 の 最 後 でTOVが 設 定 (1)されます この 場 合 の 割 り 込 みはタイマ/カウンタ 値 設 定 命 令 後 ではなく その 次 の 命 令 実 行 後 に 行 われることに 注 意 してください OUT 命 令 で 設 定 ST 系 命 令 で 設 定 タイマ/カウンタ 値 1 TOV タイマ/カウンタ 値 2 TOV $FE $FD OUT STx $FF $00 $FE $FF 同 期 動 作 タイマ/カウンタの 前 置 分 周 器 リセット 基 本 的 に は 任 意 に 前 置 分 周 器 用 カウンタをリセットできませんが ではこれを 行 なえます 現 在 このリセットに 関 するタイミンク は 不 明 ですが 計 数 開 始 / 停 止 動 作 時 の 動 きと 基 本 的 に 同 じならば 前 置 分 周 器 用 カウンタ リセット 命 令 の 最 終 実 行 クロック 周 期 の 最 後 で 前 置 分 周 器 用 カウンタがリセット(=0)されると 思 われます その 場 合 その 周 期 が 前 置 分 周 数 に1 回 訪 れる 計 数 周 期 なら その 計 数 周 期 は 有 効 で 前 置 分 周 器 用 カウントのリセットと 計 数 が 同 時 に 行 なわれると 予 測 されます と の 違 い 基 本 的 に と 間 での 際 立 って 大 きな 違 いはありませんが 前 置 分 周 あり 時 の 比 較 一 致 タイマ/カウ ンタ 解 除 (CTC) 動 作 などでの 比 較 一 致 直 後 の 動 作 が 異 なります タイマ/カウンタに 関 する 実 際 の 変 化 点 は 計 数 クロック 周 期 の 最 後 換 言 すると 計 数 クロック 周 期 と 次 のクロック 周 期 間 と 考 えられます では 一 般 的 に 考 えられるよう 動 作 します 即 ちタイマ/カウンタ 値 は 比 較 値 に 達 すると その 値 を 前 置 分 周 したクロック 数 分 の 間 維 持 し 次 の 計 数 クロック 周 期 で0に 再 設 定 されます 従 って0から 比 較 値 までの 各 値 は 全 て 前 置 分 周 したクロック 数 分 ずつになり ます これに 対 して では 比 較 一 致 時 のクロック 周 期 の 最 後 でタイマ/カウンタが0に 再 設 定 されます このため 前 置 分 周 値 の 値 に 拘 らず 比 較 値 となるタイマ/カウンタ 値 は 常 に1システム クロック 分 となり 再 設 定 後 の0 値 は 常 に 前 置 分 周 値 -1システム クロックの 長 さになりま す 即 ち 比 較 値 と 再 設 定 後 の0 値 は 本 来 前 置 分 周 した2クロック 分 のところを1クロック 分 で 処 理 されます 従 って 比 較 値 は 一 般 的 に 考 え られる 値 +1でなければなりません 計 数 開 始 と 計 数 停 止 で 記 述 されるように と 間 で 計 数 許 可 / 禁 止 に 関 して1システム クロック の 差 があるようです 多 くの 応 用 ではこれが 問 題 になることはないと 思 いますが タイマ/カウンタの 計 数 に 関 して 微 妙 な 扱 いを 行 なってい る 応 用 フ ロク ラムを 異 なる 世 代 フ ロセス 製 品 に 置 き 換 える 場 合 には 充 分 に 注 意 してください 前 置 分 周 クロックとの 同 期 応 用 によっては 前 置 分 周 したクロックに 同 期 して 操 作 を 行 いたい 場 合 があると 思 います 例 えば 溢 れ 割 り 込 み(TOV)を 使 用 した 定 周 期 繰 り 返 し 計 時 器 などの 場 合 です これが 最 大 値 周 期 (8ヒ ット タイマ/カウンタの256 16ヒ ット タイマ/カウンタの65536)の 場 合 はタイマ/カウンタ 値 の 再 設 定 が 必 要 ないため 問 題 ありませんが 他 の 周 期 の 場 合 は 割 り 込 み 処 理 ルーチン 内 でタイマ/カウンタ 値 の 再 設 定 が 必 要 になり 一 挙 に 面 倒 になります これも 前 置 分 周 なしの 場 合 はタイマ/カウンタ 値 を 読 み 取 り その 後 の 再 設 定 までの 命 令 実 行 クロック 数 分 補 正 した 値 で タイマ/カウンタを 再 設 定 することによって 比 較 的 簡 単 に 実 現 可 能 です 問 題 は 低 分 周 値 の 前 置 分 周 が 使 用 されている 場 合 で この 場 合 は 命 令 実 行 を 前 置 分 周 したクロックと 同 期 化 させ 問 題 のないように 特 定 の 位 置 でタイマ/カウンタを 再 設 定 しなければなりません このために 命 令 実 行 のどのタイミンク で 計 数 クロック 周 期 になるかを 判 定 しなけ ればならなくなります 大 きな 前 置 分 周 値 の 場 合 は 割 り 込 み 発 生 後 の 次 の 計 数 クロック 周 期 までにタイマ/カウンタを 再 設 定 すればよいの で 長 い 割 り 込 み 禁 止 時 間 がある 場 合 や 多 重 割 り 込 みなどで 複 雑 になっている 場 合 を 除 いて 比 較 的 簡 単 に 実 現 できます 低 分 周 値 の 場 合 でも 問 題 のない 位 置 で 再 設 定 するために NOP 命 令 追 加 などで 割 り 込 み 発 生 からタイマ/カウンタ 再 設 定 までの 命 令 ク ロック 数 を 調 整 する 方 法 を 使 用 できますが それには 割 り 込 み 発 生 からタイマ/カウンタ 再 設 定 までのクロック 数 が 既 知 でなければならないた め 多 くの 場 合 に 多 重 割 り 込 みや 使 用 命 令 が 制 限 されます とは 言 え 多 くの 場 合 この 方 法 は 中 程 度 の 分 周 値 の 場 合 に 有 効 な 方 法 です 低 分 周 値 で 且 つ 多 重 割 り 込 みや 使 用 命 令 の 制 限 なく 行 なうには フ ロク ラムで 計 数 クロック 周 期 位 置 を 特 定 し それ 以 外 の 位 置 で 且 つ その 位 置 に 対 応 した 補 正 値 でタイマ/カウンタを 再 設 定 しなければなりません 例 えば8 分 周 時 の8ヒ ット タイマ/カウンタに 於 ける1つの 方 法 と して 8つのレシ スタへの 連 続 するIN 命 令 によるタイマ/カウンタ 値 取 得 取 得 値 から 変 化 点 を 検 出 その 後 の 設 定 命 令 までの 実 行 クロック 数 補 正 とその 位 置 での 設 定 値 補 正 の 一 連 の 手 順 があります 16ヒ ット タイマ/カウンタについても 変 化 点 検 出 は 下 位 ハ イトだけでよいので 同 様 な 手 法 が 使 用 できます 勿 論 最 初 にその 時 点 のタイマ/カウンタ 値 を 取 得 し その 直 後 で 新 たにタイマ/カウンタ 値 を 取 得 して 最 初 の 値 と 比 較 し 不 一 致 になるまで 繰 り 返 すことで 計 数 クロック 周 期 でない 位 置 を 特 定 することはできます 低 分 周 値 時 この 方 法 で 多 くの 場 合 は 対 処 可 能 でしょう 8 AVR 補 助 情 報
HERO ad heavy frieds HERO 2014. 本 書 はAVRの 補 助 情 報 の 記 録 です 青 字 の 部 分 はリンクとなっています 一 般 的 に 赤 字 の0,1は 論 理 0,1を 表 します その 他 の 赤 字 は 重 要 な 部 分 を 表 します