Hallo allerseits, ich habe das sog. "LaunchPad" von Texas Instruments erstanden und weiß nicht mehr weiter. Ich bekomme bei jedem Compilierversuch eine Fehlermeldung. Nach mehrstündiger Google-Suche hoffe ich nun auf Eure Hilfe. Problembeschreibung: Ich habe gemäß Anleitung die Software Code Composer Studio 4.2 installiert und die sog. "Worshop Labs" installiert. Die enthaltenen Codebeispiele sind von TI, insofern gehe ich davon aus dass hier kein Programmierfehler vorliegt. Umsomehr verwundert mich die folgende Fehlermeldung nach beim Compilieren. D:\Texas Instruments\ccsv4\utils\gmake\gmake main.obj gmake: *** [main.obj] Error 1 Build complete for project Temperature_Sense_Demo Hat hier irgendwer schonmal den gleichen Fehler gehabt und kann mir vielleicht weiterhelfen? Für eure (eventuelle) Hilfe vorab schonmal vielen, vielen Dank! Freundliche Grüße der Umgucker
Dito... Bei mir rennt es unter WINE (Debian GNU/Linux 6.0.1/Squeeze) und habe die gleiche Fehlermeldung. Kann derzeit nichts machen/helfen, weil ich beim Renovieren bin. Ich hielt es für einen Fehler wegen WINE, aber wenn Du unter Windows (welches?) bist, sieht der Fall schon anderst aus... Grüße Michelle
Benutze Windows 7 (32Bit) falls das irgendwie weiterhilft. Habs aber auch schon an nem andren Rechner mit Windows 7 (64 Bit) versucht mit gleichem Error... Echt ärgerlich das Ganze
Wenn du mit "Log" den Code meinst.. Klaro ;-) Ist aber wie schon gesagt ein Code von TI. Also Fehler im Code selbst halte ich für unwahrscheinlich... /*********************************************************************** ******* * MSP-EXP430G2-LaunchPad User Experience Application * * 1. Device starts up in LPM3 + blinking LED to indicate device is alive * + Upon first button press, device transitions to application mode * 2. Application Mode * + Continuously sample ADC Temp Sensor channel, compare result against * initial value * + Set PWM based on measured ADC offset: Red LED for positive offset, Green * LED for negative offset * + Transmit temperature value via TimerA UART to PC * + Button Press --> Calibrate using current temperature * Send character '°' via UART, notifying PC ************************************************************************ ******/ #include "msp430x20x2.h" #define LED0 BIT0 #define LED1 BIT6 #define LED_DIR P1DIR #define LED_OUT P1OUT #define BUTTON BIT3 #define BUTTON_OUT P1OUT #define BUTTON_DIR P1DIR #define BUTTON_IN P1IN #define BUTTON_IE P1IE #define BUTTON_IES P1IES #define BUTTON_IFG P1IFG #define BUTTON_REN P1REN #define TXD BIT1 // TXD on P1.1 #define RXD BIT2 // RXD on P1.2 #define APP_STANDBY_MODE 0 #define APP_APPLICATION_MODE 1 #define TIMER_PWM_MODE 0 #define TIMER_UART_MODE 1 #define TIMER_PWM_PERIOD 2000 #define TIMER_PWM_OFFSET 20 #define TEMP_SAME 0 #define TEMP_HOT 1 #define TEMP_COLD 2 #define TEMP_THRESHOLD 5 // Conditions for 9600/4=2400 Baud SW UART, SMCLK = 1MHz #define Bitime_5 0x05*4 // ~ 0.5 bit length + small adjustment #define Bitime 13*4//0x0D #define UART_UPDATE_INTERVAL 1000 unsigned char BitCnt; unsigned char applicationMode = APP_STANDBY_MODE; unsigned char timerMode = TIMER_PWM_MODE; unsigned char tempMode; unsigned char calibrateUpdate = 0; unsigned char tempPolarity = TEMP_SAME; unsigned int TXByte; /* Using an 8-value moving average filter on sampled ADC values */ long tempMeasured[8]; unsigned char tempMeasuredPosition=0; long tempAverage; long tempCalibrated, tempDifference; void InitializeLeds(void); void InitializeButton(void); void PreApplicationMode(void); // Blinks LED, waits for button press void ConfigureAdcTempSensor(void); void ConfigureTimerPwm(void); void ConfigureTimerUart(void); void Transmit(void); void InitializeClocks(void); void main(void) { unsigned int uartUpdateTimer = UART_UPDATE_INTERVAL; unsigned char i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT InitializeClocks(); InitializeButton(); InitializeLeds(); PreApplicationMode(); // Blinks LEDs, waits for button press /* Application Mode begins */ applicationMode = APP_APPLICATION_MODE; ConfigureAdcTempSensor(); ConfigureTimerPwm(); __enable_interrupt(); // Enable interrupts. /* Main Application Loop */ while(1) { ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled /* Moving average filter out of 8 values to somewhat stabilize sampled ADC */ tempMeasured[tempMeasuredPosition++] = ADC10MEM; if (tempMeasuredPosition == 8) tempMeasuredPosition = 0; tempAverage = 0; for (i = 0; i < 8; i++) tempAverage += tempMeasured[i]; tempAverage >>= 3; // Divide by 8 to get average if ((--uartUpdateTimer == 0) || calibrateUpdate ) { ConfigureTimerUart(); if (calibrateUpdate) { TXByte = 248; // A character with high value, outside of temp range Transmit(); calibrateUpdate = 0; } TXByte = (unsigned char)( ((tempAverage - 630) * 761) / 1024 ); Transmit(); uartUpdateTimer = UART_UPDATE_INTERVAL; ConfigureTimerPwm(); } tempDifference = tempAverage - tempCalibrated; if (tempDifference < -TEMP_THRESHOLD) { tempDifference = -tempDifference; tempPolarity = TEMP_COLD; LED_OUT &= ~ LED1; } else if (tempDifference > TEMP_THRESHOLD) { tempPolarity = TEMP_HOT; LED_OUT &= ~ LED0; } else { tempPolarity = TEMP_SAME; TACCTL0 &= ~CCIE; TACCTL1 &= ~CCIE; LED_OUT &= ~(LED0 + LED1); } if (tempPolarity != TEMP_SAME) { tempDifference <<= 3; tempDifference += TIMER_PWM_OFFSET; TACCR1 = ( (tempDifference) < (TIMER_PWM_PERIOD-1) ? (tempDifference) : (TIMER_PWM_PERIOD-1) ); TACCTL0 |= CCIE; TACCTL1 |= CCIE; } } } void PreApplicationMode(void) { LED_DIR |= LED0 + LED1; LED_OUT |= LED0; // To enable the LED toggling effect LED_OUT &= ~LED1; BCSCTL1 |= DIVA_1; // ACLK/2 BCSCTL3 |= LFXT1S_2; // ACLK = VLO TACCR0 = 1200; // TACTL = TASSEL_1 | MC_1; // TACLK = SMCLK, Up mode. TACCTL1 = CCIE + OUTMOD_3; // TACCTL1 Capture Compare TACCR1 = 600; __bis_SR_register(LPM3_bits + GIE); // LPM0 with interrupts enabled } void ConfigureAdcTempSensor(void) { unsigned char i; /* Configure ADC Temp Sensor Channel */ ADC10CTL1 = INCH_10 + ADC10DIV_3; // Temp Sensor ADC10CLK/4 ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE; __delay_cycles(1000); // Wait for ADC Ref to settle ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled tempCalibrated = ADC10MEM; for (i=0; i < 8; i++) tempMeasured[i] = tempCalibrated; tempAverage = tempCalibrated; } void ConfigureTimerPwm(void) { timerMode = TIMER_PWM_MODE; TACCR0 = TIMER_PWM_PERIOD; // TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode. TACCTL0 = CCIE; TACCTL1 = CCIE + OUTMOD_3; // TACCTL1 Capture Compare TACCR1 = 1; } void ConfigureTimerUart(void) { timerMode = TIMER_UART_MODE; // Configure TimerA0 UART TX CCTL0 = OUT; // TXD Idle as Mark TACTL = TASSEL_2 + MC_2 + ID_3; // SMCLK/8, continuous mode P1SEL |= TXD + RXD; // P1DIR |= TXD; // } // Function Transmits Character from TXByte void Transmit() { BitCnt = 0xA; // Load Bit counter, 8data + ST/SP while (CCR0 != TAR) // Prevent async capture CCR0 = TAR; // Current state of TA counter CCR0 += Bitime; // Some time till first bit TXByte |= 0x100; // Add mark stop bit to TXByte TXByte = TXByte << 1; // Add space start bit CCTL0 = CCIS0 + OUTMOD0 + CCIE; // TXD = mark = idle while ( CCTL0 & CCIE ); // Wait for TX completion } // Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { if (timerMode == TIMER_UART_MODE) { CCR0 += Bitime; // Add Offset to CCR0 if (CCTL0 & CCIS0) // TX on CCI0B? { if ( BitCnt == 0) CCTL0 &= ~ CCIE; // All bits TXed, disable interrupt else { CCTL0 |= OUTMOD2; // TX Space if (TXByte & 0x01) CCTL0 &= ~ OUTMOD2; // TX Mark TXByte = TXByte >> 1; BitCnt --; } } } else { if (tempPolarity == TEMP_HOT) LED_OUT |= LED1; if (tempPolarity == TEMP_COLD) LED_OUT |= LED0; TACCTL0 &= ~CCIFG; } } #pragma vector=TIMERA1_VECTOR __interrupt void ta1_isr(void) { TACCTL1 &= ~CCIFG; if (applicationMode == APP_APPLICATION_MODE) LED_OUT &= ~(LED0 + LED1); else LED_OUT ^= (LED0 + LED1); } void InitializeClocks(void) { BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; BCSCTL2 &= ~(DIVS_3); // SMCLK = DCO / 8 = 1MHz } void InitializeButton(void) // Configure Push Button { BUTTON_DIR &= ~BUTTON; BUTTON_OUT |= BUTTON; BUTTON_REN |= BUTTON; BUTTON_IES |= BUTTON; BUTTON_IFG &= ~BUTTON; BUTTON_IE |= BUTTON; } void InitializeLeds(void) { LED_DIR |= LED0 + LED1; LED_OUT &= ~(LED0 + LED1); } /* ************************************************************* * Port Interrupt for Button Press * 1. During standby mode: to exit and enter application mode * 2. During application mode: to recalibrate temp sensor * *********************************************************** */ #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void) { BUTTON_IFG = 0; BUTTON_IE &= ~BUTTON; /* Debounce */ WDTCTL = WDT_ADLY_250; IFG1 &= ~WDTIFG; /* clear interrupt flag */ IE1 |= WDTIE; if (applicationMode == APP_APPLICATION_MODE) { tempCalibrated = tempAverage; calibrateUpdate = 1; } else { applicationMode = APP_APPLICATION_MODE; // Switch from STANDBY to APPLICATION MODE __bic_SR_register_on_exit(LPM3_bits); } } #pragma vector=WDT_VECTOR __interrupt void WDT_ISR(void) { IE1 &= ~WDTIE; /* disable interrupt */ IFG1 &= ~WDTIFG; /* clear interrupt flag */ WDTCTL = WDTPW + WDTHOLD; /* put WDT back in hold state */ BUTTON_IE |= BUTTON; /* Debouncing complete */ } // ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) { __bic_SR_register_on_exit(CPUOFF); // Return to active mode }
Sorry, ich meinte den Build log. Also die komplette Ausgabe bis dein Error erscheint. Ich hoffe mal das: D:\Texas Instruments\ccsv4\utils\gmake\gmake main.obj gmake: *** [main.obj] Error 1 Build complete for project Temperature_Sense_Demo nicht die einzige ausgabe ist.
Also während des Compilierens erscheinen kurz folgende Zeilen (siehe Anhang). Ich hab während des Compilierens einen Screenshot gemacht. Nach dem Compilieren stehen nur die Zeilen da, die ich oben beschriebenen Zeilen mit denen ich wenig anfangen kann... **** Build of configuration Debug for project Temperature_Sense_Demo **** D:\Texas Instruments\ccsv4\utils\gmake\gmake -k all gmake: *** [main.obj] Error 1 gmake: Target `all' not remade because of errors. Build complete for project Temperature_Sense_Demo
Auf Deinem Screenshoot ist aber kein wirklicher Fehler zu sehen... Das ist das "remake". Den gmake: [clean] Error 1 kannste ignorieren (hatte ich auch), aber wo sind die anderen Fehler? Kompiliere das Projekt nochmal durch und poste das, was im unteren Fenster drin ist KOMPLETT. Ich habe dort gut 20 Zeilen an Fehler gehabt... Leider konnte ich unter WINE das nicht kopieren. Das hat sich geweigert Grüße Michelle
Wenn ichs das erste mal kompiliere steht im unteren Fenster ausschließlich das was ich schon gepostet habe. Ich habs auch nochmal angehängt. Dort siehst du auch keine Scrollmöglichkeit oder so... Die kurze Meldung ist alles was ich krieg. **** Build of configuration Debug for project Temperature_Sense_Demo **** D:\Texas Instruments\ccsv4\utils\gmake\gmake -k all gmake: *** [main.obj] Error 1 gmake: Target `all' not remade because of errors. Build complete for project Temperature_Sense_Demo (Noch nicht mal nen nichtssagenden Fehlercode F3983-45_347 ala Windows nachdem man wenigstens leicht googlen könnte ;-)
Umgucker schrieb: > gmake: Target `all' not remade because of errors. Wäre trotzdem gut zu wissen was für errors das sind. Muss man vielleicht bei den Projekt Einstellungen das -v flag hinzufügen?
Mach mal Project -> Clean. Dann baut er alles neu und zeigt auch die Fehler an. Ist so eine Eclipse-Macke...
Ist das richtige Target eingestellt? Sieht nicht so aus. Bzw. hängt da überhaupt ein MSP430 inkl. FET am PC?
Wenn ich in den Quelltext noch ein #include "msp430.h" oben einfüge, kopiliert es. Ohne fehlen seltsamerweise die Deklarationen der Timer A Register. Target steht auf MSP430G2232. Ob der jetzt angeschlossen ist oder nicht, ist ja fürs kompilieren egal.
Also, nochmals vielen Dank für die reichlichen Hilfestellungen. Zum Target: In der Originalversion von TI stand da: #include "msp430x20x2.h" Ich habs mal auf den entsprechenden Controller geändert der aktuell verwendet wird, hat aber auch nix gebracht (deswegen war das noch in der Version die ich hochgeladen hab) Und ob mit oder ohne angeschlossenem MSP is auch Wurst, gibt immer den selben Error. Echt zum K... Zum Clean: Danke für den Tip, wenn ich die Clean Funktion nutze steht im Log Fenster folgendes: **** Clean-only build of configuration Debug for project Temperature_Sense_Demo **** D:\Texas Instruments\ccsv4\utils\gmake\gmake -k clean DEL /F "Temperature_Sense_Demo.out" gmake: [clean] Error 1 (ignored) DEL /F ".\main.obj" gmake: [clean] Error 1 (ignored) DEL /F ".\main.pp" gmake: [clean] Error 1 (ignored) gmake: [clean] Error 1 (ignored) Build complete for project Temperature_Sense_Demo
Nope, geht auch nicht. Dann hab ich wieder nur D:\Texas Instruments\ccsv4\utils\gmake\gmake main.obj gmake: *** [main.obj] Error 1 Build complete for project Temperature_Sense_Demo
sieht für mich nach einem UAC Problem aus. Kann es sein, dass die Anwendung keine Rechte hat, in dem Verzeichnis was zu ändern und deswegen das clean abbricht? geh mal in den Ordner und ändere die Rechte so, dass auch alle Benutzer vollzugriff haben
Achso, und egal ob ich die #include "msp430.h" einbinde oder nicht, der Fehler ist immer derselbe. Wenns bei Dir klappt und bei mir nicht, dann kann es doch nur an irgendwelchen externen Dingen liegen oder? Also ka.. Irgendwelche Einstellungen vielleicht beim Projektanlegen oder so!?
Ähm... Wie mach ich das denn mit dem Vollzugriff? Sorry für die dumme Frage...
rechts auf den ordner klicken und dort unter sicherheit auf den bearbeiten button klicken. Hier sollte eine UAC-Bestätigung erorderlich sein. [Rechnername]/Benutzer oder so auswählen und dann unten das Häkchen bei Vollzugriff setzen. Ich weiß allerdings nicht, ob das bei irgendwelchen Home-Versionen eingeschränkt ist. So gut kenne ich mich mit Win7 nicht aus. Du könntest auch versuchen die Samples in den Benuterdaten-Ordner zu verschieben/kopieren und von dort aus öffnen. oder du versuchst eclipse als adminisrator zu starten (prinzipiell ist sowas immer nicht zu empfehlen) Ist aber nur geraten - obs wirklich daran liegt weiß ich nicht.
ok, hab ich auch probiert und klappte auch nicht. ABER: Beim Rechtsklick auf den Ordner ist mir aufgefallen dass der komplette Ordner schreibgeschützt ist (warum auch immer). Der Versuch dieses Häkchen Schreibgeschützt zu entfernen scheint auch alles gut zu klappen, also keine Fehlermeldung oder so, aber wenn ich dann wieder gucke ist das Häkchen wieder gesetzt. Könnte es daran liegen und wenn ja wie zur Hölle krieg ich dieses Häkchen da weg?
PS. Bitte verzeiht mir die ganzen grammatikalischen Exzesse ;-) Ich weiß auch nicht was mit mir los is... Vielleicht auch ein Error löl
Umgucker schrieb: > Könnte es daran liegen und wenn ja wie zur Hölle krieg ich dieses > Häkchen da weg? Ja, es wird am Schreibschutz liegen. Alle Anwendungen schließen, die Zugriff auf den Ordner, Unterordner Dateien daraus haben. Dann wirds was.
Oh man, ich kotz gleich! Ich krieg dieses verf... Häkchen nicht weg. Der tut so als macht er was (also er rechnet irgendwas und man sieht einen doofen bearbeitungsbalken) Aber wenn ich dann nochmal mit der rechten maustaste auf den ordner gehe ist es wieder da. Hab eben extra nochmal neu gestartet, hilft auch nicht! Doofe Frage, hab ich bei der Installation was falsch gemacht? Wüsste jetz auch nicht was man da falsch machen kann aber ich habe diesen Ordner nie als schreibgeschützt deklariert oder so. Ich versteh nicht wieso der schreibgeschützt ist...
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.