Forum: Mikrocontroller und Digitale Elektronik Twi und Arduino Mega


von Jens (Gast)


Lesenswert?

Hallöchen


ich habe ein Problem die Twi Schnittstelle bei meinem Arduino Mega zum 
laufen zu bringen.

Kennt sich da jemand aus damit?

von Jens (Gast)


Lesenswert?

Was bedeutet diese Fehlermeldung?


twi.c:623: error: attempt to use poisoned "SIG_2WIRE_SERIAL"
 SIGNAL(SIG_2WIRE_SERIAL)
        ^
attempt to use poisoned "SIG_2WIRE_SERIAL"

von foo (Gast)


Lesenswert?

Jens schrieb:
> twi.c:623: error: attempt to use poisoned "SIG_2WIRE_SERIAL"
>  SIGNAL(SIG_2WIRE_SERIAL)

Uralt-Code aus den Untiefen des Internets für völlig veraltete Versionen 
der avr-libc. Seit Jahren wird ISR() statt SIGNAL() benutzt. TWI_vect 
müsste der Ersatz für SIG_2WIRE_SERIAL sein.

von Karl H. (kbuchegg)


Lesenswert?

Wieso hast du dieses Problem überhaupt?
In den Arduino Code Untiefen gibt es doch sicher auch eine fix&fertige 
TWI Klasse.

https://www.arduino.cc/en/Reference/Wire

: Bearbeitet durch User
von Jens (Gast)


Lesenswert?

Hat jemand eine aktuelle Version der folgenden Dateien?


Ich würde die Wire.h / Wire.cpp

und die twi.h und twi.c benötigen.

Danke für eure Hilfe

von Jens (Gast)


Lesenswert?

Ich dachte ja auch das was ich gefunden habe ich die Version die auch 
die aktuellste ist.

von Jens (Gast)


Lesenswert?

Ich dachte ja auch,dass das was ich gefunden habe die aktuellste Version 
ist.

Reicht es denn nur die oben genannten im Namen zu ändern?

von Jens (Gast)


Lesenswert?

Warum wird denn nun dieser Fehler erzeugt?

Wire\Wire.cpp.o: In function `TwoWire::available()':
C:\Program Files 
(x86)\Arduino\hardware\arduino\avr\libraries\Wire/Wire.cpp:210: multiple 
definition of `TwoWire::available()'
Wire.cpp.o:C:\Users\Admin\AppData\Local\Temp\build6555287835592467589.tm 
p/Wire.cpp:369:  first defined here
Wire\Wire.cpp.o: In function `TwoWire::available()':

von foo (Gast)


Lesenswert?

Steht doch da: "multiple definition"

Du bindest die Wire-lib zweimal ein, einmal über dein Arduino-Projekt 
die Version die mit deiner Arduino-Installation kommt, und einmal deine 
eigene Version.

Zwei Dateien, die Funktionen mit identischen Namen definieren, vertragen 
sich nun mal nicht.

Eigentlich müsste bei einer aktuellen Arduino IDE aber auch eine 
aktuelle wire.cpp beiliegen...

von Jens (Gast)


Lesenswert?

Wie verhindere ich denn, dass der Compieler nur eine dieser Dateien und 
nicht zwei included?
Soll ich meine Datei aus dem Projektordnen entfernen?


Ja mich wundert das ja auch, dass das so eine alte Version ist. Hab die 
Arduion Software erst vor ein paar Tagen neu installiert um genau diesen 
Fehler auszuschließen.

Scheinbar fehlt aber in der Library die twi... oder?

von Karl H. (kbuchegg)


Lesenswert?

Jens schrieb:

> Soll ich meine Datei aus dem Projektordnen entfernen?
Ja

von CaptainAlbern (Gast)


Lesenswert?

Ich benutze zu Hause auch den Arduino Mega mit I2C bzw. TWI und habe 
dafür keine Library benutzt sondern die entsprechenden Routinen selbst 
geschrieben. War auch für einen Hobbybastler wie mich nicht ganz so 
schwer, es gibt hier auf dieser Seite ein Tutorial zu I2C. Das und die 
Datenblätter der zu kontaktierenden Slaves reichen, um das selbst zu 
programmieren. Außerdem weiß man danach, was konkret auf dem Bus abgeht. 
Ich habe leider im Moment keine Zeit das Tutorial zu suchen oder 
detaillierter zu antworten. Vielleicht wäre das auch eine Option.

von Ulrich F. (Gast)


Lesenswert?

Ich verstehe das Problem nicht!

Die Arduino Umgebung hat die Wire Lib an Bord.
Da muss keine Datei kopiert werden.
Und diese tuts mit dem Mega!
getestet

von Ulli (Gast)


Lesenswert?

Ich habe leider im Moment keine Zeit das Tutorial zu suchen oder
detaillierter zu antworten. Vielleicht wäre das auch eine Option.

ja das wäre praktisch

von Jens (Gast)


Lesenswert?

Ja auf jeden Fall

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.