Pashgan

Pashgan

подключение джампера к микроконтроллеру
 
   В некоторых устройствах на микроконтроллерах для задания настроек  используются джамперы/переключатели. Обычно они подключены аналогично кнопке и имеют два возможных состояния – HIGH и LOW. Если джампера нет, вывод микроконтроллера с помощью встроенного  резистора  “подтянут к плюсу питания”. Когда джампер подключен, вывод микроконтроллера замкнут на землю.

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

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

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

   Выложил практический пример реализации событийной системы. Долго думал, что выбрать и остановился на термостате. Описание пока не готово. Программа реализует следующее: вывод текущего значения температуры на lcd (в качестве датчика используется TMP37), управление нагревателем согласно заданным температурным границам, небольшой пользовательский интерфейс - установка нижнего и верхнего значения поддерживаемой температуры (заданные значения в eeprom не сохраняются). К программе прилагается проект для Proteus`a.

   Вопросы организации программ встраиваемых систем довольно скудно освещены в отечественной литературе. Поэтому у начинающих программистов микроконтроллеров рано или поздно возникают проблемы при написании  больших проектов.
   Стандартный подход к построению микроконтроллерных программ сводится к использованию бесконечного цикла, внутри которого происходит опрос флагов, и вызываются разные функции. Однако, такая программа не наглядна, и ее сложно модифицировать.
   Организация программы в виде событийной системы (event driven system) лишена этих недостатков, позволяет реализовывать сложную логику, и не так “тяжеловесна” как операционные системы (RTOS). В этой статья мы разберемся с принципом ее работы и рассмотрим простой вариант ее реализации.
   Будучи программистом, вам не нужно полностью знать ISO/ANSI C стандарт. Можно создавать довольно сложные приложения на Си, не зная всех деталей. Однако, стандарт – лучший помощник, когда вы разбираетесь в менее очевидных частях языка и исследуете его закоулки.
   Когда вы читаете стандарт, некоторые моменты выглядят совершенно ясными на бумаге, но когда вы компилирует свой код, он так переворачивается, что делает все, кроме того, что вы хотели. Некоторые части стандарта требуют анализа, прежде чем вы полностью поймете их поведение и сможете использовать в своих интересах.
   Некоторое время назад я начал разбираться с программированием мобильных телефонов на J2ME, при этом никаких начальных познаний по языку JAVA у меня не было. Поскольку лучший способ осваивать язык программирования – это написание конкретных приложений, я задался вопросом, а что бы такое сделать?  Так возник jAVRCalc.