Bonjour
Je planche sur un dispositif pouvant déclencher des actions selon l’heure, le soleil, la lune..... Pour autonomiser l’arduino, il fallait aussi un RTC à basse consommation. Le PCF 8563 est parfait à cet égard ,( consommation 10 à 50 µA vs un DS1307 à 200µA en stand-by), mais je veux opter pour un RV1805C3 à la consommation dérisoire de 0.022 µA. Ce RTC a d’autres atouts dont :
- la gestion d’un supercondensateur autorisant une autonomie de 170 jours,
- la possibilité de couper l’alimentation de l’Arduino et des ses acolytes (LDO, bluetooth, esp8266,etc )
et surtout
-512 OCTETS DE RAM.
Pour mon programme, cette RAM est une bénédiction . Cependant je ne sais pas la faire fonctionner pleinement.
En effet il y a quatre partitions de 64 octets de RAM d’abord, suivi de deux partitions de 128 octets de l’autre. Cependant ces partitions dépendent pour la première de 2 bits, la seconde de 1 bit de poids fort, dans le registre précédent.
VOIR LES DEUX IMAGES JOINTES
La librairie RV1805C3 Macro Yau (comme celle similaire de Adafruit) ne proposant qu’une seule adresse dans la fonction readBytes ou writeBytes, il en résulte qu’on ne peut utiliser que 64 octets (au lieu de 256) dans la première RAM et 128 (au lieu de 256 dans la seconde)
uint8_t RV1805C3::readByteFromRegister(uint8_t address) {
uint8_t value = 0;
_i2cPort->beginTransmission(RV1805C3_ADDRESS);
_i2cPort->write(address);
_i2cPort->endTransmission(false);
_i2cPort->requestFrom(RV1805C3_ADDRESS, 1);
value = _i2cPort->read();
_i2cPort->endTransmission();
return value;
}
bool RV1805C3::writeByteToRegister(uint8_t address, uint8_t value) {
_i2cPort->beginTransmission(RV1805C3_ADDRESS);
_i2cPort->write(address);
_i2cPort->write(value);
return (_i2cPort->endTransmission() == 0);
}
Je n’arrête pas de plancher mais je ne trouve pas de solution.
En effet la première adresse de mémoire étant 0x40, on perd d’entrée 64 octets
La seconde adresse idem, oblige à commencer à 0x80 et on perd 128 octets.
Comment peut-on simplement utiliser les 512 octets de la RAM ? Je sais modifier les registres , mais je bloque car je ne vois pas de solution pour les adresses de RAM en dessous de 0x40 et en dessous de 0x80 ? Un énorme casse-tête très au-delà de mes compétences et de mon imagination.
Merci infiniment de m’aider ou pour le moins de me diriger

