Pavel Bobkov
Четверг, 18 марта 2010 04:10
Подключение lcd. Варианты схем
Максимально расточительная схема, по которой можно подключить символьный ЖК-дисплей к микроконтроллеру, требует 12 выводов: 8 для шины данных, 3 управляющих – RS, RW, EN и 1 для подсветки.
Published in
Как подключить к микроконтроллеру
Tagged under
Воскресенье, 14 марта 2010 14:23
Учебный курс. Опрос матричной клавиатуры. Пример использования автомата (State Machine)
Для ввода цифровой и буквенной информации в приложениях на базе микроконтроллеров используются клавиатуры. Клавиатура представляет собой блок из нескольких кнопок, объединенных конструктивно и связанных между собой электрически по матричной схеме. В этой статье мы рассмотрим алгоритм опроса матричной клавиатуры и разберем пример его программной реализации.
Published in
Программирование AVR
Понедельник, 01 марта 2010 23:56
Вызов функции из прерывания
Эта статья представляет собой попытку объяснить основную причину неоправданного раздувания кода, происходящего при вызове функций из обработчиков прерываний, и как с этим справиться.
Published in
Программирование AVR
Вторник, 16 февраля 2010 04:11
Учебный курс. 16 разрядный таймер/счетчик Т1. Прерывание по событию захват. Простой частотомер на AVR
Все микроконтроллеры AVR семейства mega имеют в своем составе 16-ти разрядный таймер/счетчик T1. Он позволяет формировать длительные временные задержки/интервалы и у него большее число режимов работы и прерываний, чем у 8-ми разрядных таймеров. В составе таймера/счетчика Т1 есть блок захвата, который по сигналу компаратора или сигналу на выводе ICP сохраняет значение счетного регистра TCNT1 в регистре ICR1. Эту особенность таймера можно использовать для измерения периода сигналов, длительности импульсов или для ведения лога/журнала событий. Рассмотрим использование прерывания по событию захват для реализации простого частотомера на микроконтроллере AVR.
Published in
Программирование AVR
Вторник, 09 февраля 2010 03:40
Организация программ. Событийная система - практический пример
Выбирая пример для этой статьи, я колебался между несколькими вариантами. С одной стороны хотелось написать простую программу, чтобы было понятно начинающим, с другой стороны программа должна оправдывать применение событийной системы.
Думал я, думал и в итоге остановился на термостате. Программа носит учебный характер и не претендует на оптимальность. Некоторые функции в ней не реализованы.
Published in
Программирование AVR
Tagged under
Воскресенье, 24 января 2010 21:55
Организация программ. Событийная система (Event driven system)
Вопросы организации программ встраиваемых систем довольно скудно освещены в отечественной литературе. Поэтому у начинающих программистов микроконтроллеров рано или поздно возникают проблемы при написании больших проектов.
Стандартный подход к построению микроконтроллерных программ сводится к использованию бесконечного цикла, внутри которого происходит опрос флагов, и вызываются разные функции. Однако, такая программа не наглядна, и ее сложно модифицировать.
Организация программы в виде событийной системы (event driven system) лишена этих недостатков, позволяет реализовывать сложную логику, и не так “тяжеловесна” как операционные системы (RTOS). В этой статья мы разберемся с принципом ее работы и рассмотрим простой вариант ее реализации.
Published in
Программирование AVR
Вторник, 19 января 2010 07:33
Поведение целочисленных типов
Будучи программистом, вам не нужно полностью знать ISO/ANSI C стандарт. Можно создавать довольно сложные приложения на Си, не зная всех деталей. Однако, стандарт – лучший помощник, когда вы разбираетесь в менее очевидных частях языка и исследуете его закоулки.
Когда вы читаете стандарт, некоторые моменты выглядят совершенно ясными на бумаге, но когда вы компилирует свой код, он так переворачивается, что делает все, кроме того, что вы хотели. Некоторые части стандарта требуют анализа, прежде чем вы полностью поймете их поведение и сможете использовать в своих интересах.
Published in
Программирование AVR
Четверг, 14 января 2010 23:08
jAVRCalc
Некоторое время назад я начал разбираться с программированием мобильных телефонов на J2ME, при этом никаких начальных познаний по языку JAVA у меня не было. Поскольку лучший способ осваивать язык программирования – это написание конкретных приложений, я задался вопросом, а что бы такое сделать? Так возник jAVRCalc.
Published in
Софт
Четверг, 07 января 2010 21:39
Учебный курс. Организация обмена по USART `у с использованием кольцевого буфера
Реализация обмена данными по USART`у, которую мы рассматривали в предыдущей статье имеет некоторые недостатки. Функция отправки символа перед тем как инициировать передачу выполняет опрос флага UDRE регистра UCSRA в цикле while. А это значит, что микроконтроллер тратит свое драгоценное время на пустую работу. Прием данных осуществляется в однобайтовый буфер, при этом предыдущие данные затираются, если микроконтроллер не успевает их считывать.
Для простых приложений такого подхода вполне достаточно, но для сложных гораздо эффективнее организовать передачу (прием) данных используя кольцевой (циклический) буфер.
Published in
Программирование AVR
Суббота, 26 декабря 2009 23:46
Учебный курс. UART/USART. Получение первых результатов. Сопрягаем микроконтроллер с компьютером
Микроконтроллер ATmega8535 имеет в своем составе модуль универсального синхронно/асинхронного приемопередатчика - USART. С его помощью между компьютером и микроконтроллером можно организовать обмен данными по последовательному каналу. Раньше в компьютерах для этих целей использовались COM порты, однако на современных машинах они уже большая редкость. Если на вашем компьютере все-таки есть такой порт, то для подключения микроконтроллера, понадобится преобразователь уровней ТТЛ – RS232. Его можно собрать на микросхеме MAX232.
Published in
Программирование AVR