示例#1
0
void DS18B20_Execute()
{
    /*
    -флаг сброшен - выполнить поиск 1Wire устройств
    -если количество заданных устройсв совпадает с
    колличеством найденных - устанавливаем флаг,
    чтобы функция поиска больше не запускалась
    */

    if (ds18b20_searchFlag == SEARCH_SENSORS){
          ds18b20_num = 0;
          ds18b20_crcFlag = OWI_SearchDevices(ds18b20_AllDevices, MAX_DEVICES, BUS, &ds18b20_num);
          if ((ds18b20_num == MAX_DEVICES)&&(ds18b20_crcFlag != SEARCH_CRC_ERROR)){
             ds18b20_searchFlag = SENSORS_FOUND;
          }
    }

    /*
       считать температуру первого найденного датчика
       если возвращена ошибка CRC, вывести строку "not"
       и сбросить флаг, чтобы функция поиска снова произвела
       опрос шины
    */

    ds18b20_crcFlag = DS18B20_ReadTemperature(BUS, ds18b20_AllDevices[0].id, &(ds18b20_temperature[0]));
    if (ds18b20_crcFlag != READ_CRC_ERROR){
//        DS18B20_PrintTemperature(ds18b20_temperature);
    }
    else{
        ds18b20_searchFlag = SEARCH_SENSORS;
    }

    /*
        считать температуру второго найденного датчика
        если возвращена ошибка CRC, вывести строку "not"
        и сбросить флаг, чтобы функция поиска снова произвела
        опрос шины
    */

//    LCD_Goto(7,1);
    ds18b20_crcFlag = DS18B20_ReadTemperature(BUS, ds18b20_AllDevices[1].id, &(ds18b20_temperature[1]));
    if (ds18b20_crcFlag != READ_CRC_ERROR){
//        DS18B20_PrintTemperature(ds18b20_temperature);
    }
    else{
//        LCD_SendString("  not  ");
        ds18b20_searchFlag = SEARCH_SENSORS;
    }

}
示例#2
0
/*
*	Инициализирует поиск устройств на шине 1-Wire
*	и возвращает кол-во найденных устройств
*	или -1 в случае ошибки
*/
char oneWireSearch(OWI_device* devices){
	
	//итак, методы работы с 1-wire содержат
	//sei() и cli(), что будет убивать текущую передачу по clunet (если она есть)
	//поэтому дождемся ее конца и начнем обращаться к 1-wire
	
	clunet_wait_sending();
	
	unsigned char num = 0;
	if (OWI_SearchDevices(devices, OWI_MAX_BUS_DEVICES, OWI_BUS, &num) == SEARCH_CRC_ERROR){
		return -1;
	}else{
		return num;
	}
}