[Programmation] Ds1307
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Ds1307



  1. #1
    galou32

    Ds1307


    ------

    Bonjour,

    j'ai un petit souci pour écrire dans le registre des minutes dans la boucle LOOP. je m'explique :

    lorsque j écris dans le registre minute du DS1307 dans le setup ma loop fonctionne très bien et m'affiche les minutes:
    SETUP :

    Wire.beginTransmission(0x68); // Open I2C line in write mode
    Wire.write(0x01); //A partir de quelle adresse lit-on dans le DS1307; on pointe au registre 00
    Wire.write(decToBcd(minute));// on met la valeur Bcd dans le registre des minutes
    Wire.endTransmission(); // End Write Transmission

    LOOP:

    Wire.beginTransmission(0x68); // Open I2C line in write mode
    Wire.write(0x01); //A partir de quelle adresse lit-on dans le DS1307; on pointe au registre 00
    Wire.requestFrom(0x68, 1);
    Wire.available();
    minute = bcdToDec (Wire.read());

    Wire.endTransmission(); // End Write Transmission

    Serial.println("minute");
    Serial.println(minute);

    Mais lorsque je modifie mon registre minute du DS1307 dans la Loop cela ne marche pas... code:

    Wire.beginTransmission(0x68); // Open I2C line in write mode
    Wire.write(0x01); //A partir de quelle adresse lit-on dans le DS1307; on pointe au registre 00
    Wire.requestFrom(0x68, 1);
    Wire.available();

    minute = bcdToDec (Wire.read());

    Wire.endTransmission(); // End Write Transmission

    Serial.println("minute");
    Serial.println(minute);

    minute = minute+1;

    Wire.beginTransmission(0x68); // Open I2C line in write mode
    Wire.write(0x01); //A partir de quelle adresse lit-on dans le DS1307; on pointe au registre 00
    Wire.write(decToBcd(minute));// on met la valeur Bcd dans le registre ET 0 dans le bit 8 pour demarrer
    Wire.endTransmission(); // End Write Transmission
    delay (500); // a enlever plus tard


    je ne comprend pas pourquoi il n’écris pas dans le registre minute.

    Merci

    -----

  2. #2
    galou32

    Re : Ds1307

    Bonjour,

    Bon pour faire plus simple : Comment modifier le contenu des registres du DS1307 hors que dans le setup?

    Merci

  3. #3
    paulfjujo

    Re : Ds1307

    bonsoir,

    c'est de l'arduino ? ( je ne connais pas)
    en lecture RTC , l'adresse device n'est pas 0x68+1 ?

    personnellement je n'ai jamais essayé d'ecrire dans 1 seul registre RTC
    pourquoi ne pas ecrire / lire tous les registres en 1 seule fois
    il me semble que la position registre RTC s'autoincremente à partir de 0

    Code:
    void read_all_DS3231(void) 
     {
    
      Soft_I2C_Start();
      Soft_I2C_Write(DS3231_ADDR);
      Soft_I2C_Write(0);              // Start address
      Soft_I2C_Start();               // Issue repeated start signal
      Soft_I2C_Write(DS3231_ADDR+1);           // Address  for reading R/W=1
      second = Soft_I2C_Read(1);    //read and get the Ack
      minute = Soft_I2C_Read(1);
      heure = Soft_I2C_Read(1);
      jS=     Soft_I2C_Read(1) & 0x07 ;    // day of the week
      jour = Soft_I2C_Read(1);    // day of the month
      mois = Soft_I2C_Read(1) & 0x1F;   // month
      Annee = Soft_I2C_Read(0);   //read Year and get the Nack
      Soft_I2C_Stop();                // Issue stop signal
    
    }
    Dernière modification par Antoane ; 24/01/2021 à 15h06. Motif: remplacement des balises quote par code

  4. #4
    galou32

    Re : Ds1307

    Bonjour,

    oui c'est pour arduino.
    En effet pour la lecture les registres s’incrémentent tous seul.

    mais ce que je trouve bizarre c'est qu'en écriture. si je met mon bloc "écrire à l'adresse 0x68 dans le registre 0x01 (minute) la valeur minute en bcd" dans le setup, j'arrive à écrire dans le registre

    alors que si je met ce bloc dans le loop ou une fonction il n’écrit pas dans le registre.

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

    Re : Ds1307

    hello : dans mon expérience du Ds1307 rien de particulier si ce n'ai que je me suit piéger (et j'ai cherché longtemps): je voulais modifier les différents registres le ds1307 , il ne voulais pas osciller et les registres des minutes et les autres toujours a zéro , dans les tests préliminaires je n'avais pas mis de pile bouton 3V sur la pin Vbatt : ça m'a joué pas mal de mauvais tour (c'est indiqué dans la doc) . au pire si pas d'utilisation de pile de secours Vbat doit être mis a la masse .
    pour le reste y'a pas de raison , mais je ne connais pas ce charabia d’Arduino.
    Cordialement

Discussions similaires

  1. Ds1307 !!
    Par invite779ffd8e dans le forum Électronique
    Réponses: 1
    Dernier message: 27/02/2011, 19h52
  2. Le DS1307
    Par invited3a2f8af dans le forum Électronique
    Réponses: 7
    Dernier message: 29/05/2010, 21h12
  3. Ds1307 à ds3231
    Par invite0389c90d dans le forum Électronique
    Réponses: 6
    Dernier message: 18/05/2010, 10h34
  4. DS1307 & ISIS v6.3 SP1
    Par invite70684c77 dans le forum Électronique
    Réponses: 2
    Dernier message: 01/07/2009, 12h08
  5. Ds1307
    Par invite369c4784 dans le forum Électronique
    Réponses: 2
    Dernier message: 11/02/2007, 21h18
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...