All streams
Search
Write a publication
Pull to refresh
83
0
Send message
Дарите альстромерии — они красивые, но без запаха. :)
Если так экстраполировать, то не «даже», а «только».
Как ни странно, но на моей памяти действительно радовалась цветам только одна девушка (правда, она потом все равно мне нахамила, чем поставила крест на нашем общении). Так что, видимо, времена меняются.
«ынжынэрная мысль» дальше мигающих сердечек и цветочков для прекрасного пола продвинется когда-нибудь?


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

Это круговорот жизни. Мне сложно сосчитать, сколько раз на форуме я отвечал на вопросы на тему «мигалка для дамы сердца». Они всегда одинаковые и всегда дышат энтузиазмом. :) И это прекрасно.

Богами вам еще даны
Златые дни, златые ночи,
И томных дев устремлены
На вас внимательные очи.
Играйте, пойте, о друзья!
Утратьте вечер скоротечный;
И вашей радости беспечной
Сквозь слезы улыбнуся я.


Скоротечный вечер, в частности, можно утратить на сборку светодиодного сердечка.
Расскажите пожалуйста, какие бывают драйверы и как они работают.


Sic transit gloria mundi.

https://geektimes.ru/post/242074/
Все примерно так и есть, как написано, за исключением одного: разделение проектирования схемы, трассировки PCB, а также (при наличии программируемой элементной базы) программирования HAL на разных людей я считаю крайне порочной практикой, которая снижает эффективность разработки, затягивает время и порождает бюрократию. Дело в том, что эти этапы очень тесно связаны, и для достижения наилучшего результата выполнять их должен один человек, который держит в голове картину целиком, и потому способен производить перекрестные оптимизации в проекте.

Это не мои праздные измышления — я сам разработчик (по вашей классификации — эмбеддер), причем я работал как в компании, которая исповедовала предельное разделение труда, так и в компании, в которой мне предоставляли возможность делать все перечисленные этапы (схемотехника, PCB, HAL) самому — второе для меня гораздо удобнее (собственно, во второй компании я работаю по сей день, прошедшее время — только для красоты предложения).

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

С программистом HAL та же история. Либо это должен быть человек с неплохими знаниями схемотехники (а тогда почему бы ему не проектировать схему самому?), либо разработчик будет вынужден долго и в деталях пояснять, как и каким образом нужно инициализировать оборудование.

Если устройство сложное, лучше разделить его на законченные модули (схема + плата + прошивка), и уже эти модули распределить для разработки между разными людьми.

Так что я бы скорректировал набор специалистов до такого:

1. Разработчик аппаратной части: схема, плата, ПО нижнего уровня.
2. Программист (опционально, если необходимо): прикладной софт (например, под тот же Android).
3. Конструктор механической части: корпус, сборочные чертежи.
4. Менеджер проекта (опционально, если необходимо): беготня с бумажками.

Это в предположении использования контрактного производства.
Да я понял, что это сарказм.

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

А плане получения… Тут у всех тоже разные приоритеты. Я, например, предпочту работодателя, который предложит мне N денег и гибкий график тому, который предложит k*N денег, но при этом будет требовать работать по секундомеру. Опять же, я знаю людей, которые меряют отдачу от работы только уровнем зарплаты, и готовы вставать хоть в шесть утра и работать круглосуточно, лишь бы им платили побольше. Но есть и те, кому, как и мне, более важно, чтобы работа не занимала все время кроме сна.

Одно хорошо, что работодатели есть разные, и у них тоже разные приоритеты.
Зависит от вкусов, у всех свои цели. А «рост» — это понятие, которое каждый понимает по-своему… Я, к слову, как раз таки в большей мере сторонник того мнения, что от добра добра не ищут, и «росту» предпочитаю стабильность. Но я не об этом.

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

А рассказ офигенен.: )
На самом деле, есть варианты. :) Я делал это для avr-gcc, но здесь, думаю, должно работать аналогично.
Еще один вариант (которым я обычно и пользуюсь) — прописать параметр вызова -Wno-main.
Как можно видеть, пример значительно проще чем аналогичный для STM32. Не требуются ни SPL, ни Cube, ни HAL, ни Libopencm3.


Вот что бывает, когда производитель слишком активно навязывает свои библиотеки — у людей создается впечатление, что без них вообще нельзя.

На самом деле, и под STM32 можно спокойно писать без всех этих тяжеловесных порождений безудержного маркетинга. Просто ST, к моему глубокому сожалению, ориентируется не на тех, кто вдумчиво делает качественное обрудование, а на тех, кому надо, чтобы продукт вышел на рынок еще вчера, и неважно, что софт будет представлять из себя нагромождение неудобоваримых библиотек, а как он работает, не будет понимать даже сам разработчик.
Не буду спорить, я не специалист в патентном праве, но почему-то до сих пор, к примеру ARM, одна из самых успешных fabless компаний.


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


Меньше частота — меньше энергопотребление. А вот производительность, как мы видим, даже возросла. Так что все в порядке.
Промышленные встроенные системы несколько отличаются от рынка смарфонов, где принято обновляться просто потому, что с момента релиза прошло уже более N лет. Если решение есть, оно работает и решает все необходимые задачи, а новых требований не возникло — нет смысла его менять. Это не тот случай, когда идет борьба за очередные 100 мкм толщины корпуса — напротив, гораздо более актуален принцип «работает — не трогай». В этом плане совместимость с существующим (проверенным годами и точно корректным) кодом очень ценна, притом что тактовая частота снижена (значит снижено и энергопотребление), а производительность, наоборот, по факту повысилась.

Так что я считаю, что это очень многообещающий чип. Более того, на моей памяти это, наверное, первый реальный шанс для наших производителей электроники выйти на широкий рынок.
Если не секрет, чем обусловлен выбор контроллера серии STM32F4 для инвертора? Применяете продвинутое векторное управление двигателем?
Нет, коллеги, я протестую. Я понимаю, что возможны вариации, но считаю, что микроконтроллерный «Hello, World!» это, в силу устоявшейся традиции,

а) мигание с частотой, заметной глазу — потому что самая простая программа имеет цель быть доступной для наглядной демонстрации с минимальными аппаратными средствами, без всяких осциллографов и прочего;

б) мигание, являющеется результатом выполнения программы процессором — потому что «Hello, World!» это исторически способ пояснить базовый синтаксис некоторого языка программирования.

Здесь мигание совсем не мигание, а выдача некоторого сигнала, требующая для анализа дополнительного оборудования. И кроме того, нет выполнения простой программы — непременного атрибута «Hello, World!». А так, я тоже в курсе про CKOUT (он же MCO на STM32, например), но применять его для таких целей я не считаю корректным.
Интересный экспонат. Конечно, к собственно контроллерам это произведение не имеет никакого отношения, судя по описанию.

Как практикующий инженер-электронщик могу сказать следующее: мне кажется, что эта игра нацелена в основном на тех, кого электроника привлекает исключительно атмосферностью (ну там, романтика пальника, все дела). Если же интерес более серьезен и сопровождается тягой к познанию, лучше купить реальную отладочную плату, поставить какую-нибудь среду разработки и начать развлекаться. «Квестов» хватит лет на пять минимум, если начинать с нуля. Для разнообразия можно не искать легких путей; например, вместо того, чтобы возиться с Ардуиной, начать разбираться с реальной документацией на контроллер, компилятор и программатор, а еще лучше вместо готовой отладочной платы взять контактную макетку, контроллер в DIP и горсть выводных компонентов… В общем, тут уже начинаются варианты, гораздо более разнообразные, чем в любой игре.
Понял.

Плюс сама строка располагается непосредственно в месте ее использования.


В сущности, разделение объявления строки и места ее использования можно считать фичей. Такой подход позволяет вынести сообщения в отдельный файл, и при необходимости локализации править только его. С именами особой проблемы тоже нет:

const char init_error_message[] PROGMEM = "Initialization failed.";
const char init_OK_message[] PROGMEM = "Hardware initialized.";

...


Но, конечно, тут на вкус и цвет.
Гм. Может быть я не проник в суть статьи или отстал от жизни, но я все-таки не совсем понял, чем не устроил вариант

extern const char PROGMEM caption1[];
const char caption1[] = "Hello";
const char *pStr = caption1;


Собственно, я всегда примерно так и делал. Более того, это рекомендуемый в документации на avr-libc способ решения подобных проблем. Собственно все еще проще:

const char foo[] PROGMEM = "Hello, world!";

...

strcpy_P(dest,foo);


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

Information

Rating
Does not participate
Registered
Activity