Sine wave Generation

Go To Last Post
4 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello all,

Does anyone know of a good app note or how to do it in C. I'm looking to generate a sine wave from an AVR using a R2 network.

Thanks for any help,

Patrick

admin's test signature
 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

What about using a timer interrupt and a lookup-table? Manually calculate the values that has to be put on the port for the correct input to your R2 network for x samples over one (or one-half) wave, and put them in a table. Setup a timer interrupt with the proper intervals. On each interrupt, lookup a new value from the table and place it on the port.

The table probably will require some space, so this may or may not be a solution depending on the device and 'sample' rate.

admin's test signature
 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I did something similar once. I used, as SIS suggests, a table. The following table takes the degree as index to give a value between 0 (-1) and 255 (+1). Depending on how much time you have, you can reduce it to 180 or 90 samples (if you manipulate indexes and signs (offsets)).

Dr.M

flash char sinus[360] = {
127, /* 0 */
129, /* 1 */
131, /* 2 */
134, /* 3 */
136, /* 4 */
138, /* 5 */
140, /* 6 */
143, /* 7 */
145, /* 8 */
147, /* 9 */
149, /* 10 */
151, /* 11 */
154, /* 12 */
156, /* 13 */
158, /* 14 */
160, /* 15 */
162, /* 16 */
164, /* 17 */
166, /* 18 */
169, /* 19 */
171, /* 20 */
173, /* 21 */
175, /* 22 */
177, /* 23 */
179, /* 24 */
181, /* 25 */
183, /* 26 */
185, /* 27 */
187, /* 28 */
189, /* 29 */
191, /* 30 */
193, /* 31 */
195, /* 32 */
196, /* 33 */
198, /* 34 */
200, /* 35 */
202, /* 36 */
204, /* 37 */
205, /* 38 */
207, /* 39 */
209, /* 40 */
211, /* 41 */
212, /* 42 */
214, /* 43 */
216, /* 44 */
217, /* 45 */
219, /* 46 */
220, /* 47 */
222, /* 48 */
223, /* 49 */
225, /* 50 */
226, /* 51 */
227, /* 52 */
229, /* 53 */
230, /* 54 */
231, /* 55 */
233, /* 56 */
234, /* 57 */
235, /* 58 */
236, /* 59 */
237, /* 60 */
239, /* 61 */
240, /* 62 */
241, /* 63 */
242, /* 64 */
243, /* 65 */
243, /* 66 */
244, /* 67 */
245, /* 68 */
246, /* 69 */
247, /* 70 */
248, /* 71 */
248, /* 72 */
249, /* 73 */
250, /* 74 */
250, /* 75 */
251, /* 76 */
251, /* 77 */
252, /* 78 */
252, /* 79 */
253, /* 80 */
253, /* 81 */
253, /* 82 */
254, /* 83 */
254, /* 84 */
254, /* 85 */
254, /* 86 */
254, /* 87 */
254, /* 88 */
254, /* 89 */
255, /* 90 */
254, /* 91 */
254, /* 92 */
254, /* 93 */
254, /* 94 */
254, /* 95 */
254, /* 96 */
254, /* 97 */
253, /* 98 */
253, /* 99 */
253, /* 100 */
252, /* 101 */
252, /* 102 */
251, /* 103 */
251, /* 104 */
250, /* 105 */
250, /* 106 */
249, /* 107 */
248, /* 108 */
248, /* 109 */
247, /* 110 */
246, /* 111 */
245, /* 112 */
244, /* 113 */
243, /* 114 */
243, /* 115 */
242, /* 116 */
241, /* 117 */
240, /* 118 */
239, /* 119 */
237, /* 120 */
236, /* 121 */
235, /* 122 */
234, /* 123 */
233, /* 124 */
231, /* 125 */
230, /* 126 */
229, /* 127 */
227, /* 128 */
226, /* 129 */
225, /* 130 */
223, /* 131 */
222, /* 132 */
220, /* 133 */
219, /* 134 */
217, /* 135 */
216, /* 136 */
214, /* 137 */
212, /* 138 */
211, /* 139 */
209, /* 140 */
207, /* 141 */
205, /* 142 */
204, /* 143 */
202, /* 144 */
200, /* 145 */
198, /* 146 */
196, /* 147 */
195, /* 148 */
193, /* 149 */
191, /* 150 */
189, /* 151 */
187, /* 152 */
185, /* 153 */
183, /* 154 */
181, /* 155 */
179, /* 156 */
177, /* 157 */
175, /* 158 */
173, /* 159 */
171, /* 160 */
169, /* 161 */
166, /* 162 */
164, /* 163 */
162, /* 164 */
160, /* 165 */
158, /* 166 */
156, /* 167 */
154, /* 168 */
151, /* 169 */
149, /* 170 */
147, /* 171 */
145, /* 172 */
143, /* 173 */
140, /* 174 */
138, /* 175 */
136, /* 176 */
134, /* 177 */
131, /* 178 */
129, /* 179 */
127, /* 180 */
125, /* 181 */
123, /* 182 */
120, /* 183 */
118, /* 184 */
116, /* 185 */
114, /* 186 */
111, /* 187 */
109, /* 188 */
107, /* 189 */
105, /* 190 */
103, /* 191 */
100, /* 192 */
98, /* 193 */
96, /* 194 */
94, /* 195 */
92, /* 196 */
90, /* 197 */
88, /* 198 */
85, /* 199 */
83, /* 200 */
81, /* 201 */
79, /* 202 */
77, /* 203 */
75, /* 204 */
73, /* 205 */
71, /* 206 */
69, /* 207 */
67, /* 208 */
65, /* 209 */
63, /* 210 */
61, /* 211 */
59, /* 212 */
58, /* 213 */
56, /* 214 */
54, /* 215 */
52, /* 216 */
50, /* 217 */
49, /* 218 */
47, /* 219 */
45, /* 220 */
43, /* 221 */
42, /* 222 */
40, /* 223 */
38, /* 224 */
37, /* 225 */
35, /* 226 */
34, /* 227 */
32, /* 228 */
31, /* 229 */
29, /* 230 */
28, /* 231 */
27, /* 232 */
25, /* 233 */
24, /* 234 */
23, /* 235 */
21, /* 236 */
20, /* 237 */
19, /* 238 */
18, /* 239 */
17, /* 240 */
15, /* 241 */
14, /* 242 */
13, /* 243 */
12, /* 244 */
11, /* 245 */
11, /* 246 */
10, /* 247 */
9, /* 248 */
8, /* 249 */
7, /* 250 */
6, /* 251 */
6, /* 252 */
5, /* 253 */
4, /* 254 */
4, /* 255 */
3, /* 256 */
3, /* 257 */
2, /* 258 */
2, /* 259 */
1, /* 260 */
1, /* 261 */
1, /* 262 */
0, /* 263 */
0, /* 264 */
0, /* 265 */
0, /* 266 */
0, /* 267 */
0, /* 268 */
0, /* 269 */
0, /* 270 */
0, /* 271 */
0, /* 272 */
0, /* 273 */
0, /* 274 */
0, /* 275 */
0, /* 276 */
0, /* 277 */
1, /* 278 */
1, /* 279 */
1, /* 280 */
2, /* 281 */
2, /* 282 */
3, /* 283 */
3, /* 284 */
4, /* 285 */
4, /* 286 */
5, /* 287 */
6, /* 288 */
6, /* 289 */
7, /* 290 */
8, /* 291 */
9, /* 292 */
10, /* 293 */
11, /* 294 */
11, /* 295 */
12, /* 296 */
13, /* 297 */
14, /* 298 */
15, /* 299 */
17, /* 300 */
18, /* 301 */
19, /* 302 */
20, /* 303 */
21, /* 304 */
23, /* 305 */
24, /* 306 */
25, /* 307 */
27, /* 308 */
28, /* 309 */
29, /* 310 */
31, /* 311 */
32, /* 312 */
34, /* 313 */
35, /* 314 */
37, /* 315 */
38, /* 316 */
40, /* 317 */
42, /* 318 */
43, /* 319 */
45, /* 320 */
47, /* 321 */
49, /* 322 */
50, /* 323 */
52, /* 324 */
54, /* 325 */
56, /* 326 */
58, /* 327 */
59, /* 328 */
61, /* 329 */
63, /* 330 */
65, /* 331 */
67, /* 332 */
69, /* 333 */
71, /* 334 */
73, /* 335 */
75, /* 336 */
77, /* 337 */
79, /* 338 */
81, /* 339 */
83, /* 340 */
85, /* 341 */
88, /* 342 */
90, /* 343 */
92, /* 344 */
94, /* 345 */
96, /* 346 */
98, /* 347 */
100, /* 348 */
103, /* 349 */
105, /* 350 */
107, /* 351 */
109, /* 352 */
111, /* 353 */
114, /* 354 */
116, /* 355 */
118, /* 356 */
120, /* 357 */
123, /* 358 */
125, /* 359 */
};

admin's test signature
 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks people for your comments, I had thought this was the way I needed to go, so I'll go and have a play now.

I have high hopes for this Forum

Patrick

admin's test signature