version 0.1
Last UpDate : 03 fev 2013

partie d'un projet EDF Teleinfo

R.T.C DS1302 avec PIC18F46K22 ( MPLAB C18)

Apres avoir utilisé , assez facilement le DS1307 qui dialogue en I2C ,
Le gros avantage du DS1307 est d'avoir une sortie 1Hz ..
avec une led on est tout de suite fixé si l'horloge tourne avec son quartz .

je me suis remis au DS1302 vu que j'en avais 2 dans mes tiroirs et plus de DS1307.
j'avais déja utilisé le DS1302 en 100% ASM sur mon regulateur de chauffage..
ATTENTION cette horloge ne fonctionne pas en I2C mais en simili SPI (SPI software)
La transposition ASM -> C a ete assez laborieuse (étonnant,Non)
car j'ai rencontré des problemes avec le quartz horloger de 32768 Hz. , remettant en doute le software
Pas d'evolution des secondes !

Je me suis alors tourné sur une version C18 récoltée sur le WEB, sensée fonctionner
pour eliminer tout probleme software ....mais pas que !!!!. ne marche pas mieux que ma version C like asm.

Un coup d'oscillo sur le quartz => rien !
J'ai alors fait un montage de test avec in HTC4060 pour tester mes 3 differents quartz.
1 parmi les 3 , n'oscille pas => poubelle. Reste donc 2 normalement OK.
Je fais un test en reliant l'oscillateur 4060 ,qui lui delivre un niveau CMOS de 5V crete !
via une 10 kohms sur la pin 2 (Quartz In) du RTC DS1302 et je vois alors evoluer les secondes !
Je remonte alors ce quartz <ok> sur le DS1302 et remet l'oscillo.. rien avec mon probe (sonde oscillo) en 1/1
Je mets alors un probe en 1/10 ce qui a pour effet de minimiser la capa parasite rajoutée sur l'oscillateur et là
je mesure un signal de 1,2V cr à cr presque sinusoidal.
Des que je bascule le probe en 1/1 le signal diminue puis s'eteint..

Signal oscillo
1,25V cr à cr et autour de 40Khz (oscillo non precis!)
images/DS1302_Horloge.jpg

ACHTUNG !!! lorsqu'on verifie un oscillateur (sensible) au scope..
il serait preferable de mesurer systematiquement via un 2pF

( sinon via 2 fils torsates isolées sur 4 cm de long)

Je retourne donc à mon programme , deconnecte l'oscillo du RTC par precaution, et les secondes evoluent maintenant !
L'oscillateur RTC est donc OK. mais le contenu est foireux..

En lisant attentivement la page 7/15 de la data sheet DATA TRANSFERT SUMMARY et surtout le dessin du timming
on voit bien que pour lire un byte du RTC apres l'envoi d'une commande, il faut lire la donnee APRES un front descendant
et non plus un front Montant comme dans l'ecriture d'un byte dans la RTC.

images/DS1302_timming.jpg

C'est pouquoi j'ai mis une fonction Write Cde et Write donnee differente !
Apres modifs, remise en ordre coté software , l'init est correcte et le resultat aussi.

Hardware :18F46k22_EDFinfo_Hardware.txt
header : DS1302.h
source C18 : 18F46K22_DS1302_130131.c
chargeur: DS1302_18F46K22.hex

Résultat obtenu :

Le mode BURST n'est pas tres explicite dans la datasheet , au niveau de la lecture ... inversion ou pas du front de validation?
Du coup, puisque preque tout est OK et que je ne me sert pas du Burst mode, , on passe à la suite:
Projet EDF teleinfo...



paulfjujo@free.fr




Retour à l'index general