Forum: Mikrocontroller und Digitale Elektronik ATMEL128 sprintf-Problem AVR-Studio 5


von U. B. (ub007)


Angehängte Dateien:

Lesenswert?

Hallo !

Ich bin nun auf die neue AVR-Studio5 umgestiegen was eigentlich nichts 
ausmachen sollte, aber bei mir funktioniert noch etwas nicht.
Ich hab um sprintf zu testen folgenden Link mir durchgelesen:
sprintf-http://www.mikrocontroller.net/articles/FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio
Hab versucht mal alles in der neuen 5er Umgebung einzustellen.
Dazu hab ich zwei Screenshots angehängt.
Ich hab einen ganz einfachen Code geschrieben:
1
#include <avr/io.h>
2
#include <math.h>
3
#include <stdio.h>
4
5
int main(void)
6
{
7
  unsigned int  Erg=528;
8
  double        U=0.2F,K=0.2F;
9
  unsigned char Buffer[20];
10
  
11
  K=(double)Erg;
12
  U=K*(double)3.4/(double)328.0;
13
  
14
  sprintf(Buffer,"%f\r\n",U);
15
          
16
   while(1)
17
   {
18
       //TODO:: Please write your application code 
19
   }
20
}

Wenn ich das ganze simuliere dann lass ich mir über den Watch die 
Variable Buffer anzeigen. Aber das was da drinsteht ist alles andere als 
was man erhofft.
In der Variablen U steht das richtige Ergebnis.
Aber im Buffer steht: Buffer[0]=63 Buffer[1]=13 Buffer[2]=10.
Zumindest sieht man das \r\n
Aber es sollte im Buffer ja 5,473... stehen.
Was mache ich falsch ?

Gruß U.

von Jean P. (fubu1000)


Lesenswert?

Hi,
U. B. schrieb:
> Aber im Buffer steht: Buffer[0]=63 Buffer[1]=13 Buffer[2]=10.
> Zumindest sieht man das \r\n
63 == ? , das zeigt dir das die transformation nicht gelungen ist. Also 
ist irgendwas an deinen Einstellungen falsch.

Du kannst aber auch von der stdlib.h -->
1
dtostrf(double __val, signed char __width, unsigned chat __prec, char* s);
benutzen.

Gruß

von Stefan E. (sternst)


Lesenswert?

Das "-Wl,-u,vfprintf" ist als Compiler-Option völlig wirkungslos. Das 
muss zu den Linker-Optionen.

von U. B. (ub007)


Lesenswert?

Hallo @all !

Uups - o.k. wer lesen kann ....Linker-Optionen. Jetzt funktionierts.
Das mit dtostrf werde ich bei Gelegenheit mal näher anschauen!

Vielen Dank !

Gruß U.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.