Renesas Community
Renesas Community
  • User
    Join or sign in
  • Site
  • Search Community
  • User
  • Renesas Engineering Community
  • FAQ
  • HELP
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-ADZUKI WAVPを使うとPWMの周期が変わる
  • Forums
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • State Verified Answer
  • Replies 39 replies
  • Subscribers 429 subscribers
  • Views 49896 views
  • Users 0 members are here
  • GR-ADZUKI
Options
  • Share
  • More
  • Cancel
Related Tags
  • auzuki
  • azuki
  • BASIC
  • GR-ADZUKI
  • GR-ADZUKI Node.js Johnny-Five
  • GR-ADZUKI S4A モーター
  • GR-ADZUKI USB
  • WDT
  • デジタルコンパス
  • リセット
  • 省電力
Related

WAVPを使うとPWMの周期が変わる

maenoh!
maenoh! over 5 years ago

WAVPを使うとモーター用PWMの周期がかわってしまうようです。

パルス幅は変わりませんが、周期が2ms程度から700us台になってしまいました。

void loop() {
    analogWrite(6,50);
 wavp.play("organ.wav");
 wavp.play("okoto.wav");
 wavp.play("jingle2.wav");
}

  • Reply
  • Cancel
  • Cancel
Parents
  • fujita nozomu
    +1 fujita nozomu over 5 years ago

    WAVPを使うとモーター用PWMの周期がかわってしまうようです。

    パルス幅は変わりませんが、周期が2ms程度から700us台になってしまいました。

    GR-ADZUKI はどうだかわからないのですが、GR-KURUMI の標準のライブラリでのタイマ・アレイ・ユニットの各タイマの割り振りを今確認したところ

    チャネル 内容
    0 ハードウェア PWM のマスタ・チャネル
    1 3番ピン ハードウェア PWM 出力, MsTimer2
    2 5番ピン ハードウェア PWM 出力
    3 10番ピン ハードウェア PWM 出力
    4 9番ピン ハードウェア PWM 出力, Servo ライブラリ使用時のタイマ
    5 マイクロ秒タイマ
    6 ソフトウェア PWM 用タイマ
    7 6番ピン ハードウェア PWM 出力

    こんな感じで使用しており、恐らくは ADZUKI でも大して変わらないのではないかと思います。

    Wavp は TCR00 をマスタ・チャネルとして使用し、チャネル1 と チャネル2 を出力にして残りのタイマのハードウェア PWM の使用は考慮されていない感じです。

    http://gadget.renesas.com/ja/product/kemuri.html に GR-KURUMI のピンマップが掲載されておりハードウェア PWM とソフトウェア PWM に使用できるピンがわかりますが、実際この図は間違っており、ハードウェア PWM に割り当てられたピン以外は全てソフトウェア PWM に使用できるライブラリの作りとなっており、恐らくは ADZUKI でも変わらないと思うので、DC モーター制御程度ならソフトウェア PWM を試してみるというのも手だと思います。ソフトウェア PWM はハードウェア PWM の約490Hz の1/4、約122Hz で動作していたと思いますが DC モーター程度なら支障はないのでは。

    GR-KURUMI のライブラリでは gr_common/RLduino78/cores/pintable.h の中 PinTable[] というテーブルでハードウェア PWM/ソフトウェア PWM の定義を行っており、ハードウェア PWM に設定されているピンをこゝを変更することでソフトウェア PWM に変更することも可能だった筈です。恐らくは ADZUKI でも同様の手は使えると思います。

    • Cancel
    • Up 0 Down
    • Reply
    • Reject Answer
    • Cancel
  • maenoh!
    0 maenoh! over 5 years ago in reply to fujita nozomu
    fujitaさん、ありがとうございます。モーター制御は(6,11)と(9,10)なのですが、”ソフトウェア PWM に変更することも可能"であれば、解決できるかもしれません。”TCR04 9番ピン ハードウェア PWM 出力、Servo ライブラリ使用時のタイマ”というのがちょっと心配ですが。そもそもWAVPの利用後に初期状態にタイマー設定を戻すライブラリがあればいいのかもしれません。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 5 years ago in reply to Okamiya Yuuki

    Maenoさん、すみません、きちんと問題を把握できているか分かりませんが、

    analogWriteの前にwavを再生したときに波形が出ない不具合を修正し、toneとwavp用のピンをシェアしていても大丈夫なようにしました。

    noToneはArduino仕様ではポート入出力は何もせず(出力のまま)、Timerを止めているだけでしたので、RL78もそのようにしようと思います。変更したTone.cppも添付します。

    幾度もデバッグにお付き合いいただいてすみません。

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • maenoh!
    0 maenoh! over 5 years ago in reply to Okamiya Yuuki

    ありがとうございます。もう少しでゴールですね。

    以下の問題がありました。

    (1)TONE_PINとWAVPをピン5に重ねた場合、WAVP再生後にTONEが出ません(HIGH固定後HiZになる)

    (2)TONE_PINをピン3、WAVPをピン5にしてその間に圧電スピーカーを接続した場合、

       WAVP再生後にピン5がHiZになり、TONEの音が出ません(ピン3は出てます)。

    →(2)に関してはWAVPピンもOUTPUT固定にして頂いた方がよいです。

     

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 5 years ago in reply to maenoh!
    Maenoさん、ありがとうございます。(2)についてちょっと教えてください。ピン3とピン5の間とはA7とGNDのことでしょうか?
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • maenoh!
    0 maenoh! over 5 years ago in reply to Okamiya Yuuki
    5番ピンだけでWAVPとTONEを鳴らすことができなかったので、圧電スピーカーの端子の一方を5、他方を3につないでいます。WAVPでピン5から出力する時はピン3をLOW固定にします。TONEでピン3を使う時はピン5をLOW固定にしたい訳です。ところがWAVP再生後ピン5がHiZになってしまうとそれ以降TONEが鳴りません。まあ、自分でLOW固定すればいいのですが。ただ、WAVPの出力ピンには普通は簡単なアンプがつながっていると思いますので、ノイズ等を避ける意味でも再生後はLOW固定の方が良いかなと思います。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 5 years ago in reply to maenoh!

    Maenoさん、本件ご対応遅くなっておりすみません。LYCHEEとかいろいろと少し落ち着いたので開始しました。

    ただ、考えていたよりちょっと難航中です。WAVP再生後、SAUが何かしらの設定で1を出していると思うのですが、なかなか見つけきれてないです。もう少しお時間いただきます。

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • エイジ
    0 エイジ over 5 years ago in reply to Okamiya Yuuki
    岡宮さん,RL78のSAUは未使用時にハイが正しい状態ですが。
    SAUがハイだから,ポートの出力が可能になります。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 5 years ago in reply to エイジ
    あ、失礼しましたANDでしたね。
    実際のところ以下をコメントアウトしたりしなかったりするとP15のTO2が出たり出なかったりで、いまいち何が影響しているのか分からないのですよね。
    SO1.BIT.bit1 = 0;
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • エイジ
    0 エイジ over 5 years ago in reply to Okamiya Yuuki
    SO1.BIT.bit1が具体的にRL78/G13の何を指しているか分かりませんが,RL78の兼用ポートでSAU系の出力を使用する場合には,ポートの出力ラッチは1に,タイマの出力等それ以外の出力を使用するには出力ラッチは0に設定する必要があります。
    P15からTO02を出力するには,PIOR0ビットが1,P1.5が0,PM1.5が0,ついでに兼用機能のPCLBUZ1が0である必要があります。
    端子のブロック図ではSAU以外とひとまとめにされていますが,この場合にはTO02とPCLBUZ1がORになっているので,注意が必要です。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • エイジ
    0 エイジ over 5 years ago in reply to エイジ

    もしかして,P1.5が入力(Hi-Z)のときにP1.1をビット操作したのではありませんか?
    そうだとすると,ビット操作によってP1.5の出力ラッチが書き換わっている可能性が考えられます。P1.5をTO02に設定して,出力に設定する直前にP1.5をビット操作でクリアしてみてください。

    【修正】

    そうか,SO1はSAU1の出力のレジスタでしたね,P1.5とは関係ない信号だったので勘違いしていました。

    SO1レジスタは16ビットレジスタなので,リード・モディファイ・ライトでbit1をクリアしていると思いますが,そのときにbit8(CKO10:SCK20に相当)が変に書き換わっているのかもしれません。CKO10が0になれば,P1.5の値によらず,TO02は出せるかもしれません(P1.5を0にするのが正規の方法ですが)。

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 5 years ago in reply to エイジ

    エイジさん、本件アドバイスをいただきましてありがとうございました。

    まず、私にひとつ勘違いがありました。問題の発端としては①WAV再生(PWM)→②TONEでビープで②が動作しないというものなのですが、②はPWMでなく、タイマーによるポートパタパタで実現されていました。とはいえ、原因としては兼用機能の出力ラッチによる影響でした。

    問題は2つあり、一つ目はエイジさんにアドバイスいただいたSO1レジスタで、16ビット操作専用にもかかわらずプログラムがビット操作になっており、該当ビットだけを0にするはずが、すべてのチャネル用のビットが0になってしまっており、P1.5の出力にも影響を与えていました。

    二つ目は①WAV再生後にタイマー機能の出力TO0のビット2がクリアされておりませんでした。このため出力ラッチがORで入っているため、P1.5出力が固定され、正常に動作しませんでした。

     

    >Maenoさんへ、

    一応修正したwav_libを添付いたしますので、時間が経ってしまい恐縮ですが、試してみていただけるとありがたいです。

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • maenoh!
    0 maenoh! over 5 years ago in reply to Okamiya Yuuki
    Okamiyaさん、TONE_PINとWAVPをピン5に重ねられるようになりましたが、まだ少し問題が残っているようです。
    play(jingle); delay(500);
    wavp.play("okoto.wav");
    の場合、okotoが再生されますが、
    play(tonakai); delay(500);
    wavp.play("okoto.wav");
    の場合は、okotoが再生されませんでした。
    前者はjingleの演奏の後で、Low状態になっており、okotoの部分で正常な再生が行われています(HiZ状態は無いようです)。
    後者はtonakaiの演奏の後で、HIgh状態からHiZ状態になっているようで、徐々に電圧が下がり、okotoの再生部分でHIgh固定になっています。
    Tone関数の最後の出力値がHIghかLowかの差異がその後の動作に影響しているのではないでしょうか?
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 5 years ago in reply to maenoh!
    Maenoさん、ご確認ありがとうございます。
    問題を再現したいと思いますが、tonakaiはどの音楽ですか?以下で提供されているものですか?
    音楽:魔王魂 maoudamashii.jokersounds.com/
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • maenoh!
    0 maenoh! over 5 years ago in reply to Okamiya Yuuki
    wav再生ではなくて、私がこのスレッドで2017/4/7 15:57に投稿したときに添付した adzuki_remorobo_5c.zipに含まれるTone関数を使ったplayルーチンです。よろしくお願い致します。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 5 years ago in reply to maenoh!

    maenoさん、ありがとうございます。添付ファイルを見落としていました、すみません。原因はmaenoさんがおっしゃる通りでポートの構成上、出力ラッチをLOWにしておかないと、PWMが正しく出力されませんでした。

    RL78では、ポートと兼用機能を切り替えるプログラムはなかなか難しいと感じますね。。

    念のため修正ファイルしたファイルを添付いたします。

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • maenoh!
    0 maenoh! over 5 years ago in reply to Okamiya Yuuki
    Okamiyaさん、エイジさん、ありがとうございました。
    ピン5から正常にToneとWAVP再生を行うことができました。
    素晴らしいです。感謝!
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
Reply
  • maenoh!
    0 maenoh! over 5 years ago in reply to Okamiya Yuuki
    Okamiyaさん、エイジさん、ありがとうございました。
    ピン5から正常にToneとWAVP再生を行うことができました。
    素晴らしいです。感謝!
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
Children
No Data
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2022 Renesas Electronics Corporation. All rights reserved.