Question:
I2C RTC retourne de mauvais moments - parfois
David
2014-08-31 23:54:42 UTC
view on stackexchange narkive permalink

J'ai une horloge TinyRTC I2C dans l'un de mes projets Arduino, et cela fonctionne la plupart du temps. Mais parfois, il indiquera l'heure comme 165 heures, 85 minutes et 25 secondes (165: 85: 25) pendant quelques secondes, puis reviendra à l'heure correcte.

Je pense que cela a quelque chose à voir avec un bus I2C assez compliqué que j'exécute: il a 12 appareils connectés (l'horloge, un LCD et 10 lumières programmables BlinkM LED).

Voici ce que j'ai essayé de déboguer, en vain:

  • Remplacement du RTC et de la batterie
  • Remplacement des résistances pullup I2C
  • Refait le câblage I2C
  • J'ai vérifié la consommation de courant de mon projet (.2A) et s'est assuré que le bloc d'alimentation peut gérer cela (il peut)
  • J'ai utilisé 3 blocs d'alimentation différents au cas où je serais obtenir du bruit

Je pense que c'est quelque chose à voir avec le bus I2C ... l'horloge fonctionne bien quand il ne se passe rien d'autre dans le bus, mais dès qu'il y a beaucoup d'activité ( Les LED envoyant des messages, ou peut-être d'autres choses), cela commence à rapporter l'heure comme 165: 85: 25).

Toute idée de la façon dont je pourrais (a) isoler la cause de ce problème; (b) mettre en œuvre une solution?

http://arduino.cc/en/Reference/WireEndTransmission Avez-vous essayé le paramètre stop et / ou vérifié les conditions d'erreur qui sont renvoyées? Difficile de dire ce qui ne va pas sans circuit ni code.
Quel code / bibliothèque avez-vous utilisé? Quelle était l'heure prévue pour 165: 85: 25?
Quelle est la taille de vos tractions dans le bus?
Il peut s'agir d'un code d'erreur pour I2C ou d'un rapport d'état du TINY RTC. Alors, comment êtes-vous sûr qu'il répond avec l'heure actuelle?
@jippie - Votre lien était utile ... je vais essayer de ralentir le bus I2C au cas où il y aurait un problème de communication avec autant de périphériques.
@Gerben - www.pjrc.com/teensy/td_libs_DS1307RTC.html
@Lean - Résistances pullup 4,7k
@Treesrule14 - L'horloge fonctionne bien pendant des heures à la fois ... puis signale ces moments étranges, qui se produisent lorsqu'il y a une autre activité dans le bus
Avez-vous vérifié que vous n'avez pas d'appareils avec des adresses en conflit sur le bus?
Assurez-vous de ne disposer que d'un seul jeu de résistances pull-up.
Un répondre:
Frank Lu
2015-02-04 06:32:05 UTC
view on stackexchange narkive permalink

Un tel problème intermittent me semble être un problème d'intégrité du signal matériel, en particulier autour de la puce RTC du bus I2C. Avez-vous rencontré un problème avec un autre appareil sur le même bus I2C (par exemple lorsque toutes les LED sont allumées)? Sinon, vérifiez le niveau de bruit sur la puissance de la puce RTC et la masse. En outre, la spécification I2C a une limite sur la charge de capacité du bus jusqu'à 400 pF maximum. Lorsqu'il y a trop de charges de périphériques I2C sur le même bus, le bus peut devenir vulnérable au bruit du système.

Suggestion de débogage: Pour affiner s'il s'agit d'un problème de charge I2C, ajoutez une puce de pilote de bus I2C entre la carte Arduino principale et votre périphérique. Par exemple, P82B96 de TI. Voir les spécifications ici. http://www.ti.com/lit/ds/symlink/p82b96.pdf



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...