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関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
がじぇるね岡宮です。
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