Forum: Mikrocontroller und Digitale Elektronik Keil C166 Eval Problem & Probs mit C167CR P3.12


von Thomas Weihrich (Gast)


Lesenswert?

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

von Rasputin (Gast)


Lesenswert?

Vielleicht hilfts:

Setze in den Options for Target/C166 -> Emphasis die Drop-Down-Auswahl
auf 'Favor Size'.

Und nur die nötigsten Bibliotheken einbinden.

von Thomas Weihrich (Gast)


Lesenswert?

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

von T.Stütz (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.