Problème lcd i2c ds1307

jeanphi59

Member
Bonjour,

Voilà, j'ai un problème : je n'arrive pas à écrire ou lire en mode i2c dans ds1307 avec le module axe033 + axe034 (horloge temps réel) à partir d'un 18x.

Tout fonctionne en mode série, je peux écrire sur le lcd en mode i2c (j'ai mis le jumper : mode).

Ce doit surement être un problème d'adresse, celle que j'utilise est celle des docs : %11010000

Si vous avez une idée ...

Le but de la manip est de réaliser un ensemble domotique pour les programmes 4 ème avec programmation sur pc (comme les vrais).
 
Last edited:

westaust55

Moderator
Excuses si mon Français n'est pas trop bon.

Est ci-dessous un certain code standard qui est produit par les magiciens de programmation de rédacteur (pour l'enregistreur de données AXE110).

Si vous pouvez employer le mode d'i2c pour écrire à l'affichage à cristaux liquides alors que le câblage doit être correct ainsi ceci devrait fonctionner.

Si vous reliez également une LED pour produire 2 du 18X et des autres pour produire 3 du 18X puis si le Programme Editor, la LED sur le rendement 3 devrait être allumée. S'il y a un problème puis la LED sur le rendement 2 sera allumée. J'ai ajouté quelques messages ainsi vous devriez également voir un message sur la fenêtre terminale de Programme Editor (clef d'utilisation F8)

Code:
'AXE110 BASIC Program to set time/date on DS1307 RTC
'Automatically generated by Wizard

'First program the date
	i2cslave %11010000, i2cslow, i2cbyte
	writei2c 0, ($00, $31, $19, $04, $23, $06, $10, $10)
	pause 50

'Now check has been set OK 
	let b8 = $04
	let b9 = $23
	let b10 = $06
	let b11 = $10
	let b12 = $10

	readi2c 0, (b0,b1,b2,b3,b4,b5,b6,b7)

	if b7 <> b12 then fail
	if b6 <> b11 then fail
	if b5 <> b10 then fail
	if b4 <> b9 then fail
	if b3 <> b8 then fail
ok:
 SERTXD (CR, LF "Le DS1307 a programmé :-) ", CR,LF)
	high 3
	goto ok
fail:
 SERTXD (CR, LF "Le DS1307 n'a pas programmé ;-(", CR,LF)
	high 2
	goto fail
 

jeanphi59

Member
Thank you for the answer, I do not speak English well.

The problem came from variables to show on lcd your code gave me the solution
'First program the date

i2cslave %11010000, i2cslow, i2cbyte
writei2c 0, ($00, $57, $17, $04, $23, $06, $10, $10)
pause 50

'test min
let b8 = $58

'read, show time and control del

boucle:
readi2c 0, (b0,b1)


if b1=b8 then m2
if b1!=b8 then m3


m2:
high 2
low 3
pause 500
serout 7,N2400, (1)
pause 10
serout 7,N2400, (0)
pause 490
goto boucle

m3:
high 3
low 2
pause 500
serout 7,N2400, (1)
pause 10
serout 7,N2400, (0)
pause 490

goto boucle
 
Last edited:
Top