JAG KLARADE DET!!!
Utförlig beskrivning kommer:)
EDIT:
Här kommer hur jag gjorde med att skicka ROM-ID:
Först skickas MATCH ROM (h'55')
Sen skickas ID med familycode först. en byte åt gången
Svaret kommer direkt med samma som du skickade, detta gör du 8 ggr.
Så här ser ordningen ut:
DS2480 startar upp i "COMMAND MODE" vilket är läget som DS2480 hanterar data internt, "DATA MODE" skickar vidare till sensorer externt.
Det som står efter varje kommando är det jag skickar, ex "Reset_C1", då skickar jag "C1" osv.
***********************************
PULLUP_524 (skickar "39", svar blir "38", ger 524 ms)
RESET_C1 ' command mode (Svar "CD" eller "ED")
DATAMODE_E1 ' Skiftar till DATA MODE (inget svar)
MATCHROM_55 ' Data mode (Svar "55")
SENDROM ' Data mode (svar på varje byte, samma som du skickar)
COMMANDMODE_E3 ' skiftar till COMMAND MODE (inget svar)
ARM_STRONG_PULLUP_EF (Inget svar)
TERMINATE_PULSE_F1 ' svaret blir "EC" vid MATCH ROM, vid SKIP ROM blir svaret "EF"
DATAMODE_E1 (inget svar)
CONVERT_T_44 ' data mode (Svar "44")
WAIT_76 (inget ska skickas, bara tas emot) ' Denna är väntetiden tempberäkningen tar o svaret blir "76"
COMMANDMODE_E3 (inget svar)
DISARM_STRONG_PULLUP_ED (inget svar)
TERMINATE_PULSE_F1 (svar "EC")
RESET_C1 ' command mode (Svar "CD" eller "ED")
DATAMODE_E1 (inget svar)
MATCHROM_55 ' data mode (Svar "55")
SENDROM ' data mode (svar på varje byte, samma som du skickar, vilket är ROM ID)
(För read scratchpad skickas "BE" först, sen "FF" på resten, första svaret ger BE, detta skall bort, du får in CRC sist)
For i = 1 To 10' (Det är 9 bytes totalt)
READ_SCRATCHPAD (i) ' data mode
Next
COMMANDMODE_E3 (inget svar)
RESET_C1 'command mode (Svar "CD" eller "ED")
'***********************************
Hoppas detta var tydligt och att det inte skiljer på svar mm hos er andra.
EDIT 2:
Detta är en read rom (för att få in ROM ID på 64 bitar)
OBS, går endast med en
singel sensor!!
****************************
RESET_C1
DATAMODE_E1
READROM_33
(Skicka FF 8 ggr för att läsa in 8 byte)
For i = 1 To 8
READ_ROM_ID_FF (i)
Next
COMMANDMODE_E3
RESET_C1
**********************
Detta är kodat i VB6 och en typisk funktion för nästan alla dessa rader är:
*********************************
Private Sub RESET_C1()
Dim i As Long
MSComm1.Output = Chr(&HC1)
' Vänta på att data skickas tillbaka genom COM-porten
Do
buffer$ = buffer$ & MSComm1.Input
If buffer$ = "" Then GoTo 1
tmp = Asc(buffer$)
'Debug.Print Hex(tmp)
1
Loop Until Hex(tmp) = "CD"
buffer$ = ""
End Sub
*******************************************'
/B