こんにちは。NoMaYです。RXスマートコンフィグレータ(V2.0.0)でブロック転送を行うDMAソースを生成させようとして気付いたのですが、以下のGUIの画面コピーの通り設定した「転送回数」と「ブロック/リピートサイズ」の値がソースでは逆になっていると思います。プロジェクトのファイル一式issue_20190318_1.zipRXスマートコンフィグレータのGUIの画面生成されたソースConfig_DMAC0.c (抜粋)
void R_Config_DMAC0_Create(void){ /* Cancel DMAC/DTC module stop state in LPC */ MSTP(DMAC) = 0U; /* Disable DMAC interrupts */ IEN(DMAC,DMAC0I) = 0U; /* Disable DMAC0 transfer */ DMAC0.DMCNT.BIT.DTE = 0U;略 /* Set DMAC0 block size */ DMAC0.DMCRA = _00010001_DMAC0_DMCRA_COUNT; /* Set DMAC0 block transfer count */ DMAC0.DMCRB = _0003_DMAC0_DMCRB_BLK_RPT_COUNT;略 /* Enable DMAC activation */ DMAC.DMAST.BIT.DMST = 1U; R_Config_DMAC0_Create_UserInit();}
Config_DMAC0.h (抜粋)
#define _00000000_DMAC0_SRC_ADDR (0x00000000UL) /* Source address */#define _00000000_DMAC0_DST_ADDR (0x00000000UL) /* Destination address */#define _00010001_DMAC0_DMCRA_COUNT (0x00010001UL) /* Repeat or Block size */#define _0003_DMAC0_DMCRB_BLK_RPT_COUNT (0x0003U) /* Block transfer count */#define _0000_DMAC0_SRC_EXT_RPT_AREA (0x0000U) /* Source address extended repeat area */#define _0000_DMAC0_DST_EXT_RPT_AREA (0x0000U) /* Destination address extended repeat area */#define _00000000_DMAC0_OFFSET_VALUE (0x00000000UL) /* Offset register value */
こんにちは。NoMaYです。今度は、RXスマートコンフィグレータ(V2.0.0)のDMA設定のGUI上だけのことですが、以下のGUIの画面コピーのように複数のDMAチャンネルで起動要因にソフトウェア起動を選択すると赤のバッテンが表示されてしまいます。ですが、以下のハードウェアマニュアルの画面コピーの通り、ソフトウェア起動レジスタは各チャンネルに存在して排他的でも何でもありませんので、この挙動はバグだと思います。プロジェクトのファイル一式issue_20190318_2.zipRXスマートコンフィグレータのGUIの画面2つのDMAチャンネルで起動要因にソフトウェア起動を選択すると赤のバッテンが付く1つのDMAチャンネルだけで起動要因にソフトウェア起動を選択しているなら付かないRX65Nグループ、RX651グループ ユーザーズマニュアル ハードウェア編からの抜粋www.renesas.com/jp/ja/doc/products/mpumcu/doc/rx_family/r01uh0590jj0210-rx651.pdfソフトウェア起動レジスタは各チャンネルに存在して排他的でもない[補足]赤のバッテンが付いてもコードを生成することは出来ます(警告メッセージは出ます)
シェルティさん、こんにちは。NoMaYです。ご連絡有難う御座います。実は、ここ何日かの間に、GNURX向けに生成されたコードで遭遇したことが幾つかありますので、それらに関して、近日中に投稿しようと思います。その時には、また、ご検討をお願いします。