Renesas Rulz - Japan
Renesas Rulz - Japan
  • User
    Join or sign in
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-KURUMI フォーラム analogWriteのソフトウェアPWMが動かないようです→9月中(2017年)に修正します
  • Forums
  • Blog
  • 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関連

 女子美コラボ

 その他

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

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 14 replies
  • Subscribers 284 subscribers
  • Views 4566 views
  • Users 0 members are here
  • GR-COTTON
  • GR-KURUMI
  • GR-ADZUKI
  • analogwrite
Options
  • Share
  • More
  • Cancel
Related Tags
  • Arduino Pro-mini
  • E1
  • GPS
  • GR-ADZUKI
  • GR-COTTON
  • GR-KURUMI
  • GR-KURUMI 書き込み
  • gr-sakura
  • Guthub
  • i2c
  • JPEG
  • Kirin
  • PMT
  • RL78 レジスタバンク
  • rx
  • S/Wシリアル
  • sd card
  • Serial2
  • WDT
  • webコンパイラ
  • xbee
  • コンパイル
  • シリコンマイク
  • 誤差補正
  • 音源
Related

analogWriteのソフトウェアPWMが動かないようです→9月中(2017年)に修正します

Okamiya Yuuki
Okamiya Yuuki over 3 years ago

がじぇるね岡宮です。

RL78/G13系のGRボードで、ライブラリバージョンV2.xxではanalogWriteのソフトPWMが動かないようです。主には3,5,6,9,10以外のピンを指定したときに発生します。(GR-ADZUKIでは10ピンもsoftwarePWM)

V2.xxにバージョンアップした際に、コンパイラバージョンを14.03→4.9.2にしたことで、下記getPinTableのアセンブルが正しく動作しなくなってしまったようです。#if 1にしてC言語の方を有効にすると、analogWriteが機能します。

Fujitaさん、ここのアセンブルの修正案をいただくことできないでしょうか?

 

(pintable.h)

#if 0 // GCC の吐くコードの効率が悪いのでインラインアセンブラを使用
#define getPinTable(u8Pin) (&PinTable[u8Pin])
#else
#define getPinTable(u8Pin) \
({ \
PinTableType* p; \
__asm __volatile( \
" mov a, %1 \n" \
" mov x, %2 \n" \
" mulu x \n" \
" addw ax, %3 \n" \
" movw %0, ax \n" \
: "=r"(p) \
: "r"((uint8_t)(u8Pin)), "i"((unsigned)&PinTable[1] - (unsigned)&PinTable[0]), "i"(PinTable) \
: "a", "x" \
); \
p; \
})
#endif

  • Reply
  • Cancel
  • Cancel
Parents
  • fujita nozomu
    fujita nozomu over 3 years ago

    とりあえず以下の修正で analogWrite() は動作するようなるようです。

    --- gr_common/cores/wiring_analog.c
    +++ gr_common/cores/wiring_analog.c
    @@ -395,2 +395,3 @@ void analogWrite(uint8_t pin, int val) {
     					} else {
    +						const PinTableType* p = getPinTable(pin);
     						g_SwPwm[i].valid = false;
    @@ -398,4 +399,4 @@ void analogWrite(uint8_t pin, int val) {
     						g_SwPwm[i].value = g_SwPwm[i].newValue = val;
    -						g_SwPwm[i].port = getPinTable(pin)->portRegisterAddr;
    -						g_SwPwm[i].mask = getPinTable(pin)->mask;
    +						g_SwPwm[i].port = p->portRegisterAddr;
    +						g_SwPwm[i].mask = p->mask;
     						g_SwPwm[i].valid = true;
    

    確認用スケッチ

    /*GR-KURUMI Sketch Template Version: V2.01*/
    #include <Arduino.h>
    
    // Pin 22,23,24 are assigned to RGB LEDs.
    #define LED_RED    22 // LOW active
    #define LED_GREEN  23 // LOW active
    #define LED_BLUE   24 // LOW active
    
    void setup()
    {
    }
    
    void loop()
    {
        analogWrite(LED_RED,   127 + int(127 * sqrtf(0.5f * cosf(M_PI * millis() / 2e3f) + 0.5f)));
        analogWrite(LED_GREEN, 127 + int(127 * sqrtf(0.5f * cosf(M_PI * millis() / 3e3f) + 0.5f)));
        analogWrite(LED_BLUE,  127 + int(127 * sqrtf(0.5f * cosf(M_PI * millis() / 5e3f) + 0.5f)));
    }
    

    問題の原因としてコンパイラの不具合臭いのですが、まだ確認に到っておりません。現在普段使いの PC を修理に出している関係で携帯用のゴミスペック PC しか使える状況になく、作業効率が著しく低下しています。問題原因の確認にまで到りましたら再度報告します。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 3 years ago in reply to fujita nozomu
    Fujitaさん、連休中にも関わらずご対応くださいまして、誠にありがとうございます。正しく動作することをこちらでも確認いたしました。
    来週前半に他の案件含め、一旦V-upしようと思います。よろしくお願いいたします。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Reply
  • Okamiya Yuuki
    Okamiya Yuuki over 3 years ago in reply to fujita nozomu
    Fujitaさん、連休中にも関わらずご対応くださいまして、誠にありがとうございます。正しく動作することをこちらでも確認いたしました。
    来週前半に他の案件含め、一旦V-upしようと思います。よろしくお願いいたします。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Children
No Data
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2020 Renesas Electronics Corporation. All rights reserved.