pomoc s čidlem hst11
Moderátor: Moderátoři
pomoc s čidlem hst11
Ahoj, chtěl bych požádat kohokoliv a kontrolu napsaného programu. je to jen nástřel, abych se naučil komunikovat s čidlem tak prosím omluvte "štábní kultůru"... Jde mi o to, že hst11 je kalibrované čidlo vlhkosti a teploty, ale při zobrazení na displej mi to ukazuje teplotu o přibližně 5 stupňů jinak. Chtěl bych tedy zjistit od někoho znalejšího, jestli nemám chybu v programu. Děkuju všem za ochotu. Mlike
- Přílohy
-
- program inkubator.txt
- (3.99 KiB) Staženo 168 x
-
- sht11.pdf
- (840.01 KiB) Staženo 182 x
No tabulku jsem nečetl to máš pravdu. Jednak jsem si původně myslel, že nebude potřeba a jednak jsem to ještě moc nepochopil, jak se počítá crc. Ale to nemění nic na tom, že by mi bylo milé, kdyby mi někdo řekl "ano, takhle jak sis napsal program by to mělo fungovat." jde mi dost i o to, jestli jsem zvolil správný způsob jak číst data z tohoto čipu
CRC nemusíš čítať, ale potom musíš zrušiť nedočítanú(nedokončenú) sekvenciu čitania. Kym nedôjde k jej zrušeniu nové čítanie je na vode.
Tých 9 a viac hodín s data=1 daj pred každý povel na čítanie tak ako to je v datasheete uvedené.
CRC môžes načítať a vykašlať sa na kontrolu, alebo už pri čítaní dát by bolo treba zakomponovať do algoritmu aj počítanie crc. Iné riešenie je spočítať všetko po skoncení čítania
Presne som program nekontroloval, ale v zásade máš to čítanie OK.
Edit: Odmietnutie crc by stačilo poslat ešte jedej clock
mer: if testbit(porta,0) = 1 then
goto mer
end if
rhat = 0
for i = 0 to 1 vyčtení měření.
for j = 0 to 7
rhat = rhat << 1
setbit(porta,1)
if testbit(porta,0) = 1 then
setbit(rhat,0)
else clearbit(rhat,0)
end if
clearbit(porta,1)
next j
if i = 0 then
setbit(porta,1) '0
nop
clearbit(porta,1)
nop
end if
next i
porta=1 'odmietnut crc
trisa = 0
setbit(porta,1) 'jeden clock s data=1
nop
clearbit(porta,1)
nop
end sub
Tých 9 a viac hodín s data=1 daj pred každý povel na čítanie tak ako to je v datasheete uvedené.
CRC môžes načítať a vykašlať sa na kontrolu, alebo už pri čítaní dát by bolo treba zakomponovať do algoritmu aj počítanie crc. Iné riešenie je spočítať všetko po skoncení čítania
Presne som program nekontroloval, ale v zásade máš to čítanie OK.
Edit: Odmietnutie crc by stačilo poslat ešte jedej clock
mer: if testbit(porta,0) = 1 then
goto mer
end if
rhat = 0
for i = 0 to 1 vyčtení měření.
for j = 0 to 7
rhat = rhat << 1
setbit(porta,1)
if testbit(porta,0) = 1 then
setbit(rhat,0)
else clearbit(rhat,0)
end if
clearbit(porta,1)
next j
if i = 0 then
setbit(porta,1) '0
nop
clearbit(porta,1)
nop
end if
next i
porta=1 'odmietnut crc
trisa = 0
setbit(porta,1) 'jeden clock s data=1
nop
clearbit(porta,1)
nop
end sub
no tak už jsem konečně přišel na to co s tim je. Mezi jednotlivýma bajtama je vložen ACK a já ho tam sice měl, ale nějak jsem přehlídnul, že musí být do nuly stažený DATA. Já měl data stále jako input: Odmietnutie crc by stačilo poslat ešte jedej clock
mer: if testbit(porta,0) = 1 then
goto mer
end if
rhat = 0
for i = 0 to 1 vyčtení měření.
for j = 0 to 7
rhat = rhat << 1
setbit(porta,1)
if testbit(porta,0) = 1 then
setbit(rhat,0)
else clearbit(rhat,0)
end if
clearbit(porta,1)
next j
if i = 0 then
porta = 0
trisa = 0
setbit(porta,1) '0
nop
clearbit(porta,1)
nop
end if
trisa = 1
next i
porta=1 'odmietnut crc
trisa = 0
Takže už úspěšně měřim. Děkuju za rady a za ochotu pomoct. Mlike
mer: if testbit(porta,0) = 1 then
goto mer
end if
rhat = 0
for i = 0 to 1 vyčtení měření.
for j = 0 to 7
rhat = rhat << 1
setbit(porta,1)
if testbit(porta,0) = 1 then
setbit(rhat,0)
else clearbit(rhat,0)
end if
clearbit(porta,1)
next j
if i = 0 then
porta = 0
trisa = 0
setbit(porta,1) '0
nop
clearbit(porta,1)
nop
end if
trisa = 1
next i
porta=1 'odmietnut crc
trisa = 0
Takže už úspěšně měřim. Děkuju za rady a za ochotu pomoct. Mlike