Делается устройство - 10ти канальный термометр на DS18B20.
Работало все хорошо до того момента пока я не предпринял попытку опрашивать датчики не по порядку, как идут их ROM в массиве, а создать свой массив со своим порядком ROM кодов.
Т.е. Было так: unsigned char rom_rab[devices][9]; объявлен массив
for(i=0;i<devices;i++) //перебираем номера датчиков в массиве по череди
{ temp=ds18b20_temperature(&rom_code[i][0]);} //берем их ROM из массива, спрашиваем температуру.
(В этом массиве номера датчиков идут по порядку: [0][9];[1][9];[2][9];[3][9]; и т.д.)
А хотелось бы так: unsigned char rom_rab[devices][9]; // объявляем свой массив
(В этом массиве номера датчиков идут так, как я их туда запишу: [3][9];[5][9];[1][9];[0][9]; и т.д.)
Затем тем же методом - for(i=0;i<devices;i++) //перебираем номера датчиков в массиве по череди
{ temp=ds18b20_temperature(&rom_rab[i][0]);} //берем их ROM из массива, спрашиваем температуру.
Они уже идут не по порядку как видно.
Запись из rom_code[devices][9] в rom_rab[devices][9] провожу с помощью этой конструкции:
void edit(void)
{char z,e,i;
z=0; //переменная перебора быйтов в массиве
e=0; //номер датчика в массиве rom_code
i=0; //номер датчика в массиве rom_rab
while(i<devices) //Будем делать пока не запишем ROM всех датчиков в rom_rab
{temp=ds18b20_temperature(&rom_code[e][0]); //Просим температуру с первого массива, с датчиком номер e
if(temp>a) //Если она больше установленного значения(я этот датчик нагрел)
{for(z=0;z<9;z++)
{ rom_rab[i][z]=rom_code[e][z]; //Переписываем ROM датчика с номером e в массив rom_rab с номером i
}
while(temp>=a)
{ temp=ds18b20_temperature(&rom_code[e][0]); //Ждем пока датчик остынет
}
i++; //Увеличиваем номер в массиве rom_rab
e=0; //Опрашиваем датчики из массива rom_code заново
}
else{e++;} //если датчик не нагрет - берем температуру со следующего
if(e==devices) //Если опросили все датчики из rom_code
{e=0;} //начинаем опрос заново
}
}
Суть в том, чтоб после этой процедуры опрашивать датчики из rom_rab в нужной мне последовательности, а не как они идут по порядку в rom_code.
Так вот, во время исполнения кода который выше, после определения пары датчиков, следущий перестает видится - т.е. не запрашивается его температура.
Хотя все остальные видятся.(Первый - увидили, второй - увидили, третий - не опрашивается, четвертый - увидили...)
В чем может быть беда? Кто что может подсказать?
Прошу прощения если мутно написал! Спрашивайте что не понятно!
Спасибо заранее всем!
P.S. Могу скинуть исходник, но он не прокоментирован. Так-как было задуманно сделать на "скорую руку"...
