gestion RTC ds 1302 en I2C
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

gestion RTC ds 1302 en I2C



  1. #1
    Rancis

    gestion RTC ds 1302 en I2C


    ------

    Bonjour tout le monde,

    J'ai besoin d'utiliser un composant rtc pour avoir une horloge à dispo sur ma carte, j'ai pris comme composant un dallas ds 1302 que j'utilise en I²C. Enfin que je tente d'utiliser car je n'arrive à rien ... Le micro est un pic 18F67J50 que je programme en C avec MPLAB et C18 comme compilateur.

    Pour le coté hardware c'est bon mais je galère coté soft ...

    J'ai pas mal gratté sur le net mais j'ai rien trouvé qui m'ai beaucoup aidé, voila mon code :
    Code:
    #include <p18f67j50.h>
    #include <i2c.h>
    #include <delays.h>
    
    unsigned char i,byte;
    
    void Init(void);
    void Ecrire_rtc(unsigned char adrW,unsigned char data);
    unsigned char Lire_rtc(unsigned char adrR);
    
    void main()
    {
    	Init();
    	
    	Ecrire_rtc(0x80,0x00);		// Ecriture des secondes
    	Ecrire_rtc(0x82,0x39);		//.. minutes
    	Ecrire_rtc(0x84,0x14);		// .. heure
    	Ecrire_rtc(0x86,0x01);		// .. etc
    	Ecrire_rtc(0x88,0x04);
    	Ecrire_rtc(0x8A,0x03);
    	Ecrire_rtc(0x8C,0x09);
    	Ecrire_rtc(0x8E,0x00);	
    
    	for(i=0;i<10;i++)
    		Delay10KTCYx(255);
    
    	if(Lire_rtc(0x58)==0x14)
    		PORTAbits.RA1=1;
    
    		Delay10KTCYx(255);		// Attente
    		Delay10KTCYx(255);	
    		Delay10KTCYx(255);
    	while(1)
    	{
    		if(Lire_rtc(0x38)==0x40)
    			PORTAbits.RA1^=1;
    		Delay10KTCYx(255);
    		Delay10KTCYx(255);
    	}
    }
    
    void Init()
    {
    	TRISA=0xFD;			// RA1 pilote une led
    	PORTA=0;
    	
    	TRISG=0xF0;			// RG1 > cablé sur pin CE de la rtc
    	PORTG=0;
    
    
    	TRISC=0xBB;			// I²C
    	PORTC=0xD0;
    	
    	OpenI2C1(MASTER,SLEW_OFF);
    	SSP1ADD=49;
    }
    
    void Ecrire_rtc(unsigned char adrW,unsigned char data)
    {
    	PORTGbits.RG1=1;
    	Delay1KTCYx(10);
    	IdleI2C1();
    	StartI2C1();
    	IdleI2C1();
    	putcI2C1(adrW&0xFE);
    	IdleI2C1();
    	if(SSP1CON2bits.ACKSTAT)
    		StopI2C1();	
    	putcI2C1(data);
    	IdleI2C1();
    	if(SSP1CON2bits.ACKSTAT)
    		StopI2C1();		
    	StopI2C1();
    	Delay1KTCYx(10);
    	PORTGbits.RG1=0;
    }
    
    unsigned char Lire_rtc(unsigned char adrR)
    {
    	PORTGbits.RG1=1;
    	Delay1KTCYx(10);
    	IdleI2C1();
    	StartI2C1();
    	IdleI2C1();
    	putcI2C1(adrR||0x01);
    	IdleI2C1();
    	if(SSP1CON2bits.ACKSTAT)
    		StopI2C1();
    	byte=ReadI2C1();
    	SSP1CON2bits.ACKDT=1;
    	StopI2C1();
    		return byte;
    	Delay1KTCYx(10);
    	PORTGbits.RG1=0;
    }
    Si quelqu'un peux m'aider ce serait cool parce que là je galère vraiment. Je n'aime pas rester bloquer sur ce petit composant de rien du tout, alors aidez moi s'il vous plaît ...

    -----

  2. #2
    paulfjujo

    Re : gestion RTC ds 1302 en I2C

    bonsoir,

    voir reponse sur ABCElectronique
    DS1302 dialogue en SPI
    DS1307 dialogue en I2C

  3. #3
    Rancis

    Re : gestion RTC ds 1302 en I2C

    Ouch, pour le coup j'suis vraiment bète

    Merci paulfjujo, ds 1307 commandée

Discussions similaires

  1. Gestion mémoire I2C
    Par Olfox dans le forum Électronique
    Réponses: 1
    Dernier message: 24/02/2009, 12h58
  2. bus i2c ou UART et RTC
    Par Voltron dans le forum Électronique
    Réponses: 7
    Dernier message: 16/11/2008, 13h31
  3. PIC : Gestion du module I2C
    Par schneiderj dans le forum Électronique
    Réponses: 0
    Dernier message: 17/04/2008, 13h32
  4. gestion de clavier matriciel i2c
    Par invite6d875316 dans le forum Électronique
    Réponses: 2
    Dernier message: 26/01/2007, 22h49
  5. Alimentation RTC I2C
    Par Toufinet dans le forum Électronique
    Réponses: 2
    Dernier message: 24/01/2007, 20h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.