Аномалия с millis()
- Войдите на сайт для отправки комментариев
Чт, 17/08/2017 - 11:11
Здравствуйте, уважаемое сообщество!
Прошу помочь разобраться с аномалией, возникающей в простой программе.
В учебных целях создал скетч, который в цикле проверяет время между событиями и при разнице времени больше заданной выводит время работы контроллера в консоль.
Аномалия заключается в том, что если я закрываю консоль и открываю её снова, время отсчитывается опять с нуля.
На "скорость" в принципе не влияет, но хочется понять ЧЯДНТ.
int thetime; int newtime; int interval = 5000; bool loop1Enabled; void TimePrint() { int time = millis()/1000; if (time/60/60<10) { Serial.print ("0"); } Serial.print (time/60/60); Serial.print (":"); if (time/60%60<10) { Serial.print ("0"); } Serial.print ((time/60)%60); Serial.print (":"); if (time%60<10) { Serial.print ("0"); } Serial.println (time%60); } void setup() { // put your setup code here, to run once: Serial.begin(9600); loop1Enabled = true; thetime = 0; newtime = 0; } void loop() { // put your main code here, to run repeatedly: int inData = 0; if (Serial.available() > 0) { inData = Serial.read(); } switch (inData) { case 0: // nothing pressed { break; } case 104: // button h pressed { Serial.println("1 - Start/Stop Loop1"); Serial.println("h - List of available commands"); break; } case 49: // button 1 pressed { if (loop1Enabled) { loop1Enabled = false; Serial.println("Loop 1 stopped. To start it again press 1"); } else { loop1Enabled = true; Serial.println("Loop 1 started. To stop it again press 1"); } break; } default: { Serial.println(inData); break; } } if (loop1Enabled) { newtime = millis(); if ((newtime - thetime) > interval) { thetime = millis(); TimePrint(); } } }
http://atroshin.ru/ru/content/avtomaticheskaya-perezagruzka-arduino-pri-...
Каждое новое открытие окна Serial Monitor посылает в порт сигнал DTR, это приводит к сбросу.
Спасибо
Аномалия заключается в том, что если я закрываю консоль и открываю её снова, время отсчитывается опять с нуля.
При закрытии-открытии консоли происходит рестарт ардуины - вы этого не знали?
Не знал, я же только учусь