Arduino & Eclipse - Probleme - jetzt mit Wire & twi.h (auch in der Arduino IDE!)

Hi,

ich richte mir gerade Eclipse für Arduino ein, nach der Anleitung im ArduinoPlayground: http://playground.arduino.cc/Code/Eclipse

Ich hänge jetzt gerade bei Schritt “Eclipse configuration for the Arduino core library - Install/link source files”:

•Copy the contents of the Arduino IDE’s hardware/cores/arduino directory into this “src” folder. If you are using Arduino >1.0, you also need to copy the pins_arduino.h file out of the folder that matches your target under hardware/arduino/variants/.
[…]
•Build the project by clicking the hammer in the tool bar, or by selecting Project->Build All. It will build a file called libProjectName.a (e.g. libDiecimilaCore.a). This is the core library file.

1.) Kann ich die Dateien mit den Ordnern in den src-Ordner ziehen, oder muss ich die aus den jeweiligen Ordnern rauszupfen? Was ja doof wäre, denn in \arduino und in \robots sind ja gleich benannte Dateien drinnen.

2.) Ich wollte das ganze eigentlich für zwei Boardvarianten machen, habe auch extra schon zwei “configuration” angelegt (Uno und Mega32). Aber ich kann ja nicht beide “pins_arduino.h” in einen Ordner kopieren. Also wohl zwei Bibliotheksprojekte anlegen?

3.) Das Dingens spuckt mir nach dem Build die angesprochene “It will build a file called libProjectName.a (e.g. libDiecimilaCore.a)” nicht aus. Wo soll die liegen? Im Workspace?

VG
da_user

Oder mal eine andere Frage zu drittens: Wo sollte die File den liegen?

Hallo,

einfacher gehts mit dem Eclipse plugin.

Hab auch mit beidem rumprobiert bin aber dann beim Plugin hängen geblieben. Habe Juno neu auf meinem Notebook installiert, Ar. 1.5.2 und dann das Plugin V 2.1.0.4 funktioniert einwandfrei.

Hatte vorher auf meinem normalen PC Probleme mit der Installation/ bzw. Konfiguration von AVR pluglin bzw auch mit dem Eclipse plugin.

So, einen Schritt weiter:

ich habe es irgendwie geschafft tatsächlich die Core-Lib zu kompilieren, da ich die Arduino-pins.h wohl nur durch austauschen ändern kann, habe ich mir für die Core-Lib jetzt zwei Projekte angelegt, die für den Uno kompiliert er einwandfrei, die mit der pins.h für den AtMega32 ( Atmega32 (16PU) mit Arduino IDE 1.0 ? - Mikrocontroller.net ) schmeißt Kompilerfehler:

Description Resource Path Location Type
'PINA' undeclared here (not in a function) pins_arduino.h /ArduinoMega32/scr line 73 C/C++ Problem
make: *** [scr/wiring_digital.o] Error 1 C/C++ Problem
initializer element is not constant pins_arduino.h /ArduinoMega32/scr line 73 C/C++ Problem
(near initialization for 'port_to_input_PGM[1]') pins_arduino.h /ArduinoMega32/scr line 73 C/C++ Problem
'PORTA' undeclared here (not in a function) pins_arduino.h /ArduinoMega32/scr line 65 C/C++ Problem
'DDRA' undeclared here (not in a function) pins_arduino.h /ArduinoMega32/scr line 57 C/C++ Problem
(near initialization for 'port_to_output_PGM[1]') pins_arduino.h /ArduinoMega32/scr line 65 C/C++ Problem
initializer element is not constant pins_arduino.h /ArduinoMega32/scr line 65 C/C++ Problem

Wer kann helfen?

Ach ja, das ArduinoPlugIn von http://www.baeyens.it probiere ich auch gerade aus. Ich habe aber das Problem, dass ich den Arduino-Pfad nicht unter “files to index up-front” zum Indexer hinzufügen kann, da mein Eclipse (Kepler) diese Eingabezeile nicht hat!?

So, weitere Misserfolge mit dem PlugIn, und zwar mit Serial & der Wire-Bibliothek.

Habe natürlich schon in der FAQ vom PlugIn nachgesehen, hat mir aber nicht weitergeholfen.

Laut der FAQ wird das fehlende Symbol "Serial" nur vom Linker angezeigt, der Kompiler machts aber ohne zu Mucken... nö, denkste, der schimpft auch.

Mit der Wire-Bibliothek das gleiche, habe dann mal aus der FAQ den Thread hier in diesem Forum aufgerufen ( http://forum.arduino.cc/index.php/topic,86344.0.html ) und entsprechend die twi.h angepasst, jetzt meckert er über diese auch.

Ich poste mal meinen bisherigen Quellcode:

// Do not remove the include below
#include "EinTest.h"

#define LED 13
#define LogIntervall 100

#define LM75_1Adress 0x48


//The setup function is called once at startup of the sketch
void setup()
{
	pinMode(LED, OUTPUT);
	Wire.begin();
	Serial.begin(115200);
}

long nextBlinkEvent = 0;
long nextTempLogEvent = 0;
long MillisThisRun = 0;

// The loop function is called in an endless loop
void loop()
{
	MillisThisRun = millis();

	if(MillisThisRun > nextBlinkEvent)
	{
		digitalWrite(LED,!digitalRead(LED));
		nextBlinkEvent = MillisThisRun + 1000;
	}

	if(MillisThisRun > nextTempLogEvent)
	{
		Wire.beginTransmission(LM75_1Adress);
		Wire.write(0x00);
		Wire.requestFrom(LM75_1Adress, 1);
		int tempVal = 100;


		if (Wire.available())
		{
			tempVal = Wire.read();
		}

		Wire.endTransmission();
		Serial.print("Temp: ");
		Serial.println(tempVal);

		nextTempLogEvent = MillisThisRun + LogIntervall;
	}
}

Die Fehlermeldungen:

Beschreibung	Ressource	Pfad	Position	Type
'false' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 233	C/C++ Problem
'true' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 226	C/C++ Problem
make: *** [Wire/utility/twi.o] Error 1			 	C/C++ Problem
conflicting types for 'twi_writeTo'	twi.c	/EinTest/Wire/utility	Zeile 192	C/C++ Problem
'false' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 153	C/C++ Problem
'true' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 146	C/C++ Problem
conflicting types for 'twi_readFrom'	twi.c	/EinTest/Wire/utility	Zeile 115	C/C++ Problem
'SCL' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 77	C/C++ Problem
'SDA' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 76	C/C++ Problem
implicit declaration of function 'digitalWrite'	twi.c	/EinTest/Wire/utility	Zeile 76	C/C++ Problem
'false' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 73	C/C++ Problem
'true' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 72	C/C++ Problem
pins_arduino.h: No such file or directory	twi.c	/EinTest/Wire/utility	Zeile 38	C/C++ Problem
Arduino.h: No such file or directory	twi.c	/EinTest/Wire/utility	Zeile 28	C/C++ Problem
previous declaration of 'twi_readFrom' was here	twi.h	/EinTest/Wire/utility	Zeile 46	C/C++ Problem
previous declaration of 'twi_writeTo' was here	twi.h	/EinTest/Wire/utility	Zeile 47	C/C++ Problem
Method 'beginTransmission' could not be resolved	EinTest.cpp	/EinTest	Zeile 35	Semantic Error
Invalid project path: Include path not found (C:\Users\da_user\Eclipse Workspaces\Arduino PlugIn\EinTest\EinTest\EinTest).	EinTest		pathentry	Path Entry Problem
"/*" within comment	twi.h	/EinTest/Wire/utility	Zeile 2	C/C++ Problem
Invalid project path: Include path not found (C:\Users\da_user\Eclipse Workspaces\Arduino PlugIn\EinTest\EinTest\Wire).	EinTest		pathentry	Path Entry Problem
Method 'send' could not be resolved	EinTest.cpp	/EinTest	Zeile 36	Semantic Error
Invalid project path: Include path not found (C:\Users\da_user\Eclipse Workspaces\Arduino PlugIn\EinTest\EinTest\Arduino_Uno\arduino).	EinTest		pathentry	Path Entry Problem
Invalid project path: Include path not found (C:\Users\da_user\Eclipse Workspaces\Arduino PlugIn\EinTest\EinTest\Arduino_Uno\standard).	EinTest		pathentry	Path Entry Problem
unterminated #ifndef	twi.h	/EinTest/Wire/utility	Zeile 21	C/C++ Problem
Method 'requestFrom' could not be resolved	EinTest.cpp	/EinTest	Zeile 37	Semantic Error
Symbol 'Serial' could not be resolved	EinTest.cpp	/EinTest	Zeile 15	Semantic Error
make: *** [Wire/utility/Kopie von twi.o] Error 1			 	C/C++ Problem
Symbol 'Wire' could not be resolved	EinTest.cpp	/EinTest	Zeile 37	Semantic Error
Symbol 'Wire' could not be resolved	EinTest.cpp	/EinTest	Zeile 36	Semantic Error
Symbol 'Wire' could not be resolved	EinTest.cpp	/EinTest	Zeile 35	Semantic Error
'true' undeclared (first use in this function)	twi.c	/EinTest/Wire/utility	Zeile 386	C/C++ Problem
Method 'begin' could not be resolved	EinTest.cpp	/EinTest	Zeile 15	Semantic Error
make: *** [Wire/Wire.o] Error 1			 	C/C++ Problem
Method 'begin' could not be resolved	EinTest.cpp	/EinTest	Zeile 14	Semantic Error
Symbol 'Wire' could not be resolved	EinTest.cpp	/EinTest	Zeile 14	Semantic Error

Edit:

Übrigens spinnt jetzt die ArduinoIDE auch rum, mit dem gleichen Code, die twi.h nach dem ersten Versuch wieder gegen die Originale ausgetauscht (und nur die #include-Zeile angepasst):

In file included from C:\Program Files\Arduino\libraries\Wire\Wire.cpp:26:
C:\Program Files\Arduino\libraries\Wire\utility/twi.h:2:2: warning: "/*" within comment
C:\Program Files\Arduino\libraries\Wire\utility/twi.h:21:1: error: unterminated #ifndef
C:\Program Files\Arduino\libraries\Wire\utility/twi.h: In member function 'uint8_t TwoWire::requestFrom(uint8_t, uint8_t, uint8_t)':
C:\Program Files\Arduino\libraries\Wire\utility/twi.h:46: error: too many arguments to function 'uint8_t twi_readFrom(uint8_t, uint8_t*, uint8_t)'
C:\Program Files\Arduino\libraries\Wire\Wire.cpp:85: error: at this point in file
C:\Program Files\Arduino\libraries\Wire\utility/twi.h: In member function 'uint8_t TwoWire::endTransmission(uint8_t)':
C:\Program Files\Arduino\libraries\Wire\utility/twi.h:47: error: too many arguments to function 'uint8_t twi_writeTo(uint8_t, uint8_t*, uint8_t, uint8_t)'
C:\Program Files\Arduino\libraries\Wire\Wire.cpp:140: error: at this point in file