PCF8583 help please
Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

PCF8583 help please



  1. #1
    invite0490cd3a

    PCF8583 help please


    ------

    bonsoir à tous,

    je suis en train de faire un montage qui a besoin d'un calendrier et j'utilise pour ça un PCF8583 mais je n'arrive pas à le faire fonctionner.

    je m'explique :

    je veux le faire fonctionner avec un quartz 32.768kHz, montage classique.
    j'arrive très bien à écrire et à lire dans la mémoire, mais le n'arrive pas à lui faire incrémenter ses données. je sais qu'il faut configurer le registre 0x00 mais j'ai essayé et je n'y arrive pas.

    il existe plusieurs modes d'utilisation :
    - 32.768kHz
    - 50Hz
    - compteur

    si je le configure en 50Hz il incrémente correctement mais pas à la bonne vitesse (forcement puisque ce n'est pas le bon quartz)
    mais impossible de le faire fonctionner en mode 32.768kHz, j'ai essayé avec 3 puces neuves différentes et tjs le même problème.

    est-ce que quelqu'un a une idée sur le problème?
    ou est-ce que quelqu'un a déja utilisé ce composant et sait le configurer?

    merci d'avance pour votre aide

    spilz

    -----

  2. #2
    invite5637435c

    Re : PCF8583 help please

    Bonsoir,

    difficile de te répondre sans voir ton code.

    Le registre control/status est à l'adresse 0x00;
    Toute les fonctions sont controlées par ce registre essentiel.

    As-tu essayé de configurer le registre status/control ainsi:

    Code:
    #define clock_mode32khz     0x00
    
    void configure8583_control_reg( int8 control_reg)
    {
       i2c_start();
       i2c_write(0xA0); // RTC en écriture
       i2c_write(0x00); // adresse registre status/control
       i2c_write(clock_mode32khz);
       i2c_stop();
    }
    Sinon fais voir ce que tu as fait.
    @+

  3. #3
    invite0490cd3a

    Re : PCF8583 help please

    c bien ce que j'ai comme code mais impossible de le faire fonctionner, et mon circuit est celui de la data.

    par contre j'ai mis un quartz un peu plus rapide car j'en avais pas sous la main à la bonne fréquense, je me suis demandé si ça ne venais pas de là mais comme ça fonctionne en 50Hz je ne pense pas que ce soit le problème

  4. #4
    invite5637435c

    Re : PCF8583 help please

    Tu as mis quoi?

  5. A voir en vidéo sur Futura
  6. #5
    invite0490cd3a

    Re : PCF8583 help please

    un 6MHz, mais ça fonctionne en mode 50Hz donc je ne comprends pas

  7. #6
    invite5637435c

    Re : PCF8583 help please

    Ca ne peut pas fonctionner à 6MHz, le 50Hz est prévu avec une base de temps externe genre une synchro secteur.
    Ce circuit est conçu pour recevoir un quartz horloger à 32,768KHz ou un signal en compteur d'évènements.
    Le 50Hz que tu vois est la fréquence ambiante "reniflée" par l'entrée haute impédance.
    @+
    Images attachées Images attachées  

  8. #7
    invite0490cd3a

    Re : PCF8583 help please

    bien vu, je vais essayer d'en trouver un à la bonne frequense, merci pour ton aide, je te tiens au courant

  9. #8
    invite0490cd3a

    Question Re : PCF8583 help please

    bonsoir, je viens de recevoir mon quartz et l'horloge fonctionne très bien.
    pour le mode 50Hz apparemment il faut quand même le quartz à 32.768 kHz.

    j'ai un autre problème tout bête si quelqu'un pouvait m'aider :

    je cherche à activer l'alarme, plus précisément j'ai une date avec une heure précise et je voudrais que l'alarme se déclanche à ce moment, mais impossible de comprendre le fonctionnement du registre alarm

    quelqu'un sait?

    merci
    spilz

  10. #9
    invite5637435c

    Re : PCF8583 help please

    Bonsoir,

    je ne connais pas précisemment cette RTC mais en lisant la doc je vois ceci:

    il y a un registre 'alarm' à l'adresse 0x08 qui est activé si un bit du registre de contrôle est mis à 1 (à savoir le bit 2).

    Si ce bit est à 0 le registre est destiné à être utilisé comme de la RAM (0x08 à 0x0F), mis à 1 donc si 'alarm' est déclaré actif c'est réservé à différents types d'alarmes programmmables (évènement, chaque jour, chaque semaine, etc).

    Dès qu'une occurence est détectée la sortie INT est mise à 0 (drain ouvert).

  11. #10
    invite0490cd3a

    Re : PCF8583 help please

    oui, je suis d'accord là dessus, mais c'est justement la configuration du registre alarm qui me pose problème, je ne suis pas très bon en anglais et je n'arrive pas à comprendre les nuances

    je cherche à configurer l'alarme pour une date et heure précise, sans répétition

    je ne comprends pas non plus les histoires de timers

    merci de ton aide

    spilz

  12. #11
    invite0490cd3a

    Question Re : PCF8583 help please

    personne n'a une idée sur comment régler ce registre alarme?

  13. #12
    invite5637435c

    Re : PCF8583 help please

    L'idée si, le temps de le faire non.
    Tout est indiqué dans la doc, il faut que tu déclares les bons registres c'est tout.

    Sinon tu peux faire plus simple, tu fais en soft une routine qui détecte l'heure, la minute et tu déclenches l'action qui va bien.
    @+

  14. #13
    invite0490cd3a

    Re : PCF8583 help please

    ^^ je comprends tout a fais

    j'ai essayé pas mal de fois ce w-e et impossible d'obtenir un niveau haut à la sortie de l'INT et j'ai essayé pas mal de config des deux registres (status et alarm) mais ça n'a jamais fonctionné.

    pour la solution en soft j'y avais pensé mais comme il doit tourné normalement en faisant d'autres taches, j'avais prévu de le faire fonctionner avec les inteeruptions.

    spilz

  15. #14
    invite5637435c

    Re : PCF8583 help please

    Tiens essaye ça:

    Code:
    struct Time
    {
       byte hr;
       byte mi;
       byte se;
    };
    
    struct Date
    {
       byte yr;
       byte mo;
       byte da;
       byte weekday;
    };
    
    void _8583_configure_alarm_register(byte alarm_control_reg)
    {
       i2c_master_start();
       i2c_master_out_byte(0xa0);
       i2c_master_out_byte(0x08);  // control register address
       i2c_master_out_byte(alarm_control_reg);
       i2c_master_stop();
    }
    
    void _8583_write_alarm(struct Time *p_t, struct Date *p_d)
    {
    
       byte v;
       i2c_master_start();
       i2c_master_out_byte(0xa0);
       i2c_master_out_byte(0x01+8);
       i2c_master_out_byte(0x00);	
    
       v = to_BCD(p_t->se);
       i2c_master_out_byte(v);
    
       v = to_BCD(p_t->mi);
       i2c_master_out_byte(v);	// 0x03 + 8
    
       v = to_BCD(p_t->hr);
       i2c_master_out_byte(v);      
    
       v = to_BCD(p_d->da);
       i2c_master_out_byte((p_d->yr << 6) | v);                    
    
       v = to_BCD(p_d->mo);
       i2c_master_out_byte((p_d->weekday << 5) | v );
                       
       i2c_master_stop();
    }
    Puis dans le main:

    Code:
    main
    {
    ...............
    _8583_write_alarm(&t, &d);
    _8583_configure_alarm_register(0x80 | 0x20 | 0x10); // alarme
    _8583_configure_control_register(0x04); // mode 32.768 kHz et alarme
    
    .........
    {
    Tu as le principe.

    @+

  16. #15
    invite0490cd3a

    Re : PCF8583 help please

    merci pour ton aide,

    j'ai deja un pilote pour le composant, j'arrive bien a configurer l'heure et à le faire fonctionner, j'arrive bien a lui mettre une date pour l'horloge, c'est juste les registres 0x00 et 0x08 où je ne sais pas quoi mettre.

    après avoir lu et relu la data, je pense devoir mettre ça comme config, mais impossible de mettre la pin 7 au niveau haut (comme si j'étais tjs en interruption)

    0x00 : 0b0000 0100
    0x08 : 0b1011 0000

    sachant que ce que je cherche c'est qu'a une date et heure données je passe de 1 a 0 sur /int et qu'il reste à 0 tant que je ne l'ai pas remis à 1 par logiciel.

    mais ça ne fonctionne pas et je ne comprends pas pourquoi

    je veux bien mettre le pilote que j'ai mais je ne sais pas si j'ai le drois, je l'ai trouvé sur un autre forum en anglais mais je ne sais plus où, dis moi si je peux, je pense que ça peut servir à pas mal de monde, sinon je rechercherai le lien

    spilz

  17. #16
    invite5637435c

    Re : PCF8583 help please

    Bonjour,

    as-tu mis un pull up sur INT?
    Je n'ai pas regardé pour ce composant mais je sais que pour le PCF8574 c'est nécessaire par exemple.
    @+

  18. #17
    invitef26bdcba

    Re : PCF8583 help please

    Salut,

    Le registre 0x08 est mal configuré (point 7.2 du datasheet 19970715)...

    Pour avoir une alarme, il faut mettre à 1 le bit 6 du registre.

    La pull-up sur la broche INT est nécessaire, il faut la mettre tant avec le PCF8593 que le PCF8583(les deux modèles que j'utilise).

    David.

  19. #18
    invite0490cd3a

    Re : PCF8583 help please

    en effet, je n'ai pas pensé au pull up
    je vais essayé ce soir, ça expliquerait bien mon problème et je pourrai tester les configurations des registres

    merci de vos aides

    pour le pilote est-ce que je peux le mettre?

    petite question de vocabulaire :
    le timer dans ce circuit, est-ce que ça sert à mettre une sorte de temporisation sur l'alarme?

    spilz

  20. #19
    invite0490cd3a

    Thumbs up Re : PCF8583 help please

    ça fonctionne !!!!

    merci pour votre aide,

    solution :

    -pull up
    -reg0x00 : 0b0000 0100
    -reg0x08 : 0b1011 0000

    pour remettre le flag à 0, reg0x00 : 0b0000 0100

    voila,
    pour le pilote :
    http://www.technologuepro.com/index....6&thread_id=35

  21. #20
    invite83dd39f2

    Re : PCF8583 help please

    plop plop,

    j'ai esseyer de mettre une alarme journaliere, mais je n'y arrive pas.

    j'ai mis dans 0x00 : 0b0000 0100
    et dans 0x08 : 0b1001 0000

    dans les registre heure et minute : 0x00 et dans le registre seconde : 0x12

    donc en theorie /int devrait passer a l'etat bas au bout de 12 seconde (au debut je charge 00 dans tout les registre de temps)

    je me serais trompé dans le registre 0x08?
    Images attachées Images attachées

  22. #21
    invite83dd39f2

    Re : PCF8583 help please

    problemme resolu, je ne mettait rien dans le registre alarme des centiemme de seconde, apparament, on est obliger de mettre quelque chose dedans

    j'ai mis 0 et maintenant ça marche

  23. #22
    invite8699d527

    Re : PCF8583 help please

    Bonjour tout le monde! Je m'intéresse au PCF8583 pour l'un de mes projets et il y a quelques trucs que j'ai du mal à comprendre. Pour le registre 00 j'ai pas tout saisi mais, dites moi si je me trompe, il faut que je mette :

    -0b00000000 pour un fonctionnement sans alarme
    -0b00000100 pour un fonctionnement avec alarme

    Ensuite autre chose que je ne comprend pas c'est la valeur des bits "Ten hours, ten days,...". Que doivent-ils contenir? Pour "Ten Years" il me semble que c'est à programmer pour régler les années bissextiles mais pas sûr non plus. Quelqu'un à quelques réponses à me donner?

  24. #23
    invite8699d527

    Re : PCF8583 help please

    ya personne pour m'aider?

  25. #24
    invite8699d527

    Re : PCF8583 help please

    bon tant pis, je me débrouillerai tout seul... Je commence à avoir l'habitude avec ce forum

Discussions similaires

  1. programmation en c pcf8583
    Par invitecec8a619 dans le forum Électronique
    Réponses: 0
    Dernier message: 10/03/2008, 17h19
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...