Forum: Compiler & IDEs sehr viele printfs -> probleme mit ram (?)


von Sssssss (Gast)


Lesenswert?

Hi!

Ich bin gerade dabei die MCA25 Camera mit ulrich radigs
webserver zu verbinden.
Der Kamera teil alleine funktioniert auch, der webserver alleine
ebenso.

Jetzt habe ich beides zusammenkopiert, im Kamerateil nutze ich viel
code wie:
1
//buf ist nen 40 byte unsigned char array
2
3
case 12:
4
// wait for config mux ch0 request:
5
// [F9 03 EF 09 E3 05 23 8D FB F9]
6
if
7
(memcmp(buf,"\xF9\x03\xEF\x09\xE3\x05\x23\x8D\xFB\xF9",10)
8
== 0){
9
  // send mux ch0 config ack/open packet:
10
  // [F9 01 EF 0B E3 07 23 0C 01 79 F9]
11
  printf("\xF9\x01\xEF\x0B\xE3\x07\x23\x0C\x01\x79\xF9");
12
  state = 13;
13
}
14
break;
puts() kann ich nicht nehmen da es mit nen newline hinter
meinen string kopiert.

Wenn ich die MTU kleiner mache funktioniert es einigermassen.
lösche ich einzelne printf() anweisungen aus meinem code
gehts auch mit normaler MTU (800).

Wieso braucht der für die printfs soviel Speicher ?
Wie kann ich das Problem lösen ?
Muss ich jetzt wirklich alle diese Strings per hand ins Flash packen
und per pgm_read_... ausgeben :-X

irgendjemand ne idee ?

von Werner B. (Gast)


Lesenswert?

Ohne pgm_read_byte()
Einfach printf_P(PSTR("xyz"),...) verwenden.

von Werner B. (Gast)


Lesenswert?

gibt auch memcmp_P usw.
einfach in der avr-libc docu nachlesen.

von Sssssss (Gast)


Lesenswert?

DankE !!!
Jezt siehts gleich vieeel besser aus :D

Ich hatte nur
printf_P("text");
versucht ohne das PSTR... Das brachte null,nix ;)
Danke !

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.