C言語&MCCによる PICプログラミング大全

書籍情報

発売日 : 2023年03月18日

著者/編集 : 後閑 哲也

出版社 : 技術評論社

発行形態 : 単行本

書籍説明

内容紹介

PICマイコンの設定はMCCで自動生成。開発環境MPLAB X IDEを使い倒す!

目次

第1部 PICマイコンと開発環境の概要

第1章 マイコンとプログラミング
1-1 マイコンとは
1-1-1 マイコンの出現と進歩
1-1-2 マイクロプロセッサとマイクロコントローラの差異
1-2 マイコンのプログラムとは
1-2-1 マイコンの構成とプログラム
1-2-2 プログラムと命令
1-3 2進数と16進数
コラム なぜ1バイトが8ビットになったか
1-4 マイコンの動かし方
1-4-1 動かすために必要なこと
1-4-2 マイコンでできないこと

第2章 PICマイコンの概要
2-1 F1ファミリの位置付けと種類
2-1-1 PIC16F1ファミリの位置付け
2-1-2 PIC16F1ファミリの種類
2-2 PIC16F1ファミリのアーキテクチャ
2-2-1 全体アーキテクチャ
2-2-2 クロックと命令実行
2-2-3 プログラムメモリのアーキテクチャ
2-2-4 データメモリのアーキテクチャ
2-3 コアインデペンデントペリフェラル
2-3-1 CIPの種類
2-3-2 CIPの適用例

第3章 ハードウェア開発環境の概要
3-1 ハードウェア開発環境概要
3-1-1 ハードウェアツール
3-1-2 評価ボード
3-2 Curiosity HPCボード
3-2-1 Curiosity HPCボードの概要と実装内容
3-2-2 回路構成
3-3 Clickボード
3-3-1 Clickボードとは
3-3-2 mikroBUSとは
3-4 ブレッドボード
3-4-1 ブレッドボードとは
3-4-2 ブレッドボードへの部品実装の仕方

第4章 ソフトウェア開発環境と使い方
4-1 ソフトウェア開発環境概要
4-1-1 2種類の開発環境スタイル
4-1-2 ソフトウェアツール
4-2 ソフトウェアの入手とインストール
4-2-1 ファイルのダウンロード
4-2-2 MPLAB X IDEのインストール
4-2-3 MPLAB XC8コンパイラのインストール
4-2-4 MPLAB X IDEの外観
4-3 プロジェクトの作成
4-3-1 MPLAB X IDEの起動
4-3-2 プロジェクトの作成
4-3-3 ソースファイルの作成
4-3-4 既存プロジェクトの取り扱い
4-3-5 プロジェクトのプロパティ
4-3-6 DFPの役割と選択
4-4 エディタの使い方
4-4-1 エディタの画面構成と基本機能
4-4-2 エディタの基本機能とツールバーの使い方
4-4-3 エディタの各種設定
4-5 コンパイルと書き込み実行
4-5-1 コンパイル
4-5-2 書き込み
4-5-3 SNAP/PICkit4の詳細
4-5-4 ICSPの詳細
4-5-5 書き込み時の注意とツールのエラー対策
4-5-6 ファームウェア不具合の修理方法
4-6 実機デバッグの仕方
4-6-1 デバッグに使う例題プログラム
4-6-2 実機デバッグの開始とデバッグ用アイコン
4-6-3 デバッグオプション機能
4-6-4 メモリ内容表示
コラム コンパイルエラーの原因発見のコツ

第5章 MPLAB X IDEの便利機能
5-1 MPLAB X IDEの便利機能
5-1-1 ファイルの登録と削除
5-1-2 複数プロジェクトの扱い
5-1-3 複数構成のプロジェクト
5-1-4 プロジェクトのコピーとRename
5-1-5 Dashboard
5-1-6 プロジェクト内検索
5-1-7 コンパイラの追加と削除
5-2 エディタの便利機能
5-2-1 ショートカットキー
5-2-2 構造体やレジスタの要素選択
5-2-3 検索と置換
5-3 デバッグ時の便利機能
5-3-1 Hyper Navigation
5-3-2 Navigationメニュー
5-3-3 Call Graph

第2部 MPLAB XCコンパイラの詳細

第1章 XCコンパイラの動作
1-1 コンパイル処理の流れ
1-1-1 MPLAB XC8コンパイルの処理の流れ
1-1-2 セクションとMAPファイル
1-2 プログラム実行時の環境
1-2-1 実行時のメモリレイアウト
1-2-2 main関数とスタートアップコード
1-3 プリプロセッサの使い方
1-3-1 プリプロセッサ指示命令の種類
1-3-2 #defineとマクロ機能の使い方
1-3-3 #includeの使い方
1-3-4 #ifによる条件付きコンパイル
1-4 デバイスヘッダファイルの役割
1-4-1 ヘッダファイルの呼び出し
1-4-2 デバイスヘッダファイルの内容
1-4-3 マクロ機能と組み込み関数の使い方
1-5 pragma指示命令の使い方
1-6 コンパイラの最適化
1-6-1 最適化のレベルと最適化の内容
1-6-2 最適化の設定方法
1-6-3 最適化のサイズ見積もり

第2章 XCコンパイラの仕様
2-1 準拠するC標準
2-1-1 C90標準とC99標準
2-1-2 C90とC99の切り替え
2-2 変数のデータ型
2-2-1 変数の宣言書式
2-2-2 データ型の種類
2-2-3 データ型の修飾子
2-3 定数の書式と文字定数
2-3-1 定数の記述書式
2-3-2 定数の修飾 接尾語
2-3-3 文字の扱い
2-4 変数の宣言位置とスコープ
2-4-1 宣言位置とスコープ
2-4-2 変数の格納方法
2-4-3 自動配置の変数(autoタイプ)
2-4-4 指定配置の変数(Non-autoタイプ)
2-4-5 実際の使用例
2-5 変数の型変換
2-5-1 自動型変換(暗黙の型変換)
2-5-2 明示的型変換(キャスト)
2-6 標準入出力関数
2-6-1 コンソールデバイスと低レベル入出力関数
2-6-2 C90とC99の標準入出力関数の差異
2-6-3 標準入出力関数一覧
2-6-4 入出力関数の使い方
第3章 割り込み処理関数
3-1 割り込み処理の流れとメリット
3-1-1 割り込み処理の流れ
3-1-2 割り込みのメリット
3-2 割り込み要因と許可禁止
3-2-1 割り込み回路ブロックの動作と割り込み許可
3-2-2 割り込み関連レジスタの詳細
3-2-3 割り込み動作の詳細
3-3 割り込み処理の記述方法

第3部 MCCと内蔵モジュールの使い方

第1章 MCCの概要
1-1 MCCとは
1-1-1 MCCの役割と自動生成される内容
1-1-2 MCCの対応デバイス
1-2 MCCのインストール
1-2-1 最新バージョンのインストールの場合
1-2-2 旧バージョンのインストールの場合
1-3 MCCの起動方法
1-3-1 MelodyとClassic
1-3-2 Classicのライブラリの追加方法
1-4 MCCを使ったプログラミング手順
1-5 自動生成されるコードとその関係
1-6 MCCによる割り込み処理の記述
1-6-1 割り込み処理の流れ
1-6-2 ユーザ割り込み処理の記述方法

第2章 システム関連の設定
2-1 コンフィギュレーションビットとその設定方法
2-1-1 コンフィギュレーションビットの役割
2-1-2 コンフィギュレーションビットの種類と内容
2-1-3 MCCによるコンフィギュレーションビットの設定方法
2-1-4 コンフィギュレーションビット設定専用ダイアログの使い方
2-2 マイコンの実行速度を決める
2-2-1 クロック生成ブロックの構成
2-2-2 発振モードの種類
2-2-3 MCCによるクロック指定方法
2-2-4 内蔵クロックの周波数微調整
2-3 時間を高精度にしたい
2-3-1 クリスタル/セラミック発振子モードの使い方
2-3-2 外部発振器モードの使い方
2-4 クロック発振の監視をしたい
2-4-1 リファレンスクロックモジュールの使い方
2-4-2 クロック発振モニタ
2-5 電源変動しても安定に動作させたい
2-5-1 リセットとは
2-5-2 PORとBOR

第3章 LEDやスイッチを使いたい
3-1 入出力ピンとは
3-1-1 入出力ピンとSFRレジスタの関係
3-1-2 実際の使い方と電気的特性
3-2 接続する入出力ピンを自由に選びたい
3-2-1 ピン割り付け機能とは
3-2-2 MCCのPin Manager Gridによるピン割り付け設定
3-3 入出力ピンのオプション機能
3-3-1 MCCのPin Moduleの役割
3-3-2 アナログ入力かデジタル入出力か
3-3-3 スイッチのプルアップ抵抗を省略したい
3-3-4 電圧の異なる相手と接続したい
3-3-5 ピンに名前を付けるとその名前で関数が生成される
3-3-6 その他のオプション機能
3-3-7 突然の短時間の入力変化を知りたい
3-4 入出力ピンの使い方の実際例

第4章 一定のインターバルで実行したい
4-1 長時間のインターバル動作をしたい-タイマ0の使い方
4-1-1 16ビットモードのタイマ0の内部構成と動作
4-1-2 16ビットモードのMCCの設定と生成される関数の使い方
4-1-3 例題による16ビットモードの使い方の説明
4-1-4 8ビットモードのタイマ0の内部構成と動作
4-1-5 8ビットモードのMCCの設定と生成される関数
4-1-6 例題による8ビットモードの使い方の説明
4-2 ゲート制御でパルス幅を測定したい-タイマ1/3/5 の使い方
4-2-1 タイマ1/3/5の内部構成と動作
4-2-2 MCCによる設定と生成される関数の使い方
4-2-3 例題によるタイマ1の使い方の説明
4-3 正確なインターバル動作をしたい-タイマ2/4/6/8/10の使い方
4-3-1 基本構成のタイマ2/4/6の内部構成と動作
4-3-2 MCCによるタイマ2/4/6の設定と生成される関数の使い方
4-3-3 外部リセット付きタイマ2/4/6/8/10の内部構成と動作
4-3-4 HLTタイマのMCCによる設定と生成される関数の使い方
4-3-5 例題によるHLTタイマの使い方の説明
4-4 長周期パルスの高精度測定をしたい-SMTタイマの使い方
4-4-1 SMTの内部構成と動作
4-4-2 MCCによる設定方法と生成される関数の使い方
4-4-3 例題によるSMTの使い方の説明

第5章 パソコンやセンサと通信したい
5-1 パソコンと通信したい-EUSARTモジュールの使い方
5-1-1 同期式と非同期式とは
5-1-2 EUSARTモジュールの内部構成と動作
5-1-3 マルチドロップ方式と9ビットモードの使い方
5-1-4 MCCによる設定と生成される関数の使い方
5-1-5 パソコンとの通信の例題-割り込みを使わないEUSARTの使い方
5-1-6 標準入出力関数による例題
5-1-7 パソコンとの通信の例題-割り込みを使ったEUSARTの使い方
5-2 センサやLCDをデジタル通信で接続したい-I2Cモジュールの使い方
5-2-1 I2C通信とは
5-2-2 I2C通信データフォーマット
5-2-3 MSSPモジュール(I2Cモード)の内部構成と動作
5-2-4 MCCによるMSSP(I2Cマスタモード)の設定と生成される関数の使い方
5-2-5 MCCによるMSSP(I2Cスレーブモード)の設定と生成される関数の使い方
5-2-6 例題によるMSSPモジュール(I2Cモード)の使い方
5-2-7 接続デバイスの仕様
5-2-8 MCCによる例題のI2Cマスタ側のプログラム製作
5-2-9 MCCによるI2Cスレーブ側のプログラム製作
5-2-10 例題の動作確認
5-3 ICやセンサを高速で接続したい-SPIモジュールの使い方
5-3-1 SPI通信とは
5-3-2 SPIの4つの通信モード
5-3-3 MSSPモジュール(SPIモード)の内部構成と動作
5-3-4 MCCによるMSSP2(SPIマスタモード)の設定と生成される関数の使い方
5-3-5 MCCによるMSSP2(SPIスレーブモード)の設定と生成される関数の使い方
5-3-6 例題によるMSSPモジュール(SPIモード)の使い方
5-3-7 接続デバイスの仕様
5-3-8 SPIマスタ側のプログラム製作
5-3-9 MCCによるSPIスレーブ側のプログラム製作
5-3-10 例題の動作確認
5-4 センサを単線シリアル通信で接続したい
5-4-1 1-Wire通信とは
5-4-2 単線シリアル通信の温湿度センサの使い方
5-4-3 例題による単線シリアル通信の使い方
5-4-4 MCCによる例題プログラム製作

第6章 モータの速度制御やLEDの調光制御をしたい
6-1 パルス幅測定やPWM制御をしたい-CCPモジュールの使い方
6-1-1 パルス幅、周期の測定をしたい-キャプチャモード
6-1-2 一定の遅延を生成したい-コンペアモード
6-1-3 PWM制御をしたい-CCPモジュールのPWMモード
6-1-4 フルブリッジをPWM制御したい-ECCPモジュールのPWMモード
6-1-5 MCCによるCCPモジュールの設定と生成される関数の使い方
6-1-6 例題によるCCPモジュールのキャプチャモードの使い方6-1-7 例題のプログラム作成
6-1-8 LEDの調光制御の例題-CCPのPWMモードの使い方
6-1-9 例題のプログラム作成
6-2 Power LEDの調光制御をしたい-PWMモジュールの使い方
6-2-1 10ビット PWMモジュールの内部構成と動作
6-2-2 MCCによるPWMモジュールの設定と生成される関数の使い方
6-2-3 Power LEDの調光制御の例題-PWMモジュールの使い方
6-2-4 例題のプログラム作成
6-3 モータの速度制御をしたい-CWGモジュールの使い方
6-3-1 CWGモジュールの構成と動作
6-3-2 MCCによるCWGモジュールの設定と生成される関数の使い方
6-3-3 フルブリッジによるモータ制御の例題-CWGモジュールの使い方
6-3-4 例題のプログラム作成

第7章 いろいろな種類のパルスを生成したい
7-1 広範囲の周波数のパルスを生成したい-NCOモジュールの使い方
7-1-1 NCOモジュールの内部構成と動作
7-1-2 MCCによるNCOモジュールの設定方法と生成される関数の使い方
7-1-3 例題によるNCOモジュールの使い方-1Hz単位のパルス出力
7-1-4 MCCによる例題のプログラム作成
7-1-5 書き込みと動作確認
7-2 信号を変調したい-DSMモジュールの使い方
7-2-1 DSMモジュールの内部構成と動作
7-2-2 MCCによるDSMモジュールの設定と生成される関数の使い方
7-2-3 例題によるDSMモジュールの使い方
7-2-4 送信側のプログラム製作
7-2-5 受信側のプログラムの製作
7-2-6 書き込みと動作確認
7-3 特殊なパルスを生成したい-16ビットPWMモジュールの使い方
7-3-1 16ビットPWMの内部構成と動作
7-3-2 MCCによる16ビットPWMの設定方法と生成される関数の使い方
7-3-3 例題による16ビットPWMの使い方-RCサーボの使い方
7-3-4 例題のプログラム作成

第8章 消えないメモリにデータを保存したい
8-1 内蔵の消えないメモリを使いたい-EEPROMの使い方
8-1-1 データEEPROMメモリの内部構成と動作
8-1-2 MCCによるEEPROMの使い方
8-1-3 例題によるEEPROMの使い方-EEPROMの読み書き
8-1-4 書き込みと動作確認
8-2 内蔵のフラッシュメモリにデータを保存したい
8-2-1 フラッシュメモリの内部構成と動作
8-2-2 フラッシュメモリのMCCによる設定と関数の使い方
8-2-3 例題によるフラッシュメモリの使い方
8-2-4 書き込みと動作確認
8-3 外付けの大容量フラッシュメモリにデータを保存したい
8-3-1 フラッシュメモリの使い方
8-3-2 例題によるフラッシュメモリの使い方
8-3-3 例題のプログラム作成
8-3-4 書き込みと動作確認

第9章 センサなどの電圧や電流を扱いたい
9-1 センサなどの電圧や電流を計測したい-10/12ビットADコンバータの使い方
9-1-1 10/12ビットADコンバータの内部構成と動作
9-1-2 10ビットADコンバータのMCCの設定と生成される関数の使い方
9-1-3 例題による10ビットADCモジュールの使い方
9-2 ノイズを減らして電圧を計測したい-演算機能付きADCCの使い方
9-2-1 ADCCコンバータモジュールの内部構成と動作
9-2-2 MCCの設定方法と生成される関数の使い方
9-2-3 例題によるBasic_modeの使い方
9-2-4 例題によるADCCのAverage_modeの使い方
9-2-5 例題によるLow_pass_filter_modeの使い方
9-2-6 例題によるAccumulate_modeの使い方
9-3 音やセンサなどの瞬時電圧変化を知りたい-アナログコンパレータの使い方
9-3-1 コンパレータの内部構成と動作
9-3-2 MCCの設定方法と生成される関数の使い方
9-3-3 例題によるコンパレータの使い方
9-4 交流信号の位相を制御したい-ZCDの使い方
9-4-1 ZCDモジュールの内部構成と動作
9-4-2 ZCDのMCCの設定方法と生成される関数の使い方
9-4-3 例題によるZCDの使い方
9-5 任意の一定電圧を出力したい-5/10ビットDAコンバータの使い方
9-5-1 5/8/10ビットDAコンバータの内部構成と動作
9-5-2 MCCによるDAコンバータの設定方法と生成される関数の使い方
9-5-3 FVRモジュールの内部構成と動作
9-5-4 例題によるDAコンバータの使い方
9-6 センサなどの小さな電圧を増幅したい-オペアンプの使い方
9-6-1 オペアンプの内部構成と動作
9-6-2 オペアンプのMCCの設定方法
9-6-3 例題によるオペアンプの使い方

第10章 その他の内蔵モジュールの使い方
10-1 内蔵モジュールの入出力を合成したい-CLCモジュールの使い方
10-1-1 CLCモジュールの内部構成と動作
10-1-2 CLCのMCCの設定方法
10-1-3 例題によるCLCの使い方
10-2 極低消費電力にしたい-スリープと間欠動作
10-2-1 省電力モードの種類と動作
10-2-2 スリープと間欠動作
10-2-3 例題 WDTによる間欠動作
10-3 プログラムの異常動作を知りたい-WDTの使い方
10-3-1 プログラム異常監視とは
10-3-2 ウォッチドッグタイマ(WDT)の内部構成と動作
10-3-3 窓付きウォッチドッグタイマ(WWDT)の内部構成と動作
10-4 メモリ破壊の監視をしたい-CRCとSCANの使い方
10-4-1 CRCモジュールとSCANモジュールの内部構成と動作
10-4-2 CRCモジュールとSCANモジュールのMCCの設定と生成される関数の使い方
10-4-3 例題によるCRCモジュールとSCANモジュールの使い方

第11章 ミドルウェアの使い方
11-1 SDカードにデータを保存したい-FATファイルシステムの使い方
11-1-1 FATファイルシステムとは
11-1-2 例題の構成
11-1-3 MCCによる設定方法と生成される関数の使い方
11-1-4 例題のプログラム作成

著者情報

後閑 哲也
後閑, 哲也, 1947-