Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
если я сравниваю две переменные, одна из которых все время инк., что произойдет, если (+)
Отправлено
Метценгерштейн (213.33.244.142) 24 мая 2010, г. 13:23
первая подойдет к своей границе разрядности?
uint32_t CntT1_ms;
uint32_t timeStamp;
if ((CntT1_ms-timeStamp) >= LED_BLINK_PERIOD) {
cpl (LED);
}
просто, когда CntT1_ms будет увеличиваться до своего предела 32 бита, timeStamp в полседний момент будет ждать, что CntT1_ms будет больше на 200, а CntT1_ms уже уперлась в границу свою и перешла через 0, т.о. стала меньше timeStamp и намного. Как себя тут поведет условие?
Составить ответ | Вернуться на конференцию
Ответы
- раз в 50 суток ваша программа будет глючить. - ы (24.05.2010, 13:56:7 213.79.108.215, пустое)
- да все нормально будет. для примера 0x00000002-0xFFFFFFF5 будет равно 0x0D - Kukaracha (24.05.2010, 13:45:31 62.122.68.6, пустое)
- переходите на декрементные программные таймеры, проверка более эффективная, не надо ничего вычитать ниоткуда - RED_DRAGON (24.05.2010, 13:33:7 213.242.214.185, пустое)
- кроме декремента. и если времени в таймере хватает, сделайте проверку программного таймера в ИСР, выставление флажка там, а блинканье и сброс флажка в основном цикле... красивше будет - RED_DRAGON (24.05.2010, 13:35:41 213.242.214.185, пустое)
- пример можно? или тот, что Вы привели? - Метценгерштейн (24.05.2010, 13:34:14 213.33.244.142, пустое)
- угу - RED_DRAGON (24.05.2010, 13:36:13 213.242.214.185, пустое)
- так как переменные беззнаковые, то когда одна из них "переполнится", их разность станет существенно БОЛЬШЕ 200. - A_R_V (24.05.2010, 13:29:47 172.20.20.23,87.117.1.141,94.246.126.177, пустое)
- как написано так и будетб тоесть хня. ибо кнтТ1_мс нигде не модифицируется - RED_DRAGON (24.05.2010, 13:26:53 213.242.214.185, пустое)