みなさま こんにちは。 原槙と言うものです。
自分の都合の良いときだけメールを出して大変恐縮いたします。
440Hzの少し綺麗な音(sin波)をD/A出力したくて、まずは割り込みで何とか
クリア、よせばいいのに、勢いづいて、DMAによる方法で作り変えてみました。
ところが、いろいろと思考錯誤してもFlash ROM 書き込みの回数ばかりが増え
る一方で、全く動作する気配がありません。 え!、どうして?
ここは「困ったときの神頼み」とメールした次第です。
#include <3048f.h>
unsigned char sin_data[]=
{128,192,238,255,238,192,128,65,18,0,18,65};
#define N 12
main()
{
char dummy;
/* DA0 */
DA.CR.BIT.DAOE0=1;
/* ITU0 */
ITU0.TCR.BYTE=0x20;
ITU0.TSR.BIT.IMFA=0;
ITU0.TIER.BIT.IMIEA=1;
ITU0.TCNT=0;
ITU0.GRA=3030; /* 16MHz/3030=440*12Hz */
/* DMAC0A */
DMAC0A.MAR=sin_data;
DMAC0A.IOAR=(unsigned char)&DA.DR0;
DMAC0A.ETCR=N*256+N;
dummy=DMAC0A.DTCR.BYTE;
DMAC0A.DTCR.BYTE=0x10; /* repeat mode */
DMAC0A.DTCR.BIT.DTE=1;
/* Start */
ITU.TSTR.BIT.STR0=1; /* ITU0 start */
for(;;);
}
環境は全て秋月さんです。