Quasiment tout est en dans le titre. Je voudrais faire un petit bricolage stand alone avec un atmega328 qui n'aura pas de quartz et fonctionnera donc sur l'horloge interne de l'atmega. Pour le développement et mes tests, je vais donc changer les fusibles d'une l'arduino pour qu'elle utilise cette horloge plutôt que le quartz.
Sachant que certaines librairies n'acceptent pas forcément le changement de fréquence, j'aurais souhaité savoir ce qu'il en était de wire.h, le but du montage étant de piloter un module en i²C.
Je pense que oui parce que la gestion de l'I2C fait partie du "coeur" du "système Wiring/arduino" et que les cartes à 8 MHz sont gérées.
Je répond d'une tablette et je n'ai pas la réponce "ferme" immédiatement mais je voudrais faire quelques précision.
Il n'y a pas "pour parler avec les mots justes" de bibliothèque Wire.h
Déja parce que Wire.h n'est que le fichier d'en tête, le fichier qui fait le travail est le fichier Wire.cpp.
Ensuite parce que le nom réel de la classe est "TwoWire". " Wire" n'est qu'un objet instancié sur la classe "TwoWire", cette instanciation se faisant en fin de fichier " Wire.h".
TwoWire n'est que le surnom donné par Atmel au protocole I2C ( pour ne payer sa cotisation au consortium I2C).
Dans les micros l'I2C n'est pas gérée par logiciel mais de façon matérielle. Comme pour les timers et le SPI le travail est fait par des morceaux de pure électronique indépendants de la zone programme.
Bien sûr ils communiquent avec la zone programme par l'intermédiaire des "registres", mais une fois lancés ils vivent leur vie.
Revenons à la question initiale.
Dans l'I2C il n'y a que la fréquence qui se règle.
La fréquence n'est pas fixée par la norme. La norme " recommande" quelques fréquences pour faciliter l'interopérabilté. Ces fréquences sont 100 kHz et 400 kHz.
La grande majorité des modules I2C utilisent le 100 kHz c'est pourquoi dans la bibliothèque "TwoWire" Wiring/arduino a choisi la fréquence 100 kHz bien que les avr sont garantis jusqu'à 400 kHz.
Je pense qu'une lecture attentive du début du fichier Wire.cpp devrait donner la réponce.
En fait, je savais que l'ISP marchait quelque soit la fréquence puisque je l'utilise pour programmer le µC (même direct sorti d'usine, où j'ai l'impression qu'ils sont par défaut à 1Mhz. J'ai une carte USBTinyISP).
Par contre, j'ai encore jamais essayé de bricoler avec un module I2C, et donc je voulais être sur avant de me lancer dans les joyeusetés !
Donc encore merci à vous, et désolé pour le ".h" (en plus, je le savais ^^)