演習 4-1 (個人PC): PWM を使ってみましょう。プログラムの仕様は以下の通りです。
仕様:
1827は CCP(Capture/Compare/PWM)モジュールを4つ(CCP1、CCP2、CCP3、CCP4) 積んでいます
タイマーモジュールを3つ(Timer2、Timer4、Timer6) 積んでるので同時に 3 つ PWM 出力可能です
CCP1 と CCP2 は設定で PWM 出力ピンの位置を変更できます
プロジェクト「IO_3_1」を「IO_4_1」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_3_1 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
(IDEのバージョンによっては) プロジェクトのプロパティを開き、そのまま「Apply」ボタンを押して設定ファイルを更新します。※ 通常は自動で設定ファイルが更新されますが、バージョンによってはバグのため自動更新されないようです
setting.h を開き、一旦全ての機能をオフにします。
デジタル入力(USE_INPUT)、CCP1を使用するPWM (USE_CCP1_PWM)のコメントアウトを解除します。
Modlules/ccp_pwm.c を開きます。
CCP1 を使うので、CCP1の初期化関数( void init_ccp1_pwm() )をコメントに従って設定します。
main.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
穴埋め問題になっていますので、プログラム内のコメントを参考に?のところを正しい内容に修正してください。
回路を作成します。
以下の設定に従って回路を作成して下さい。
(*) が前の演習からの変更箇所です。
ピン配置設定・回路接続方法: 1: RA2 2: RA3 3: RA4 4: MCLR/VPP -- PICkit の 1: NMCLR 5: VSS -- GND 6: RB0 (GPIO入力) -- タクトスイッチ 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) -- 可変抵抗の中央ピン
書き込みボタンを押して正常に動作する事を確認して下さい。
指定場所に「ccp_pwm.c」と「main.c」を記入してください。
演習 4-2 (個人PC): PWM を使って音を鳴らしてみましょう。プログラムの仕様は以下の通りです。
仕様:
音階と PWM 周期、パルス幅の関係:
・オクターブ3のド(131 Hz)
131 Hzは周期で言うと 1/131 = 0.0076 秒 = 7.6 ミリ秒なので、PWM 周期を 7.6 ミリ秒にします。
パルス幅は(適当に決めて良いですが)今回は PWM 周期の半分の 3.8 ミリ秒にします。
プロジェクト「IO_4_1」を「IO_4_2」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_4_1 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
(IDEのバージョンによっては) プロジェクトのプロパティを開き、そのまま「Apply」ボタンを押して設定ファイルを更新します。※ 通常は自動で設定ファイルが更新されますが、バージョンによってはバグのため自動更新されないようです
setting.h を開き、一旦全ての機能をオフにします。
デジタル入力(USE_INPUT)、CCP4を使用するPWM (USE_CCP4_PWM)のコメントアウトを解除します。
Modlules/ccp_pwm.c を開きます。
CCP4 を使うので、CCP4の初期化関数( void init_ccp4_pwm() )をコメントに従って設定します。
main.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
穴埋め問題になっていますので、プログラム内のコメントを参考に?のところを正しい内容に修正してください。
回路を作成します。
以下の設定に従って回路を作成して下さい。
(*) が前の演習からの変更箇所です。
ピン配置設定・回路接続方法: 1: RA2 2: RA3 (*)3: CCP4 (PWM) -- 圧電スピーカ ※ 既に配線済み 4: MCLR/VPP -- PICkit の 1: NMCLR 5: VSS -- GND 6: RB0 (GPIO入力) -- タクトスイッチ 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) -- 可変抵抗の中央ピン
書き込みボタンを押して正常に動作する事を確認して下さい。
指定場所に「ccp_pwm.c」と「main.c」を記入してください。