Pavel Bobkov

Четверг, 18 марта 2010 04:10

Подключение lcd. Варианты схем

   Максимально расточительная схема, по которой можно подключить символьный ЖК-дисплей к микроконтроллеру, требует 12 выводов: 8 для шины данных, 3 управляющих – RS, RW, EN и 1 для подсветки.
    Для ввода цифровой и буквенной информации в приложениях на базе микроконтроллеров используются клавиатуры. Клавиатура представляет собой блок из нескольких кнопок, объединенных конструктивно и связанных между собой электрически по матричной схеме. В этой статье мы рассмотрим алгоритм опроса матричной клавиатуры и разберем пример его программной реализации.
Понедельник, 01 марта 2010 23:56

Вызов функции из прерывания

   Эта статья представляет собой попытку объяснить основную причину неоправданного  раздувания кода, происходящего при вызове функций из обработчиков прерываний, и как с этим справиться.

   Все микроконтроллеры AVR семейства mega имеют в своем составе 16-ти разрядный таймер/счетчик T1. Он позволяет формировать длительные временные задержки/интервалы и у него большее число режимов работы и прерываний, чем у 8-ми разрядных таймеров. В составе таймера/счетчика Т1 есть блок захвата, который по сигналу компаратора или сигналу на выводе ICP сохраняет значение счетного регистра TCNT1 в регистре ICR1. Эту особенность таймера можно использовать для измерения периода сигналов, длительности импульсов или для ведения лога/журнала событий. Рассмотрим использование прерывания по событию захват для реализации простого частотомера на микроконтроллере AVR.
    Выбирая пример для этой статьи, я колебался между несколькими вариантами. С одной стороны хотелось написать простую программу, чтобы было понятно начинающим, с другой стороны программа должна оправдывать применение событийной системы.
   Думал я, думал и в итоге остановился на термостате. Программа носит учебный характер и не претендует на оптимальность. Некоторые функции в ней не реализованы.
   Вопросы организации программ встраиваемых систем довольно скудно освещены в отечественной литературе. Поэтому у начинающих программистов микроконтроллеров рано или поздно возникают проблемы при написании  больших проектов.
   Стандартный подход к построению микроконтроллерных программ сводится к использованию бесконечного цикла, внутри которого происходит опрос флагов, и вызываются разные функции. Однако, такая программа не наглядна, и ее сложно модифицировать.
   Организация программы в виде событийной системы (event driven system) лишена этих недостатков, позволяет реализовывать сложную логику, и не так “тяжеловесна” как операционные системы (RTOS). В этой статья мы разберемся с принципом ее работы и рассмотрим простой вариант ее реализации.
Вторник, 19 января 2010 07:33

Поведение целочисленных типов

   Будучи программистом, вам не нужно полностью знать ISO/ANSI C стандарт. Можно создавать довольно сложные приложения на Си, не зная всех деталей. Однако, стандарт – лучший помощник, когда вы разбираетесь в менее очевидных частях языка и исследуете его закоулки.
   Когда вы читаете стандарт, некоторые моменты выглядят совершенно ясными на бумаге, но когда вы компилирует свой код, он так переворачивается, что делает все, кроме того, что вы хотели. Некоторые части стандарта требуют анализа, прежде чем вы полностью поймете их поведение и сможете использовать в своих интересах.
Четверг, 14 января 2010 23:08

jAVRCalc

   Некоторое время назад я начал разбираться с программированием мобильных телефонов на J2ME, при этом никаких начальных познаний по языку JAVA у меня не было. Поскольку лучший способ осваивать язык программирования – это написание конкретных приложений, я задался вопросом, а что бы такое сделать?  Так возник jAVRCalc.
   Реализация обмена данными по USART`у, которую мы рассматривали в предыдущей статье имеет некоторые недостатки. Функция отправки символа перед тем как инициировать передачу выполняет опрос флага UDRE регистра UCSRA в цикле while. А это значит, что микроконтроллер тратит свое драгоценное время на пустую работу. Прием данных осуществляется в однобайтовый буфер, при этом предыдущие данные затираются, если микроконтроллер не успевает их считывать.
   Для простых приложений такого подхода вполне достаточно, но для сложных гораздо эффективнее организовать передачу (прием) данных используя кольцевой (циклический) буфер.
   Микроконтроллер ATmega8535 имеет в своем составе модуль универсального синхронно/асинхронного приемопередатчика -  USART. С его помощью между компьютером и микроконтроллером можно организовать обмен данными по последовательному каналу. Раньше в компьютерах для этих целей использовались COM порты, однако на современных машинах они уже большая редкость. Если на вашем компьютере все-таки есть такой порт, то для подключения микроконтроллера, понадобится преобразователь уровней ТТЛ – RS232. Его можно собрать на микросхеме MAX232. 
Страница 7 из 10