実機で動かす前にある程度はシミュレータで確認しておきたいところだが、すぐ使い方忘れてしまうので、自分なりのまとめをしておく。
※ v5.45だとLogicAnalyzerが動かないので、v5.35を使っている。
PWMの波形を出力してLogicAnalyzerで確認してみる
まずは、PICのシステムクロックを設定する。今回は実験で最大速度32MHzを指定する。
プロジェクト設定でシミュレータの動作クロックを設定する。
Trace
を選択して、Data Collection
でInstruction Traceを選択する。これを行わないと、LogicAnalyzerに波形が表示されない。
ちなみに、Uart
でWindowを選択しておくと、printf()の内容がウィンドウに出力される。
これは、UARTでRedirect STDIO to UART
をONにすると、putchar()
が実装されてUARTのTXにデータを転送する実装になる。これをシミュレートする設定である。
次にPWMの波形を出力する設定をMCCで実施する。今回はDuty=25%
にしてみる。あと、Timer2を使ってPWMを表現するので、Timer2で1周期の時間を設定する。
PWMの1周期を25usに設定してみた。(設定できる範囲はシステムクロックに依存する)
つまり、1周期25us(40kHz)のDuty=25%になれば良い。
MCCでGenerateボタンを押して、内容をソースに出力したらビルドを実行してモジュールを作成する。
Window - Simulator - Logic Analyzerの順で選択してアナライザを表示する。
SettingでPWM波形が出力されるP1A
ピンを選択しておく。
デバッグ実行を行う。
正しく起動できると、メインループに入って動作状態になる。動作中はアナライザには波形は表示されない。
一時停止ボタンを押して動作を停止させると、アナライザに波形が表示される。
波形をクリックすると、2本マーカーがおける。オシロスコープのように区間のデルタが表示されるので便利。マーカーを2本までなので、別の箇所を測定したい場合は、コンテキストメニューからRemove Markerを選択すると、古いマーカーから削除される。