hotstay писал(а):Доброе время суток.
Хочу "разместить" несколько датчиков DS1820 на Atmega8... Предварительно пометив их к примеру разными цветами.
(temp[0]=ds1820_temperature_10(&rom_codes[0][0])/10;)
Подскажите пожалуйста как мне считать температуру с датчика с определенным ROM кодом(серийным номером).
Либо киньте ссылку где про это можно прочесть по подробней.
Здесь и почитать HELP CVAVR
Library Functions Reference
|
1 Wire Protocol Functions
|
Maxim/Dallas Semiconductor DS1820/DS18S20 Temperature Sensors Functions
Подскажите пожалуйста как мне считать температуру с датчика с определенным ROM кодом(серийным номером)
Написано
int ds1820_temperature_10(unsigned char *addr)
this function returns the temperature of the DS1820/DS18S20 sensor with the ROM code stored in an array of 8 bytes located at address addr
Что в переводе
int ds1820_temperature_10(unsigned char *addr)
эта функция возвращает температуру датчика DS1820/DS18S20 с кодом ROM, сохраненным в массиве 8 байтов, расположенных в адресе addr
Далее в примере кода
Код: Выделить всё
/* maximum number of DS1820/DS18S20 connected to the bus */
#define MAX_DEVICES 8
/* DS1820/DS18S20 devices ROM code storage area,
9 bytes are used for each device
(see the w1_search function description),
but only the first 8 bytes contain the ROM code
and CRC */
unsigned char rom_codes[MAX_DEVICES][9];
/* detect how many DS1820/DS18S20 devices
are connected to the bus and
store their ROM codes in the rom_codes array */
devices=w1_search(0xf0,rom_codes);
for (i=0;i<devices;)
{
temp=ds1820_temperature_10(&rom_codes[i][0]);
printf("t%-u=%-i.%-u\xf8C\n\r",++i,temp/10,
abs(temp%10));
};
Вот и ответ на ваш вопрос...