Как стать автором
Обновить
45
0

Software Developer

Отправить сообщение
Об этом я узнал уже при программировании, после разводки платы, убирать не стал.
Хотелось контролировать питание флэш-памяти.
Рвал землю, потому что так в протеусе были внятные результаты, в обратном случае — нет.
SCK нужно подтянуть, так как команды SPI flash начинают читаться по первому спадающему фронту, что и обеспечивается подтяжкой.(из документации)
НА счёт CS, забыл. В прототипе подтянут был.
Полная аргументация — это тема для отдельной статьи. Если коротко, то люблю копаться в контроллере, а также код получается много быстрее и компактнее. В проект не переносятся ошибки из стандартной библиотеки. Хотя, можно сказать, что они заменяются собственными.

Со стороны бизнеса пока претензий не было.

Куча — не очень хочется тащить системные библиотеки в маленькие проекты.
Динамическое выделение памяти — не очень безопасно.
USB разъём делал по спецификации. Сделал два разъёма на плате, один основной, а другой отрывной по 1мм толщиной. Далее отрывной разъём отделяется, и прикладывается сверху на основной, затем припаиваются к друг другу. Таким образом достигается нужная толщина в 2мм.
Компоненты в 1.5$, плата 0.8$, доставку подсчитать сложновато. Да и на 5 штук стоимость одна на единицу, а на 100 штук уже совсем другая.
Да, хотелось именно в форме визитки.
Вы про бит TX is empty? С ним, к сожалению, с данным экраном работать не получается, хотя осциллограммы корректные.
Но в продакшене, увы. Когда просят «эзернет за 2 дня», то уже нет времени вдумчиво сидеть и работать с регистрами

Это называется херовая культура разработки, когда лишь-бы сделать быстро, не важно как. К сожалению, во мноких конторках практикуется, но это не значит, что это норма.
Ссылка хоть и на форум, но кидаю именно книжную полку, что важно, с небольшими рецензиями и практически все книги не заезжены, по крайней мере для меня почти все наименования были новы. В основном это книги от среднего уровня и выше.
Книжная полка

Вообще, если стоит цель именно продвинуться в области схемотехники, программирования и т.п., могу порекомендовать обращаться именно к книгам, сам всегда учился по книгам, уровень материала там заметно выше, что в общем-то и не удивительно.
И с учётом этого делать акцент в статье на «побочную», в общем-то, фичу — экономию нескольких байт — не упомянув основную… ну как-то странно.

С этой точки зрения вы правы конечно, тут мне и возразить то нечего, а в статью я этот момент добавил уже ранее. Для себя учел на будущее, если взялся тему раскрывать, то описать следует все важные особенности.
Вы ошибаетесь или выдаете свое желаемое за действительное. Я, очевидно, знаю далеко не все, но вот это
В случае управления «выходами» GPIO речь не о memory barries и/или memory ordering, а о потенциальном переключении процессора на другую задачу и/или обработчик прерываний, которые могут обращаться к тому-же GPIO. Соответственно будет прелестный heisenbug, если переключение произойдет между LDR и STR.
мне известно. И я хотел бы знать, почему вы посчитали, что этого понимания у меня нет?

Я же описал особенности организации периферийных модулей, которые помогают избегать проблем изменения битов в памяти во время модификации исходного значения, когда значения уже реально поменялось, а записано будет модифицированное старое.

А вот вас я действительно не очень понял. CPSIE глобальная команда, не зависит от места в стеке вызовов и разрешает прерывания для проца в целом.

Вы также сказали, что статью следует поправить или дополнить, и я по прежнему хочу знать, как именно, по вашему мнению, это нужно сделать, поскольку вы опять не сказали, что именно вас не устраивает.
Такое обычно называют не здоровой критикой.
Что конкретно по-вашему мнению мне следует поправить? Это не наезд, как можно подумать, я правда не понял из вашего комментария.

По теме байтов, вы приводите ссылку на другую версию ядра. В cortex-m3 это всего-лишь одна инструкция CPSIE/ CPSID.
Но дело то даже и не в этом. На счёт той же атомарности, в STM32, к примеру, почти все биты, что могут поменяться из вне, вынесены в отдельный Read-Only регистр (ANY_PERIPH)->SR. Если подобные биты есть в других регистрах, то обычно сбросить подобные флаги можно только записью единицы, что не нарушит логику программы даже при неатомарной операции.
Спасибо за пояснения! Я обычно и стараюсь такую функцию приравнять к constexpr переменной.
Ну не то чтобы забыл, статья и должна была осветить только аспект затрачиваемой памяти и тактов.
Однако я не считаю верным утверждение, что основная особенность — атомарность операции. Я думаю экономия памяти по значимости не уступает ей.
Слышал об этом, но как-то не довелось с семёрками поработать. Спасибо за ссылку, оставлю себе на заметку для подходящего случая.
Можно и так конечно, может это влияние шаблона, но мне почему-то эти способы равнозначны по восприятию.
Спасибо, строго говоря, с рекурсиями шаблонов столкнулся c ограничением вложенности, именно поэтому в коде для 03 стандарта есть отдельный шаблон для 31ого бита, иначе рекурсия уходит в бесконечность(сталкивался для gcc).
А по теме в общем, я могу ошибаться, но вроде как стандарт языка позволяет компилятору конвертировать constexpr функцию в run time, если ему кажется это правильным. Поэтому я всегда очень осторожно к ним отношусь и проверяю каждый случай применения.
2

Информация

В рейтинге
Не участвует
Откуда
Baden-Württemberg, Германия
Зарегистрирован
Активность