Про типы в С я в курсе. Но я никогда не видел и не слышал, чтобы где-то всерьез говорилось о байте не из 8 бит.
Да, в 60 или 70 были машины со странной длиной слова или 5-6-7 битами для представления символов. Но мне казалось, что слово байт является синонимом для слова октет.
Я в курсе, что и сейчас есть машины, где CHAR_BITS не равно 8, но ведь это размер char, а не размер байта… или нет? Я запутался.
Я имею ввиду, что обычно есть два прерывания — прерывание «передающий буфер пуст» и прерывание «передача завершена». Здесь же я вижу только первое.
Прерывание «передача завершена» обычно нужно, чтобы спокойно переключить, например, преобразователь в RS485 на прием, не рискуя отрезать несколько бит, которые еще не отправились.
Если же такого прерывания нет, то приходится заводить отдельную задачу, которая поллит флаг в регистре (на форуме миландра это шутливо называют «прополка»).
Ну, мешает или нет — это зависит от конкретной RTOS. Если мне не изменяет память, то порт uC/OS для stm32, например, все обработчики прерывания пропускал через свой программный «контроллер прерываний».
То есть, вместо специализированного обработчика сначала вызывался один общий обработчик от ОС, который программно проверял источник прерывания и вызывал нужный обработчик из массива указателей.
Я бы еще добавил «Пользуйтесь системой контроля версий, не важно какой». Почему-то именно среди программистов микроконтроллеров большой процент людей, которые про такие штуки вообще не знают (по моим наблюдениям).
И тогда в лучшем случае архивы-бекапы с датами, а в худшем — ничего вообще.
Особенно на этапе обучения возможность откатиться на пару шагов назад очень полезна.
Статья получилась хорошая, но на мой взгляд в ней не хватает одной важной вещи.
выясняется, что «гуру не пишут проекты на ассемблере», и в средах ассемблер используется максимум для написания процедур и функций требующих максимального быстродействия, или генерации кода содержащего специфические команды микроконтроллера аналог которых не предлагается языком Си (С++ или библиотеками) in-line вставками.
А в самом деле — зачем писать всю прошивку на ассемблере?
В принципе, резонно.
Но меня удивляет, что даже в c#, где protected sealed override readonly, а лямбда все равно без ключевых слов. Спецсимволы лично мне просто мысленно читать тяжелее, что ли.
По поводу краткости, к слову, int foo(int a) занимает меньше символов, чем fn foo(a: int) -> int. И набирается с меньшим количеством нажатий на шифт. Но в rust почему-то второй вариант принят.
А вы уверены, что это общепринятое определение?
Да, в 60 или 70 были машины со странной длиной слова или 5-6-7 битами для представления символов. Но мне казалось, что слово байт является синонимом для слова октет.
Я в курсе, что и сейчас есть машины, где CHAR_BITS не равно 8, но ведь это размер char, а не размер байта… или нет? Я запутался.
Разве в байте не всегда 8 бит? В char может быть сколько угодно бит, но разве char — это синоним байта (а не символа)?
Учитывая, что переменная вроде как «валидность имени», то оно, наверное, или валидное или не валидное; bool как-то больше подходит.
Я дико извиняюсь, но это что, венгерская нотация? Вот эта вот b перед именем — это bool?
Прерывание «передача завершена» обычно нужно, чтобы спокойно переключить, например, преобразователь в RS485 на прием, не рискуя отрезать несколько бит, которые еще не отправились.
Если же такого прерывания нет, то приходится заводить отдельную задачу, которая поллит флаг в регистре (на форуме миландра это шутливо называют «прополка»).
И прерывание от передатчика — это прерывание «буфер пуст». Что-то мне это напоминает.
Опять прополку флага устраивать?
Даташит какой-то странный, на самом деле. Где полноценные описания регистров-то? Или может я их не нашел сходу? Или не в тот документ смотрю?
То есть, вместо специализированного обработчика сначала вызывался один общий обработчик от ОС, который программно проверял источник прерывания и вызывал нужный обработчик из массива указателей.
Зачем это делалось я сходу не скажу.
Но в той же freeRTOS такой проблемы нет.
И тогда в лучшем случае архивы-бекапы с датами, а в худшем — ничего вообще.
Особенно на этапе обучения возможность откатиться на пару шагов назад очень полезна.
А в самом деле — зачем писать всю прошивку на ассемблере?
Но меня удивляет, что даже в c#, где protected sealed override readonly, а лямбда все равно без ключевых слов. Спецсимволы лично мне просто мысленно читать тяжелее, что ли.
По поводу краткости, к слову, int foo(int a) занимает меньше символов, чем fn foo(a: int) -> int. И набирается с меньшим количеством нажатий на шифт. Но в rust почему-то второй вариант принят.
Хотя это все не очень существенно, прямо скажем.