Gast
#771418
Nabend,
ich bräuchte mal eure Hilfe! Es geht darum das mir mein Programm das
Spektrum von einem Eingangssignal berechnet. Das Ergebnis legt wird dann
im Floatarray 'spektrum[FFT_SIZE]' gespeichert. Da es sich um Daten
vom Typ Float handelt, hat jeder Wert eine Länge von 32Bit. Diese Daten
möchte ich nun in ein 8Bit Array vom Typ char umwandeln und per UART an
den PC senden.
Um das zu realisieren möchte ich die Funktion 'sprintf' nutzen.
Die Syntax der Funktion ist in der Hilfe folgendermaßen beschrieben:
-----------------
Synopsis
#include <stdio.h>
int sprintf (char *str, const char *format, /* args */...);
-----------------
Im folgenden der betreffende Programmausschnitt, in dem hoffentlich alle
essentiellen Angaben enthalten sind ;)
define FFT_SIZE 1024
float spektrum[FFT_SIZE]; // In dem Array stehen die 32Bit Ergebnisse
char spektrum_senden[FFT_SIZE]; // 8 Bit Array zum Senden der Daten
int i;
void uartfft(char*spektrum_senden){
for (i=0; i<FFT_SIZE; i++)
{
do {;} // Wait for the UART transmitter to be ready
while ((*pUART0LSR & UARTTHRE) == 0);
sprintf(spektrum_senden,"%8x",&spektrum[i]);
*pUART0THR = spektrum_senden; //Übertragung von 8 Bit
}
}
Wenn ich die Umwandlung so mache, dann sendet er mir genau 1024 mal eine
'0' zum PC.
Wo liegt der Fehler? Ich hoffe ihr könnt mir helfen.
Vielen Dank schonmal!
Gruß Basti
P.s.: Ziel ist ein SHARC DSP von Analog Devices