Пример #1
0
//*
    void usartPrintOnewire(){
    	for (unsigned char i=0; i<nDevices; i++) // теперь сотируем устройства и запрашиваем данные
    	{
    		// узнать устройство можно по его груповому коду, который расположен в первом байте адресса
    		switch (owDevicesIDs[i][0])
    		{
    			case OW_DS18B20_FAMILY_CODE: { // если найден термодатчик DS18B20
    				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
    				printf(" - Thermometer DS18B20"); // печатаем тип устройства
    				DS18x20_StartMeasureAddressed(owDevicesIDs[i]); // запускаем измерение
    				timerDelayMs(800); // ждем минимум 750 мс, пока конвентируется температура
    				unsigned char	data[2]; // переменная для хранения старшего и младшего байта данных
    				DS18x20_ReadData(owDevicesIDs[i], data); // считываем данные
    				unsigned char	themperature[3]; // в этот массив будет записана температура
    				DS18x20_ConvertToThemperature(data, themperature); // преобразовываем температуру в человекопонятный вид
    				printf(": %d.%d C", themperature[1],themperature[2]);
    				current_temp=themperature[1];
    			} break;
    			case OW_DS18S20_FAMILY_CODE: { // если найден термодатчик DS18B20
    				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
    				printf(" - Thermometer DS18S20"); // печатаем тип устройства
    			} break;

    			case OW_DS1990_FAMILY_CODE: { // если найден электронный ключ DS1990
    				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
    				printf(" - Serial button DS1990"); // печатаем тип устройства
    			} break;
    			case OW_DS2430_FAMILY_CODE: { // если найдена EEPROM
    				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
    				printf(" - EEPROM DS2430"); // печатаем тип устройства
    			} break;
    			case OW_DS2413_FAMILY_CODE: { // если найден ключ
    				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
    				printf(" - Switch 2413"); // печатаем тип устройства
    			} break;
    		}
    	}
    }
Пример #2
0
int main(void)
{
	stdout = &usart_str; // указываем, куда будет выводить printf 

	ports_Init();

	MT8870_Init();

	USART_init(); // включаем uart

	INT0_Init();

	timerDelayInit();

	nDevices = search_ow_devices(); // ищем все устройства

	printf("---------- Found %d devices ----------", nDevices);


	for (unsigned char i=0; i<nDevices; i++) // теперь сотируем устройства и запрашиваем данные
	{
		// узнать устройство можно по его груповому коду, который расположен в первом байте адресса
		switch (owDevicesIDs[i][0])
		{
			case OW_DS18B20_FAMILY_CODE: { // если найден термодатчик DS18B20
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Thermometer DS18B20"); // печатаем тип устройства 
				DS18x20_StartMeasureAddressed(owDevicesIDs[i]); // запускаем измерение
				timerDelayMs(800); // ждем минимум 750 мс, пока конвентируется температура
				unsigned char	data[2]; // переменная для хранения старшего и младшего байта данных
				DS18x20_ReadData(owDevicesIDs[i], data); // считываем данные
				unsigned char	themperature[3]; // в этот массив будет записана температура
				DS18x20_ConvertToThemperature(data, themperature); // преобразовываем температуру в человекопонятный вид
				printf(": %d.%d C", themperature[1],themperature[2]);
			} break;
			case OW_DS18S20_FAMILY_CODE: { // если найден термодатчик DS18B20
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Thermometer DS18S20"); // печатаем тип устройства 
			} break;

			case OW_DS1990_FAMILY_CODE: { // если найден электронный ключ DS1990
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Serial button DS1990"); // печатаем тип устройства 
			} break;
			case OW_DS2430_FAMILY_CODE: { // если найдена EEPROM
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - EEPROM DS2430"); // печатаем тип устройства 
			} break;
			case OW_DS2413_FAMILY_CODE: { // если найден ключ
				printf("\r"); print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Switch 2413"); // печатаем тип устройства 
			} break;
			case OW_DS2405_FAMILY_CODE: { // если найден ключ
				printf("\r"); 
				print_address(owDevicesIDs[i]); // печатаем знак переноса строки, затем - адрес
				printf(" - Switch 2405"); // печатаем тип устройства 

				addSwitchIndex(i);
				DS24x05_Add(owDevicesIDs[i]);
			} break;
		}

	}

	commands_Reset();	
	sei();

	for(;;)
	{	
		toggleSwitches();
	}

}