演習 5-1 (個人PC): INT 割り込みを使ってみましょう。プログラムの仕様は以下の通りです。
仕様:
※ タクトスイッチはプルアップされてるので、押すと「High → Low」と変化する事に注意
プロジェクト「IO_4_2」を「IO_5_1」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_4_2 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
(IDEのバージョンによっては) プロジェクトのプロパティを開き、そのまま「Apply」ボタンを押して設定ファイルを更新します。※ 通常は自動で設定ファイルが更新されますが、バージョンによってはバグのため自動更新されないようです
setting.h を開き、一旦全ての機能をオフにします。
シリアル通信(USE_UART)、INT割り込み(USE_RB0INT)のコメントアウトを解除します。
Modlules/rb0int.c を開いてコメントに従って設定します。
main.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
isr.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
穴埋め問題になっていますので、プログラム内のコメントを参考に?のところを正しい内容に修正してください。
回路を作成します。
以下の設定に従って回路を作成して下さい。
(*) が前の演習からの変更箇所です。
ピン配置設定・回路接続方法: 1: RA2 2: RA3 3: CCP4 (PWM) -- 圧電スピーカ 4: MCLR/VPP -- PICkit の 1: NMCLR 5: VSS -- GND (*)6: RB0/INT (GPIO入力/INT割り込み) -- タクトスイッチ ※ 実際には回路に変更はありません 7: RB1 8: Rx (UART) -- RN-42 の J2-6 : TX (UART) 9: CCP1 (PWM) -- オシロスコープ 10: RB4 11: Tx (UART) -- RN-42 の J2-7 : RX (UART) 12: ICSPCLK -- PICkit の 5: PGC 13: ICSPDAT -- PICkit の 4: PGD 14: VDD -- 3.3V 15: RA6 16: RA7 17: RA0 (GPIO出力) -- LED 18: AN1 (ADC) -- 可変抵抗の中央ピン
書き込みボタンを押して正常に動作する事を確認して下さい。
指定場所に「rb0int.c」と「main.c」と「isr.c」を記入してください。
演習 5-2 (個人PC): タイマー割り込みを使ってみましょう。プログラムの仕様は以下の通りです。
仕様:
プロジェクト「IO_5_1」を「IO_5_2」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_5_1 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
(IDEのバージョンによっては) プロジェクトのプロパティを開き、そのまま「Apply」ボタンを押して設定ファイルを更新します。※ 通常は自動で設定ファイルが更新されますが、バージョンによってはバグのため自動更新されないようです
setting.h を開き、一旦全ての機能をオフにします。
シリアル通信(USE_UART)、INT 割り込み(USE_RB0INT)、Timer 1 割り込み(USE_TIMER1)のコメントアウトを解除します。
Modlules/timer.c を開きます。
Timer 1 を使うので、Timer 1 の初期化関数( void init_timer1( void )をコメントに従って設定します。
main.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
isr.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
穴埋め問題になっていますので、プログラム内のコメントを参考に?のところを正しい内容に修正してください。
回路には変更ありません。
書き込みボタンを押して正常に動作する事を確認して下さい。
指定場所に「timer.c」と「main.c」と「isr.c」を記入してください。
(追加課題) 演習 5-3 (個人PC): コンペア割り込みとタイマー割り込みを組み合わせて PWM 出力をしてみましょう。プログラムの仕様は以下の通りです。
仕様:
プロジェクト「IO_5_2」を「IO_5_3」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_5_2 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
(IDEのバージョンによっては) プロジェクトのプロパティを開き、そのまま「Apply」ボタンを押して設定ファイルを更新します。※ 通常は自動で設定ファイルが更新されますが、バージョンによってはバグのため自動更新されないようです
setting.h を開き、一旦全ての機能をオフにします。
デジタル入力(USE_INPUT)、タイマー 1 割り込み(USE_TIMER1)、コンペア割り込み(USE_CCP1_COMPARE) のコメントアウトを解除します。
Modlules/timer.c の設定は演習 5-2 のままです。
Modlules/ccp_compare.c を開きます。
CCP1 を使うので、CCP1 の初期化関数( void init_ccp1_compare( void )をコメントに従って設定します。
main.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
isr.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
穴埋め問題になっていますので、プログラム内のコメントを参考に?のところを正しい内容に修正してください。
回路には変更ありません。
書き込みボタンを押して正常に動作する事を確認して下さい。
指定場所に「ccp_compare.c」と「main.c」と「isr.c」を記入してください。