Pull to refresh
77
0
Send message
Да, вы правы. Мне казалось, что стандарт С вообще не оперирует понятием байт.
Байт — это минимально адресуемая ячейка памяти.

А вы уверены, что это общепринятое определение?
Про типы в С я в курсе. Но я никогда не видел и не слышал, чтобы где-то всерьез говорилось о байте не из 8 бит.
Да, в 60 или 70 были машины со странной длиной слова или 5-6-7 битами для представления символов. Но мне казалось, что слово байт является синонимом для слова октет.

Я в курсе, что и сейчас есть машины, где CHAR_BITS не равно 8, но ведь это размер char, а не размер байта… или нет? Я запутался.
Если подразумеваются байты, задействуйте unsigned char. Если речь об октетах, выбирайте uint8_t.

Разве в байте не всегда 8 бит? В char может быть сколько угодно бит, но разве char — это синоним байта (а не символа)?
Я своим комментарием именно это и хотел сказать, собственно.
Это даже хуже.
Учитывая, что переменная вроде как «валидность имени», то оно, наверное, или валидное или не валидное; bool как-то больше подходит.
Переменные самодокументируемые — bPersonNameValidity

Я дико извиняюсь, но это что, венгерская нотация? Вот эта вот b перед именем — это bool?
Спасибо за подсказку, я вообще приложение в даташите не увидел, его почему-то в оглавлении нет.
Я имею ввиду, что обычно есть два прерывания — прерывание «передающий буфер пуст» и прерывание «передача завершена». Здесь же я вижу только первое.
Прерывание «передача завершена» обычно нужно, чтобы спокойно переключить, например, преобразователь в RS485 на прием, не рискуя отрезать несколько бит, которые еще не отправились.

Если же такого прерывания нет, то приходится заводить отдельную задачу, которая поллит флаг в регистре (на форуме миландра это шутливо называют «прополка»).
Посмотрел в даташит:
Сигналы запросов на прерывания UART:

от приемника;
от передатчика;
по таймауту приемника;
по состоянию модема;
по ошибке;
логическое ИЛИ сигналов запросов на прерывания.

И прерывание от передатчика — это прерывание «буфер пуст». Что-то мне это напоминает.
Опять прополку флага устраивать?

Даташит какой-то странный, на самом деле. Где полноценные описания регистров-то? Или может я их не нашел сходу? Или не в тот документ смотрю?
Ну, мешает или нет — это зависит от конкретной RTOS. Если мне не изменяет память, то порт uC/OS для stm32, например, все обработчики прерывания пропускал через свой программный «контроллер прерываний».
То есть, вместо специализированного обработчика сначала вызывался один общий обработчик от ОС, который программно проверял источник прерывания и вызывал нужный обработчик из массива указателей.

Зачем это делалось я сходу не скажу.

Но в той же freeRTOS такой проблемы нет.
Да, я совсем забыл, что в обычной Ардуино тоже отладки нет :)
Svn-сервер тоже легко поднимается локально… Но начинать с svn сейчас, пожалуй, уже не стоит :)
А как у этих вещей дела обстоят с отладкой?
Я бы еще добавил «Пользуйтесь системой контроля версий, не важно какой». Почему-то именно среди программистов микроконтроллеров большой процент людей, которые про такие штуки вообще не знают (по моим наблюдениям).
И тогда в лучшем случае архивы-бекапы с датами, а в худшем — ничего вообще.

Особенно на этапе обучения возможность откатиться на пару шагов назад очень полезна.
Статья получилась хорошая, но на мой взгляд в ней не хватает одной важной вещи.
выясняется, что «гуру не пишут проекты на ассемблере», и в средах ассемблер используется максимум для написания процедур и функций требующих максимального быстродействия, или генерации кода содержащего специфические команды микроконтроллера аналог которых не предлагается языком Си (С++ или библиотеками) in-line вставками.

А в самом деле — зачем писать всю прошивку на ассемблере?
Вероятно это было бы проще, если бы айпад был мой или если бы на нем уже был дропбокс… но идея хорошая, спасибо.
Спасибо, попробую.
Подписываюсь под абзацем про iTunes (хоть я только под виндой его юзал). Каждый раз по полчаса ищу, как файл перекинуть на ipad какой-нибудь.
В принципе, резонно.
Но меня удивляет, что даже в c#, где protected sealed override readonly, а лямбда все равно без ключевых слов. Спецсимволы лично мне просто мысленно читать тяжелее, что ли.

По поводу краткости, к слову, int foo(int a) занимает меньше символов, чем fn foo(a: int) -> int. И набирается с меньшим количеством нажатий на шифт. Но в rust почему-то второй вариант принят.

Хотя это все не очень существенно, прямо скажем.

Information

Rating
4,880-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity