Etape 1: Le DS1307 en temps réel horloge
Pour ce petit projet, nous allons seulement il utiliser pour garder une trace de l’époque. C’est pourquoi il a besoin d’un cristal de quartz 32,768 kHz connecté entre les broches 1 et 2. Nous pouvons également ajouter une batterie avec + à la broche 3 et - à la borne 4. Cette mesure de ci à continuer à travailler lorsque le CC est éteint. Si vous ne voulez pas utiliser cette fonctionnalité, vous pouvez juste connecter la broche 3 à la borne 4 et tout fonctionne parfaitement.
Broche 5 et la broche 6 servira à transférer les données vers notre microprocesseur. Elles doivent être connectées aux broches SCL et SDA votre microprocesseur. Ces lignes doivent être tiré en haut par une résistance de 4K 7 pullup.
Bascom, travail avec les périphériques I2C est facile. Il faut seulement savoir 4 commandes :
- I2cstart: cette commant va communications démarrage I2c
- I2cstop: cette commande s’arrête la communication I2c
- Var I2crbyte : cette commande lit un octet à partir de l’appareil et le stocke dans 'var'
- Var I2cwbyte : cette commande écrit la variable "var" dans le dispositif
À l’aide de la commande d’écriture ou de lecture n’est pas suffisant, nous devrons également dire le dispositif si nous voulons écrire ou lire. Nous faisons cela en utilisant la bonne adresse. Ces adresses se trouvent dans la fiche technique. L’écriture-adresse du DS1307 est D0H et la lecture-adresse D1H (le H derrière elle nous disent que ce sont des chiffres hexadécimaux).
Le DS1307 envoie et souhaite recevoir des données en format BCD. Il s’agit d’une variante sur binaire pour diplays où chaque chiffre est représenté par quatre bits. Plus d’infos sur ce ici. Heureusement la conversion de BCD décimale et vice versa est très facile à Bascom.
- var = Makebcd(var) convertira décimale, hexadécimale et binaire en BCD
- var = Makedec(var) convertira hexadécimal, binaire et BCD en décimal
Les données sont stockées sur l’EI dans le registre. Vous pouvez les imaginer comme ces filingcabinets démodé. Chaque tiroir a son numéro et contient quelques infos :
H 00 secondes
01H Minutes
02H heures
Jour 03H
04 H Date le H nous disent que ce sont des chiffres hexadécimaux.
05H mois
06H an
07H contrôle
08H à 3FH Ram
Si nous voulons lire ou stocker des données va tout d’abord falloir dire le dispositif dans quel tiroir, nous voulons être. Nous pouvons le faire en écrivant le code hexadécimal pour ce tiroir à l’appareil. L’appareil puis nous accordera accès au tiroir. Après que vous écrivez ou lisez quelque chose d’ou à ce registre, que l’appareil va automatiquement sauter à la suivante. Il n’y a donc pas besoin d’envoyer l’emplacement chaque fois
Maintenant passons mettent ce code :
Pour ce code, vous aurez besoin estomper les heures comme octet, minutes comme octet et secondes tant que byte. Tout d’abord, nous allons définir l’horloge :
Secondes = Makebcd(Seconds) nous convertir nos variables en format BCD
Minutes = Makebcd(Minutes)
Heures = Makebcd(Hours)
réinitialiser le hours.6 nous réinitialisons bit 6 de la hoursbyte pour s’assurer que
notre horloge fonctionne en mode 24h. Si le bit 6 est 1 alors le
horloge tourne en mode 12h et le bit 5 sera alors
contient les données de AM/PM.
I2cstart
I2cwbyte & HD0 nous dire le dispositif que nous voulons écrire un octet
2cwbyte & H00 nous partons sur la caisse enregistreuse pour secondes hex 00
I2cwbyte secondes secondes d’ajout
I2cwbyte Minutes minutes ajout
I2cwbyte heures heures ajout
I2cstop
Maintenant notre horloge est réglée ! Permet de lire de lui maintenant.
I2cstart
I2cwbyte & HD0 nous dire le dispositif que nous voulons écrire un octet.
I2cwbyte & H00 nous demandons l’appareil pour aller au registre secondes.
I2cstop
I2cstart
I2cwbyte & HD1 nous dire le dispositif que nous voulons lire octets.
I2crbyte secondes, Ack nous lire les données et reconnaissez que nous voulons
pour lire l’octet suivant trop.
I2crbyte Minutes, Ack
I2crbyte heures, Nack nous n’avons pas hommage ici afin que l’appareil sait
que nous sommes fait lecture.
I2cstop
Heures = heures et & B00111111 supprimons bits 6 et 7, car ils contiennent d’autres
données. Si vous êtes en mode 12h, puis vous devrez
supprimer le bit 5 trop
Heures = Makedec(Hours) nous convertir au format décimal.
Minutes = Makedec(minutes)
Secondes = Makedec(seconds)
Maintenant, nous savons quelle heure il est.
Dans la prochaine étape, nous prendrons regarder de plus près le DS18B20.