Библиотека для LCD с контроллерами ks0066 и hd44780
12/12/2010 - 19:37
Pavel Bobkov
Tagged under
Подправил библиотеку для LCD, теперь она поддерживает контроллеры ks0066 и hd44780. Фишка в чем. Библиотека для hd44780 может работать и с ks0066, а вот библиотека для ks0066 с контроллером hitachi уже не работает. У этих контроллеров есть некоторое отличие в инициализации при использовании 4-ех разрядной шины. Вообщем я добавил несколько строк кода и заключил их в директивы условной компиляции, чтобы можно было выбирать тип контроллера. Код для hitachi чуть "потолще", а если будет использоваться контроллер ks0066 зачем нам лишние 40 байт кода.
Организация программ. Событийная система на таблице
06/12/2010 - 18:14
Pavel Bobkov
Tagged under
Стандартный подход к написанию программы для микроконтроллера сводится к использованию бесконечного цикла (суперлупа), внутри которого непрерывно опрашиваются флаги и запускаются те или иные функции. Этот подход вполне оправдан для написания небольших программ, но при превышении определенного порога сложности, такая программа становится громоздкой, непонятной и запутанной. Этой ситуации можно избежать, если на начальной стадии разработки оценить сложность программы и выбрать для нее более подходящую форму организации.
Самой ближайшей альтернативой является событийная система. Она не такая тяжеловесная, как операционная, и в то же время позволяет организовать программу в довольно стройную и понятную конструкцию, которую легко наращивать и изменять.
Применение директивы #error
21/11/2010 - 22:24
Pavel Bobkov
Tagged under
Найджел Джонс
Одна из наименее используемых, но потенциально наиболее полезных директив препроцессора Си - это #error. В этой статье мы рассмотрим пару интересных способов применения #error, которые пригодятся вам при разработке программного обеспечения для встраиваемых систем.
Директива препроцессора #error относится к нововведениям Standart C (стандарт 1989 года). Синтаксис ее довольно простой:
#error <error message>
<error message> - может состоять из любого печатного текста и его даже не обязательно заключать в кавычки. Технически, сообщение можно опустить, однако особого смысла в этом нет.
Когда препроцессор Си встречает директиву #error, процесс компиляции останавливается и пользователю выдается сообщение. Обычно оно выглядит так:
Filename(line_number): Error!
Ennnn: <error message>
Где Filename - это имя исходного файла, line_number – номер строки, где находится директива #error, и Ennnn – код ошибки компилятора. Таким образом, сообщение #error ничем не отличается от обычных сообщений компилятора об ошибках.
СИ-ТЕСТ: 0x10 ЛУЧШИХ ВОПРОСОВ ДЛЯ ТЕХ, КТО ХОТЕЛ БЫ СТАТЬ ПРОГРАММИСТОМ ВСТРАИВАЕМЫХ СИСТЕМ
19/09/2010 - 20:57
Pavel Bobkov
Tagged under
Nigel Jones
Очевидно, что обязательным и существенным этапом процесса найма на работу программистов встраиваемых систем является «Си-тест». Многие годы мне приходилось проходить такие тесты самому и составлять их для других, и по ходу дела я понял, что такие тесты могут быть очень поучительными как для соискателя, так и для работодателя.
10 правил программирования на Си предотвращающих ошибки
30/07/2010 - 16:34
Pavel Bobkov
ПРАВИЛО #1 – ФИГУРНЫЕ СКОБКИ
Блок программы, идущий после ключевых слов if, else, switch, while, do и for следует всегда окружать фигурными скобками ({}), даже если он содержит только одиночные или пустые операторы.
// Не следует так делать…
if (timer.done)
// Одиночному оператору нужны скобки!
timer.control = TIMER_RESTART;
// А вот так правильно ...
while (!timer.done)
{
// Даже пустой оператор должен быть окружён скобками.
}