Глюки unsigned long или проблема с головой
- Войдите на сайт для отправки комментариев
Чт, 15/04/2021 - 13:55
Всех приветствую. Что-то я начинаю сомневаться в своей адекватности...
Вот код:
void setup() { Serial.begin(9600); delay(500); } unsigned long delaymillis = 0; unsigned long endmillis = 0; void loop() { delaymillis = 60 * 1000; endmillis = delaymillis + millis(); Serial.print(delaymillis); Serial.print(" "); Serial.print(endmillis); Serial.print(" "); Serial.print(millis()); Serial.println(" "); delay(1000); }
А вот данные из порта:
4294961760 4294962259 500 4294961760 4294963260 1501 4294961760 4294964261 2502 4294961760 4294965263 3504 4294961760 4294966264 4505 4294961760 4294967265 5506 4294961760 970 6507 4294961760 1970 7507 4294961760 2972 8509 4294961760 3972 9509 4294961760 4974 10510 4294961760 5974 11511 4294961760 6976 12512 4294961760 7976 13513
Что я делаю не так? Готов застрелиться уже...
delaymillis = 60ul * 1000ul;
Это ловушка для всех новичков:) (int)60*1000 = -5536; 2^32 - 5536 = 4294961760
строчку 10 вот так запиши и все наладится
Всем премного благодарен. Раньше что-то не сталкивался просто с ul. Открыли глаза и сэкономили патрон ))
Спасибо всем, кто спросил и ответил получилось очень полезно
Я тут недавно марахнулся. Переменная - счетчик запусков отчеготто обозвалась булинем, потом долго удивлялся, почему он дальше 1 не суммирует. О вреде маленьких экранов.
и еще совет (скорее из ада перфекциониста). если можно посчитать на калькуляторе ручками - посчитайте, не грузите процик лишними вычислениями.
вместо delaymillis = 60 * 1000; просто delaymillis = 60000;
не грузит, компилятор оптимизирует константные вычисления
не грузит, компилятор оптимизирует константные вычисления
потому и из ада перфекциониста. сокращаем время компиляции :-)
и еще совет (скорее из ада перфекциониста). если можно посчитать на калькуляторе ручками - посчитайте, не грузите процик лишними вычислениями.
вместо delaymillis = 60 * 1000; просто delaymillis = 60000;
Это было просто для примера. 60 - это вместо переменной