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
-----