Darkside(リンクエラー修正しました)

2018年12月4日(火) 21:28

PWM発振成功

 まてよ、PWMを使用しているのはモーター制御と送信機だけではない。メイン基板だって使用している。砲身上下位置をデジタル受信したあと、それをサーボパルスに変換するためだ。

 そんなもの動作するに決まってるだろ?と確認を後回しにしていたのだが、オシロで確認してみた。約60Hzで、パルス幅1.5ミリ秒。期待通りにPWM波形が出力できている。
 なぜモーター制御PICからは、何も出力されないのか?PIC機種は同じで、どちらもMCCにより設定しているのに。

 だが、このPWMがマヤカシであることに気付いた。というのも、送信機スティックを操作してもDUTYが変化しないのだ。パルス幅は1.5ミリ秒のまま、変わらない。そういうことか!

 PWMが出力できていないのではない。PWMのパルス幅が変更できていないのだ。
 メインPICのこのパルスは、MCC上で行った初期設定がパルス幅1.5ミリ秒である。それに対し、モーター制御PICのパルスは、初期設定がDUTYゼロだ。

 さっそくネットを漁る。話は単純だった。16ビットPWMは10ビットPWMより機能豊富で、その代わりに余分の手順を必要とする。
 大半のPICが搭載している10ビットPWNは、PWM1_DutyCycleSet() だけでPWM幅を変えられる。それに対し16ビットPWMは、PWM1_LoadBufferSet() を実行するまでPWM幅の設定が反映されない。
 いちいち2つの関数を続けて実行しないと、PWM幅が変化しない。

 取り合えずメインPICが出力する砲身上下サーボ駆動用パルスは、送信機のスティックに反応して変化するようになった。

written by higashino [バトルタンク改造Tiger1] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4