Problème écriture dans registre RTC (PIC18F <=>SPI<=> DS1306)
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Problème écriture dans registre RTC (PIC18F <=>SPI<=> DS1306)



  1. #1
    robintou

    Problème écriture dans registre RTC (PIC18F <=>SPI<=> DS1306)


    ------

    Bonjour, j'utilise un pic18F et je veux gérer une horloge en temps réel avec une liaison SPI. J'ai donc acheté un DS1306, après déjà plusieurs semaines de développement, je n'arrive toujours pas à écrire l'heure dans le registre RTC du DS1306. J'utilise le schéma typique de la documentation constructeur sauf une broche(SERMODE) que je met à 5V au lieu de la masse fin d'utiliser la liaison, j'utilise un quartz 32.768Khz, j'arrive a lire ce qu'il y a sur le bus, mais je n'arrive pas écrire manuellement l'heure dans ce registre. Lorsque j'essaye d'écrire, je vois a l’oscilloscope que le compteur est à zéro dés la mise sous tension. Je tiens à préciser que j'utilise la librairie SPI du compilateur xc8 avec MPLAB en IDE.

    Doc constructeur du DS1306 : http://datasheets.maximintegrated.com/en/ds/DS1306.pdf
    Doc constructeur du pic18f : http://ww1.microchip.com/downloads/e...Doc/39960d.pdf

    Code:
    #include "p18cxxx.h"
    #include "spi.h"
    
    #define CS_ON    LATDbits.LATD7 = 1
    #define CS_OFF   LATDbits.LATD7 = 0
    #define _XTAL_FREQ 20000000
    
    void Configuration_PORTS(void) {
        TRISC = 0; // PORT C en sortie
        TRISG = 0; // PORT G en sortie
        TRISB = 0; // PORT B en sortie
        TRISDbits.TRISD7 = 0; //RD7 en sortie (CS)
        TRISDbits.TRISD4 = 0; //RD4 en sortie (Serial data out (SDO))
        TRISDbits.TRISD5 = 1; //RD5 en entrée (Serial data IN (SDI))
        TRISDbits.TRISD6 = 0; //RD6 en sortie Horloge (SCK)
    
    }
    
    
    void init_SPI(void) { //On utilise le MSSP2
        SSP2STATbits.SMP = 1; //Master mode
        SSP2STATbits.CKE = 1; //1 = Transmit occurs on the transition from active to Idle clock state ;0 = Transmit occurs on the transition from Idle to active clock state
        SSP2STATbits.BF = 1;
        SSP2CON1bits.SSPEN = 1; //activer SDO/SDI/SCK  |
        SSP2CON1bits.CKP = 0; //clock high or low
        SSP2CON1bits.SSPM1 = 1; 
    }
    
    void delayy() {
        for (int u = 0; u <= 5; u++) {
            u++;
        }
    }
    
    void opends1306(){
        CS_ON;
        delayy();
        WriteSPI2(0x8F);
        WriteSPI2(0);
        CS_OFF;
        delayy();
        }
    
    void writeds1306(){
    char sec = 0x30;
    char min = 0x47;
    char hr = 0x12;
        CS_ON;
        delayy();
        WriteSPI2(0x80);
        WriteSPI2(sec);
        WriteSPI2(min);
        WriteSPI2(hr);
        delayy();
        CS_OFF;
    
    void readds1306()
    {
        CS_ON;
        delayy();
        WriteSPI2(0x00);
        sec=ReadSPI2();
        min=ReadSPI2();
        hr=ReadSPI2();
        delayy();
        CS_OFF;
    }
    
    
    void main(void) {
        Configuration_PORTS();
        Configuration_timer();
        init_SPI();
        opends1306();
        writeds1306();
    
        while (1) {
            readds1306();
            CLRWDT();
        }
    }
    Dans l'attente de vos suggestions !
    Merci.

    Cordialement,
    Robintou.

    -----

  2. #2
    Antoane
    Responsable technique

    Re : Problème écriture registre RTC (PIC18F <=>SPI<=> DS1306)

    Bonjour Robintou et bienvenue sur Futura.

    Les doublons sont interdits par la charte, l'une des discussions a donc été archivée.
    Dernière modification par Antoane ; 28/04/2015 à 12h47.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    robintou

    Re : Problème écriture registre RTC (PIC18F <=>SPI<=> DS1306)

    Un petit up.

  4. #4
    RISC

    Re : Problème écriture registre RTC (PIC18F <=>SPI<=> DS1306)

    Salut,

    Quel PIC18 utilises-tu ?
    Avec l'horloge interne ou externe ?
    Bits de configuration de ton programme ?
    Quel compilateur ? Version ?

    a+

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

    Re : Problème écriture registre RTC (PIC18F <=>SPI<=> DS1306)

    J'ai réussi à écrire dans le registre, maintenant je galère avec les alarmes.

    J'utilise un PIC18F66k22, avec comme IDE MPlab et xc8 en compilateur, j'utilise l'horloge externe.

Discussions similaires

  1. DS1306 RTC avec PIC18F.
    Par robintou dans le forum Électronique
    Réponses: 0
    Dernier message: 20/04/2015, 11h51
  2. Pb écriture dans les registres PIC18F sous MCC18
    Par 3661dominique dans le forum Électronique
    Réponses: 47
    Dernier message: 15/10/2013, 09h02
  3. STM32 écriture registre
    Par invite640ee4bb dans le forum Électronique
    Réponses: 0
    Dernier message: 10/03/2011, 13h12
  4. Écriture de l'EEPROM interne avec PIC18F: Un octet sur deux de perdu?
    Par invite48613fdf dans le forum Électronique
    Réponses: 9
    Dernier message: 08/09/2010, 22h41
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...