Github
https://github.com/ryood/TDA1543/tree/master/PSoC/I2S_Test/PrototypingKit_Realtime_Table_Gen_0.cydsn
ソースコード
#include <project.h>
#include <math.h>
#define TABLE_LENGTH 512
volatile uint8 waveTable_0[TABLE_LENGTH];
void genSineTable(volatile uint8 *table, int length)
{
int i;
int16 v;
int8* p8;
for (i = 0; i < length / 2; i++) {
v = (int16)(sin(2.0f * M_PI * i * 2 / length) * 32767);
p8 = (int8 *)&v;
table[i*2] = *(p8+1);
table[i*2+1] = *p8;
}
}
int main()
{
CyGlobalIntEnable; /* Enable global interrupts. */
for(;;)
{
Pin_Check_0_Write(1u);
genSineTable(waveTable_0, TABLE_LENGTH);
Pin_Check_0_Write(0u);
CyDelay(1);
}
}
単純にサイン波を生成してPinの出力をH/Lして計測した。浮動小数点演算をするのでBuild SettingのLinkerで「-lm」を指定しないとリンクに失敗する。
PSoC 5LP Prototyping Kit
MASTER_CLK:72MHz
Release Mode
TABLE_LENGTH | 実行時間(ms) |
---|---|
512 | 15.28 |
1024 | 29.64 |
2048 | 58.4 |
4096 | 116 |
8192 | 230 |
0 件のコメント:
コメントを投稿