Аномалия с 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, это приводит к сбросу.
Спасибо
Аномалия заключается в том, что если я закрываю консоль и открываю её снова, время отсчитывается опять с нуля.
При закрытии-открытии консоли происходит рестарт ардуины - вы этого не знали?
Не знал, я же только учусь