9 years, 4 months ago.

PWM出力正しい実装になっている?

こんばんは、PWMのテストしています。

サンプルソース

#include "mbed.h"
 
PwmOut led(LED1);
 
int main() {
    led.period(4.0f);  // 4 second period
    led.write(0.50f);  // 50% duty cycle
    while(1);
}

のようなソース書いてみました・

4秒点灯、4秒消灯の繰り返しを想定しています。

が,

PEACHだとつきっぱなしになるだけ、ST Nucleo F401REだと意図通り動きます。

Question relating to:

Team for GR-PEACH Producer Meeting

Eguchiさん
私も確認しました。
ロジアナで確認したところ、490uSの周期で制御され、period()での変更ができない問題がありそうです。
周期が早いので50%ではLEDの明暗が目視ではわかりません。
led.write(0.999f)と変えてみてください。
暗くなったのがわかると思います。
Lチカ議論で指摘しましたが、負論理ですので、これでLED点灯時間が実測でLED_ON=6uS, OFF=486uS ->1.2%となり、目視でも連続点灯していないことがわかります。
正式回答を待ちましょう。

posted by Kenji Arai 01 Dec 2014

3 Answers

9 years, 4 months ago.

本件、調査中です。
回答は少々お待ちください。

9 years, 4 months ago.

PWM RGBパラメータ使用して、LED点灯TESTしています。うまくいきません。PINの指定方法を教えてください。

PIN定義は下記で行うことができます。

PWM LED定義

#include "mbed.h"

PwmOut led_R(LED_RED);
PwmOut led_G(LED_GREEN);
PwmOut led_B(LED_BLUE);
posted by Ryo Hagimoto 09 Dec 2014
9 years, 4 months ago.

遅くなりまして申し訳ありません。
ご指摘のあった、PWMのperiodを変更できない問題を修正致しました。
ただし、RZ/A1Hの仕様から、以下のソフト仕様となります。

  • 設定可能なperiodの範囲は1us~491usです。(初期値 491us)
     491usを超える値の場合、491usに丸められます。
  • 以下の端子を同時にPWMに設定することはできません。どちらか一方のみPWMに設定することができます。
     P4_6とP4_7
     P8_8とP8_9
     P8_10とP8_11
     P8_12とP8_13
     P8_14とP8_15
  • PWMには2つのchannelがあります。periodを変更する際は該当するchannel全てのperiodが変更されます。
     channel 1:P8_8、P8_9、P8_10、P8_11、P8_12、P8_13、P8_14、P8_15
     channel 2:P10_0、P3_2、P4_4、P4_6、P4_7
    ご自身のプロジェクトの mbed-src を右クリックして update を選択すると、変更が反映されます。 /media/uploads/RyoheiHagimoto/mbed-src_update.png