Разъясните пожалуйста.

kolyn
Offline
Зарегистрирован: 18.01.2019

Наткнулся на полезную, на мой взгляд, статью про работу с таймерами.

Один из примеров из статьи:

Задача 4: узнать сколько прошло времени между метками t1 и t2



Данные меньше разрядности int (8 бит)

uint8_t t1, t2, elapsed;

t1 = TCNT0; /* записали первую метку */
t2 = TCNT0; /* записали вторую метку */
elapsed = (uint8_t)(t2 - t1);

Данные больше или равны разрядности int (16, 32, 64 бита)

uint16_t t1, t2, elapsed;

t1 = TCNT1; /* записали первую метку */
t2 = TCNT1; /* записали вторую метку */
elapsed = t2 - t1;

Не могу понять, при чем тут разрядность int?, зачем в строке 5 в первом случае явное приведение разности к uint8_t?

Пробовал в средах Ардуино и Атмелстудио - результат одинаков что с явным приведением, что без него.

Не понимаю, что имел ввиду автор, может кто пояснит?

 

b707
Offline
Зарегистрирован: 26.05.2017

kolyn пишет:

Не понимаю, что имел ввиду автор, может кто пояснит?

ну он решил на всякий случай подстраховаться, лишний раз напомнив компилятору, что разность t2 и t1 следует считать в типе UINT8_T, хотя по другому и быть не могло, раз обе переменные описаны в этом типе

Забейте, даже в самых толковых статьях попадаются ошибки... а эта и не ошибка вовсе - так, лишний квалификатор, который, как вы сами убедились, ни на что не влияет

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

kolyn пишет:

Не могу понять, при чем тут разрядность int?, зачем в строке 5 в первом случае явное приведение разности к uint8_t?

У атмеги int 16 разрядный. Приведениев строке 5 не обязательно. Поскольку оба операнда uint8_t и результат по умолчанию uint8_t

 

kolyn
Offline
Зарегистрирован: 18.01.2019

b707 пишет:

Забейте

Вчерашний вечер посвяти поискам и экспериментам, а вдруг в этом есть скрытый сакральный  смысл((.  

-NMi-
Offline
Зарегистрирован: 20.08.2018

уотт вас плющит с_утреца, бле@

чОтныйа счОтчеки в AVR васьмибитныйе, ничотныйа шыснаццатибитныйе (нифсихда) --- пасиму ризультат:

u8-u8=u8

u16-u16=u16

Это же очевидно.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

kolyn пишет:

а вдруг в этом есть скрытый сакральный  смысл((.  

Вообще-то есть, но это не Ваша лига - забейте и не берите в голову.