Pb transmission SPI pour pilote une RTC : DS1305
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Pb transmission SPI pour pilote une RTC : DS1305



  1. #1
    invitedd558ae9

    Pb transmission SPI pour pilote une RTC : DS1305


    ------

    Bonjour,

    J'utilise un PIC 18F97J60 fonctionnant à 40Mhz et je cherche a piloter une RTC de chez Maxim : DS1305.

    Je rencontre un probleme de transmission SPI dès que je cherche a écrire ou lire dans un registre de la RTC.

    Afin d'initialiser la RTC, il convient d'ecrire la valeur 0x00 dans le registre de contrôle de la RTC à l'adresse 0x8F.

    J'ai défini les registres SSP1CON1 du PIC a 0x22 et SSP1STAT à 0x00 pour communiquer en SPI mode 1.

    Ensuite, j'ai écris ceci pour initialiser la RTC :

    Code:
    // ---------------- CLEAR CTRL REGISTER ----------------
    	// Activate chip select
    	RTC_CS_IO = 1;
    	Delay10us(1);							// wait tcc (see datasheet page 20/22)
    
    	// Send Control register address
    	RTC_SSPBUF = 0x8F;			            // Transmit address to write control register 0x8F (see datasheet page 6/22)	
        while(!RTC_SPI_IF);						// Wait until data is shifted out
    	Dummy = RTC_SSPBUF;						// Clear SPI Buffer
        RTC_SPI_IF = 0;	
    
    	RTC_SSPBUF = 0x00;          			// Transmit control register config : clear WP, Enable Oscillator, no interrupts.
        while(!RTC_SPI_IF);						// Wait until data is shifted out
    	Dummy = RTC_SSPBUF;	
    	RTC_SPI_IF = 0; 
    
    	// Deactivate chip select
    	RTC_CS_IO = 0;
    	Delay10us(1);							// Wait ttcwh
    Aussitot, l'execution du programme se bloque ici : ( sur la ligne en rouge )

    RTC_SSPBUF = 0x00; // Transmit control register config : clear WP, Enable Oscillator, no interrupts.
    while(!RTC_SPI_IF);

    Je visualise bien à l'oscilloscope le passage de CS à "1" puis les front des SCK.
    le pic envoi alors bien la valeur àx8F sur sa patte SDO

    Rien ne se passe sur la patte SDI (pic ) / SDO (rtc)

    Je me suis aperçu que si j'envoi une valeur non nulle, autre que 0x00 le code ne se bloque pas, mais pour autant la RTC ne renvoi rien sur sa patte SDO, ce n'est pas normal.

    Notemment pour une opération de lecture, on adresse le registre de la RTC à lire, par exemple 0x01 puis en envoi 0x00 pour lire le contenu du registre, et là encore la RTC ne répond rien sur SDO malgré que tout semble avoir bien été envoyé sur SCK et SDI.

    Auriez vous une idée du probleme ?
    Je vous remercie,

    -----

  2. #2
    invitedd558ae9

    Re : Pb transmission SPI pour pilote une RTC : DS1305

    Je poste mes traces SPI visualisées à l'oscillo :

    CS est selectionné , SCK envoi les fronts :



    SCK et MOSI : ( Le Pic adresse le registre de controle 0x8F de la RTC et envoi la valeur 0x00 )



    SCK et MISO : La RTC ne renvoi rien sur sa patte SDO


    Je vous remercie de votre aide, ou suggestions.

Discussions similaires

  1. Rtc spi (max 6902)
    Par invite1cd8f19a dans le forum Électronique
    Réponses: 1
    Dernier message: 26/12/2010, 20h05
  2. Aide pour une transmission série
    Par invite2bee5fc6 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/05/2010, 16h18
  3. Solution radio pour transmission sur une petite distance
    Par invite82995b69 dans le forum Électronique
    Réponses: 6
    Dernier message: 26/04/2010, 08h23
  4. Utilisation de mémoire SPI sur une ligne SPI utilisé
    Par invite4671370c dans le forum Électronique
    Réponses: 1
    Dernier message: 30/12/2009, 14h11
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...