pomoc s čidlem hst11

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
mmlike
Příspěvky: 15
Registrován: 05 led 2008, 01:00

pomoc s čidlem hst11

#1 Příspěvek od mmlike »

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

Uživatelský avatar
procesor
Příspěvky: 5284
Registrován: 02 říj 2009, 02:00
Bydliště: PO

#2 Příspěvek od procesor »

Nečítaš crc8, možno pred start sekvenciu by bolo vhodné zaradit 9x clock s DATA=1.

Uživatelský avatar
mmlike
Příspěvky: 15
Registrován: 05 led 2008, 01:00

#3 Příspěvek od mmlike »

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

Uživatelský avatar
procesor
Příspěvky: 5284
Registrován: 02 říj 2009, 02:00
Bydliště: PO

#4 Příspěvek od procesor »

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

Uživatelský avatar
mmlike
Příspěvky: 15
Registrován: 05 led 2008, 01:00

#5 Příspěvek od mmlike »

Ale jo to mě pak napadlo tak jsem tam dodělal ukončení komunikace. Mám tam sekvenci data=1 a 9x clock... jenže je to stále to samý. začínám mít pocit jeslti jsem třeba při pájení nepřehřál to čidlo nebo tak něco.

Uživatelský avatar
mlike
Příspěvky: 28
Registrován: 03 zář 2005, 02:00

#6 Příspěvek od mlike »

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

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“