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!)
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.
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...