-
- Кстати, зачастую DWT->CYCCNT более лучше. - SciFi(16.10.2019 10:41)
- А ежели кортекс будет в следующий раз М0, выкинуть камень или код? - Andreas(16.10.2019 11:39)
- А ежели не кортекс, а пик, то вообще застрелиться? Жизнь - боль. - SciFi(16.10.2019 11:40)
- спасибо, не знал о нем. - Mefod(16.10.2019 11:27)
- А ежели кортекс будет в следующий раз М0, выкинуть камень или код? - Andreas(16.10.2019 11:39)
- Приведение типа не сделал. il-2(87 знак., 16.10.2019 10:10)
- Это я понял после того как зависло, но почему так? Как все приводится в варианте с зависанием, можете объяснить? - Mefod(16.10.2019 10:18)
- Гуглить integer promotion rules. Например -> - il-2(16.10.2019 10:29, ссылка)
- Integer promotion жеж. Перед вычислениями здесь всё приводится к знаковому 32-разрядному целому, и начинаются чудеса. - SciFi(16.10.2019 10:22)
- Почитал ваши ссылки с il-2, смотрю на код и все равно понять не могу... (боять...). То есть любое целочисленное выражение приводится к int( если вмещает). Было (uint16_t - uint16_t < uint16_t) => (int - int < int ). Как такое зависнет? - Mefod(16.10.2019 11:36)
- -> - il-2(16.10.2019 11:54, ссылка)
- Потому что получается смесь - только часть переменных знаковая. - VLLV(16.10.2019 11:40)
- Почитал ваши ссылки с il-2, смотрю на код и все равно понять не могу... (боять...). То есть любое целочисленное выражение приводится к int( если вмещает). Было (uint16_t - uint16_t < uint16_t) => (int - int < int ). Как такое зависнет? - Mefod(16.10.2019 11:36)
- +1. Или везде использовать unsigned int. - SciFi(16.10.2019 10:14)
- Или везде использовать обычный int и не морочить голову всякими недотипами. - fk0(16.10.2019 11:30)
- (unsigned int)-(unsigned int)=(signed or unsigned int)? Что там по закону положено? Вроде бы все вычисления заканчиваются (signed int) - AlexBi(16.10.2019 10:28)
- SciFi ниже ответил, но есть ньюансы, вроде (unsigned int) - (signed long). Правило, как я понял, не в том, что использование unsigned делает всё выражение таковым, а что если не влазит в ширину типа, то тогда какой-то выбирается и там 10 пунктов, fk0(26 знак., 16.10.2019 11:30)
- По закону (unsigned int)-(unsigned int)=(unsigned int). Причём гарантируется корректное поведение при переполнении бегущего счётчика, то есть для задержек самое то. - SciFi(16.10.2019 10:32)
- тогда почему оно зависает? чот я стал тупить - Mahagam(16.10.2019 11:31)
- Пример: il-2(443 знак., 16.10.2019 11:47 - 13:02)
- вообще странно. чот мне казалось, что сначала операнды промотятся до инта. а потом уже вычитание. если ж вычитать флоат из инта, сначала же всё конвертится во флоат, а потом уже матоперация. так же? дальше, результат uint16 - uint16 должен быть Mahagam(186 знак., 16.10.2019 12:51)
- Век живи - век учись. "... операнды приводятся к некоторому общему типу, который также является и типом результата" © K&R - SciFi(16.10.2019 13:15, ссылка)
- Век перечитывай) - Mefod(16.10.2019 13:25)
- Все правильно. И я про то же. Немного подправил свой ответ выше, чтобы было понятней. - il-2(16.10.2019 12:59)
- Век живи - век учись. "... операнды приводятся к некоторому общему типу, который также является и типом результата" © K&R - SciFi(16.10.2019 13:15, ссылка)
- Все понял, спасибо. - Mefod(16.10.2019 12:06)
- вообще странно. чот мне казалось, что сначала операнды промотятся до инта. а потом уже вычитание. если ж вычитать флоат из инта, сначала же всё конвертится во флоат, а потом уже матоперация. так же? дальше, результат uint16 - uint16 должен быть Mahagam(186 знак., 16.10.2019 12:51)
- Что-то я и сам затупил. Если tick == 0xFFFF, то Tim7_Get_mks() - tick == (int)0xFFFF****, то есть отрицательное число. Из цикла сложно будет вырваться. - SciFi(16.10.2019 11:36 - 11:46)
- Потому, что у тебя 32-битная платформа и все вычисления приводятся к int, если имеют более "узкий" тип. На 16-битной такой код прокатил бы. - fk0(16.10.2019 11:37)
- Компилер создаёт в стеке временную переменную для хранения результата вычитания и последующего сравнения. evgeniy1294(211 знак., 16.10.2019 11:46)
- Пример: il-2(443 знак., 16.10.2019 11:47 - 13:02)
- тогда почему оно зависает? чот я стал тупить - Mahagam(16.10.2019 11:31)
- Это я понял после того как зависло, но почему так? Как все приводится в варианте с зависанием, можете объяснить? - Mefod(16.10.2019 10:18)
- листинг ассемблера выдай. - Mahagam(16.10.2019 09:56)
- не вставляется uthx. Мне нужно понять как компилятор рассуждает, чтобы в будущем не напираться. - Mefod(16.10.2019 10:20)
- Кстати, зачастую DWT->CYCCNT более лучше. - SciFi(16.10.2019 10:41)