Hallo,
also erstmal zu mir ich bin in C ein kompletter Anfänger da ich von der
Schule aus nur mit C# gearbeitet habe. Jetzt wollte ich mich einmal
näher mit C eclipse beschäftigen. Ich habe hier einen vorgegebenen
Quellcode aber wenn ich diesen Übernehme funktioniert dieser nicht
Richtig. Wie sieht den genau die Datei test1.c aus und das dazugehörige
makefile?
Ich hoffe ihr könnt mir helfen, denn sonst bin ich echt am verzweifeln
hier :D
#include <msp430x14x.h>
#include "test1.h"
char eingabe;
int eingabeflag;
void main(void)
{
unsigned int i;
eingabeflag = 0;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 |= XTS; // ACLK = LFXT1 = HF XTAL
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG) != 0); // OSCFault flag still set?
BCSCTL2 |= SELM1+SELM0; // MCLK = LFXT1 (safe)
UCTL0 = CHAR; // 8-bit character
UTCTL0 = SSEL0; // UCLK = ACLK
UBR00 = 0x45; // 8MHz 115200
UBR10 = 0x00; // 8MHz 115200
UMCTL0 = 0x00; // 8MHz 115200 modulation
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
IE1 |= URXIE0; // Enable USART0 RX interrupt
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x10; // P3.4 output direction
_EINT(); // Enable interrupts
ausgabe ("\n\r Waehle Zahl zwischen 0 und 2!\n\r");
for (;;)
{
if (eingabeflag == 1) //check input flag
{
switch (eingabe)
{
case '0':
ausgabe ("Sie haben die 0 gewaehlt!\n\r");
eingabeflag = 0;
break;
case '1':
ausgabe ("Sie haben die 1 gewaehlt!\n\r");
eingabeflag = 0;
break;
case '2':
ausgabe ("Sie haben die 2 gewaehlt!\n\r");
eingabeflag = 0;
break;
default:
ausgabe("Die Eingabe war nicht korrekt!\n\r");
eingabeflag = 0;
}
}
}
}
void ausgabe (char *inText) //function to print text in hyper terminal
{
char *cpText; //intern pointer
for (cpText = inText; *cpText; cpText++) //print char untill pointer
= null
{
while ((IFG1 & UTXIFG0) == 0); // USART0 TX buffer ready?
TXBUF0 = *cpText;
}
}
interrupt[UART0RX_VECTOR] void usart0_rx (void)
{
eingabe = RXBUF0; // read input character
eingabeflag = 1; // set input flag
}
peterlustig wrote: > Hallo, > also erstmal zu mir ich bin in C ein kompletter Anfänger da ich von der > Schule aus nur mit C# gearbeitet habe. Jetzt wollte ich mich einmal > näher mit C eclipse beschäftigen. Ich habe hier einen vorgegebenen > Quellcode aber wenn ich diesen Übernehme funktioniert dieser nicht > Richtig. Wie sieht den genau die Datei test1.c aus und das dazugehörige > makefile? > Ich hoffe ihr könnt mir helfen, denn sonst bin ich echt am verzweifeln > hier :D Formatierung:!!!!
1 | > #include <msp430x14x.h> |
2 | > #include "test1.h" |
3 | > char eingabe; |
4 | > int eingabeflag; |
5 | > void main(void) |
6 | > { |
7 | > unsigned int i; |
8 | > eingabeflag = 0; |
9 | .....
|
Wenn Du jetzt noch detailiert beschreibst WAS nicht funktioniert, dann schaut es sich auch vielleicht mal jemand an.
peterlustig wrote: > Quellcode aber wenn ich diesen Übernehme funktioniert dieser nicht > Richtig. Definiere 'funkioniert nicht richtig' Kriegst du Compilerfehler. Macht das Programm nicht das was du erwartest? Was erwartest du? Was passiert statt dessen?
Danke für die Antworten, die "Aufgabenstellung" lautet wie folgt: Ein Tastendruck auf dem Keyboard des PCs wird detektiert und als Charakter zur RS-232 Schnittstelle des PCs gesandt. Der Mikrocontroller liest die Daten aus und generiert eine entsprechende Antwort. Das Einlesen erfogt mittels einer Interruptroutine. Liegt ein Charakter am Eingang der Schnittstelle des Controllers an, wird das Interrupt aktiviert und durchlaufen. Der Buffer wird ausgelesen und das Eingabeflag gesetzt. In der Switch-Anweisung wird der Charakter ¨uberpr¨uft und eine entsprechende Antwort generiert. Für die Ausgabe an den PC wird die Funktion ausgabe erstellt. Diese schreibt jeden Charakter des Antwortsatzes auf den Buffer bis das Satzende erreicht ist. Beim Kompilieren kommt folgende Meldung: make -k all msp430-gcc -mmcu=msp430x149 -DMSP -O -o Testfile msp430-gcc: no input files make: *** [Testfile] Error 1 make: Target `all' not remade because of errors. Als Builder werden "CDT Makefilebuilder" und "Scanner Configuration Builder" verwendet. Ich muss sagen, dass ich noch nie mit C und in Eclipse programmiert habe :(
Schau dir doch mal im Makefile diese Zeile an
> msp430-gcc -mmcu=msp430x149 -DMSP -O -o Testfile
und dann sag mir: welches ist wohl das Input-File (also das *.c File)
welches vom Compiler zu übersetzen ist.
Richtig. Da ist keines. Und genau das sagt dir auch der Compiler.
Dein Problem hat nichts mit C an sich oder mit Programmierung zu tun,
sondern mit der Bedienung deiner Tools.
Und was heißt das jetzt konkret? Was muss ich genau tun, was erstellen? Sorry, ich hab echt keine Ahnung, da ich so gut wie keine Kenntnis besitze. Allerdings habe ich diesen Quellcode vorgegeben und soll es zum Laufen kriegen, fragt sich nur wie!? Benutzen tue ich Eclipse SDK und um es auf den Mikrocontroller zu schreiben Olimex MSP430 Programmer. Danke
peterlustig wrote:
> Und was heißt das jetzt konkret?
das du im Makefile in der zitierten Zeile den Namen deines .c-Files
angeben musst...
Eclipse erzeugt doch die passenden Makefiles automatisch und mit der aktuellen Version vom MSPGCC musst du eh den internen Makefile Builder benutzen. Schau mal hier: http://supachris.homeip.net/Eclipse_MSPGCC.zip
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.