ČTENÍ DAT Z PORTU
Moderátor: Moderátoři
ČTENÍ DAT Z PORTU
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
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
- Jeejda_teda_puvodne
- Příspěvky: 142
- Registrován: 08 dub 2012, 02:00
Naposledy upravil(a) Jeejda_teda_puvodne dne 25 říj 2016, 13:59, celkem upraveno 1 x.
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
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
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
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
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
Petr Filipi
- Jeejda_teda_puvodne
- Příspěvky: 142
- Registrován: 08 dub 2012, 02:00
Naposledy upravil(a) Jeejda_teda_puvodne dne 25 říj 2016, 14:00, celkem upraveno 1 x.
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 ...