Salu zusammen
Ich bin am verzweifeln :o)
Bin seit Stunden hier am probieren die Entwicklungsumgebung MSP430
Eclipse mspgcc zum laufen zu bewegen. Ich habe es nun endlich geschafft
ein managed C Project zu erzeugen, habe auch überall nach der Anleitung
die hier auf der Homepage ist, msp430x149 eingestellt.
Nun habe ich meine bereits existenten Files aus IAR übernommen (neue
Files in Eclipse erzeugt und Quellcode kopiert)
Includes habe ich mspgcc und noch die von IAR angegeben, aber wenn ich
speichere, sprich auch gleich Compiliere, spuckt er mir 60 Errors und
jede Menge Warnings raus. Die meisten lauten so in etwa: P1SEL
undeclared (first use in this function) Habe auch noch ein Pic
angehängt, vielleicht sieht man da was. Ich glaube aber ich habe das
deklariert in den .h Files. Kann es sein das ich die noch speziell
anhängen muss?
Wäre über jede Hilfe dankbar
Gruss reflection
Hast du bei den Projekteigenschaften den Pfad bei Includes angegeben, wo
die ganzen Header-Files sind? Bei der Standard-Install wäre das:
C:\\mspgcc\msp430\include
Und auch die msp430x14x.h includiert?
Liste am besten mal alle Fehler auf, dann kann man mehr sehen! Aber es
sieht ganz so aus als wenn Du was vergessen hast zu includieren, wie
supachris schon erwähnt hat.
Mich wundert es auch das in deinem Projektordner die msp430x14x.h
steht.....die steht normalerweise nur im includes-Verzeichnis! Außerdem
scheint es auch ein Problem mit ihr zu geben (wegen dem roten Kreuz vor
der Datei). Hast Du die manuell dort eingefügt?
Ja das habe ich als es nicht gegangen ist. Habe auch die Sachen von IAR
noch eingebunden. Keine Ahnung ob es daran liegt, aber nur mit mspgcc
sah es genau so aus. Irgendwie werden die ganzen Ports ect. nicht
erkannt. Also sie stehen zwar im .h, aber der Compiler will das nicht so
sehen... grrrr Oder muss ich noch andere Sachen abändern wenn ich ein
Programm von IAR übernehmen möchte?
Klappt das mit dem MSP FET USB Debugger eigentlich problemlos? Sorry für
die vielen Fragen, aber langsam zweifle ich echt an mir
Gute Nacht
Greets
Also die Datei muss da raus, eventuell beißt sich da was, das ist
bestimmt die vom IAR. Richtigen Prozessortyp bei Compiler UND Linker
eingestellt? Bist du nach der Anleitung gegangen?
Anders als bei IAR werden die Interrupts behandelt, musste ma Anleitung
schauen, und die signal.h einbinden.
Ja, USB-FET klappt mit dem gdbproxy wunderbar. Ich hab den gdb-proxy
gleich als external tool im eclipse mit drin, geht prima.
Salu
Ich habe jetzt mal aufgeräumt. Hier sieht man auch die Sachen die ich
eingebunden habe. Komisch ist, dass er nur schon die .c nicht einbinden
kann, die sind ja aber in dem Verzeichnis vorhanden. Ich habe die
Anleitung einmal durchgemacht bis ich dazu kam die Datei gdbtarget.ini
zu erstellen. Compilieren sollte ich da ja schon können oder sehe ich
das falsch?
Gruss Serge
PS: Mit der Anleitung hatte ich eben so meine Mühe, da der eine Link
dort nicht funktioniert. Habe es dann von Hand installiert, kann es sein
das ich da noch was vergessen habe? Ein Projekt konnte ich aber genau so
erstellen wie es in der Anleitung steht.
1. Seit wann werden C-Dateien direkt includiert? Dafür gibts
Header-Files.
2. Ich schätze, in den betreffenden C-Dateien ist die Zeile #include
<msp430x14x.h> nicht drin, denn in der Main meckert der die Register
nicht an
Also, leg mal für die lcd.c usw jeweils eine .h Datei an, und includiere
die.
Am übersichtlichsten macht man das meiner Meinung nach, wenn man eine
projekt.h erstellt, und diese überall includiert. In der project.h dann
die prozessorspzifische includieren und alle anderen .h dateien deines
Projektes. Dann klappt das auch.
Von Hand installieren ist sowieso besser, dann hast du nicht diese
hoffnungslos veralteten Versionen aus dem Paket da.
Salu
Das verstehe ich jetzt nicht ganz: Also, leg mal für die lcd.c usw
jeweils eine .h Datei an, und includiere die.
Ich habe ja dort nur C-Code drin in meinen .c Files. Was soll ich dann
in die .h schreiben? Was mich wundert ist, dass es in IAR so geklappt
hat.
Das mit dem include msp430x14x.h werde ich noch probieren
Naja, man kann zwar theoretisch auch c-files includieren, aber das ist
schlechter Stil und unübersichtlich.
In eine Header-Datei kommen die Funktionsdeklarationen, und eventuelle
Defines usw.
Habe nun mal die includes in allen Files gemacht. Nun habe ich nur noch
5 Fehler :o)
Er macht immer noch Fehler wenn ich ein .c includen will: lcd.c No such
file or directory
Er gibt bei jeder for Schleife den Fehler: 'for' loop initial
declaration used outside C99 mode
Könnt ihr mir vielleicht da noch weiterhelfen? Wäre echt nett!
Gruss und Merci im Voraus
reflection
Also, die Fehler mit include der .c Files ging nun. Musste aber das
Projekt noch unter includes in den Projectoptions einstellen (dort
befinden sich die .c Files).
Habe jetzt noch die zwei Fehler mit dem
'for' loop initial declaration used outside C99 mode
Gruss reflection
Jo, also das ist halt ziemlich schlechter Stil, includiert werden keine
C-Files sondern Header-Dateien, in denen die Funktionen des C-Files
deklariert sind.
Dann müsstest du in der main.c halt nur #include "lcd.h" machen.
In der lcd.h steht dann z.B.
void InitLCD(void);
In der lcd.c kommt dann die komplette Funktion:
void InitLCD(void)
{
blabla....
}
So macht man das, das wird übersichtlich und entspricht dem
Include-Prinzip.
Den C99 Fehler bekommst du weg, in dem du keine Schleifenvariablen
direkt in der Schleife deklarierst, sondern vorher.
Oder den Compiler umstellen auf C99 Modus. Da weiß ich aber grad nich,
welche Option da rein muss....
Habe ich erfolgreich bei einer der beiden for Schleifen hin gekriegt,
bei der anderen will es nicht. Die Schleife lautet folgendermassen:
void sendString(char* string)
{
for(int i = 0; string[i] != '\0'; ++i)
Wenn ich das jetzt so schreibe:
void sendString(char* string)
{
int i;
for(i = 0; string[i] != '\0'; ++i)
bekomme ich wieder 20 Errors. Er sagt dann bei jeder Funktion bei der
geschweiften Klammer, dass dies das erste mal in dieser Funktion
deklariert sei. Gibt dann auch zig Fehler wegen doppeldeklaration, aber
das kann irendwie auch nicht sein, da ich es auch schon mit einer
anderen Variable (j) versucht habe und diese garantiert nicht verwendet
wird. Sorry für die Beschreibung, aber weiss nicht wie ich das
verständlicher rüberbringen soll.
Der Rest klappt. Ein riesen Dankeschön an die die mir geholfen haben!
Gruss reflection
Salu
Hm, irgendwie will es nicht. Bin seit über 2h an dieser for Schleife und
seh es einfach nicht wieso ich das nicht machen kann. Habe ich da
vielleicht Probs mit dem Array of Char?