ABCelectronique : portail d'information dans le domaine de l'électronique

Merci de ne pas poster des messages en relation avec le piratage.


    Forums de Abcelectronique > PFE - PPE - TPE ...
  » Projet deslesteur
Identifiant Se souvenir de moi ?
Mot de passe
Répondre     Nouvelle discussion
Projet deslesteur

 

Electrokx
Electrokx ☆☆☆☆☆☆ 12/03/2015, 16h40 #1  
Bonjour je suis sur un projet nous somme un groupe de 4 personne pour réaliser un délesteur. Ma partie concernant la réalisation de ce délesteur est d'afficher le Jour l'heure et la date sur écran LCD ainsi pour cela j'utilise un PCF8563 (horloge RTC) ainsi qu'un microcontroleur de référence PIC16F88A. La liaison est faite en I2C, la difficulté est de pouvoir crée un programme sous le logiciel MPLAB en PIC. Ce programme va me permettre d'écrire ou lire dans le composant PCF8563. voila un début
#include <16f877A.h> // utilisation du pic 16f877a.h
#use delay(clock=8000000) // fréquence du quartz
#use I2C (master, SDA=PIN_C4, SCL=PIN_C3, fast=100000) // déclaration des broches du maître
#byte PortC = 0x07 // On défini l'adresse du port C
#byte TribC = 0X87 // On défini l'adresse du registre de direction du port C
#bit SCLK = PortC.3
#bit SDA = PortC.4
tontonchristobal
tontonchristobal ★★★★★☆☆ 12/03/2015, 18h59 #2  
Bonsoir Electrokx,

Avant d'utiliser l'horloge RTC, je te conseille de bien maîtriser l'I²C. Tu pourrais par exemple câbler un PCF8574 avec une led comme sortie et un switch en entrée afin de vérifier que tu maîtrise la lecture et l'écriture d'un périphérique I²C. Ensuite il te sera plus facile de gérer l'horloge.
__________________
La seule certitude que j’ai, c’est d’être dans le doute. (Pierre DESPROGES)
Electrokx
Electrokx ☆☆☆☆☆☆ 13/03/2015, 01h10 #3  
Lol c'est incroyable vous lisez dans mes penser c'est exactement ce que j'essaye de faire mais j'ai toujours un peu de mal car la programmation j'ai pas eu l'ocassion d'en faire souvent.
tontonchristobal
tontonchristobal ★★★★★☆☆ 13/03/2015, 19h49 #4  
Posté par Electrokx

Lol c'est incroyable vous lisez dans mes penser c'est exactement ce que j'essaye de faire mais j'ai toujours un peu de mal car la programmation j'ai pas eu l'ocassion d'en faire souvent.



Non non je ne peux pas lire dans les pensées, mais beaucoup d'expérience ! et comme je me suis fait avoir avant vous il y a bien longtemps, j'ai appris a prendre les raccourcis.
__________________
La seule certitude que j’ai, c’est d’être dans le doute. (Pierre DESPROGES)
Electrokx
Electrokx ☆☆☆☆☆☆ 17/03/2015, 13h15 #5  
Bonjour les amis j'aimerais savoir pour lire les registres du composant pcf8563 en I2c dans le but dafficher l'heure et la date sur LCD je suis obliger de rentrer ces registre a la main ? En pic.
tontonchristobal
tontonchristobal ★★★★★☆☆ 17/03/2015, 18h57 #6  
Bonsoir Electrolx,

- d'abord il faut définir les registres comme des constantes, comme ça:

#define CONTROL_STATUS_1 0x00;
#define CONTROL_STATUS_2 0x01;
#define CLKOUT_CONTROL 0x0D;
#define VL_SECONDS 0x02;
#define MINUTES 0x03;
#define HOURS 0x04;
#define DAYS 0x05;
#define MINUTE_ALARM 0x09;
#define HOUR_ALARM 0x0A;
#define DAY_ALARM 0x0B;
#define WEEKDAY_ALARM 0x0C;
#define WEEKDAYS 0x06;
#define CENTURY_MONTHS 0x07;
#define YEARS 0x08;
#define TIMER_CONTROL 0x0E;
#define TIMER 0x0F;

- déclarer un tampon global en ram qui sera à l'image du PCF8563:
unsigned char clkbuf[16]; // 16 registres

- déclarer un tampon global en ram qui sera l'image de l'afficheur:
unsigned char image_afficheur[32]; // 2 lignes de 16 caractères ?

- déclarer une variable globale en ram qui va nous servir à savoir si la seconde à changée:
unsigned char mem_seconde;

- ensuite détecter le changement de seconde pour afficher uniquement une fois par seconde, quelque chose comme:

if (lecture_pcf8563(VL_SECONDS ) !=mem_seconde)
{ mem_seconde = lecture_pcf8563(VL_SECONDS);

// à partir d'ici lire les registres du PCF8563:

clkbuf[0]= (lecture_pcf8563(HOURS) & 0x3F); // masque les bits 6 et 7
clkbuf[1]= (lecture_pcf8563(MINUTES) & 0x7F); // masque le bit 7
clkbuf[2]= (lecture_pcf8563(VL_SECONDS) & 0x7F); // masque le bit 7

// et construire une chaine ASCII qu'on va envoyer vers l'afficheur:

voilà après ce coup de pouce, à toi de jouer.

}
__________________
La seule certitude que j’ai, c’est d’être dans le doute. (Pierre DESPROGES)
Electrokx
Electrokx ☆☆☆☆☆☆ 18/03/2015, 07h34 #7  
Merci bien Tonton !!
Electrokx
Electrokx ☆☆☆☆☆☆ 18/03/2015, 10h26 #8  
Je comprend pas quelque chose avent de lire les registre du composant il faut bien les écrire de plus j'utilise ce type de routine :
• I2C_start();
• I2C_write(…);
• I2C_read(…);
• I2C_stop();

Surtout avent de lire et écrire sur la Ligne I2C je coince sur la variable que je doit crée c'est du syle unsigned char mem_second : 0 a 60 s ;
unsigned char mem_minute : 0 a 60 m ;
ect
tontonchristobal
tontonchristobal ★★★★★☆☆ 18/03/2015, 18h19 #9  
Posté par Electrokx

Je comprend pas quelque chose avant de lire les registre du composant il faut bien les écrire de plus j'utilise ce type de routine :
• I2C_start();
• I2C_write(…);
• I2C_read(…);
• I2C_stop();
ect



Bonjour Electrokx,

Oui bien sur il faut écrire pour mettre à l'heure, mais normalement à la mise sous tension le PCF8563 est à 00h00mm00sec puis il commence à compter...

Il faudrait que nous donne les prototypes de tes fonctions ci-dessus, il y a forcement l'adresse du PCF8563 sur le bus et l'offset du registre à lire ou à écrire. Un schéma peut nous aider à trouver l'adresse.


Posté par Electrokx

Surtout avant de lire et écrire sur la Ligne I2C je coince sur la variable que je doit crée c'est du syle unsigned char mem_second : 0 a 60 s ;
unsigned char mem_minute : 0 a 60 m ;
ect



Tu peux le voir comme ça mais il sera plus facile à gérer si tu déclare un tampon indexé comme unsigned char clk_buf[16];
à toi de voir ce qui te semble le plus facile à gérer.

A+
__________________
La seule certitude que j’ai, c’est d’être dans le doute. (Pierre DESPROGES)
Electrokx
Electrokx ☆☆☆☆☆☆ 18/03/2015, 18h49 #10  
Je comprend pas c"est quoi un tampon ?
tontonchristobal
tontonchristobal ★★★★★☆☆ 19/03/2015, 17h47 #11  
Un tampon c'est une zone mémoire "A" de plusieurs octets ou mots dans laquelle on copie une autre zone mémoire "B", on fait ainsi une "photo" à un instant donné de la mémoire "B". C'est très utile quant la mémoire "B" change d'état (c'est le cas d'une horloge). Le nombre inscrit entre les crochets représente le nombre de mots ou d'octet alloué au tampon.
__________________
La seule certitude que j’ai, c’est d’être dans le doute. (Pierre DESPROGES)
Electrokx
Electrokx ☆☆☆☆☆☆ 21/03/2015, 09h34 #12  
Ok merci chef !
Electrokx
Electrokx ☆☆☆☆☆☆ 02/04/2015, 14h49 #13  
Bonjour mon problème ce pose maintenant sur la conversion binaire en BCD
Répondre