Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Problème utilisation DS1307 sous MikroC



  1. #1
    Wapaca

    Problème utilisation DS1307 sous MikroC


    ------

    Bonsoir à vous alors voilà j'ai un problème pour utiliser un DS1307 depuis un pic 16f876A via la library fournie sur MikroC.

    Donc pour commencer je veux juste récupérer l'heure et les minutes mais j'ai déjà quelques difficulté, voici ma fonction actuelle qui évidemment ne fonctionne pas :

    Code:
    void afficher_heure(char ligne, char colonne){
      I2C1_Start();
      I2C1_Wr(0xD1);
      while(!I2C1_Is_Idle());
      I2C1_Wr(0x01);  
      while(!I2C1_Is_Idle());
      acquisition = I2C1_Rd(0); // Read the data (NO acknowledge)
      //acquisition = 0x30;
      I2C1_Stop();               // issue I2C stop signal
    
      acquisition = Bcd2Dec(acquisition);
      // + 0x30 sert à convertir le chiffre en ASCII pour l'afficher sur l'afficheur LCD plus tard. 0 en ASCII = 0x30, 1 = 0x31 ... 9 = 0x39.
       dizaine = (((acquisition % 100) - ((acquisition % 100)%10))/10)+0x30;      // Récupération du nombre de dizaines.
       unite = ((acquisition % 100)%10)+0x30;                                     // Récupération du nombre d'unitées.
    
      Lcd_Chr(ligne,colonne,0x31);
      Lcd_Chr(ligne,colonne + 1,0x31);
      Lcd_Out(ligne,colonne + 2,"h");
      Lcd_Chr(ligne,colonne + 3,dizaine);
      Lcd_Chr(ligne,colonne + 4,unite);
    }
    Notez que pour l'heure pour l'instant j'ai mis 0x31 et 0x31 car je me concentre sur les minutes et qu'en haut du programme dans la fonction main j'ai mis I2C1_Init(100000);.

    J'ai essayé diverse méthode et pour l'instant le mieux que j'ai réussi à faire c'est de ne pas faire planter le pic (j'ai aussi vu ce topic http://forums.futura-sciences.com/el...lgorithme.html mais je ne comprends pas trop pourquoi HULK28 propose d'initialiser toutes les valeurs dès le début, encore le registre 0x00 pour activer l'horloge d'accord mais le reste ... ) et je vous mets mon schéma en pièce jointe ainsi vous pourrez vérifier que j'ai bien câblée mais je pense que c'est bon de ce côté là.

    Merci d'avance à vous.

    -----
    Dernière modification par invite76532345 ; 13/11/2010 à 08h14.

  2. Publicité
  3. #2
    Orphée

    Re : Problème utilisation DS1307 sous MikroC

    Bon, je te joins ça. C'est écrit en Mikrobasic mais ça devrait pas trop être dur à traduire
    Et en plus ça marche, alors quoi demander de plus ?

    sub procedure EcrireDateHeure

    Soft_I2C_start
    Soft_I2C_Write($D0)
    Soft_I2C_Write($00)

    Soft_I2C_Write($80) 'met à zéro les secondes et arrête l'horloge
    Soft_I2C_Write(ConvertirValeur s4bits(HMinute))
    Soft_I2C_Write(ConvertirValeur s4bits(HHeure))
    Soft_I2C_Write(HJourDeLaSemain e)
    Soft_I2C_Write(ConvertirValeur s4bits(HDate))
    Soft_I2C_Write(ConvertirValeur s4bits(HMois))
    Soft_I2C_Write(ConvertirValeur s4bits(HAnnee))

    Soft_I2C_stop
    Soft_I2C_start
    Soft_I2C_Write($D0)
    Soft_I2C_Write($00)
    Soft_I2C_Write($00) ' démarrage horloge
    Soft_I2C_stop
    end sub

    '------------------------------------------------------------

    sub procedure LireDateHeure()

    Soft_I2C_start
    Soft_I2C_Write($D0)
    Soft_I2C_Write(0) 'met le pointeur sur l'adresse des secondes
    Soft_I2C_Start
    Soft_I2C_Write($D1)
    Hseconde = Bcd2Dec(Soft_I2C_Read (1))
    Hminute = Bcd2Dec(Soft_I2C_Read (1))
    Hheure = Bcd2Dec(Soft_I2C_Read (1))
    HJourDelaSemaine = Bcd2Dec(Soft_I2C_Read (1))
    Hdate = Bcd2Dec(Soft_I2C_Read (1))
    HMois = Bcd2Dec(Soft_I2C_Read (1))
    HAnnee = Bcd2Dec(Soft_I2C_Read (0))
    Soft_I2C_stop

    end sub

    '------------------------------------------------------------

  4. #3
    Wapaca

    Re : Problème utilisation DS1307 sous MikroC

    Merci de ta réponse,

    En effet ce n'est pas trop compliqué à comprendre mais je n'ai pas trop compris ce passage pourrais tu détailler s'il te plaît ?

    Code:
    Soft_I2C_Write(ConvertirValeur s4bits(HMinute))
    Soft_I2C_Write(ConvertirValeur s4bits(HHeure))
    Soft_I2C_Write(HJourDeLaSemain e)
    Soft_I2C_Write(ConvertirValeur s4bits(HDate))
    Soft_I2C_Write(ConvertirValeur s4bits(HMois))
    Soft_I2C_Write(ConvertirValeur s4bits(HAnnee))

  5. #4
    Orphée

    Re : Problème utilisation DS1307 sous MikroC

    Citation Envoyé par Wapaca Voir le message
    Merci de ta réponse,

    En effet ce n'est pas trop compliqué à comprendre mais je n'ai pas trop compris ce passage pourrais tu détailler s'il te plaît ?

    Code:
    Soft_I2C_Write(ConvertirValeur s4bits(HMinute))
    Soft_I2C_Write(ConvertirValeur s4bits(HHeure))
    Soft_I2C_Write(HJourDeLaSemain e)
    Soft_I2C_Write(ConvertirValeur s4bits(HDate))
    Soft_I2C_Write(ConvertirValeur s4bits(HMois))
    Soft_I2C_Write(ConvertirValeur s4bits(HAnnee))

    Ah oui, désolé, j'avais oublié d ete le mettre. Voici la procédure

    sub function ConvertirValeurs4bits(dim Valeur as byte) as byte
    'sépare les diziemes des unités sur 4 bits (horloge)
    dim Vhigh,Vlow,VTemp as byte
    VHigh=valeur/10
    VTemp=VHigh<<4
    VLow=Valeur-(Vhigh*10)
    result=Vtemp or Vlow

    end sub

  6. #5
    Wapaca

    Re : Problème utilisation DS1307 sous MikroC

    Quel est la différence entre les librairies Soft_I2C et I2C ??? j'ai les deux sous mikroc.

    Parce qu'actuellement j'essaye avec la I2C mais même en respectant les étapes nécessaire pour lire et écrire ça ne fonctionne pas :s

  7. A voir en vidéo sur Futura
  8. #6
    Wapaca

    Re : Problème utilisation DS1307 sous MikroC

    C'est bon je suis enfin débloqué maintenant je vais pouvoir utiliser correctement mon DS1307, en faite il faut utiliser la librairie Soft_I2C et non I2C1.

    Voici mon nouveau code :

    Code:
    void afficher_heure(char ligne, char colonne){
    
      Soft_I2C_Start();          // Issue start signal
      Soft_I2C_Write(0xD0);      // Address PCF8583, see PCF8583 datasheet
      Soft_I2C_Write(0x01);      // On démarre sur les minutes
      Soft_I2C_Start();          // Issue repeated start signal
      Soft_I2C_Write(0xD1);      // Address PCF8583 for reading R/W=1
      minute = Soft_I2C_Read(1);     // Read minutes byte
      heure = Soft_I2C_Read(0);       // Read hours byte
      Soft_I2C_Stop();                // Issue stop signal
    
      Lcd_Chr(ligne,colonne,((heure&0x30)>>4)+0x30);
      Lcd_Chr(ligne,colonne + 1,(heure&0x0F)+0x30);
      Lcd_Out(ligne,colonne + 2,"h");
      Lcd_Chr(ligne,colonne + 3,((minute&0x70)>>4)+0x30);
      Lcd_Chr(ligne,colonne + 4,(minute&0x0F)+0x30);
    }
    C'est un peu à motié copier/coller du l'exemple sur le help de mikroc ^^'

    Et sinon quel est la différence entre les deux librairie I2C1 et Soft_I2C ?
    Et est-ce normal que l'on ne doit pas initialiser la vitesse de transfert avec Soft_I2C ? dans ce cas ça veut dire que le bus est utilisé en vitesse standard ?

  9. Publicité
  10. #7
    Orphée

    Re : Problème utilisation DS1307 sous MikroC

    Ben ... il me semble que ... y'a pas de I2C réel sur ce PIC tout simplement donc on passe par une routine de simulation.
    Je passe le plus clair de mon temps à l'obscurcir (Boris Vian)

  11. #8
    siedol

    Re : Problème utilisation DS1307 sous MikroC

    je n'arrive pas a afficher la date et l'heure sur lcd avec le DS1307 j'utilise un pic16f877 aider moi s'il vous plait avec le programme en mikroc

  12. #9
    gabuzo

    Re : Problème utilisation DS1307 sous MikroC

    Salut !

    1 - On ouvre un nouveau sujet.
    2 - On poste le schéma*.
    3 - On poste le code*.

    *Sinon personne ne pourra te répondre.
    Je suis Charlie

Sur le même thème :

Discussions similaires

  1. MIKROC utilisation de keypad_Released()
    Par xastin dans le forum Électronique
    Réponses: 10
    Dernier message: 20/07/2010, 19h38
  2. Probleme de mise à l'heure DS1307
    Par chestercat dans le forum Électronique
    Réponses: 0
    Dernier message: 29/04/2008, 09h14
  3. Soucis de Prog sous Mikroc
    Par M_Makia dans le forum Électronique
    Réponses: 2
    Dernier message: 28/02/2007, 12h56
  4. Problème concernant une DS1307 sur I2C
    Par Nemesio dans le forum Électronique
    Réponses: 10
    Dernier message: 09/06/2006, 17h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.