Си и микроконтроллеры

Ветка от обсуждений микроконтроллеров и ассемблера (http://pmk.arbinada.com/node/368/1208#comment-1208)

Ну, сейчас микроконтроллеры на Си нормально программируются :)

Си и микроконтроллеры. Как Вам сказать... Да, программируются. И скорость разработки возрастает, и требования к квалификации исполнителя ниже, и готовыми библиотеками проще пользоваться, и переносить программы с одной платформы на другую. Все так.

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

Сейчас ведь уже трудно представить, что когда-то цифровая техника считалась более надежной, чем аналоговая. :)

В целом я согласен. Для простеньких поделок, тип "периферийного устройства для мк-152" :) я пользуюсь Си - удобство важнее размера и оптимальности кода. Если бы делал что-то критическое - конечно, в Асме.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Даже в Proteus есть модели таких микроконтроллеров, которые можно программить не только ассемблером, но и Си, но нам задача была именно ассемблером.

Да, я понял, что была поставлена цель писать на Асме. (+). А так даже для мелких атмелок типа attinyxx можно на Си писать

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Конечно, можно и для ATtiny на Си писать. Сейчас все можно. :) Вот здесь хорошо про это написано: http://arvresearch.nm.ru/text/51.dhtml

Извиняюсь перед Романом Викторовичем за большую цитату :)
= = = = =
Были времена, когда программисты задумывались над объемом исполняемого файла своей программы (чтобы на дискету влезала), а сейчас мало того, что не считается нужным считать даже DVD-диски дистрибутива (!!!), но и для микроконтроллеров почти никто старается создавать оптимальные программы! Я это наблюдаю регулярно по месту своей основной работы...

Предположим, надо реализовать фазовое регулирование мощности. Как эту задачу решали бы раньше (и решают некоторые, которые либо старой закалки, либо им просто интересно, либо они стеснены в средствах, что тоже не редкость)? Посчитали бы на листике табличку - на сколько шагов регулирования синусоиду разбить, с какой точностью, в какие момены времени включать-выключать, а потом сделали бы программульку байтов в 200, которая бы все необходимые сведения брала бы из заранее расчитанной таблички... Но сейчас подход иной: берем Си, пишем не стесняясь в выражениях что-то вроде Func = D + A*sin(omega*t+fi), получаем текст программы где-то в 10 строк, включая комментарии, компилируем ее - это ничего, что получается код в 7К, кого ж сейчас удивишь контроллером с меньшей памятью-то?! А потом, обычно, наступает прозрение - а ни фига-то программа не регулирует! Оказывается, чтобы этот самый синус посчитать, требуется ей едва ли не 10 миллисекунд, куда уж там фазу-то регулировать! Но и это не проблема: берем AVR, да не простой, а с частотой мегагерц эдак 16, а если можно, то и более - и нет проблемы! И если такому "програмисту" дают задание сделать нечто более сложное, нежели фазовый регулятор, то он всерьез начинает задумываться о 16-разрядном ядре - ну "дохлые, эти контроллеры, не тянут"! О каком там стиле, о каком там "я" можно говорить?! Вот мы и имеем, что имеем: все спецы, все пишут на Сях, что пишут и зачем - известно только им, о красоте решений не думает никто, проблемами логичности системы команд никто не озабочен, все нормалек!
= = = = =

Хорошие тексты про программисткий Дзен, спасибо! (+). Про Attiny это я так написал, как теретически возможную вещь. Конечно же, не принимать всерьез :)

Немного в оправдание Сишников - работаю не на "океанском лайнере", говоря образами статьи про один байт, а, скорее на рыболовном траулере. :) Естественно, синусы считать не будем, пользуемся целочисленными таблицами, как и целочисленной арифметикой.
Но, коли жизнь заставит, буду и байты вылизывать.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/