- LiFePO4 Speicher Test         
Ergebnis 1 bis 3 von 3

Thema: float Variable mit printf ausgeben(UART)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    19

    float Variable mit printf ausgeben(UART)

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    Ich möchte eine float Variable über die Funktion printf() über die serielle Schnittstelle ausgeben, wie macht man das??

    Code:
    printf("temp= %f",kurven_temp[0]);
    
    //routine für printf
    int uart_putchar (char c)			
    {
    if (c == '\n')					
    {				
    uart_putchar('\r');				
    }			
    loop_until_bit_is_set(UCSRA, UDRE);				
    UDR = c;				
    
    return(0);
    }

    Wenn ich es so mache, bekomme ich nur ein '?'!
    Soll ich es in einen String umwandeln, wenn ja wie?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Auf einem normalen Compiler würde ich sagen
    sprintf(tralala, "%f\r\n", floatzahl);
    dann ist tralala ein normaler string und das kontrollzeichen ergänzen kannst du dir sparen.
    beim GCC für Controller mußt du nach schauen, was der sprintf() für formate drauf hat.
    sowas Ähnliches sollt' es aber geben
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Schau mal in dir Doku zur avr-libc.

    Es gibt funktionen, wie dtostrf und dtostre. Auf ausreichend große Puffer ist zu achen (wie bei sprintf auch). Wenn printf direkt nach UART drucken soll, dann nimmst du fprintf und erzeugst ein FILE-Objekt mit fdevopen, das als Argumente die Funktionszeiger der Ein-/Ausgaberoutinen bekommt.
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress