Moin,
ich versuche zur Zeit dem AD5933 ein paar sinnige Messungen zu
entlocken.
Die Kommunikation an sich funktioniert via I²C.
An der Weiterverarbeitung der Daten scheitert es im Moment.
1 | #include <avr/io.h>
|
2 | #include <inttypes.h>
|
3 | #include <avr/pgmspace.h>
|
4 | #include <stdlib.h>
|
5 | #include <util/delay.h>
|
6 | #include <avr/interrupt.h>
|
7 | #include <stdint.h>
|
8 | #include <math.h>
|
9 | #include "uart.h"
|
10 | #include "funktionen.h"
|
11 | #include "i2cmaster.h"
|
12 |
|
13 | int16_t realData = 0;
|
14 | int16_t imagData = 0;
|
15 | int64_t realData2 = 0;
|
16 | int64_t imagData2 = 0;
|
17 | double magnitude =0;
|
18 |
|
19 | //aus main
|
20 | while(1){
|
21 | if (TASTER0_Pressed){
|
22 | AD5933_GetValues(); //neue Daten für realData & imagData
|
23 |
|
24 | {char Buffer[20]; itoa(realData, Buffer, 10); uart_puts(Buffer);}
|
25 | uart_puts_P(" / ");
|
26 | {char Buffer[20]; itoa(imagData, Buffer, 10); uart_puts(Buffer);}
|
27 | uart_puts_P("\n");
|
28 |
|
29 | realData2 = realData*realData;
|
30 | imagData2 = imagData*imagData;
|
31 | {char Buffer[20]; ltoa(realData2, Buffer, 10); uart_puts(Buffer);}
|
32 | uart_puts_P(" / ");
|
33 | {char Buffer[20]; ltoa(imagData2, Buffer, 10); uart_puts(Buffer);}
|
34 | uart_puts_P("\n");
|
35 |
|
36 | uart_puts_P("magnitude: ");
|
37 | magnitude = sqrt((realData2)+(imagData2));
|
38 | {char Buffer[30]; dtostrf(magnitude, 20, 4, Buffer); uart_puts(Buffer);}
|
39 | uart_puts_P("\n\n");
|
40 |
|
41 | _delay_ms(20);
|
42 | }
|
Die Daten aus "AD5933_GetValues()" sind offensichtlich korrekt.
Ich habe eine Excel Tabelle mit der ich alle nachfolgenden Berechnungen
korrekt durchführen konnte.
Nur diese Rechnungen auf dem 8Biter zu realisiern ist mein Problem
inklusive der richtigen Datentypen.
Es wäre super wenn mir jemand den Wink mit dem Zaunpfahl geben könnte.
Ich nutze im Moment AVR Studio 4.18 mit WinAVR-20100110
Werte für realData & imagData können sollten bis +-20000 verarbeitet
werden.
Die Ausgabe im Terminal sieht bei dem code von oben so aus:
1 | -56 / -71<\n>
|
2 | 3136 / 5041<\n>
|
3 | magnitude: 90.4268<\n>
|
4 | <\n>
|
5 | 24 / 12<\n>
|
6 | 576 / 144<\n>
|
7 | magnitude: 26.8328<\n>
|
8 | <\n>
|
9 | 4289 / -4690<\n>
|
10 | -20095 / -23996<\n>
|
11 | magnitude: NAN
|