какие-то чудеса...
- Войдите на сайт для отправки комментариев
Пт, 04/11/2016 - 14:51
Не выполняется проверка на условие
30000 больше 20000
конечно!
акуеть!
const unsigned int skorost1=60; // включится если скорость вращения больше 60 об. в минуту. const unsigned int skorost2=120; const unsigned int skorost3=240; const unsigned int skorost4=480; volatile boolean start; unsigned int drob,celoe; unsigned int oboroti; volatile long unsigned int razn =0; volatile long unsigned int vrema =0; unsigned long time; unsigned long timeout; void setup() { Serial.begin(9600); DDRB=B00100000; DDRC=B00001111; PORTC=255; attachInterrupt(0,sens,FALLING); } void loop() { if (razn >= 20000) { start=1; } else start=0 ; Serial.print("start: "); Serial.println (start); if (start) { timeout=micros(); // if ((timeout-vrema) > 10000000) razn=100000000; //delay(1000); // wait for a second Serial.print("micrs: "); time=micros(); Serial.println (time); Serial.print("vrema: "); Serial.println(vrema); Serial.print("Razniza: "); Serial.println(razn); // выводим частоту Serial.print("F: "); oboroti=1000000000/(razn); // частота celoe=1000000/(razn); // вычисляем целое значение частоты Serial.print(celoe); // Отображаем целое значение частоты Serial.print("."); drob=(oboroti/1000); // вычисление долей,сначала выделяем тысячи drob=drob*1000; // вычисление долей, теперь drob=oboroti-drob; if (drob <100) Serial.print("0"); if (drob<10) Serial.print("0"); Serial.println(drob); Serial.print("RPM: "); oboroti=60000000/razn; // преобразуем время в (обороты в минуту) Serial.println(oboroti); Serial.println("___________________"); // установка условия включения нагрузок if (oboroti<skorost1) PORTC=B11111111; if (oboroti>=skorost1 && oboroti<=skorost2) PORTC=B11111110; if (oboroti>=skorost2 && oboroti<=skorost3) PORTC=B11111101; if (oboroti>=skorost3 && oboroti<=skorost4) PORTC=B11111011; if (oboroti>=skorost4 ) PORTC=B11110111; } } // обработка прерывания с датчика скрости void sens() { // noInterrupts(); razn=(micros()-vrema); //расчет vrema =(micros()); start=1 ; // interrupts(); }
Ой напутал немного 9996 получается по проверке условия больше 20000
Не выполняется проверка на условие
30000 больше 20000
конечно!
акуеть!
а что эти строки тоже в цикле программы ?
я там попутал 9996 больше 20000
получается у него
чудеса происходили из-за 91 строки
когда прерывание происходило после 31 строки но до 38