summaryrefslogtreecommitdiff
path: root/n/asserv/src/test_dsp.c
diff options
context:
space:
mode:
authorschodet2004-11-07 22:12:28 +0000
committerschodet2004-11-07 22:12:28 +0000
commitb320f6cd36a748cd4a83ba44fb125c0e20c84806 (patch)
tree5ad1368af4e31f5773212e8fbba1025939f13e99 /n/asserv/src/test_dsp.c
parent5b4e5290c4c840f79722691c584cafc5c4223db0 (diff)
Correction des tests, ajout d'un test en C pour mul_f824, ajout de cos et sin.
Diffstat (limited to 'n/asserv/src/test_dsp.c')
-rw-r--r--n/asserv/src/test_dsp.c61
1 files changed, 58 insertions, 3 deletions
diff --git a/n/asserv/src/test_dsp.c b/n/asserv/src/test_dsp.c
index dace398..d8781f2 100644
--- a/n/asserv/src/test_dsp.c
+++ b/n/asserv/src/test_dsp.c
@@ -41,9 +41,24 @@ proto_callback (uint8_t c, uint8_t argc, proto_arg_t argv[])
int16_t i, j, k;
uint16_t w = 0xa66a;
int32_t al, bl, rl;
- uint32_t wl[] = { 0xa66a6aa6, 0xffffffff, 0xaff605be };
+ uint32_t wl[] = { 0xa66a6aa6, 0xffffffff };
+ static int32_t sa, sb;
switch (c | argc << 8)
{
+ case 'a' | 4 << 8:
+ sa = argv[0];
+ sa = sa << 8 | argv[1];
+ sa = sa << 8 | argv[2];
+ sa = sa << 8 | argv[3];
+ proto_send ('a', argc, argv);
+ break;
+ case 'b' | 4 << 8:
+ sb = argv[0];
+ sb = sb << 8 | argv[1];
+ sb = sb << 8 | argv[2];
+ sb = sb << 8 | argv[3];
+ proto_send ('b', argc, argv);
+ break;
case 'm' | 0 << 8:
for (i = 16; i > 0; i--)
{
@@ -63,8 +78,24 @@ proto_callback (uint8_t c, uint8_t argc, proto_arg_t argv[])
}
}
break;
+ case 'M' | 1 << 8:
+ rl = dsp_mul_f824 (sa, sb);
+ proto_send4 ('r',
+ (rl >> 24) & 0xff, (rl >> 16) & 0xff,
+ (rl >> 8) & 0xff, rl & 0xff);
+ break;
+ case 'c' | 1 << 8:
+ rl = dsp_cos (sa);
+ proto_send4 ('r',
+ (rl >> 24) & 0xff, (rl >> 16) & 0xff,
+ (rl >> 8) & 0xff, rl & 0xff);
+ rl = dsp_sin (sa);
+ proto_send4 ('r',
+ (rl >> 24) & 0xff, (rl >> 16) & 0xff,
+ (rl >> 8) & 0xff, rl & 0xff);
+ break;
case 'M' | 0 << 8:
- for (k = 0; k < 3; k++)
+ for (k = 0; k < 2; k++)
{
for (i = 32; i > 0; i--)
{
@@ -83,13 +114,37 @@ proto_callback (uint8_t c, uint8_t argc, proto_arg_t argv[])
(rl >> 24) & 0xff, (rl >> 16) & 0xff,
(rl >> 8) & 0xff, rl & 0xff);
rl = dsp_mul_f824 (-al, bl);
- proto_send4 ('R',
+ proto_send4 ('r',
+ (rl >> 24) & 0xff, (rl >> 16) & 0xff,
+ (rl >> 8) & 0xff, rl & 0xff);
+ rl = dsp_mul_f824 (al, -bl);
+ proto_send4 ('r',
+ (rl >> 24) & 0xff, (rl >> 16) & 0xff,
+ (rl >> 8) & 0xff, rl & 0xff);
+ rl = dsp_mul_f824 (-al, -bl);
+ proto_send4 ('r',
(rl >> 24) & 0xff, (rl >> 16) & 0xff,
(rl >> 8) & 0xff, rl & 0xff);
}
}
}
break;
+ case 'c' | 0 << 8:
+ for (al = 0; al < (1L << 24) + (1L << 21); al += 32 << 8)
+ {
+ proto_send4 ('c',
+ (al >> 24) & 0xff, (al >> 16) & 0xff,
+ (al >> 8) & 0xff, al & 0xff);
+ rl = dsp_cos (al);
+ proto_send4 ('r',
+ (rl >> 24) & 0xff, (rl >> 16) & 0xff,
+ (rl >> 8) & 0xff, rl & 0xff);
+ rl = dsp_sin (al);
+ proto_send4 ('r',
+ (rl >> 24) & 0xff, (rl >> 16) & 0xff,
+ (rl >> 8) & 0xff, rl & 0xff);
+ }
+ break;
case 'z' | 0 << 8:
reset ();
default: