8 years, 5 months ago.

LPC824のPwmOut関数のパルス幅指定時の挙動について

mbed初心者ですが、PwmOut関数の挙動についてよろしくお願いします。

現在4つのPWMを使うテストをしています。プログラムは以下の通りです。

4chとも周波数は問題無く設定どおりで動作しています。 スイッチマトリクスもちゃんと設定どおりのポートに出来ています。

パルス幅の挙動がおかしいのですが、 pwm14とも、パルス幅の引数が0で完全にLowにならずに1usのパルスが出力されっぱなしで、 pwm1のみ引数が1000で完全にHighを出力し、 pwm24は引数が1000で完全にLowを出力します。

PWM14とも、パルス幅の引数が1999では正常にパルス幅が可変します。 pwm24は、試しに引数を1001にしたら完全にHighを出力しました。

以上、解決方法のご教授をよろしくお願い致します。

  1. include "mbed.h"

PwmOut pwm1(P0_27); PwmOut pwm2(P0_26); PwmOut pwm3(P0_25); PwmOut pwm4(P0_24); 4ko made

int main() { pwm1.period_us(1000); pwm2.period_us(1000); pwm3.period_us(1000); pwm4.period_us(1000);

pwm1.pulsewidth_us(0); pwm2.pulsewidth_us(500); pwm3.pulsewidth_us(1000); pwm4.pulsewidth_us(1000);

while(1) { myled1 = 1; myled2 = 1; myled3 = 1; wait(0.5); myled1 = 0; myled2 = 0; myled3 = 0; wait(0.5); } }

Question relating to:

The Switch Science mbed LPC824 operates at CPU frequencies of 30 MHz. The LPC824 includes up to 32 kB of flash memory, up to 8 kB of data memory, four …

1 Answer

8 years, 1 month ago.

こんにちは。ご連絡頂いた現象は、LPC824のSDK側の不具合でした。 修正したコードの pull request を出しましたので、問題なければ次回のライブラリアップデート時に反映されると思います。

https://github.com/mbedmicro/mbed/pull/1585/