leider bekomme ich beim kompilieren meines Arduino Sketches ein paar Warnungen:
In file included from C:\Users\simon\Desktop\Projekt Fitnessstudio\Arduino Code\gy521-read-angle_neu\gy521-read-angle_neu.ino:2:0: C:\Users\simon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\Wire/Wire.h: In function 'void loop()': C:\Users\simon\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\Wire/Wire.h:71:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)
^* Der Sketch verwendet 269528 Bytes (26%) des Programmspeicherplatzes. Das Maximum sind 1023984 Bytes. Globale Variablen verwenden 27424 Bytes (33%) des dynamischen Speichers, 54496 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes. esptool.py v2.6 2.6 esptool.py v2.6 Serial port COM4 Connecting.... Chip is ESP8266EX Features: WiFi MAC: 84:f3:eb:ee:4c:6e Uploading stub... Running stub... Stub running... Changing baud rate to 460800 Changed. Configuring flash size... Auto-detected Flash size: 4MB Flash params set to 0x0340 Compressed 273680 bytes to 199025... Writing at 0x00000000... (7 %) Writing at 0x00004000... (15 %) Writing at 0x00008000... (23 %) Writing at 0x0000c000... (30 %) Writing at 0x00010000... (38 %) Writing at 0x00014000... (46 %) Writing at 0x00018000... (53 %) Writing at 0x0001c000... (61 %) Writing at 0x00020000... (69 %) Writing at 0x00024000... (76 %) Writing at 0x00028000... (84 %) Writing at 0x0002c000... (92 %) Writing at 0x00030000... (100 %) Wrote 273680 bytes (199025 compressed) at 0x00000000 in 4.6 seconds (effective 478.0 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...
Wenn ich mir nun die erste Warnung ansehe, steht dort als Hinweis "Wire.h:71". D.h. ich gehe in die Zeile 71 der Libary, wo der Aufbau der Funktion "requestFrom" beschrieben ist.
Aber wo ist nun der Fehler? Das Beispielprogramm habe ich in den Anhang gepackt.
Dein Aufruf Wire.requestFrom(MPU6050_ADRESS, 7*2, true); passt auf beide Deklarationen.
Mit const byte MPU6050_ADRESS = 0x68; anstelle der #define - Zeile wird es vielleicht besser ? Das Beispiel wurde evtl. nicht für einen ESP geschrieben...
michael_x:
Dein Aufruf Wire.requestFrom(MPU6050_ADRESS, 7*2, true); passt auf beide Deklarationen.
Mit const byte MPU6050_ADRESS = 0x68; anstelle der #define - Zeile wird es vielleicht besser ? Das Beispiel wurde evtl. nicht für einen ESP geschrieben...
leider bleiben die Warnungen nach dem ersetzen der Zeile die gleichen.
Wie ist es denn möglich, den Aufruf auf eine Deklaration zu beschränken? Ich gehe mal nicht davon aus, dass die Datei wire.h angepasst werden muss.
So gehts:
const size_t registergroesse = 14;
Wire.requestFrom(MPU6050_ADRESS, registergroesse, true);
EDIT: Ich frage mich dennoch, wie dieses Beispielprogramm auf einem anderen Arduino ohne Warnungen funktioniert haben soll. Dieser Fehler hat ja nichts mit dem ESP8266 zutun, meiner Meinung nach.
die Wire Lib ist etwas kaputt wenn man das vorsichtig sagen darf. Jedenfalls sind 2 Methoden drin die eben Mist machen und Warnungen erzeugen. Kommentiere diese in der .h und .cpp aus und Ruhe ist. Warum die überhaupt drin sind kann ich dir nicht sagen. Machen eh nur ein versteckten cast von int auf byte. Der Sinn erschließt sich mir nicht, weil das Vortäuschung falscher Tatsachen wäre.
Gegen die anderen 3 Warnungen habe ich keine Lösung.
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function '__vector_39':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:447:49: warning: this statement may fall through [-Wimplicit-fallthrough=]
447 | twi_masterBuffer[twi_masterBufferIndex++] = TWDR;
| ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:448:5: note: here
448 | case TW_MR_SLA_ACK: // address sent, ack received
| ^~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:529:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
529 | if(0 == twi_txBufferLength){
| ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:534:5: note: here
534 | case TW_ST_DATA_ACK: // byte sent, ack returned
jetzt wo du es sagst. Hatte ich doch letztens erst in einem Thread selbst verwendet, aber weil 99% der User hier kein C++17 verwenden können, ging das nach hinten los. combie meinte irgendwann einmal das mit der IDE 1.9 (derzeit beta) eine neue Compilerversion Standard ist. Sollte dann C++17 können.
habe das heute im Zuge der 1.8.10 Installation versucht mit [[falltrough]] zu fixen. Klappt nicht. Man handelt sich tausend neue Warnungen und Fehler ein. Möglicherweise liegst an den .c Files statt .cpp. Umbenennen hilft auch nicht. Man kommt vom Hunderten ins Tausende. "undefined reference" usw.
Die Wire ist .cpp
und die utility\twi ist .c
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function '__vector_39':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:447:49: warning: this statement may fall through [-Wimplicit-fallthrough=]
447 | twi_masterBuffer[twi_masterBufferIndex++] = TWDR;
| ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:449:5: note: here
449 | case TW_MR_SLA_ACK: // address sent, ack received
| ^~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
530 | if(0 == twi_txBufferLength){
| ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:535:5: note: here
535 | case TW_ST_DATA_ACK: // byte sent, ack returned
Jetzt füge ich zwischen Zeile 447 und 448 ein
[[fallthrough]]; // hinzugefuegt
damit sollte die erste Warnung weg sein. Ne, man erhält
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c: In function '__vector_39':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:448:4: error: expected expression before '[' token
448 | [[fallthrough]]; // hinzugefuegt
| ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:448:6: error: 'fallthrough' undeclared (first use in this function)
448 | [[fallthrough]]; // hinzugefuegt
| ^~~~~~~~~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:448:6: note: each undeclared identifier is reported only once for each function it appears in
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:447:49: warning: this statement may fall through [-Wimplicit-fallthrough=]
447 | twi_masterBuffer[twi_masterBufferIndex++] = TWDR;
| ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:449:5: note: here
449 | case TW_MR_SLA_ACK: // address sent, ack received
| ^~~~
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:530:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
530 | if(0 == twi_txBufferLength){
| ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c:535:5: note: here
535 | case TW_ST_DATA_ACK: // byte sent, ack returned
| ^~~~
Mehrere Bibliotheken wurden für "docINA233.h" gefunden
Benutzt: C:\Users\Doc\Documents\Arduino\libraries\docINA233
Mehrere Bibliotheken wurden für "Wire.h" gefunden
Benutzt: C:\Program
Verstehe ich nicht. Als wenn er vor fallthrough warnen möchte aber es das Attribut nicht kennt bzw. erkennt.
habe das heute im Zuge der 1.8.10 Installation versucht mit [[falltrough]] zu fixen. Klappt nicht.
Da gibts eine GCC Spezialität, welche alle anderen Compiler wenigstens tolerieren können, auch wenn sie es nicht verstehen:
Versuche mal statt [[fallthrough]] dieses /* fall through */
(ist ja schließlich C und nicht C++, also ist die C++ Doku nicht anwendbar)
wie kommt man denn darauf?
Der Kommentar /* fall trough */ hilft. Jetzt ist Ruhe. Vielen Dank.
Jetzt werden schon Kommentare verarbeitet. Verrückte Welt.
wie kommt man denn darauf?
Der Kommentar /* fall trough */ hilft. Jetzt ist Ruhe. Vielen Dank.
Jetzt werden schon Kommentare verarbeitet. Verrückte Welt.