PIC24F Family Reference Manual

Similar documents
39733a.fm

PIC24F Family Reference Manual Section 9 WDT

dsPIC33E FRM - Section #. Title

スライド 1

PIC24F Family Reference Manual Section 8 Interrupts

スライド 1

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

PIC24F Family Reference Manual Section 2

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

Section 36. Programmable Cyclic Redundancy Check (CRC)

Microsoft Word - dg_sataahciip_refdesign_jp.doc

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

Notes and Points for TMPR454 Flash memory

計算機アーキテクチャ

ファイル メニューのコマンド

Notes and Points for ADuCM320 Internal Flash memory

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

MSP430 CCSv5 を使い Flash Memory 内容と version 情報を確認する方法 ( テクニック編 ) Rev: PIC Trout 今回は 下記の2 件について説明します 1) CCSv5 を使用して MSP430 の Flash Memory 内容を

スライド 1

スライド 1

MODBUS ユーザーズマニュアル 페이지 1 / 23

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

1. ボードの複数台制御 コンフィグ ROM から FPGA が起動できる場合を想定しています FPGA 回路には 特定のレジスタアドレスにプリセットしたデータが必要です 製品出荷時のサンプル FPGA 回路では レジスタ No.3 を 8bit 幅に設定し FPGA 外部の 4bit ディップスイ

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

スライド 1

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

6. パイプライン制御

Nios II Flash Programmer ユーザ・ガイド

WAGO / / Modbus/RTU対応 バスカプラ クイックスタートガイド

Notes and Points for TM4C123Gx Internal Flash memory

10-vm1.ppt

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

PowerPoint Presentation

PowerPoint プレゼンテーション

Microsoft Word - プログラムをRAM.doc

PowerPoint プレゼンテーション

AN-1077: ADXL345 Quick Start Guide

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

Microsoft PowerPoint - Lec ppt [互換モード]

PIC24F Reference Manual Sect.23

TFTP serverの実装

ex04_2012.ppt

(Microsoft Word - \216\346\220\340SiTCP-VME-Master\(Rev26\).doc)

MW100 Modbusプロトコルによるデータ通信の設定について

Microsoft PowerPoint - Sol7 [Compatibility Mode]

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

スライド 1

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

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

出 アーキテクチャ 誰が 出 装置を制御するのか 1

AP-RZA-1A シリアルFlashROMの書き込み方法

スライド 1

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

04-process_thread_2.ppt

Intel Memory Protection Extensions(Intel MPX) x86, x CPU skylake 2015 Intel Software Development Emulator 本資料に登場する Intel は Intel Corp. の登録

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

(Microsoft Word - JE000250_\203\312TURTLE-RWModbusTCP\220\332\221\261\220\340\226\276\217\221\(4\224\305\).doc)

スライド 1

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

アナログ・接点変換器

スライド 1

FTP 共有を有効にする あらかじめ作成済みの共有フォルダーを FTP 共有可能にする設定を説明します 共有フォルダーの作成方法は 画面で見るマニュアル をご覧ください ファイル数の多い共有フォルダーを変更すると 変更が完了するまでに時間がかかる場合があります また 変更が完了するまで共有フォルダー

SiTCP ユーティリティユーザガイド 2014 年 6 月 18 日 0.73 版 Bee Beans Technologies 1

DS70172A_JP

Microsoft PowerPoint - 6.memory.ppt

Microsoft PowerPoint - フェリカ通信仕様書_

Microsoft PowerPoint - kougi7.ppt

Microsoft Word - 3new.doc

Cyclone III デバイス・ファミリの メモリ・ブロック

Microsoft PowerPoint - LogicCircuits09note.ppt [互換モード]

PLCシリアル通信 MODBUS通信 データ送信/受信プログラム例

ICS_Japan アプリケーションノート ISO メッセージ送受信基礎編 Rev File Name: アプリケーションノート _ISO15765_2_ メッセージ送受信 _ 基礎編 _A00.docx Intrepid Control Systems, Inc. アプリ

USB_IR_Remote_Controller_Advance_Library 取扱説明書 2016/06/23 R03 Assembly Desk USB_IR_Remote_Controller_Advance_Library を使用すると 弊社製 USB IR Remote controll

スライド 1

ワゴ・新製品インフォメーション

Microsoft PowerPoint - NxLecture ppt [互換モード]

コンピュータ工学Ⅰ

1. 概念 STM32F4 Discovery 基板は Mini USB を接続して デバッグやプログラムの書き込みができるようになっています 通常は CPU の 0x 番地からプログラムを実行します では なぜわざわざこのプロジェクトの雛形を使用して CPU の 0x

コンピュータ工学Ⅰ

 

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

このダイナミックリンクライブラリ GaugeC48.dll は 8CH から 48CH 用の DigitalGaugeCounterDG3000 シリーズ共通の DLL です この説明書は GaugeC48.dll を使ったアプリケーションを作成するためのものです 開発環境は MicrosoftVi

基本条件 (1Slot 版用 ) 機能 MR-SHPC 端子名 設定内容 備考 CS 空間 -CS CS6 空間 ( キャッシュ無し ) キャッシュ無し空間を使用 (B h) RA25 0 固定 レジスタ空間 RA24 0 固定 RA23 0 固定 B83FFFE 4h~B83FFFF

Singapore Contec Pte Ltd. Opening Ceremony

WAP121 および WAP321 アクセス ポイントのダウンロード/バックアップ コンフィギュレーション ファイル

C プログラミング 1( 再 ) 第 5 回 講義では C プログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ

目次 1 本アプリケーションノートの目的 送信手順 基本的な送信方法 キャリアセンスなし送信 キャリアセンスあり送信 ACK 期待送信 フレームメモリへのデータの設定 INFO

MIPSのマイクロアーキテクチャ

39734a_JP.fm

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

Microsoft PowerPoint - kougi6.ppt

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

スライド 1

ソフトウェア基礎技術研修

Application Note Application Note No. ESC-APN Document No.: ESC-APN adviceluna/advicelunaⅡのフラッシュメモリ対応 対応範囲と使用方法 はじめに adviceluna/advicelu

CS+ V 統合開発環境 ユーザーズマニュアル RL78 デバッグ・ツール編

PowerPoint プレゼンテーション

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

Microsoft PowerPoint - No6note.ppt

Windows2000/XPインストール手順

Transcription:

第 章 ハイライト 本章では次のトピックについて説明します.1 のアドレスマップ... -2.2 プログラムカウンタ... -.3 からのデータアクセス... -. データ空間からのプログラム空間可視化... -7.5 への書き込み... -10.6 テーブル命令の動作... -10.7 フラッシュプログラミング動作... -16.8 レジスタマップ... -19.9 関連するアプリケーションノート... -20.10 改版履歴... -21 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -1

PIC2F ファミリリファレンスマニュアル.1 のアドレスマップ PIC2F デバイスは 図 -2 に示すような最大 M x 2 ビットまでのアドレス空間を持つことができます このプログラム空間をアクセスするためには 3 つの方法があります 1. 23 ビットのプログラムカウンタ (PC) による方法 2. テーブルリード (TBLRD)) とテーブルライト (TBLWT) 命令による方法 3. の任意の 32 K バイトセグメントをデータメモリアドレス空間にマッピングする方法マップはユーザープログラム空間とコンフィギュレーション空間に分けられます ユーザープログラム空間 (000000h ~ 7FFFFFh) には RESET ベクタ 割り込みベクタテーブル が含まれます デバイスコンフィギュレーションレジスタとデバイス ID 空間は コンフィギュレーション空間にマッピングされています コンフィギュレーションビットとデバイス ID はこれらの場所から読み出すことができ フラッシュコンフィギュレーションワードに望む値をプログラムすることで コンフィギュレーションビットをセットまたはクリアすることができます チップに実装されたの先頭の 2 ワードは コンフィギュレーション情報として予約されています デバイスリセット時に コンフィギュレーション情報が対応するコンフィギュレーションレジスタにコピーされます コンフィギュレーションビットの詳細は 32.2 項 デバイスコンフィギュレーション を参照して下さい.1.1 の構成 空間はワードアドレスのブロックとして構成されています これは 2 ビット幅として扱われますが 各のアドレスを上位ワードと下位ワードとし 上位ワードの上位バイトは実装されていないとして考えた方が適切です 下位ワードは常に偶数アドレスで 上位ワードは奇数アドレス ( 図 -1) です アドレスは常に下位ワードのワードへ配置されていて コード実行中にはアドレスは 2 ずつ増減します 図 -1 の構成 上位ワードアドレス 上位ワード 下位ワード PC のアドレス ( 下位ワードアドレス ) 000001h 000003h 000005h 000007h 23 16 8 0 000000h 000002h 00000h 000006h ファントム バイト ( 読むと 0 ) 命令幅 DS39715A_JP - ページ -2 Advance Information 2007 Microchip Technology Inc.

第 章 (1) 図 -2 プログラム空間メモリマップの例 リセット GOTO 命令 000000 リセット GOTO アドレス 000002 予約 00000 発振器異常トラップベクタ アドレスエラートラップベクタ スタックエラートラップベクタ 算術エラートラップベクタ 予約 予約 予約 割り込みベクタ 0 00001 割り込みベクタ 1 ~ 割り込みベクタテーブル ~ 割り込みベクタ 52 割り込みベクタ 53 00007E 割り込みベクタ 000080 ~ ~ 割り込みベクタ 116 0000FC 割り込みベクタ 117 0000FE ユーザーメモリ空間 予約 000100 予約予約発振器異常トラップベクタアドレスエラートラップベクタスタックエラートラップベクタ算術エラートラップベクタ予約予約予約割り込みベクタ 0 00011 割り込みベクタ 1 ~ ~ 代替割り込みベクタテーブル 割り込みベクタ 52 00017C 割り込みベクタ 53 00017E 割り込みベクタ 5 000180 ~ ~ 割り込みベクタ 116 0001FE 割り込みベクタ 117 000200 ユーザーフラッシュ (8K 命令 ) (2) 017FFE (2) 未実装 ( 読むと 0 ) 018000 7FFFFE 800000 コンフィギュレーションメモリ空間 予約 データコンフィギュレーションレジスタ 予約 デバイス ID (2) F7FFFE F80000 F8000E F80010 FEFFFE FF0000 FFFFFE 注 1 メモリ範囲のサイズは比例していません 2 ユーザーフラッシュとフラッシュコンフィギュレーションメモリ間のアドレス境界は PIC2F デバイスにより異なります 詳細は対応するデバイスのデータシートを参照して下さい 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -3

PIC2F ファミリリファレンスマニュアル.2 プログラムカウンタ PC( プログラムカウンタ ) は データ空間アドレスとの整合性をとるために LSb を 0 にセットし 2 づつインクリメントします 連続する命令ワードは PC<221> により M 空間にアドレスされます それぞれの命令ワードは 2 ビット幅です アドレスの LSb(PC<0>) は をプログラム空間可視化でデータ空間としてアクセスする場合 あるいはテーブル命令でアクセスする場合のために バイト選択ビットとして予約されています PC による命令フェッチのときには バイト選択ビットは不要です 従って PC<0> は常に 0 にセットされます 命令フェッチの例を図 -3 に示します PC<221> を 1 づつインクリメントするのは PC<220> に 2 を加えることと同等である点に注意してください 図 -3 命令フェッチの例 2 ビット 23 ユーザー +1 (1) 空間 0x000000 2 命令ラッチ 23 命令 プログラムカウンタ (PC) 0 22 0 0x7FFFFE 注 1 PC<221> のインクリメントは PC<220> + 2 と同じこと.3 からのデータアクセス とデータメモリ空間の間のデータ転送に使用される方法として 2 つの方法があります それは 特別なテーブル命令によるものと データ空間の上位半分に 32K バイトのプログラム空間ページを再マッピングするものの 2 つです TBLRDL と TBLWTL 命令は データ空間を経由することなく プログラム空間内のアドレスの下位ワード (lsw) を直接読み書きできるので アプリケーションによっては非常に有利です TBLRDH と TBLWTH 命令は プログラムワードの上位 8 ビットをデータとしてアクセスする唯一の方法です.3.1 テーブル命令のまとめ テーブル命令セットは プログラム空間とデータ空間の間で バイトまたはワードサイズのデータを移動するために提供されます テーブル読み出し命令は 空間からデータメモリへの読み出しに使用されます テーブル書き込み命令により データメモリを空間へ書き込むことができます 注 テーブル命令の詳細なコード例が第 5 章 フラッシュメモリ動作 にあります 使用できる 種のテーブル命令は次の通りです TBLRDL テーブル読み出し下位 TBLWTL テーブル書き込み下位 TBLRDH テーブル読み出し上位 TBLWTH テーブル書き込み上位 DS39715A_JP - ページ - Advance Information 2007 Microchip Technology Inc.

第 章 テーブル命令では は 隣り合って存在する 2 つの 16 ビットワード幅のアドレス空間として見なされ 図 - に示すように それらは同じアドレス範囲となります TBLRDL と TBLWTL はの下位ワード (lsw) をアクセスし TBLRDH と TBLWTH は上位ワード (msw) をアクセスします は2 ビット幅ですので この後者の空間の上位のバイトは アドレスは可能ですが存在しません したがって ファントム バイトと呼ばれます 図 - テーブル操作の上位 下位アドレス範囲 PC アドレス 23 16 8 0 0x000100 0x000102 0x00010 0x000106 ファントム バイト ( 読むと 0 ) 上位テーブルアドレス範囲 下位テーブルアドレス範囲.3.2 テーブルアドレスの生成 すべてのテーブル命令では W レジスタアドレス値は 8 ビットのテーブルページアドレスポインタ TBLPAG と連結され 図 -5 に示すように 23 ビットの有効プログラム空間アドレスおよびバイト選択ビットを構成します W レジスタから与えられるプログラム空間アドレスは 15 ビットありますので 内のデータテーブルページは 32K ワードです 図 -5 テーブル操作用のアドレスの生成 TBLPAG<7> はユーザー / コンフィギュレーション空間を選択する EA<0> はバイト選択 7 0 15 0 TBLPAG EA TBLPAG からの 8 ビット Wn からの 16 ビット 2 ビットの EA 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -5

PIC2F ファミリリファレンスマニュアル.3.3 の下位ワードアクセス TBLRDL と TBLWTL 命令は データの下位 16 ビットをアクセスするために使用されます W レジスタアドレスの LSb は ワード幅テーブルアクセス用としては無視されます バイト幅アクセスでは W レジスタアドレスの LSb は どちらのバイトを読み出すかを決定します 図 -6 に TBLRDL と TBLWTL 命令でアクセスされるデータ領域を示します 図 -6 プログラムデータテーブルのアクセス (lsw) PC アドレス 23 16 8 0 0x000100 0x000102 0x00010 0x000106 ファントム バイト ( 読むと 0 ) TBLRDL.W TBLRDL.B (Wn<0> = 0) TBLRDL.B (Wn<0> = 1).3. の上位ワードアクセス TBLRDH と TBLWTH 命令は データの上位 8 ビットをアクセスするために使用されます これらの命令はまた ワードまたはバイトアクセスモードの直交性をサポートしますが 図 -7 に示すように データの上位バイトは 常に 0 を返します 図 -7 プログラムデータテーブルのアクセス (MSB) TBLRDH.W PC アドレス 23 16 8 0 0x000100 0x000102 0x00010 0x000106 TBLRDH.B (Wn<0> = 0) ファントム バイト ( 読むと 0 ) TBLRDH.B (Wn<0> = 1).3.5 へのデータ保存 アプリケーションの多くは データ保存時にはが 16 ビット幅のデータメモリとして見えるようにし 上位バイト (P<2316>) はデータとしては使われないと仮定しています プログラムデータの上位バイトは NOP (0x00 または 0xFF) または不正命令コード (0x3F) として デバイスが偶発的に格納データを実行してしまうことを防止するようにします TBLRDH と TBLWTH 命令は データを圧縮して格納する必要があるアプリケーションのため 主にアレイのプログラム / ベリファイのために提供されています DS39715A_JP - ページ -6 Advance Information 2007 Microchip Technology Inc.

第 章. データ空間からのプログラム空間可視化 PIC2F データメモリアドレス空間の上位 32K バイトは オプションで 16K ワードプログラム空間ページにマッピングすることができます この動作モードはプログラム空間可視化 (PSV) と呼び 特別な命令 ( 例えば TBLRD TBLWT 命令 ) を使用することなく データ空間から 格納された定数データに透明性のあるアクセスをすることができます..1 PSV 構成 プログラム空間可視化は PSV ビット (CORCON<2>) をセットすることで有効になります CORCON レジスタの説明は第 2 章項 CPU にあります PSV が有効になると データメモリマップの上位半分 ( 上位側アドレスのデータメモリ ) にあるそれぞれのデータ空間アドレスは プログラムアドレスに直接マッピングされます ( 図 -8 参照 ) が PSV ウインドウで 2 ビットプログラムワードの下位 16 ビットにアクセスできます データの上位 8 ビットは 装置の堅牢性を維持するために 構成的に無効命令または NOP になるようにプログラムする必要があります テーブル命令だけがそれぞれのワードの上位 8 ビットを読み出す方法を提供します 図 -9 項 プログラム空間可視化のアドレス生成方法 は PSV アドレスがどのように生成されるかを示しています PSV アドレスの下位 15 ビットは有効アドレスを含む W レジスタから提供されます W レジスタの最上位ビットは有効アドレスを形成するためには使用されません その代わり 最上位ビットは プログラム空間からの PSV アクセスを実行するか データメモリ空間からの通常アクセスを実行するかを特定します 0x8000 以上の W レジスタ有効アドレスが使用されると PSV が有効な時は データアクセスは空間から行われます W レジスタ実効アドレスが 0x8000 より小さい場合は すべてのアクセスがデータメモリから行われます 残りのアドレスビットは 図 -9 項 プログラム空間可視化のアドレス生成方法 に示すように PSVPAG レジスタ (PSVPAG<70>) により与えられます PSVPAG ビットは W レジスタの下位 15 ビットと結合され 23 ビットのアドレスを形成するための有効アドレスを保持します PSV は空間内の値をアクセスするときのみに使用されます ユーザーコンフィギュレーション内の値をアクセスするためには デーブル命令を使わなければなりません W レジスタ値の最下位ビットはバイト選択ビットとして使用され PSV を使用した命令がバイトまたはワードモード動作できるようにします 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -7

PIC2F ファミリリファレンスマニュアル 図 -8 プログラム空間可視化の動作 プログラム空間 0x000100 データ空間 0x0000 EA<15> = 1 PSVPAG 0x01 0x8000 8 15 23 23 15 0 0x008000 0xFFFF データの上位 8 ビットはプログラム空間可視化では読み出すことができない データ読み出し 0x017FFF 図 -9 プログラム空間可視化のアドレス生成方法 23 ビット 選択 1 Wn PSVPAG レジスタ 8 ビット 15 ビット Wn<0> はバイト選択 23 ビット EA DS39715A_JP - ページ -8 Advance Information 2007 Microchip Technology Inc.

第 章..2 PSV タイミング PSV を使用する命令は 命令実行に 2 つの追加命令サイクルを必要とします ただし MOV 命令 (MOV.D も含む ) は 命令実行に1つだけの追加命令サイクルとなります この追加サイクルはバス上の PSV データをフェッチするために使用されます..2.1 REPEAT ループ内での PSV 使用 REPEAT ループ内で PSV を使用する命令では アクセスからのデータアクセスのための追加命令サイクルを無くすことができ その結果実行時間のオーバーヘッドがありません ただし 次のような REPEAT ループ内での命令の繰り返しでは 実行完了に 2 命令サイクルのオーバーヘッドを招きます 最初の繰り返し 最後の繰り返し 割り込みによりループを抜け出す前の命令実行 割り込み処理後にループに戻るときの命令実行..2.2 PSV と命令ストール PSV を使用したときの命令ストールについての詳細は第 2 章 CPU を参照して下さい.5 への書き込み この項では フラッシュへのプログラミングテクニックについて説明します PIC2F デバイスは ユーザーコードを実行するための内蔵プログラマブルフラッシュメモリを持っています このメモリに書き込むには つの方法があります 実行時自己プログラミング (RTSP) インサーキットシリアルプログラミング (ICSP ) 改良インサーキットシリアルプログラミング (EICSP) JTAG プログラミング RTSP はユーザーソフトウェアで実行されます ICSP と EICSP は デバイスとのシリアルデータ接続で実行され RTSP よりかなり高速のプログラミングができます RTSP テクニックは 本項で説明しています ICSP と EICSP プロトコルの詳細は PIC2FJXXXGA0XX Flash Programming Specification (DS39768) を参照してください マイクロチップのウエブサイト (www.microchip.com) からダウンロードできます JTAG プログラミングについては IEEE 119.1-2001, の IEEE Standard Test Access Port and Boundary Scan Architecture のプログラミングの章に定義されています 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -9

PIC2F ファミリリファレンスマニュアル.6 テーブル命令の動作 テーブル命令は PIC2F デバイスの空間とデータメモリ空間の間のひとつのデータ転送手段を提供します フラッシュのプログラミング中に使用されるテーブル命令の概略については本項の中に記述されています つの基本的なテーブル命令があります TBLRDL テーブル読み出し下位 TBLRDH テーブル読み出し上位 TBLWTL テーブル書き込み下位 TBLWTH テーブル書き込み上位 TBLRDL と TBLWTL 命令は 空間のビット <150> に対しての読み書きに使用され TBLRDL と TBLWTL はワードもしくはバイトモードでをアクセスできます TBLRDHとTBLWTH 命令は 空間のビット <2316> に対しての読み書きをするために使用され TBLRDH と TBLWTH はワードもしくはバイトモードでをアクセスできます は 2 ビット幅しかありませんので TBLRDH と TBLWTH 命令は の 存在しない上位バイトをアドレッシングすることができてしまいます このバイトは ファントムバイト と呼ばれます ファントムバイトを読んでも 0x00 が戻るだけであり ファントムバイトに書き込んでも影響はありません 2 ビットのは 並列した 2 つの 16 ビットの空間と見なされ 両空間は同じアドレス範囲を共有します 従って TBLRDL と TBLWTL 命令は 下位 の空間 (PM<150>) をアクセスし TBLRDH と TBLWTH 命令は 上位 の空間 (PM<3116>) をアクセスします PM<312> への読み書きは ファントム ( 未実装 ) バイトへのアクセスになります バイトモードにおいて任意のテーブル命令が使用される時には テーブルアドレスの最下位ビットはバイト選択ビットとして使用されます 最下位ビットは 空間の上位もしくは下位のどちらのバイトをアクセスするかを決定します 図 -10 にテーブル命令を使用して がどのようにアドレッシングされるかを示します 2 ビットのアドレスは TBLPAG<70> ビットとテーブル命令で指定される W レジスタの有効アドレス (EA) で構成されます 図 -10 には 2 ビットのプログラムカウンタも参考として示します EA の上位 23 ビットは位置の選択に使用されます バイトモードのテーブル命令では W レジスタの EA の最下位ビットは 16 ビットワードのどちらのバイトをアドレスするかを選ぶために使用されます 1 はビット <158> を 0 はビット <70> を選択します W レジスタの EA の最下位ビットは ワードモードのテーブル命令では無視されます アドレスに加えて テーブル命令は W レジスタ ( またはメモリ位置への W ポインタ ) の指定も行います それは 書き込まれるべきデータのソースとなったり もしくは読み出し用の読み出し先となります バイトモードでのテーブル書き込み動作では 作業ソースレジスタのビット <158> は無視されます DS39715A_JP - ページ -10 Advance Information 2007 Microchip Technology Inc.

第 章 図 -10 テーブルレジスタのアドレッシング プログラムカウンタを使用する 0 2 ビット プログラムカウンタ 0 作業レジスタ EA テーブル命令が使用する 1/0 TBLPAG レジスタ 8 ビット 16 ビット ユーザー / コンフィギュレーション空間の選択 2 ビット EA バイト選択.6.1 テーブル読み出し命令の使い方 テーブル読み出しには 2 つのステップが必要です 第一に TBLPAG レジスタと W レジスタの 1 つを使用してアドレスポインタを設定します それからそのアドレス位置にあるの内容を読み出します.6.1.1 テーブル命令を使ったの読み出し 次のコード例は テーブル命令のワード / バイトモードを使ってどのようにからワードを読み出すかを示しています 例 -1 ワードモードの読み出し ; Setup the address pointer to program space MOV #tblpage(prog_addr),w0 ; get table page value MOV W0,TBLPAG ; load TBLPAG register MOV #tbloffset(prog_addr),w0 ; load address LS word ; Read the program memory location TBLRDH [W0],W3 ; Read high byte to W3 TBLRDL [W0],W ; Read low word to W Equivalent C Code int addroffset; int VarWord; int VarWord1; { } TBLPAG = ((PROG_ADDR & 0x7F0000)>>16); addroffset = (PROG_ADDR & 0x00FFFF); asm("tblrdh.w [%1], %0" "=r"(varword1) asm("tblrdl.w [%1], %0" "=r"(varword) "r"(addroffset)); "r"(addroffset)); 注 すべての作業レジスタは使用する前に保存すること 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -11

PIC2F ファミリリファレンスマニュアル 例 -2 バイトモードの読み出し ; Setup the address pointer to program space MOV #tblpage(prog_addr),w0 ; get table page value MOV W0,TBLPAG ; load TBLPAG register MOV #tbloffset(prog_addr),w0 ; load address LS word ; Read the program memory location TBLRDH.B [W0],W3 ; Read high byte to W3 TBLRDL.B [W0++],W ; Read low byte to W TBLRDL.B [W0++],W5 ; Read middle byte to W5 Equivalent C Code int addroffset; char VarByte1; char VarByte2; char VarByte3; { TBLPAG = ((PROG_ADDR & 0x7F0000)>>16); addr = (PROG_ADDR & 0x00FFFF); asm("tblrdl.b [%1], %0" "=r"(localvarbyte1) "r"(addroffset)) ; // Read low byte asm("tblrdl.b [%1], %0" "=r"(localvarbyte2) "r"(addroffset +1)) ;//Read middle byte asm("tblrdh.b [%1], %0" "=r"(localvarbyte3) "r"(addroffset)) ; // Read high byte } 注 すべての作業レジスタは使用する前に保存すること DS39715A_JP - ページ -12 Advance Information 2007 Microchip Technology Inc.

第 章 例 -1 と例 -2 のコード例では 下位バイトの読み出しの後置インクリメントにより 作業レジスタ内のアドレスが + 1 されます これにより EA<0> は 1 となり 3 番目の書き込み命令で真中のバイトにアクセスします 最後の後置インクリメントにより W0 は偶数アドレスにもどり 次の位置を指します 注 PIC2F 用のマイクロチップアセンブラには tblpage() と tbloffset() 擬似命令が提供されています これらの擬似命令は アドレス値からテーブル命令用の TBLPAG と W レジスタの適切な値を選択します 詳しくは MPLAB ASM 30, MPLAB LINK30 and Utilities User s Guide (DS51317) を参照してください.6.2 テーブル書き込み命令の使い方.6.2.1 テーブル書き込み保持ラッチ テーブル書き込み命令は 不揮発性に直接書き込みはしません 代わりに テーブル書き込み命令は 書き込みデータを保持ラッチにロードします 保持ラッチはメモリ空間上にマッピングされておらず テーブル命令だけがアクセスできます すべての保持ラッチにデータがロードされたら 特別な命令シーケンスを実行することにより 実際のメモリプログラミング動作が開始されます さらに詳細な情報については個別デバイスのデータシートを参照して下さい.6.2.2 ワード / バイトモードでの 1 個のラッチへの書き込み方 ワードモードで 1 個のラッチに書き込むには 次のコードシーケンスが使用できます 例 -3 ワードモード書き込み ; Setup the address pointer to program space MOV #tblpage(prog_addr),w0 ; get table page value MOV W0,TBLPAG ; load TBLPAG register MOV #tbloffset(prog_addr),w0 ; load address LS word ; Load write data into W registers MOV #PROG_LOW_WORD,W2 MOV #PROG_HI_BYTE,W3 ; Perform the table writes to load the latch TBLWTL W2, [W0] TBLWTH W3, [W0++] Equivalent C Code int VarWord1 = 0xXXXX; int VarWord2 = 0xXXXX; int addroffset; { TBLPAG = ((PROG_ADDR & 0x7F0000)>>16); addroffset = (PROG_ADDR & 0x00FFFF); asm("tblwtl %1, [%0]" "=r"(addroffset) "d"(varword)) ; asm("tblwth %1, [%0]" "=r"(addroffset) "d"(varword1)) ; } 注 すべての作業レジスタは使用する前に保存すること この例では W3 の上位バイトの内容は ファントムバイト位置に書き込まれるので 関係ありません W0 は 2 番目の TBLWTH 命令の後で 2 だけ後置インクリメントされ 次の位置に書き込む準備をします 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -13

PIC2F ファミリリファレンスマニュアル バイトモードで 1 個のラッチに書き込むには 次のコードシーケンスが使用できます 例 - バイトモードの書き込み ; Setup the address pointer to program space MOV #tblpage(prog_addr),w0 ; get table page value MOV W0,TBLPAG ; load TBLPAG register MOV #tbloffset(prog_addr),w0 ; load address LS word ; Load data into working registers MOV #LOW_BYTE,W2 MOV #MID_BYTE,W3 MOV #HIGH_BYTE,W ; Write data to the latch TBLWTH.B W, [W0] ; write high byte TBLWTL.B W2, [W0++] ; write low byte TBLWTL.B W3, [W0++] ; write middle byte Equivalent C Code char VarByte1 = 0xXX; char VarByte2 = 0xXX; char VarByte3 = 0xXX; { TBLPAG = ((PROG_ADDR & 0x7F0000)>>16); addr = (PROG_ADDR & 0x00FFFF); asm("tblwtl.b %1, [%0]" "=r"(addr) "d"(varbyte1)) ;//Low Byte asm("tblwth.b %1, [%0]" "=r"(addr) "d"(varbyte3)) ;//Upper Byte addr++; asm("tblwtl.b %1, [%0]" "=r"(addr) "d"(varbyte2)) ;//Middle Byte } 注 すべての作業レジスタは使用する前に保存すること 上記コード例では 下位バイトに書き込みを行う際の後置インクリメントにより W0 のアドレスが + 1 されます これにより 3 番目の書き込み命令で真中のバイトにアクセスするため EA<0>= l が設定されます 最後の後置インクリメントにより W0 は偶数アドレスに戻り 次の位置を示します DS39715A_JP - ページ -1 Advance Information 2007 Microchip Technology Inc.

第 章.6.3 実行時自己プログラミング (RTSP) RTSP によりユーザーコードでフラッシュの内容を変更できます RTSP は TBLRD ( テーブル読み出し ) と TBLWT ( テーブル書き込み ) 命令 および NVM コントロールレジスタを使用して遂行することができます RTSP により ユーザーはの 8 行 (6x8 = 512 命令 ) を一度に消去でき データの 1 行 (6 命令 ) を一度にプログラムできます.6.3.1 RTSP の動作 PIC2F フラッシュメモリアレイは 6 命令つまり 192 バイトの行で構成されています RTSP によりユーザーは一度に 8 行のブロック (512 命令 ) を消去でき 一度に 6 命令をプログラムできます 8 行の消去ブロックと 1 行の書き込みブロックは のはじめから端を揃えて配置され それぞれ 1536 バイトと 192 バイトが境目となります は 6 命令のプログラミングデータを保持できる保持バッファを内蔵しています 実際のプログラミング動作前に 書き込みデータを順番にバッファにロードします 命令ワードは常に 6 境界のグループでロードします RTSP プログラミングの基本のシーケンスは テーブルポインタを設定してから TBLWT 命令で連続してバッファにロードします プログラミングは NVMCON レジスタの制御ビットをセットすることで実行されます 全部で 6 個の TBLWTL と TBLWTH 命令が命令のロードに必要とされます すべてのテーブル書き込み動作は バッファに書くだけなので 1 ワード書き込み (2 命令サイクル ) です 各行のプログラミングには プログラミングサイクルが必要です 注 行 ブロック 保持ラッチの数は デバイスごとに異なります 実際の数については そのデバイス個別のデータシートを参照して下さい.6. 制御レジスタ プログラムフラッシュメモリの読み書きには NVMCON と NVMKEY という 2 個の SFR が使用されます NVMCON レジスタ ( レジスタ -1) では どのブロックを消去するか どのメモリタイプの書き込みか そしてプログラミングサイクルの開始を制御します NVMKEY は 書き込み専用レジスタで 書き込み保護に使われます プログラムや消去シーケンスを開始するには ユーザーは NVMKEY レジスタに 55h と AAh を連続して書き込む必要があります.6..1 NVMCON レジスタ NVMCON レジスタは フラッシュと EEPROM のプログラム / 消去動作の主制御レジスタです このレジスタは 消去動作あるいはプログラム動作のどちらを実行するかを選択したり プログラムや消去サイクルを開始するために使われます NVMCON レジスタをレジスタ -1 に示します NVMCON の下位バイトは 実行される NVM 動作のタイプを構成します 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -15

PIC2F ファミリリファレンスマニュアル レジスタ -1 NVMCOM 不揮発性フラッシュメモリ制御レジスタ R/SO-0 (1) R/W-0 (1) R/W-0 (1) U-0 U-0 U-0 U-0 U-0 WR WREN WRERR ビット 15 ビット 8 U-0 R/W-0 (1) U-0 U-0 R/W-0 (1) R/W-0 (1) R/W-0 (1) R/W-0 (1) ERASE NVMOP3 (2) NVMOP2 (2) NVMOP1 (2) NVMOP0 (2) ビット 7 ビット 0 凡例 SO = 設定のみ R = 読み出し可 W = 書き込み可 U = 未実装 ( 読むと 0 -n = POR 後の値 1 = セット 0 = クリア x = 不定 bit 15 WR 書き込み制御ビット (1) 1 = フラッシュメモリのプログラムまたは消去を開始する 動作は自己のタイミングで行われ 動作完了するとハードウェアでクリアされる 0 = プログラムまたは消去が完了し 実行中ではない bit 1 WREN 書き込み有効化ビット (1) 1 = フラッシュのプログラム / 消去動作を有効とする 0 = フラッシュのプログラム / 消去動作を禁止する bit 13 WRERR 書き込みシーケンスエラーフラグビット (1) 1 = 不適切なプログラムまたは消去シーケンスが行われたか中断された ( ビットはWRビットをセットしようとすると常に自動的にセットされる ) 0 = プログラムまたは消去動作が正常に完了した bit 12-7 未実装 読むと 0 bit 6 ERASE 消去 / プログラム有効化ビット (1) 1 = NVMOP3NVMOP0 で指定された消去動作を次の WR コマンドで実行する 0 = NVMOP3NVMOP0 で指定されたプログラム動作を次の WR コマンドで実行する bit 5- 未実装 読むと 0 bit 3-0 NVMOP3NVMOP0 NVM 動作選択ビット (2) 1111 = メモリバルク消去動作 (ERASE = 1) または動作なし (ERASE = 0) (3) 0011 = メモリワードプログラム動作 (ERASE = 0) または動作なし (ERASE = 1) 0010 = メモリページ消去動作 (ERASE = 1) または動作なし (ERASE = 0) 0001 = メモリ行プログラム動作 (ERASE = 0) または動作なし (ERASE = 1) 注 1 これらのビットは POR でのみリセットされる 2 NVMOP3NVMOP0 の他の組み合わせはすべて未実装 3 この動作は ICSP モードのみで有効 DS39715A_JP - ページ -16 Advance Information 2007 Microchip Technology Inc.

第 章.6..2 NVMKEY レジスタ NVMKEY は書き込み専用レジスタで 偶発的にフラッシュメモリが書き込まれたり消去されたりすることを防止するために使用されます プログラムまたは消去シーケンスを開始するには 次のステップを示した順序で正確に実行する必要があります 1. NVMKEY に 0x55 を書き込む 2. NVMKEY に 0xAA を書き込む 3. 2 つの NOP 命令を実行するこのシーケンス後にNVMCONレジスタへの書き込みが1 命令サイクルだけ許可されます ほとんどの場合ユーザーは プログラムまたは書き込みサイクルを始めるためには NVMCON レジスタの WR ビットを単純にセットして下さい 割り込みはこのアンロックシーケンスの間は禁止して下さい 次のコード例は アンロックシーケンスがどのように実行されるかを示したものです 例 -5 アンロックシーケンスの実行 ; PUSH SR ; Disable interrupts, if enabled MOV #0x00E0,W0 IOR SR MOV #0x55,W0 MOV #0xAA,W0 MOV W0,NVMKEY MOV W0,NVMKEY ; NOP not required BSET NVMCON,#WR ; Start the program/erase cycle NOP NOP POP SR ; Re-enable interrupts Equivalent C Code NVMKEY = 0x55; NVMKEY = 0xAA; NVMCONbits.WR=1; Nop(); Nop(); 注 すべての作業レジスタは使用する前に保存すること そのほかのプログラミング例については.7 項 フラッシュプログラミング動作 を参照して下さい 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -17

PIC2F ファミリリファレンスマニュアル.7 フラッシュプログラミング動作 RTSP モードで内蔵フラッシュをプログラミングあるいは消去するためには 完全なプログラミングシーケンスを実行する必要があります プログラミング動作は標準で ms (1) かかり この動作が完了するまでの間プロセッサはストール ( 待ち状態 ) となります WR ビット (NVMCON<15>) をセットすると動作を開始し WR ビットは動作完了で自動的にクリアされます 注 1 プログラミング時間はデバイスごとに異なります 正確な値についてはそのデバイスの個別データシートを参照して下さい フラッシュプログラミング動作は 次の不揮発性メモリ (NVM) 制御レジスタで行います NVMCON NVMKEY.7.1 フラッシュプログラミングアルゴリズム ユーザーは プログラムフラッシュメモリを行単位でプログラムできます このためには 対応する行を含む 8 行単位の消去ブロックを消去する必要があります 一般的な手順は次の通りです 1. の 8 行 (512 命令 ) を読み出してデータ RAM に保存する 2. RAM 内のプログラムデータを新データで更新する 3. ブロックを消去する a) ブロック消去のコンフィギュレーションをするため NVMOP ビット (NVMCOM<30>) を 0010 にセットする ERASE (NVMCOM<6>) ビットと WREN (NVMCOM<1>) ビットをセットする b) 消去するブロックの開始アドレスを TBLPAG と W レジスタにセットする c) 55h を NVMKEY に書く d) AAh を NVMKEY に書く e) WR ビット (NVMCOM<15>) をセットする 消去サイクルが開始され CPU は消去サイクルの間ストールする 消去が完了すると WR ビットが自動的にクリアされる. データ RAM 内の最初の 6 命令をバッファに書き込む (.5 項 への書き込み 参照 ) 5. プログラムブロックをフラッシュメモリに書き込む a) 行プログラミングのコンフィギュレーションをするために NVMOP ビットを 0001 にセットする ERASE ビットをクリアし WREN ビットをセットする b) 55h を NVMKEY に書く c) AAh を NVMKEY に書く d) WR ビットをセット プログラミングサイクルが開始され CPU は書き込みサイクルの間ストールする フラッシュへの書き込み完了で WR ビットが自動的にクリアされる 6. TBLPAG の値をインクリメントしてデータ RAM 内ブロックの次の 6 命令を ステップ と 5 を繰り返して書き込み 512 命令すべてがフラッシュメモリに書き戻されるまで繰り返す偶発的な動作を防止するため いかなる消去あるいはプログラム動作に対しても NVMKEY への書き込み起動シーケンスを使用しなければなりません プログラミングコマンドを実行後は プログラミング動作が完了するまで待つ必要があります プログラミングシーケンスを開始した後の 2 命令サイクルは.6..2 項 NVMKEY レジスタ に示したように NOP とする必要があります 注 1 フラッシュメモリプログラミングのより詳しいリファレンスコードは そのデバイスの個別のデータシートを参照して下さい 2 行 ブロック 保持ラッチの数は デバイスごとに異なります 実際の数については そのデバイスの個別のデータシートを参照して下さい DS39715A_JP - ページ -18 Advance Information 2007 Microchip Technology Inc.

2007 Microchip Technology Inc. Advance Information DS39715A_JP- ページ -19.8 レジスタマップ PIC2F のに関連する特殊機能レジスタのまとめを表 -1 に示します ファイル名 ビット 15 ビット 1 表 -1 に関連する特殊機能レジスタ (1) ビット 13 ビット 12 ビット 11 ビット 10 ビット 9 ビット 8 ビット 7 ビット 6 ビット 5 ビット ビット 3 ビット 2 ビット 1 ビット 0 TBLPAG テーブルページアドレスポインタ 0000 NVMCON WR WREN WRERR ERASE NVMOP3 NVMOP2 NVMOP1 NVMOP0 0000 NVMKEY NVMKEY<70> 0000 凡例 = 未実装で読むと 0 リセット後の値は 16 進数で示す 注 1 メモリマップの詳細はそのデバイスの個別のデータシートを参照して下さい 2 リセット後の値は POR のみを示す リセット後の値は リセット時のメモリ書き込みまたは消去動作状態に依存します リセット後 (2) 第 章

PIC2F ファミリリファレンスマニュアル.9 関連するアプリケーションノート この項では マニュアルのこの章に関連するアプリケーションノートをリストアップします これらのアプリケーションノートは 特に PIC2F デバイスファミリー用に書かれているわけではありませんが その概念は適切であり 変更あるいは制限事項も考慮に入れて使用可能です 現状 に関連するアプリケーションノートは次の通りです タイトルアプリケーションノート # 現在関連するアプリケーションノートはありません 注 PIC2F ファミリデバイスに関するその他のアプリケーションノートやコード例についてはマイクロチップウェブサイト (www.microchip.com) をご覧下さい DS39715A_JP - ページ -20 Advance Information 2007 Microchip Technology Inc.

第 章.10 改版履歴 リビジョン A (2007 年 1 月 ) 本文書の初版リリース 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -21

第 章 2007 Microchip Technology Inc. Advance Information DS39715A_JP - ページ -22