Bonjour,
J'ai un petit problème. Je démarre un télémètre à ultrason basé sur un SRF10 par I2C sur PIC18F.
Je trouve l'esclave sans soucis. Je fais les mesures, mais par contre, le retour du capteur est toujours identique (2 pour le bit de poids faible et 225 pour le bit de poids fort).
J'ai trouvé pas mal d'exemple sur internet mais en C, comme je programme en Mikrobasic, je l'ai adapté.
Code :
Auriez-vous, s'il vous plait, une idée sur ce que je fais mal pour mesurer ? Merci par avance.Sub Procedure mesure()
Dim t as integer
Dim NumSerie as byte
Dim MesurePoidsFort as integer
Dim MesurePoidsFaible as integer
Dim Mesure as word
Dim txt as char[8]
' Rem --- démarre la mesure ---
I2C_Start ' Issue I2C start signal
I2C_Wr(224) ' Adresse le télémètre
I2C_Wr(0) ' Pointe vers le Mode
I2C_Wr(80) ' Définit la mesure en cm
I2C_Stop ' Issue I2C stop signal
delay_ms(100)
' Rem --- Positionne le bit de lecture
I2C_Start
I2C_Wr(224)
I2C_Wr(0)
I2C_Repeated_Start
' Rem --- Lis le numéro de version
I2C_Wr(225)
NumSerie = I2C_rd(0)
' rem --- lis un bit inutilisé
I2C_Wr(225)
t=I2C_rd(0)
' rem --- lis le bit de poids faible
I2C_Wr(225)
MesurePoidsFaible=I2C_rd(0)
' rem --- lis le bit de poids fort
I2C_Wr(225)
MesurePoidsFort=I2C_rd(0)
I2C_Stop ' Issue I2C stop signal
' Affichage de la mesure
LCD_cmd(lcd_clear)
inttostr(t,txt)
LCD_OUT(1,1,txt)
Mesure = word(mesurePoidsFort >> 8) + MesurePoidsFaible
inttostr(MesurePoidsFaible,txt )
LCD_out(2,1,txt)
inttostr(MesurePoidsFort,txt)
LCD_out(2,5,txt)
End sub
Mike
-----