HarmonyでLチカのInterruptバージョンもやってみた。
「PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた。」の続き。
回路は前回と全く同じだ。
Clockの設定も前回と同じ。
変更するところだけ書く。
TimerはInterruptモードで使うので、以下のように変更する。
この部分を新たに追加した。
コードは、以下の2つに変更を加えた。
まず、Harmonyの吐き出したmain.cに以下の変更を加える。
さらに、system_interrupt.cに赤線の部分を追加する。
20000000 / 64 / 78 = 4006Hz
ということなので、ほぼそれらしい実測値となっている。
今回参考にしたサイト
Using Harmony Static Drivers to Control Timers
手動で書き足す必要があるコードについては、以下の2つの部分に書かれている。
追記(2017/09/24)
上の通りだと4kHzで点滅する。
ロジアナなどを使わないと肉眼では動作を確認できない。
下のように変更すると10Hzになる。
20000000 ÷ 256 ÷ 7800 = 10Hz
これなら肉眼でも点滅を確認可能だ。
関連記事
PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた。」
「PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた。(改めて見直し)」
「PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた。- Timerを追加 –」
たく on 2017年9月24日 at 6:45 PM said:
こんにちは。
Harmonyを使ったLチカの1つめの記事のは動いてくれたんですが、2つめのInterrupt modeの記事のはLEDがずっと点灯しっぱなしで動いてくれませんでした。どこが悪いんでしょう?ちなみにLEDはRB15に付けています。
main.cのDRV_TMR0_Start();はTMR2ではないのですね。
sahara on 2017年9月24日 at 11:50 PM said:
たくさん、こんにちは。
記事中にも書いてありますが、約4kHzで点滅しますので人間の目には点灯したままにしか見えません。
TimerのPrescaleをTMR_PRESCALE_VALUE_256、Timer Periodを7800にしてみてください(上に追記しておきました。)。
計算上10Hzになるはずですので、これなら肉眼でも点滅して見えます。
もちろん、Clockの方を変更してもいいです。
いろいろお試しください。
たく on 2017年10月3日 at 12:21 AM said:
sahara さん、こんにちは。
お返事が遅くなりすみません。
ちゃんと点滅することを確認できました!
有難うございます。