Forum: Mikrocontroller und Digitale Elektronik Erste Erfahrungen mit Mikrocontrollern


von Andre (Gast)


Lesenswert?

Hallo,

Wie die Überschrift schon sagt, habe ich grade die ersten Erfahrungen 
mit mc.

Bisher habe ich nur Erfahrungen in der c/c++ Programmierung für Windows. 
Für meine Arbeit darf ich mich jetzt mit mc. Programmierung 
beschäftigen.

Ich habe ein fertiges Programm bekommen, dass ich zunächst einmal 
verstehen muss und später auch verändern. Leider gibt es dabei einige 
Probleme. Ich habe mir von ti den msp430cce-Compiler installiert und das 
fertige Programm eingebunden. Beim compilieren kommen allerdings mehr 
als 80 Fehlermeldungen.

Daher zunächst einmal meine Frage, habe ich den richtigen Compiler?
Oder kann man mc auch mit Visual Studio programmieren?

: Verschoben durch Admin
von Karl H. (kbuchegg)


Lesenswert?

Andre schrieb:

> Daher zunächst einmal meine Frage, habe ich den richtigen Compiler?

Kann sein, kann auch nicht sein.
Kommt drauf an, welcher mc es denn eigentlich ist :-)

> Oder kann man mc auch mit Visual Studio programmieren?

Man könnte ev. den Compiler ins Visual Studio einbinden. Aber 
eigentlich: Nein, das macht man nicht damit.


> Beim compilieren kommen allerdings mehr als 80 Fehlermeldungen.

Und?
Bearbeite den ersten.
Compiliere wieder. Danach sind wahrscheinlich schon mindestens 10% aller 
anderen Folgefehler verschwunden.
Bearbeite den nächsten Fehler der übrig bleibt. Solange bis nichts mehr 
da ist.

Kann aber auch sein, dass in deinem neu installiertem Compiler irgendwo 
in der Konfiguration noch ein Wurm ist, und alle >80 Fehler in 
Wirklichkeit nur ein einziger Konfigurationsfehler ist, der sich >80 mal 
bemerkbar macht. Aber die erste Fehlermeldung sollte darüber Aufschluss 
geben, worum es sich handelt.

von Andre (Gast)


Lesenswert?

Danke für deine schnelle Antwort

über den verwendeten mc kann ich nichts direkt sagen, ich weiß 
lediglich, dass in dem Programm die Datei msp430x16x.h eingebunden ist.


Das Problem, was ich mit den Fehlermeldungen habe, ist nicht die Anzahl, 
sondern, dass ich weiß, dass das Programm schon eine final-Version ist 
und damit eigentlich keine Fehler auftauchen sollten. Daher mein 
Verdacht des falschen Compilers. Auch die Art der Fehlermeldungen 
wundert mich. So ist z.B. "bool" unbekannt.

von Frank E. (erdi-soft)


Lesenswert?

Und keiner von der "Arbeit" kann dir sagen, welcher Controller wirklich 
verbaut ist und mit welcher Toolchain die Software ursprünglich gebaut 
wurde?

von Peter (Gast)


Lesenswert?

> Das Problem, was ich mit den Fehlermeldungen habe, ist nicht die Anzahl,
> sondern, dass ich weiß, dass das Programm schon eine final-Version ist
> und damit eigentlich keine Fehler auftauchen sollten.
es kann ja schon ein vergessene Define (beim compiler als Parameter) 
sein. Was sind es denn für Fehlermeldungen.

von Olaf (Gast)


Lesenswert?

> Wie die Überschrift schon sagt, habe ich grade die ersten
> Erfahrungen mit mc.

Und? Fast wie Sex oder? :-D

> Beim compilieren kommen allerdings mehr als 80 Fehlermeldungen.

Dann habe ich mal eine wichtige Neuigkeit fuer dich. Fehlermeldungen 
sind dafuer da sie auch zu lesen. Und wenn man das nicht schafft oder 
aus anderen Gründen damit nicht zu Rande kommt dann sagt man anderen wie 
die Fehlermeldungen heissen. Wir koennen ja nicht fuer jeden neuen 
Anfaenger einen Hamster aufschneiden um aus den Eingeweiden zu lesen!

Olaf

von Andre (Gast)


Lesenswert?

Leider wurde das Programm extern entwickelt und hier hat keiner direkt 
Erfahrungen mit mc.

Ich fange einfach mal mit der ersten Fehlermeldung an.
 "variable "toDisplay" has already been defined  "

Die betroffene Zeile sieht folgendermaßen aus:
 "toDisplay(s_txt_ptr_Z1, s_txt_ptr_Z2);"

von Peter D. (peda)


Lesenswert?

Andre schrieb:
> Daher zunächst einmal meine Frage, habe ich den richtigen Compiler?
> Oder kann man mc auch mit Visual Studio programmieren?

Du kannst jeden Compiler nehmen, wo Du Deinen konkreten MC-Typ als 
Target einstellen kannst.

Sinvoll ist allerdings, genau den Compiler zu nehmen, den der Autor 
genommen hat.

Es gibt doch oftmals kleine Unterschiede, z.B. in den Headerfiles, 
Interruptsyntax, Bitvariablen.


Peter

von Karl H. (kbuchegg)


Lesenswert?

Andre schrieb:
> Leider wurde das Programm extern entwickelt

Und?
Sind diese Leute nicht mehr greifbar.

> und hier hat keiner direkt
> Erfahrungen mit mc.

Das klingt auch nicht nach einem mc-Problem an sich, sondern an einem 
ganz ordinären C-Problem.

>
> Ich fange einfach mal mit der ersten Fehlermeldung an.
>  "variable "toDisplay" has already been defined  "
>
> Die betroffene Zeile sieht folgendermaßen aus:
>  "toDisplay(s_txt_ptr_Z1, s_txt_ptr_Z2);"

Aus einer einzelnen Zeile lesen ist fast so gut wie Kaffesatz lesen.

Der eigentliche Fehler liegt auf jeden Fall vor dieser Zeile.

Poste doch lieber ein komplettes Source File (*.c), markiere die 
Position der erste Fehlermeldung. Dann kann man auch versuchen sinnvoll 
zu helfen.

von Andre (Gast)


Lesenswert?

Das Programm wurde in einem Forschungsprojekt am Fraunhofer Institut 
entwickelt und bei uns im Rahmen eines weitgehenden Forschungsprojekt 
verbessert werden. Daher kann ich leider nicht das komplette Programm 
posten :(

von Peter D. (peda)


Lesenswert?

Andre schrieb:
> Ich fange einfach mal mit der ersten Fehlermeldung an.
>  "variable "toDisplay" has already been defined  "

Scheint also kein GCC zu sein, der würde noch ne 2. Zeile bringen:
"TAST.C:38: error: previous declaration of 'toDisplay' was here"


Peter

von localhost (Gast)


Lesenswert?

> Bisher habe ich nur Erfahrungen in der c/c++ Programmierung für Windows.

Du hast Erfahrungen in c/c++ aber kannst mit dieser:

>  "variable "toDisplay" has already been defined  "

nichts anfangen?

grübel

von Andre (Gast)


Lesenswert?

In der Header ist der Prototyp und in der cpp steht die Funkion, da ist 
einfach keine doppelte Definition. Deshalb wundere ich mich ja...

von Karl H. (kbuchegg)


Lesenswert?

Andre schrieb:
> Das Programm wurde in einem Forschungsprojekt am Fraunhofer Institut
> entwickelt und bei uns im Rahmen eines weitgehenden Forschungsprojekt
> verbessert werden. Daher kann ich leider nicht das komplette Programm
> posten :(

Von kompletten Projekt war ja auch nicht die Rede :-)

> bei uns im Rahmen eines weitgehenden Forschungsprojekt
> verbessert werden.

Hust.
Wie soll das gehen, wenn du schon damit überfordert bist einen 
'fertigen' Source Code zum Laufen zu bekommen.


Aber na gut.
Wenn du die Glaskugel bevorzugst.

Der Fehler ist in Zeile 42. So wie immer.

von Andre (Gast)


Lesenswert?

Es soll gehen indem man c schon kann, nur Probleme hat den einstig in 
mc-Programmierung zu bekommen.

"
Aber na gut.
Wenn du die Glaskugel bevorzugst.

Der Fehler ist in Zeile 42. So wie immer."

Ich denke mir reicht das jetzt erstmal hier. "Man bist du blöd" - Posts 
helfen mir auch nicht weiter.

Hier nochmal mein Problem:
Ich habe ein fertiges Programm, also müssen die Fehler vom Compiler 
kommen und nicht vom Code kommen.

von Peter (Gast)


Lesenswert?

und wenn der code fehlerhaft ist und eine alte Version vom compiler ihn 
noch ausversehen akzeptiert hat?

von Karl H. (kbuchegg)


Lesenswert?

Andre schrieb:

> Ich habe ein fertiges Programm, also müssen die Fehler vom Compiler
> kommen und nicht vom Code kommen.

Das kann so sein, muss aber nicht.
Und bevor wir den Compiler eines Fehlers verdächtigen, gehen wir von der 
naheliegensten und wahrscheinlichsten Ursache aus: Nämlich, dass der 
Code  bzw. der Aufruf des Compilers fehlerhaft ist.

Auf jeden Fall kann man eines sagen:
1
  toDisplay(s_txt_ptr_Z1, s_txt_ptr_Z2);

hat nichts, aber auch gar nichts, mit einer Variablendefinition zu tun. 
Das ist ein Funktionsaufruf. Da du uns leider nicht verraten willst, in 
welchem Zusammenhang dieser Aufruf erfolgt (Initialisierung würde noch 
am ehesten passen, aber dann handelt es sich um C++ und nicht um C), ist 
alles was wir unt können: raten.
Es kann auch sein, dass der Fehler überhaupt nichts mit diesem 
Funktionsaufruf zu tun hat, und irgendein Code davor den Compiler ausser 
Tritt gebracht hat und diese Fehlermeldung a)völlig falsch ist oder b) 
einfach nur daraus resultiert, dass der Compiler davor ausgestiegen ist. 
Vielleicht ist auch einfach nur irgendwo davor eine } verloren gegangen 
oder ein ; nicht dort wo er hin sollte.

Der Fehler entsteht nicht in dieser Zeile, sondern bereits davor. Wo, 
kann keiner sagen, denn wie gesagt ....

Aber in Summe sind das alles viel zu viele 'vielleicht'.

> nur Probleme hat den einstig in
> mc-Programmierung zu bekommen.

Der Fehler hat auch mit 95% Sicherheit nichts mit mc-Programmierung im 
Speziellen zu tun, sondern sieht nach einem stinknormalen C-Fehler aus. 
Möglich, dass ein älterer Compiler das alles noch anstandslos geschluckt 
hat (auch Compiler enthalten Fehler, die im Laufe der Zeit korrigiert 
werden). Die restlichen 5% entfallen auf den Fall, dass unmittelbar vor 
diesem Funktionsaufruf tatsächlich irgendetwas passiert, was mit einer 
mc-spezifischen Compilererweiterung gemacht wurde, die in deiner Version 
nicht verfügbar ist (oder geändert wurde).
Vielleicht muss man aber auch den Compiler mit irgendwelchen speziellen 
Switches aufrufen, damit er ein bestimmtes Verhalten an den Tag legt. In 
dem Fall wäre der Code samt Compileraufruf (ev. Makefile) interessant.

> Ich denke mir reicht das jetzt erstmal hier. "Man bist du blöd" -
> Posts helfen mir auch nicht weiter.

Und mit einer Anfrage:
"Mein Auto klappert. Ich verrate euch aber nicht, ob das im Stehen ist 
oder beim Fahren einer Linkskurve oder ..." kann kein Mensch eine 
vernünftige Diagnose stellen.
Wenn dein Bauch schmerzt, gehst du auch selber komplett zum Arzt und 
schickst ihm kein Photo von deinem Bauchnabel.
Ist das so schwer zu verstehen?

Wenn du uns nicht hilfst dir zu helfen, dann kann dir hier niemand 
helfen. Von jemanden mit C/C++ Erfahrung erwarte ich mir eigentlich 
schon, dass er das versteht.

von Klaus W. (mfgkw)


Lesenswert?

oder er wurde mit einer alten Version des Compilers kompiliert, du
hast jetzt eine neuere und die meckert deshalb mehr rum?
Kann ja auch sein.

Aber ohne mehr Infos wirst du hier kaum vernünftige Antworten bekommen.

> Ich denke mir reicht das jetzt erstmal hier. "Man bist du blöd"
> - Posts helfen mir auch nicht weiter.

Bei der Frage braucht man sich über die Antworten auch nicht wundern.
"Ich habe ein Problem, weiß aber nicht bei welchem MC, verrate nicht
wie meine Installation aussieht, zeige keinen Quelltext und kein
Makefile, aber sagt mir doch trotzdem, wo mein Problem ist."
Was erwartest du? Daß sich jemand auf deinem Rechner einhackt und
remote die Fehler sucht?

von Daniel D. (daniel1976d)


Lesenswert?

Ich frag mich jedoch immer noch wie es sein kann das du Fraunhofer nicht 
anrufen kannst du naehere Infos einholen kannst. Verwendeter Compiler, 
Compilerverssion, Konfiguration usw. Gibt es keine Doku, ich wuerde doch 
annehmen das die Jungs dort ein wenig Ahnung von solchen Dingen haben. 
Oder soll Fraunhofer nicht wissen das ihr/du am Code rumstrickst?
Alles irgendwie ein wenig komisch...

Wie vorher schon jemand schrieb... Wahrscheinlich wurde eine aeltere 
Compilerversion benutzt und du hast nun eine aktuelle Version...

von Peter D. (peda)


Lesenswert?

Andre schrieb:
> Das Programm wurde in einem Forschungsprojekt am Fraunhofer Institut
> entwickelt

Dann sollte aber doch eine ordentliche Doku vorhanden sein.
Also welcher Compiler, welche Version, welches Target, das komplette 
Makefile.
Oder am besten das Projektfile der verwendeten IDE.

Und wenn Du nicht so erfahren bist in C, mußt Du das erstmal 1:1 
übernehmen.
Alles andere ergibt keinen Sinn.

Wir legen immer das komplette Projektfile (z.B. *.aps beim AVRStudio) 
mit im SVN ab, da sind dann sämtliche Einstellungen drin.
Damit ist es praktisch unmöglich, daß jemand auscheckt und 
Fehlermeldungen beim Compilieren erhält.


Peter

von Stefan C. (felsnadel)


Lesenswert?

Es könnte sich auch um einen Fehler bei der Einbindung der Includes 
handeln. Als Vorschlag: Überprüfe die Pfadangabe der Includes bei den 
Optionen des Compilers oder schau dir das makefile nochmal genauer an. 
Manchmal wird ein file versehentlich mehrfach eingebunden was zu Fehlern 
füren kann!

Gruß
Stefan

von Bernd (Gast)


Lesenswert?

Nen bischen was hat er uns ja schon gesagt :-)

msp430x16x.h

Also ist der MC nen MSP430 und der Compiler von IAR.

von Tobias K. (kurzschluss81)


Lesenswert?

Hatte er nicht erwähnt das  der Compiler der CCE von TI ist.

Das Problem mit dem bool hört sich für mich danach an als ob die 
stdbool.h nicht eingebunden oder gefunden wird.
Ähnliches Problem habe ich jetzt bei der neuen CCS4 Version. Dort 
scheint es diese Header Datei nicht mehr zu geben. werde sie mir von der 
alten CCE3 Version rüberkopieren.

von Bernd (Gast)


Lesenswert?

Da habe ich wohl zu schnell gelesen :-) aber alzu schwer kanns nicht 
sein den richtigen Compiler zu finden.

von Andre (Gast)


Lesenswert?

Der Tipp mit dem IAR war super, da lässt es sich ohne Probleme 
übersetzen.

Danke :)

von Bernd (Gast)


Lesenswert?

Ob das Fraunhofer Institut mal nen Bier springen läßt ? :-)

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.