Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

2хмамин DS18S20 поиск. когда-то делал девайс, там задача решалась. для поиска всех устройств достаточно 12 байт

Отправлено mandigit (91.79.40.136) 18 марта 2010, г. 11:05


struct MLSearch{
char Device_SN[8];
signed char MLLastVariantBit;
char MLDevCount;
char MLDevCurrent;
char MLDevE;
};

signed char ML_FindNextROM(struct MLSearch *p){
char k,l,by,retry_count;
signed char i,t1,t2;
do{
t1=-1;
ML_Reset();
ML_SendByte(0xF0);
i=64;
by=0;
retry_count=3;
do{
k=1;
l=p->Device_SN[by];
t2=p->MLLastVariantBit;
do{
if(ML_ReciveBit()){
if(ML_ReciveBit()){
errno=ENODEV;
return(-1);
}
else{
ML_SendBit(1);
l|=k;
};
}
else{
if(ML_ReciveBit()){
ML_SendBit(0);
l&=~k;
}
else{
if (t2>i){
if (l&k)
ML_SendBit(1);
else{
ML_SendBit(0);
t1=i;
};
}
else{
if (t2==i){
ML_SendBit(1);
l|=k;
}
else{
ML_SendBit(0);
t1=i;
l&=~k;
};
};
};
};
i--;
}while(k<<=1);
p->Device_SN[by++]=l;
}while(i);
}while((--retry_count)&&(CRC8(p->Device_SN,8)!=0));
if(retry_count==0){
errno=EFDEV;
return(-1);
};
if(t1==-1)
p->MLDevE=0xFF;
p->MLDevCurrent++;
p->MLLastVariantBit=t1;
errno=ENOERR;
return(0);
}
Ссылка: http://mandigit.newmail.ru/Termom/index.htm

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 93:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru