Guten Morgen, ich darf gerade an für ein Projekt(FH) bearbeiten wo ich unter anderem mit einem Eval-Board und der Eval Verison von Keil für C166 arbeiten darf. - Codelimit wegen Eval 8k 1. Problem: - momentane Programm Größe ca 4k nun will ich eine Funktion schreiben der ich einen long wert gebe und welche mir auch wieder einen long zurückgibt. Nun kommt plötzlich die Meldung das ich über 8k Code habe und das das mit der Eval nicht geht. Wie kann ich bitte mit einer Funktion gute 4k Code erzeugen wenn in der Funktion zu Testzwecken nur den Wert wieder zurückgegeben, also so gut wie NICHTS gemacht wird. --> long berechnung(long x) { return x;} Habe vorher im Programm auch schon Funktionen geschrieben die mit long Typen arbeiten. Also kanns am long nicht liegen. Habe im Forum gelesen das es Probs mit float Typen gibt. Begrenzt Keil vielleicht nicht nur den Codesize sondern auch die Anzahl von Funktionen? Habe die Funktion einfach mal umgeschrieben das nur int Typen rein- bzw. rausgeschreiben werden und das Problem blieb erhalten. 2. Problem: ich benutze die ASC0 und die SSC Schnittstelle welche beide auf P3 liegen. Zusätlich will ich noch die restlichen Pins von P3 als Ausgänge benutzen. Das geht auch mit allen eigentlich einwandfrei bis auf P3.12. Auf diesem Port liegt noch das Signal BHE. Habe dann mal im Handbuch nachgelesen wie man den BHE deaktiviert und als Port verwendet. Wenn ich die Anweisunge ausführe ändert sich aber nichts an meinem Problem. P3.12 zappelt zu bestimmten Zeitpunten zwischen 0 und 1 hin und her. Habe die Vermutung das es an dem Eval-Board liegt (weiß leider gerade nicht von wem das ist). Hatte jemand schon ein ähnliches Problem? Vielleicht liegts ja nicht am Eval Board. mfg Thomas
Vielleicht hilfts: Setze in den Options for Target/C166 -> Emphasis die Drop-Down-Auswahl auf 'Favor Size'. Und nur die nötigsten Bibliotheken einbinden.
OK, Danke. Werds mal probiern. Geht leider erst am Mittwoch. Ist halt echt komisch mit einer Funktion die nichts macht 4k Code zu erzeugen. Haben halt viel Text via Hyperterminal, deshalb die 4k der eigentliche Code der was tut ist nur ein kleiner Bestandteil der 4k
zu P3.12 kann es sein das du den P3.12 manchmal als IN und manchmal als OUT deklarierst (DP3.12) ? dazu gibts eine Errata, kurz gefaßt beim bitweisen beschreiben des Ports P3 (z.B. ausgabe eines Zeichens auf ASC0) liest der Prozessor den Zustand des ganzen wortes ein und setzt dan entsprechendes bit und gibt ihn dann wieder aus => durch Input wird irgentetwas eingelesen und dann beim umschalten auf Output verwendet ! Abhilfe: vor dem wechsel auf Out den gewünschten werden eintragen BSET P3.12 BCLR DP3.12 Gruss
schau dir halt mal Linker Ausgaben und die List files des Compilers einmal mit und einmal ohne deine Funktion an. Das Problem liegt mit Sicherheit nicht an deiner leeren Funktion. So schlecht ist kein Compiler dass er für eine leere Funktion 4k braucht. auserdem weis ich nicht wo deine 8k herkommen: http://www.keil.com/demo/limits.asp sagt ein Limit von 4k. Thomas
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.