Skip to content

Commit 65fccdd

Browse files
committed
tests/driver_dac_dds: fix output of sine and saw functions
1 parent ebc869a commit 65fccdd

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

tests/driver_dac_dds/main.c

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -98,24 +98,17 @@ typedef void (*sample_gen_t)(uint8_t *dst, size_t len, uint16_t period);
9898

9999
static void _fill_saw_samples_8(uint8_t *buf, size_t len, uint16_t period)
100100
{
101-
uint8_t x = 0;
102-
unsigned step = 0xFF / period;
103-
104101
for (uint16_t i = 0; i < len; ++i) {
105-
x += step;
106-
buf[i] = x;
102+
buf[i] = (i * 0xFFUL) / period;
107103
}
108104
}
109105

110106
static void _fill_saw_samples_16(uint8_t *buf, size_t len, uint16_t period)
111107
{
112-
uint16_t x = 0;
113-
unsigned step = 0xFFFF / period;
114-
115108
for (uint16_t i = 0; i < len; ++i) {
116-
x += step;
117-
buf[i] = x;
118-
buf[++i] = x >> 8;
109+
uint16_t y = (i * 0xFFFFUL) / period;
110+
buf[i] = y;
111+
buf[++i] = y >> 8;
119112
}
120113
}
121114

@@ -126,8 +119,7 @@ static void _fill_sine_samples_8(uint8_t *buf, size_t len, uint16_t period)
126119

127120
for (uint16_t i = 0; i < period; ++i) {
128121
x += step;
129-
buf[i] = isin(x) >> 5;
130-
buf[i] += INT8_MAX + 1;
122+
buf[i] = (isin(x) + 4096) >> 6;
131123
}
132124

133125
for (uint16_t i = period; i < len; i += period) {
@@ -145,8 +137,7 @@ static void _fill_sine_samples_16(uint8_t *buf, size_t len, uint16_t period)
145137
for (uint16_t i = 0; i < period; ++i) {
146138
x += step;
147139

148-
uint16_t y = isin(x);
149-
y += INT16_MAX + 1;
140+
uint16_t y = (isin(x) + 4096) << 2;
150141
buf[i] = y;
151142
buf[++i] = y >> 8;
152143
}

0 commit comments

Comments
 (0)