Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal

[Résolu] Réglage de la dérive sur une RTC Microchip MCP794110

Démarré par guigui, Février 18, 2020, 06:00:26 PM

« précédent - suivant »

guigui

Bonjour,

Je travaille sur sur un petit prototype utilisant un PIC 18F45K50 et une RTC MCP794110.
Tout fonctionne parfaitement, mis à  part une dérive de quelques secondes par jour.

En suivant le datasheet, j'essaye d'utiliser la fonction "digital trimming" de la RTC pour compenser cette dérive.
Pour celà  j'ai fait les calculs fournis qui m'ont permis de déterminer que j'ai une dérive d'environ -46 ppm.

J'écrirs cette valeur dans le registre OSCTRIM selon les instructions, mais celà  semble semble sans effet.
Quand je relis le registre, je reçois systématiquement 0 et, après de nouvelle mesure, la RTC dérive toujours de -46 ppm.

Pour info, j'utilises MPLAB X avec les drivers I2C et RTC fournis par le configurateur intégré à  l'IDE et toutes les autres fonctionnalités de la puce fonctionnent.

J'ai aussi essayé d'arrêter la RTC avant d'écrire, mais le registre reste malgré tout à  0.

Existe-t-il une procédure spéciale pour utiliser cette fonction?

EDIT :
Après une lecture attentive du code du driver fourni par Microchip, il me semble que c'est lui qui pose problème.
En effet les masquages de bits utilisés pour séparer la valeur et le signe m'ont l'air d'avoir été fait à  l'envers  :o

J'ai fait de nouveau essais en retirant la logique de masquage, ce qui me permet de manipuler l'octet entier directement et de gérer le signe moi-même.
Et là , je peux bien relire la valeur que j'écris.

Je vais donc retenter un calibrage pour voir si ça marche mieux  :)

Pour info :
Le datasheet de la RTC : https://ww1.microchip.com/downloads/en/DeviceDoc/MCP79410-MCP79411-MCP79412-Battery-Backed%20I2C-RTCC-20002266J.pdf
Le digital trimming est détaillé page 30.
Ci-joint le code des fonctions fournies par Microchip (obtenu via le Code Configurator de MPLAB X).

EDIT : Le problème venait bien du driver. Maintenant que je l'ai retiré pour accéder directement au registre, la fonction de calibration fonctionne parfaitement.