Forum: Mikrocontroller und Digitale Elektronik sprintf funktioniert nicht in ESP-IDF


von David P. (devryd)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
Ich arbeite mich gerade in ESP-IDF ein und bin auf ein Problem gestoßen. 
Ich würde gerne ein Int in einen String/Char array umwandeln und habe 
die Methode sprintf gefunden. Leider scheint sie nicht so richtig zu 
funktionieren, da mein Programm nicht durchläuft, wenn die Methode im 
Programm ist.
Das ist mein Hauptprogramm.
1
#include "ssd1306.h"
2
#include <stdio.h>
3
4
void app_main() {
5
    ssd1306_setup();
6
    char string[100];
7
    int i=12;
8
    sprintf(string,"test %d",i);
9
  //  ssd_1306_print(string, 7);
10
    ssd_1306_print("test",4);
11
    ssd1306_update();
12
}
Wenn ich die sprintf... Zeile auskommentiere, wird auf meinem OLED 
Bildschirm was angezeigt, wenn nicht, nicht.
Hat jemand ne idee, was falsch sein könnte?

von Test (Gast)


Lesenswert?

Hast du mal versucht den string mit newline (\n) zu beenden?

von David P. (devryd)


Lesenswert?

Ich weiß nicht genau warum, aber sprintf hat (wie auch immer) meine i2c 
clock flag durcheinander gebracht. Ich habe den Fehler beseitigen 
können.
Danke trotzdem

von Klaus H. (klummel69)


Lesenswert?

Das riecht nach einem Stack Problem. Wenn du sprintf auskommentierst 
wird der Compiler vermutlich auch string[100] rausoptimieren. Daher geht 
es ohne Ausgabe und mit Ausgabe gibt es einen Stackoverflow.

Definiere testweise den string außerhalb der Funktion, dann müsste es 
gehen.
Oder erhöhe den Stack.

: Bearbeitet durch User
von David P. (devryd)


Lesenswert?

Aber warum sollte eine andere clock flag das Problem lösen?

von ESPbeginner (Gast)


Lesenswert?

i2c_cmd_link_delete wird nie aufgerufen, führt das nicht zu einem 
Ressourcenproblem?

von David P. (devryd)


Lesenswert?

Wenn man mehr mit dem Programm macht sicherlich. Bis jetzt versuche ich 
nur das OLED Display zum laufen zu bekommen.

Aber ich habe es eingefügt.

: Bearbeitet durch User
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.