int main(void){ TExaS_Init(SW_PIN_PE210, LED_PIN_PB543210,ScopeOff); // activate grader and set system clock to 80 MHz ports_Init(); SysTick_Init(); EnableInterrupts(); S = goW; while(1){ TRAFLIGHT = FSM[S].trafOut; PEDLIGHT = FSM[S].pedOut; SysTick_Wait10ms(FSM[S].delay); Input = SENSORS; S = FSM[S].next[Input]; } }
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(); } }