Guten morgen, habe ein "kleines" problem mit Codevision AVR, und zwar benutze ich die neuste version, allerdings die demo, also max 2kb code... jetzt habe ich einen kleinen code geschrieben (soll die temp messen und ausgeben...) nur jetzt motzt er rum das der code zu lang ist, jedoch sollte ich nicht über 2kb kommen... wie auch mit dem bisschen? mir ist jedoch aufgefallen, das die funktion sprintf(g_temp," %d °c",temp); sehr sehr viel speicher verbraucht, ich brauche sie jedoch und die float variabel auszugeben, oder gibts noch eine andere möglichkeit dieses zu lösen? Mfg Marcel
sprintf() und printf() sind leider recht umfangreiche Funktionen, bieten dafür auch einiges. Abhilfe: 1.Vollversion kaufen, ist das Geld wert 2.in einen anderen Datentyp umwandeln und "zu Fuss" ausgeben
<1.Vollversion kaufen, ist das Geld wert glaub ich dir sofort, jedoch ist bei mir (schüler) geld knapp, und das ganze muss eh in den 2313, und der hat nur 2kb speicher ;) <2.in einen anderen Datentyp umwandeln und "zu Fuss" ausgeben und wie mache ich das am besten? ich habe z.b. eine float variabel mit dem wert 28,93837, wie kann ich die dann am dümmsten ausgeben? stehe irgendwie gerade auf dem schlauch ;) Mfg
Mich würde interessieren was die Vollversion kostet?! mfg Chris!
im Moment besser in Amerika einkaufen, beim derzeitigen Dollarkurs kostet es nur 78 bzw 130 Euro. Kreditkarte erforderlich.
@Marcel Hast du die compiler optionen richtig eingestellt?? Da kannst Du den sprintf() Funktionsumfang erheblich reduzieren und damit die codegrösse. Zu finden unter : Projekt/Configure/C Compiler 28,93837 Du erfasst einen Temp Wert mit min 22bit ? Respekt! Das ist mindestens "state of the art" ;-) Wenn Du den internen ADC benutzt und der Fühler inkl aller fehler auch mit 0,1% Fehler arbeitet- kannst du max 1024 zustände unterscheiden. ( 10 bit ) Also macht eine 29,9 Anzeige gerade noch sinn. (deltaC=100 C ) Also ball flach halten und die float Keule erst schwingen wenns sinn macht. Phagsae
natürlich erfasse ich meinen temp wert nicht mit 22bit gg war nur ein beispiel, da ich öfters float zahlen benutze und diese dann auch gerne umwandeln würde ;) unter einstellungen habe ich stehen: (s)printf features: INT der rest ist auf standard
erst mal in int bzw. long-Variablen umwandeln. test=29.12345; //float-Zahl vorkomma=test; //ganzzahliger Teil test=(test-vorkomma)*10000; //4 Nachkommastellen nachkomma=test; die beiden Zahlen kannst du nun nach den üblichen Verfahren ausgeben. Wird deutlich kleiner als sprintf().
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.