Programmation du DS1338
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Programmation du DS1338



  1. #1
    Orphée

    Programmation du DS1338


    ------

    Bonjour

    Je croyais que le DS1338 était compatible avec le DS1307 mais il semble que non puisque ... ça ne fonctionne visiblement pas !

    Voici mon code qui fonctionnait pour le DS1307. Si quelqu'un peut me faire gagner du temps ça serait super. Merci.
    PS: pourquoi ne pas avoir gardé le DS1307 ? parce que je veux utiliser un circuit en composant de surface et que mon fournisseur n'a pas de DS1307 dans cette version contrairement au DS1338.

    Le code:


    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


    sub procedure EcrireDateHeure

    Soft_I2C_start
    Soft_I2C_Write(AdresseDS1338)
    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(AdresseDS1338)
    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(AdresseDS1338)
    Soft_I2C_Write(0) 'met le pointeur sur l'adresse des secondes
    Soft_I2C_Start
    Soft_I2C_Write(AdresseDS1338 or 1) ' mode lecture
    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

    -----
    Je passe le plus clair de mon temps à l'obscurcir (Boris Vian)

  2. #2
    Laboum

    Re : Programmation du DS1338

    Bonsoir Orphée,
    Voilà j'ai modifié ton message, ce sera plus lisible pour les futurs intervenants, désolé sur ce coup, je ne peux pas t'aider.
    Code:
     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
    
    sub procedure EcrireDateHeure
    
    Soft_I2C_start
    Soft_I2C_Write(AdresseDS1338)
    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(AdresseDS1338)
    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(AdresseDS1338)
    Soft_I2C_Write(0) 'met le pointeur sur l'adresse des secondes
    Soft_I2C_Start
    Soft_I2C_Write(AdresseDS1338 or 1) ' mode lecture
    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
    Bonne chance

  3. #3
    Orphée

    Re : Programmation du DS1338

    Merci. Je n'ai pas trouvé où on mettait du code sous cette forme.

    En fait il n'y a pas de problème dans mon code. Ce serait le simulateur qui aurait un bug pour le DS1338 qui, apparemment, serait bien 100% compatible avec le DS1307 (si j'en crois les docs). J'ai donc remis un DS1307 pour la simulation et mettrai un DS1338 en pratique.
    Je passe le plus clair de mon temps à l'obscurcir (Boris Vian)

Discussions similaires

  1. programmation CAN
    Par invite48a7b274 dans le forum Électronique
    Réponses: 1
    Dernier message: 04/02/2008, 10h51
  2. programmation en C
    Par invited2564438 dans le forum Électronique
    Réponses: 5
    Dernier message: 24/05/2007, 17h33
  3. programmation
    Par invite54654732 dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 01/09/2006, 07h24
  4. Programmation
    Par invite7e1f35e9 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 24/04/2006, 13h33
  5. Programmation 3D
    Par invite769675d7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 01/11/2005, 06h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.