Bonjour,
Je planche sur un un petit projet constitué d'un CB320 et d'une horloge RTC DS1307
Incroyablement dès que j'envois une valeur paire au DS1307 je n'ai pas d'Ack
Le CB320 est raccordé au DS par les ports dédiés 13= Data et 12=Clock
Le code est simplissime et j'ai déjà utilisé l'I2c sur d'autres projets en lect/écriture notamment sur un afficheur LCD tactile qui fonctionne parfaitement.
Code:Set I2c 13,12 ' SDA = Data = Port 13, SCL=Clock = Port 12 I2cstart If I2cwrite($D0) = 1 Then ' Adresse i2c write Debug "Nok D0 ecriture ", Cr End If A = I2cwrite ($00) ' adresse de debut Debug "@ debut ", Dec(A), Cr A = I2cwrite ($00) ' Set sec Debug "Set sec ", Dec(A), Cr A = I2cwrite ($01) ' Set min -> Renvoi 1 = pas d'Ack reçu Debug "Set min ", Dec(A), Cr A = I2cwrite ($00) ' Set Hrs Debug "Set Hrs ", Dec(A), Cr A = I2cwrite ($02) ' Set jour Debug "Set jour", Dec(A), Cr A = I2cwrite ($00) ' Set date jour Debug "Set date jour", Dec(A), Cr A = I2cwrite ($00) ' Set date mois Debug "Set date mois", Dec(A), Cr A = I2cwrite ($00) ' Set date annee Debug "Set date annee", Dec(A), Cr A = I2cwrite ($00) ' Set Controle I2cstop
J'ai tenté de mettre des tempos cela ne change rien. Quel que soit la valeur emise il n'y a pas d'Ack si c'est une valeur paire
Exemple je mets l'@ de départ à $01 au lieu de $00 > Pas d'Ack
Je mets les minutes à 00, 02, 04 .. j'ai un Ack ... à 01 ,03, 05 pas d'Ack
Si une valeur n'a pas eu d'Ack, tout ce qui est envoyé derrière n'a pas d'Ack .. ce qui est à priori normal
J'ai tenté de lire en passant par la procédure classique I2cstart, $Adresse 1307, I2cstart, $Adresse 1307 +1 => Pas d'ack ... car valeur impaire ..
Si j'envois tout en pair tous les Ack sont là, mais impossible de lire vu que le D1 pour la lecture est rejété
J'ai pensé à utiliser la fonction shiftout mais du coup je ne sais pas s'il faut faire le setI2C + I2c start /I2c stop
Quoi qu'il en soit que soit avec I2Cread ou Shiftin je remonte que des valeurs 255, 255 ..
Je vous remercie par avance pour votre aide.
Bruno.
-----