Bonjour,
Je commençais à m'attaquer à la bibliothèque <Wire.h> pour voir s'il y avait des choses à optimiser.
Je copie Wire.h et Wire.cpp depuis le dossier
\arduino-1.8.12\hardware\arduino\avr\libraries\Wire\src
vers le dossier de mon projet INO.
Puis dans mon fichier .INO je remplace #include <Wire.h> par #include "Wire.h"
Le compilateur grogne car il ne trouve pas twi.h
En effet, dans Wire.cpp on a ceci :
Au passage je ne sais pas du tout à quoi sert le extern "C" qui encadre les #include
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 extern "C" { #include <stdlib.h> #include <string.h> #include <inttypes.h> #include "utility/twi.h" }
Je comprend que comme "utility/twi.h" est entre guillemets, il n'arrive plus à trouver le fichier.
Je cherche et je trouve twi.h et twi.cpp dans \arduino-1.8.12\hardware\arduino\avr\libraries\Wire\src\utility, que je copie dans le dossier de mon projet INO.
Je compile pour voir si ça marche.
Non seulement ça marche, mais mon programme compilé est plus court de 900 octets de flash
Hum... c'est trop beau pour être vrai, il y a sûrement des bugs bien foireux là dessous![]()
Je téléverse le programme, et ça fonctionne parfaitement
C'est cool d'avoir gratté 900 octets, je peux ajouter quelques fonctionnalités supplémentaires
Mais j'aimerais bien comprendre POURQUOI![]()
Je pense pouvoir optimiser car dans Wire.h il y a des tartines de fonctions et le #include <string.h> qui ne me plait pas beaucoup.
C'est logique vu qu'il existe une grande variété de périphériques I2C, notamment des écrans, mais j'en ai juste besoin pour des capteurs.
A bientôt
Partager