Adept (07.08.2014 00:40 - 00:58, просмотров: 386) ответил Apтём на Странно это:
да всё может при грамотной архитектуре программы, но трудностей никак не меньше чем в ассемблерном варианте, ну и си-программеры часто любят сугубо линейные алгоритмы, как только обильные прерывания, парсеры и многопоточность, многие теряют энтузазизьм, хотя
казалось бы си именно под эти задачи и заточен. Ну это лишний раз говорит о редко встречающемся подвиде программера разумного, а не просто кодера, или тогого хуже быдлокодера.
Из проектов, мелкие приводить не буду (где весь "цимус" в экономии памяти и тактов), ну а из крупных, скажем такой (лабораторный химикоаналитический приборчик):
планировщик на 16 задач (очередь)
реалтайм часики
системный таймер 10мС, 100мС, 1С
управление в реалтайме ЖК индикатором и матричной клавой
работа с ЦАП (табличный синтез waveform до 10КГц)
компараторы
задействованы 3 штатных таймера
встроенный АЦП (измерение температоры)
I2C
UART
SPI
работа с внешним АЦП AD7655 (с максимальным samplerate до 1MSPS)
работа по проприетарному протоколу с контрольными суммами на 115200бод
измерение временных интервалов с точностью 1 такта (31.25нС на такте 32МГц)
интерпретатор команд
динамическое управление тактовой частотой
шим-стабиллизация опорного уровня, с точностью единиц милливольт
управление индикаторными светодиодиками (3шт) с различными режимами мигания
работа с EEPROM
работа многих вещей "параллельно". в частности управление и передача данных по интерфейсу (UART) должна быть доступна в любое время (приём, парсинг пакетов, интерпретация и исполнение команд по протоколу)
Активнейшее использование прерываний , правда до использования DMA и системы событий дело не дошло :))
всё в реалтайме, без лагов, тормозов и "подвисаний", естественно.
ну как-то так, примерно
ах да, камень ATXmega32A4U, расход памяти (флеш) примерно 65%
Не сомневаюсь, что на си такое можно соорудить, знаю только , что совсем непросто.
...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)