Это “горе от ума”. Попробуйте быть проще и посмотреть на неё не как на что-то имеющее смысл, а просто, как на операцию с числами (мне нетрудно подсказать, но будете ж потом по лбу себя бить с криком “блин, да куда же я смотрел?”).
Если поменять там uint8_t
на uint16_t
, проблема “странно маленького кода” никуда не исчезнет. Если массив received
в программе не используется, то он и не используется, а потому его выбрасывают независимо от других ошибок.
64 != 1 ))).
Я бы сам написал
if (USISR & (1 << USIOIF))
Поэтому и не обратил внимание.
Спасибо за разъяснение!
так тут без даташита не разобраться, надо жеж смотреть что в этих регистрах, какой-никакой отладчик всё таки нужен видимо, можно конечно эти регистры и в сериал отправить, сейчас подумаю на чём можно посмотреть…
PS надеюсь тема до пятницы доживёт, не дайте засохнуть…
Так ото ж!
Там даже не надо знать числовые значения этих констант (128 или ещё сколько), там можно всё увидеть по операциям. Вот смотрите:
- в “жёлтом” выражении нулевой бит всегда равен 0 (после сдвига влево!), независимо от значения
USIOIF
; - тогда в “зелёном” выражении нулевой бит тоже будет всегда равен 0 независимо от
USISR
(т.к. он образуется операцией AND с нулём); - ну и понятно, что если нулевой бит равен нулю, то выражение никак не может быть равно единице.
Всё тут разобраться, никакой даташит не нужен. См. мой предыдущий комментарий.
сейчас начнутся извивания)
Поспешил, что всё понял.
А если USIOIF
= 0?. То единицу не двигаем …
стукнул себя по лбу, это я видел, что нулевой равен 0, но я жеж мыслю космическими категориями, “кто будет королевой Англии”…
PS автор задумал видимо так, сдвину бит и сравню регистры, если РЕЗУЛЬТАТ СРАВНЕНИЯ не false… (а это любое число) то проверяю его на true…
PPS как полёт моей мысли?
не могу не отметить - еще одну ветку засрали…
кстати да!
это называется полемическая гипербола.
шота не сходится
Serial.println(1 & (1<<0));
По даташиту это 6-ой бит, так что в итоге Евгений Петрович всё равно прав
(Если конечно правильно определил, что это из линейки ATtiny 25/85)
так кто ж спорит то Пертович, как истинный перфекционист, подстраховался))
а нет сдвига, нет и спроса)
из ней самой, там ссылка есть, буферам автор присваивает тип переменных String и видим, что память начинает отжираться как не в себя, мой комментарий был как раз на эту тему
Таки да! Слона-то я и не приметил Что-то как-то не торкнуло, что он вполне имеет право быть нулём.
Снимаю своё утверждение, что не нужно знать значения констант
вот зачем бить ниже пояса )))
Ещё раз спасибо за разъяснение 15стр. Встречал такую запись у новичков, но не задумывался глубоко))
Сам избежал таких ошибок только потому, что лень было единицу писать, ограничивался проверкой истинности условия в скобках)))
Вы всерьез считаете, что Ваше желание должно как-то повлиять на работу оптимизатора?
Какой вообще смысл отлаживать “кусок кода”, который никогда не будет выполняться?