Avoir un robot à l’heure n’est pas toujours une priorité, mais arriver à contrôler une puce en I2C est un exercice intéressant.
En particulier, la puce RTC (Real Time Clock) permet d’avoir à disposition de notre programme une horloge autonome, ce qui peut être utile pour synchroniser des étapes du programme sans reposer sur les compteurs internes qui sont souvent surchargés.
C’est également l’occasion de décortiquer une datasheet de A à Z et enfin c’est le premier composant que j’avais à disposition pour tester la communication I2C ;-)
Description du composant
On va parler ici du Dallas DS1307, une horloge RTC archi-connue disponible pour quelques euros. C’est une puce (en boitier DIL sur la photo) à 8 pattes.
| Pin | Nom | Rôle |
| 1 | X1 | cristal |
| 2 | X2 | cristal |
| 3 | Vbat | tension batterie |
| 4 | GND | masse |
| 5 | SDA | ligne des données (data) I²C |
| 6 | SCL | ligne d’horloge (clock) I²C |
| 7 | SQW/out | sortie signal carré |
| 8 | Vcc | tension logique 5V |
Datasheet
La datasheet nous apprend qu’il s’agit en fait d’une mémoire (d’une taille 64 octets de 8 bits) avec un programme capable de tenir à jour un calendrier grâce à une pile de 3V et d’un oscillateur.
On parle avec ce composant grâce à une liaison série à deux fils (c’est de l’I2C qui ne veut pas dire son nom) et le DS1307 est considéré comme esclave d’adresse 1101000 (0x68 pour les intimes). C’est bien sûr le microcontrôleur qui sera le maitre et notre programme interrogera la puce qui lui répondra l’heure qu’il est.
En résumé, il faut connecter à ce composant :
un cristal (semblable à ceux qu’on trouve dans les montres à quartz, et pour cause !)
une batterie 3V (on utilise une pile lithium CR2032)
une tension d’alimentation 5V (celle du µC)
la connexion au bus I2C
deux résistances de pull-up sur le bus I2C
... à suivre pour la programmation
Répondre à cet article
