Bonsoir, j’essaie de réaliser une petite application style datalogger qui mémorise l'heure,minute d'un évènement et la valeur de quelques capteurs, pour ensuite les transférer dans un fichier texte. voici mon code
et le fichier texte reçu sur le pc
heure:minute, ldr,mouv
40:39, 057,000 <= 40h39mn !! il était 00h35 !
00:38, 056,000 <= l'heure,minute semblent plausible mais la variable mouv reste à 0 elle aurait du passé à 1
00:37, 055,000 <= je viens d'inventer une machine à remonter le temps et la variable mouv reste à 0 elle aurait du passé à 2
00:35, 053,000 <= seul les variables heure et ldr semblent cohérentes
00:35, 053,000
00:35, 053,000
00:35, 053,000
00:35, 053,000
00:46, 070,000
00:48, 072,000
00:48, 072,000
00:49, 073,000
00:4;, 075,000
00:4;, 075,000
00:49, 073,000
en faite je soupçonne mes erreurs au niveau des conversions vers ascii
bcdtoascii hour,mema,memb
serout b.5,N4800,(mema,memb)
pause 10 <================ est-ce un problème timing ici ou ailleurs ?
bcdtoascii mins,mema,memb <================ ai-je le droit d'utiliser les mêmes variables mema et memb ?
serout b.5,N4800,(":",mema,memb,", ")
bintoascii ldr,mema,memb,memc
serout b.5,N4800,(mema,memb,memc,",")
pause 10
bintoascii cptmouv,mema,memb,memc
serout b.5,N4800,(mema,memb,memc,13,10)
j'ai testé aussi i2cslave %10100000, i2cslow, i2cword et i2cslave %10100000, i2cfast, i2cword rien ne change.
avez-vous une idée ?
Code:
symbol seconds = b0
symbol mins = b1
symbol hour = b2
symbol memc = b7
symbol ldr = b8
symbol memd = b11
symbol mema = b14
symbol memb = b15
symbol varM = b18
symbol meme = b19
symbol adresse = w10
symbol cptmouv = w12
symbol memadres = w13
main:
let adresse = 0
let cptmouv = 0
label_129:
if pinC.1 = 1 then label_93
if pinC.5 = 1 then gosub prc_PC
goto label_129
label_93:
cptmouv = cptmouv + 1
gosub prc_MEMOIRE
goto label_129
;******************************************************************
'**************** sous programme memorise données ****************
;******************************************************************
prc_MEMOIRE:
i2cslave %11010000, i2cslow, i2cbyte ; active DS1307 slave address
readi2c 0,(seconds,mins,hour)
pause 10;
readadc c.2,ldr
pause 10
i2cslave %10100000, i2cslow, i2cword 'active mémoire
writei2c adresse,(hour,mins)
pause 10
adresse = adresse +1
writei2c adresse,(ldr,cptmouv)
pause 10
let adresse = adresse + 1
return
;******************************************************************
'**************** transfer vers pc *******************
;******************************************************************
prc_PC: 'attente du caractère g
let memadres = 0
serin b.2, N4800, ("g") 'attente du signal g
'Transmition des titres
serout b.5,N4800,("heure",":","minute",", ","ldr",",","mouv",13,10)
pause 200
lect_data:
if memadres >= adresse then fini
i2cslave %10100000, i2cslow, i2cword ;memoire
readi2c memadres,(hour,mins)
pause 10
bcdtoascii hour,mema,memb
serout b.5,N4800,(mema,memb)
pause 10
bcdtoascii mins,mema,memb
serout b.5,N4800,(":",mema,memb,", ")
pause 10
memadres = memadres + 1
readi2c memadres,(ldr,cptmouv)
pause 10
bintoascii ldr,mema,memb,memc
serout b.5,N4800,(mema,memb,memc,",")
pause 10
bintoascii cptmouv,mema,memb,memc
serout b.5,N4800,(mema,memb,memc,13,10)
pause 10
memadres = memadres + 1
goto lect_data
fini:
serout b.5,N4800,(0)
return 'Return
#no_data 'reduce download time
heure:minute, ldr,mouv
40:39, 057,000 <= 40h39mn !! il était 00h35 !
00:38, 056,000 <= l'heure,minute semblent plausible mais la variable mouv reste à 0 elle aurait du passé à 1
00:37, 055,000 <= je viens d'inventer une machine à remonter le temps et la variable mouv reste à 0 elle aurait du passé à 2
00:35, 053,000 <= seul les variables heure et ldr semblent cohérentes
00:35, 053,000
00:35, 053,000
00:35, 053,000
00:35, 053,000
00:46, 070,000
00:48, 072,000
00:48, 072,000
00:49, 073,000
00:4;, 075,000
00:4;, 075,000
00:49, 073,000
en faite je soupçonne mes erreurs au niveau des conversions vers ascii
bcdtoascii hour,mema,memb
serout b.5,N4800,(mema,memb)
pause 10 <================ est-ce un problème timing ici ou ailleurs ?
bcdtoascii mins,mema,memb <================ ai-je le droit d'utiliser les mêmes variables mema et memb ?
serout b.5,N4800,(":",mema,memb,", ")
bintoascii ldr,mema,memb,memc
serout b.5,N4800,(mema,memb,memc,",")
pause 10
bintoascii cptmouv,mema,memb,memc
serout b.5,N4800,(mema,memb,memc,13,10)
j'ai testé aussi i2cslave %10100000, i2cslow, i2cword et i2cslave %10100000, i2cfast, i2cword rien ne change.
avez-vous une idée ?