Sida 10 av 13

Postat: 4 september 2005, 22:46:40
av sodjan
Är du säker på att du skall ha "ARM_STRONG_PULLUP" även vid "READ_SCRATCHPAD" ?

Så vitt jag förstår skall Strong Pullup bara vara på under "Convert" fasen.

> "Tycker det är förbaskat jobbigt att det bara står response i D-B å inte nån hexkod..."

Hexkoden kanske "beror på"...

Postat: 4 september 2005, 23:03:53
av benring
jag har nu testat att ta bort pullup:en efter convert_t, håller me om att den inte bör va där.

Jag får dock HELT fel svar då.... enda gången jag får korrekta svar är när jag skickar som jag skrev...

Detta verkar funka och det är under convert_t -fasen:

PULLUP_524
RESET_C1
DATAMODE_E1
SKIPROM


COMMANDMODE_E3
ARM_STRONG_PULLUP
TERMINATE_PULSE_EF
DATAMODE_E1
CONVERT_T

WAIT_76

COMMANDMODE_E3
DISARM_STRONG_PULLUP
TERMINATE_PULSE_EC
RESET_C1
'*******************************

Sen kommer läsningen som ska va i denna ordning:
Men detta funkar inte.

SKIPROM
READ_SCRATCHPAD
RESET_C1

/B

Postat: 4 september 2005, 23:10:15
av sodjan
Ger du allting tillräckligt med tid efter "READ_SCRATCHPAD", så att du inte avbryter med RESET innan allt har lästs in ?

Postat: 4 september 2005, 23:20:18
av benring
Grejen e att jag ska läsa in det som hamnar på porten direkt, och jag ska läsa 8 ggr, men det enda jag får från porten är:

¾
vilket blir 190 i ascii och BE i HEX

jag fattar inte, ska man inte få in bitarna en o en?


/B

Postat: 4 september 2005, 23:34:13
av sodjan
Jag har stängt databladet, men är inte scratchpaden 8 eller 9 bytes ?
I dessa bytes finns dina bitar. Jag är lite osäker på vad du igentligen
menar med att "få in bitarna en o en" !?

Tja, det är väll bara att fortsätta testa, läsa, testa, läsa, testa tills det funkar... :-)

Postat: 4 september 2005, 23:38:26
av benring
Jag kom på att BE kanske var första byte:en (eller sista) så jag ska läsa in fler ggr.

kör jag read scratchpad en gång så får ja BE, kör jag igen rakt på får jag AA, nästa gång blir det ett fel.

som sagt, testa o testa!

:)

/B

Postat: 4 september 2005, 23:52:32
av Kaggen
benring skrev:Grejen e att jag ska läsa in det som hamnar på porten direkt, och jag ska läsa 8 ggr, men det enda jag får från porten är:

¾
vilket blir 190 i ascii och BE i HEX

jag fattar inte, ska man inte få in bitarna en o en?


/B
Normalt får du hårdvarumässigt sett in bitar en och en genom serieporten, men dessa samlas ihop till en byte innan de levereras till ditt VB program. När du får in en byte innehåller den 8 bitar. 1 byte = 8 bitar.

Det är upp till dig hur du sedan hanterar denna byte.

Du kanske skulle läsa på lite om det binära talsystemet och kolla lite hur VB kan manipulera binära och hexadecimala tal. Om du inte har någorlunda koll på bits och bytes kan det bli lite problematiskt att tyda hur din utrustning skickar ut data och hur du skall hantera det i VB.

Mats

Postat: 4 september 2005, 23:54:42
av benring
Hej, ja lite mer påläst skadar ju inte.

Jag har testat att anropa read scratchpad 6 ggr nu och jag får olika svar varje gång, helt utan error. kan det då va så att jag ska läsa av 9 ggr, för det är ju 9 bytes jag ska ha.

/B

Postat: 4 september 2005, 23:56:17
av sodjan
Hur är din "read" från COM porten uppsatt ?

Vad händer om det just då inte finns något att läsa ? "Vänta" eller "avbryt direkt" ?

Och returnerar läs-operationen efter första inlästa byten ? Eller kan du få flera bytes från en läs-operation ? Och i vad (alltså variabeltyp, "byte", "integer", "string", "char" eller vad det nu heter i VB) lagras det som läs-operationen returnerar ? I ett tidigare kodexempel var det "buffer$", vilket låter som en string. Kanske lite jobbigt att hantera binära värden på det sättet. Det kan ju komma ett binärt värde som t.ex motsvrar CR, LF eller något annat controlltecken som kan röra till det i strängen. Finns det inte en variabeltyp som heter "byte" ? jag har för mig det...

Postat: 5 september 2005, 00:00:31
av sodjan
Du skall väll anropa "read scratchpad" *en* gång och "läsa av" 9 gånger för att få in alla bytes.

Men det gäller också att MSComm är uppsatt för att hantera vilka binära värden som helst. Jag har inte VB igång, men leta efter "passthrough", "raw" eller liknande. Här är jag ute på riktigt djupt vatten... :-)

Postat: 5 september 2005, 00:01:00
av benring
Jag vet inte om jag löst det nu men jag läser in scratchpaden 9 ggr och den åttonde byten skiftar hela tiden, den står ganska stadigt tills jag tar i sensorn.

/B

Postat: 5 september 2005, 00:26:21
av sodjan
De två första byten skall vara temp.
Byte 8 är CRC.

Vad menar du med "läser in scratchpaden 9 ggr" ?
Skickar du h'BE' 9 gånger ?

I några exempel skickar man h'FF' för att läsa varje byte, jag vet inte om det är rellevant för ds18s20, man jag skulle prova i alla fall...

Postat: 5 september 2005, 00:33:39
av benring
Ja jag skickar BE 9 ggr.

INtressant, jag skickade BE första o sen FF och då fick jag andra svar men det verkar mer rätt:)

Postat: 5 september 2005, 00:38:19
av benring
Måste bara meddela att jag har 23,5 grader varmt bredvid datorn :D

tar jag i sensorn så får jag 24 och sen ökar den med 0,5 grader, precis så den ska:)

fyfasen va glad jag blir:)

Postat: 5 september 2005, 02:01:34
av benring
Ja då har jag labbat lite med tempen, försökte mig på att få en högre upplösning på den men det blir inte rätt.

i databladet för ds18s20 på sid 5 "OPERATION MEASURING TEMPERATURE"
så ser man en uträkning.

Kan nån kolla på den och tala om hur jag ska göra?

Kan ju va så att jag e trött nu oxå hehe

Gonatt på er.

/B