Перевод статьи "The Bare Metal Enthusiast: I can C clearly".

Просматривая статьи на одном новостном ресурсе, увидел перевод, который мне очень понравился.
Нашел оригинал статьи. Оказалось, в блоге автора были еще несколько статей. Переводом одной из них я и хочу с вами поделиться. Предназначена она в первую очередь для тех, кто только начал писать для микроконтроллеров, написал несколько программ и столкнулся с ощущением «поверхностности» знаний, почерпнутых из руководств вроде «быстрый старт». По крайней мере у меня возникал вопрос: «Ну умею я настраивать АЦП, таймеры, прерывания и дергать ногами МК. А что такое архитектура программы и как её выбирать? Почему код, напечатанный в книгах, отличается от кода, который я вижу в исходниках?».

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

сам перевод.
  • +4
  • 14 декабря 2012, 13:38
  • do_sl

Форматный вывод на Си для микроконтроллеров.

Форматированный ввод-вывод применяется очень широко, в первую очередь это, конечно, взаимодействие с пользователем, а так-же отладочный вывод, логи, работа с различными текстовыми протоколами и многое другое. В этой статье рассматриваются особенности применения форматированного вывода (ввод оставим на потом) для микроконтроллеров.
Первая программа написанная для ПК традиционно называется «Hello, world» и естественно пишет в стандартный вывод эту знаменитую фразу:
#include <stdio.h>
int main(){
printf("%s", "Hello, world");
return 0;
}

Первая программа для микроконтроллера обычно зовётся «Blinky» и она просто мигает светодиодом. Дело в том, что заставить работать традиционный «Hello, world» на микроконтроллере не так уж и просто для начинающего. Во первых, нет стандартного устройства вывода и его функциональность ещё нужно реализовать. Во вторых, не всегда бывает очевидно как подружить стандартные функции вывода с целевым устройством. Ситуация усугубляется тем, что в каждом компиляторе (тулчейне) это делается каким-то своим способом.


Читать дальше
  • +7
  • 14 октября 2011, 09:21
  • neiver
  • 1

Градиент

Здравствуйте.
Уже 2 дня пытаюсь решить масенькую траблу. А именно сплодить на Си функцию которая будет выводить на дисплей (LS020) прямоугольник, но не простой, а градиентный(заполнение) от красного до синего.
Суть этого процесса в отображении положения регулятора температуры. Нарисовать прямоугольник не проблема… проблема сделать его градиентным.
Помогите плз, может кто знает как это делается. Дисплей переваривать 16и битные цвета
  • 0
  • 31 августа 2011, 11:46
  • Geban

Вчерась решил засесть за Си:-))

нет, я вполне прозрачно понимаю сишные тексты, в свое время сваял с товарищем в порядке обучения сайт на похапэ даже с подобием админки, но по-настоящему интересно стало только сейчас, после нескольких эпичных фэйлов на асме+кривые руки:-))) Первой дозой отхватил несколько начальных главок Кернигана и Ричи, потом — несколько разделов описания avr-libc, ну и закончил установкой свежего avr-gcc и медитативным просмотром стандартных хидеров. Итог — всю ночь я прибавлял во сне ко всему подряд какие-то смещения, брал какие-то адреса, ужас вобщем.

Задачник по С++

Копаясь в Интернете...

left
… в поиске хорошего обучающего курса по С++ я наткнулся на видео курс от Стрелка на YouTube. Посмотрел несколько его уроков, разобрался с синтаксисом и библиотеками=) И понял что могу!
Искал разные обучающие книжки. Нашёл очень интересную книгу с говорящим названием «С/С++ в задачах и примерах». По началу, примерно первые 20 задач идут очень простые. Их можно даже в уме представить. А Дальше самый смак=) Тебе дают чётко сформулированную задачу и всё=) выполняй, гугл твой помошник и учебник. Ведь ни в одной книге не будут уделять столько внимания отдельной функции, сколько уделяют в отдельной статье персонально под неё. =)

Вот ссылка на книжку, если кому лень искать:
Скачать с Letitbit

Ассемблерные вставки в AVR-GCC

AVR
Практически всегда, когда в проекте задействованы АЦП, встаёт необходимость провести математическую обработку того, что там нацифровалось. Мат. обработка, в зависимости от задачи, может варьироваться от примитивного «сложить два измерения и поделить пополам (ака сдвинуть на разряд вправо)» до всяких там БПФ, цифровых фильтров и далее по списку. Если математика чуть сложнее, чем «найти максимум за период», а измерения непрерывные, то частенько встаёт вопрос в скорости обработки. Собственно говоря, это вообще-то отправная точка для выбора платформы, на которую будет опираться проект, тут надо здраво оценить потребности задачи и возможности различных платформ. Конечно, для ядрёной числодробилки лучше взять какой-нибудь DSP, а может даже и FPGA. А если наша числодробилка не особо ядрёная, зато требуется минимизировать энергопотребление этой фигни, да и конечная стоимость должна быть не как у самолёта? А ещё есть такие факторы, как опыт разработчика, доступность комплектухи и т.д. Короче если мы решили, что мозгами в нашем проекте должна работать старая добрая AVR, но мозга у неё не хватает, на то что бы осмыслить наш алгоритм, объяснённый ей на языке C, придётся объяснять на Assembler`е.


Читать дальше