ČTENÍ DAT Z PORTU

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
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

ČTENÍ DAT Z PORTU

#1 Příspěvek od paycz »

ahoj, chtěl jsem si udělat jednoduchou konstrukci která bude zjištovat teplotu a podle toho udělá nějakou funkci ale nevím jak zjistit hodnotu z binárního teplotního čidla na portu třeba A0

petrfilipi
Příspěvky: 2551
Registrován: 13 zář 2005, 02:00

#2 Příspěvek od petrfilipi »

Jaký je typ čidla?
Jaký je typ procesoru?

Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#3 Příspěvek od paycz »

petrfilipi píše:Jaký je typ čidla?
Jaký je typ procesoru?
procesor: PIC 16F627
čidlo: DS18B20

Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 02:00
Bydliště: Vysočina

#4 Příspěvek od Chenzee »

Hledej, už se to tu řešilo.
Žádnej učenej z nebe nespadl ...

Uživatelský avatar
Jeejda_teda_puvodne
Příspěvky: 142
Registrován: 08 dub 2012, 02:00

#5 Příspěvek od Jeejda_teda_puvodne »

Naposledy upravil(a) Jeejda_teda_puvodne dne 25 říj 2016, 13:59, celkem upraveno 1 x.

petrfilipi
Příspěvky: 2551
Registrován: 13 zář 2005, 02:00

#6 Příspěvek od petrfilipi »

V čem to chceš psát? Assembler? Vyšší jazyk (C, Pascal, Basic)?
Pokud by to byl vyšší jazyk, doporučuji prostředí společnosti Mikroelektronika (www.mikroe.com). Mají na výběr mezi C, Pascalem a Basicem a mají hotovou knihovnu pro OneWire technologii, takže pak může vyčtení hodnoty z jednoho teploměru 18B20 vypadat nějak takto (teď nevím, zdali je to pro 1820 nebo 18B20 nebo 18S20 - nutno zkontrolovat v příslušných datasheetech):

ow_reset(PORTA,5); // onewire reset signal
ow_write(PORTA,5,$CC); // issue command to DS1820
ow_write(PORTA,5,$4E); // issue command to DS1820
ow_write(PORTA,5,$FF); // issue command to DS1820
ow_write(PORTA,5,$FF); // issue command to DS1820
ow_write(PORTA,5,$3F); // Set for 12 bit output 7F=12 bit=0,0625°C, 5F=11bit=0,125°C, 3F=10bit=0,25°C, 1F=9bit=0,5°C

ow_reset(PORTA,5); // onewire reset signal
ow_write(PORTA,5,$CC); // issue command to DS1820
ow_write(PORTA,5,$44);
// start temperature conversion
j1 := 0;
Repeat // end of conversion cycle is
j1 := ow_read(PortA,5); // indicated by a non-zero
Until j1 > 0; // output to polling

ow_reset(PORTA,5); // at this point temp is in memory
ow_write(PORTA,5,$CC); // issue command to DS1820
ow_write(PORTA,5,$BE); // read scratchpad memory

j1 := ow_read(PORTA,5); // get Low Byte result
j2 := ow_read(PORTA,5); // get High byte resujlt

RawTemp := j2; // Raw now holds the 16-bit
RawTemp := RawTemp shl 8; // output, with sign bit and
RawTemp := RawTemp + j1; // maximum resolution information
// result in units of 0.0625 deg C


Určitě bude hotová knihovna i pro assembler. Ale jak jsem psal, jde o to, v čem chceš požadovaného výsledku docílit.

Petr Filipi

Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#7 Příspěvek od paycz »

mě v assembleru stačí tu binární hodnotu z portu číst a pak zbytek si udělám jednoduché mat. instrukce a podle kladného nebo záporneho čísla vyhodnotí bud log. 0 nebo 1 :D

petrfilipi
Příspěvky: 2551
Registrován: 13 zář 2005, 02:00

#8 Příspěvek od petrfilipi »

Tak v tom Ti osobně nepomohu, budeš muset hledat na webu - třeba tady jsou hodiny s 18B20 teploměrem - http://www.bogdi.ro/electronics/digital%20clock/, detailnější popis je pak tady:http://www.bogdi.ro/electronics/digital ... dexfp.html včetně možnosti stažení celého projektu.

Petr Filipi

Uživatelský avatar
Jeejda_teda_puvodne
Příspěvky: 142
Registrován: 08 dub 2012, 02:00

#9 Příspěvek od Jeejda_teda_puvodne »

Naposledy upravil(a) Jeejda_teda_puvodne dne 25 říj 2016, 14:00, celkem upraveno 1 x.

Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 02:00
Bydliště: Vysočina

#10 Příspěvek od Chenzee »

Ta hodnota ti vyleze poté, co si o ni řekneš. Takže ne jednosměrná komunikace ale obousměrná. To znamená použít protokol, "kterým" s tím čidlem komunikuješ (1-Wire). A fčíl hledej, studuj, testuj atd. A až ti nebude něco jasné nebo ti to nebude chodit, tak se tu zeptej.
Žádnej učenej z nebe nespadl ...

Odpovědět

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