Микропроцессорное управление. Примеры и уроки по программированию микроконтроллеров с кодами программ

Микропроцессорное программирование

  {jcomments off} Данный сайт посвящен особенностям микропроцессорных систем управления и предназначен для профессиональных разработчиков электронной техники, а также для любителей микропроцессорной электроники.

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

 

   Использование SPI микропроцессора Xmega!

   Данная статья просвещенна особенностям использования и настройки SPI микропроцессора Xmega.

   SPI (англ. Serial Peripheral Interface - последовательный периферийный интерфейс) - последовательный синхронный стандарт передачи данных в режиме полного дуплекса, разработанный компанией Motorola для обеспечения простого и недорогого сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.

   В отличие от стандартного последовательного порта (англ. standard serial port), SPI является синхронным интерфейсом, в котором любая передача синхронизирована с общим тактовым сигналом, генерируемым ведущим устройством (процессором).

   Последовательные шины все больше вытесняют параллельные благодаря простоте соединений и постоянно увеличивающейся эффективности, при которой более высокая скорость передачи данных по параллельной шине теряет свою значимость. К типичным периферийным устройствам с последовательным интерфейсом относятся преобразователи (ЦАП и АЦП), различные виды памяти (RAM и EEPROM), часы реального времени, различные датчики, контроллеры LCD, CAN, USB и т.д.

   Простейшая реализация SPI показана на следующем рисунке:

Использование SPI микропроцессора Xmega

   Шина SPI

   Интерфейс SPI в основном используется в синхронных последовательных передачах со связями типа ведущий(master)/ведомый(slave). Ведущее устройство инициирует и управляет передачей, в то время как ведомое устройство отвечает.

   SPI является дешевым полноценным дуплексным (двухсторонним) интерфейсом позволяющим высокоскоростной обмен между ведущим и ведомым устройствами. У SPI нет конкретного высокоуровневого протокола обмена, что позволяет сократить дополнительные расходы. Недостатком является лишь то, что ...

   Смотреть полный текст статьи с примером и кодом программы!

 

   Использование аналогового компаратора микропроцессора Xmega!

   Данная статья посвящена особенностям использования аналогового компаратора микропроцессоров Xmega.

   Аналоговый компаратор (англ. analog comparator – сравнивающее устройство) – устройство принимающие на свои входы два аналоговых сигнала и выдающие логическую «1», если сигнал на прямом входе (положительном) больше чем на инверсном входе (отрицательном), и логический «0», если сигнал на прямом входе меньше, чем на инверсном входе.

   Аналоговый компаратор (англ. сокр. AC) семейства микропроцессоров Xmega является быстродействующим двухканальным модулем с гибкими настройками мультиплексора (MUX) и имеет встроенный регулируемый делитель опорного напряжения. Также имеется возможность выбора комбинировать или сравнивать внутренние выходы компаратора при осуществлении оконного режима.

   Структурная схема аналогового компаратора Xmega показана на следующем рисунке:

Использование аналогового компаратора микропроцессора Xmega

 

   Принцип работы компаратора

   У каждого блока компаратора есть свои регистры для настройки управления и выбора MUX, которые позволяют...

   Смотреть полный текст статьи с примером и кодом программы!

 

   Использование сторожевого таймера (Watchdog timer) в Xmega!

   Данная статья посвящена особенностям использования сторожевого таймера (Watchdog timer) в микропроцессорах Xmega.

   Сторожевой таймер (англ. Watchdog timer) – аппаратно реализованная схема контроля за зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой. Если сброса не произошло в течение заданного интервала времени, происходит принудительная перезагрузка системы. В некоторых реализациях сторожевой таймер может посылать системе сигнал на перезагрузку («мягкая» перезагрузка), в других же — перезагрузка происходит аппаратно (замыкание сигнала Reset).

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

   Семейство Xmega имеет очень четкий внутренний сторожевой таймер. Обычно, встроенные сторожевые таймеры используют в качестве источника тактирования часы центрального процессора, но сторожевой таймер Xmega имеет независимый от центрального процессора источник тактирования, что позволяет ему сохранять работоспособность при нарушении работы основных часов микропроцессора.

   Также сторожевой таймер Xmega неограничен работой только в «нормальном режиме», когда он должен быть сброшен до превышения определенного времени, существует «оконный режим», в котором сторожевой таймер может быть сброшен в пределах определенного интервала времени, если он сброшен слишком рано или слишком поздно будет запушен механизм перезагрузки системы (процессора).

 

   Принцип работы

   Дадим определение нескольким важным терминам:

  • Сторожевой таймер (англ. сокр. WDT) является периферийным устройством, который может быть настроен на сбрасывание системы при сбросе его слишком рано или слишком поздно, согласно настроенному периоду выдержки. Текущее значение таймера не может быть прочитано или записано, а может быть только сброшено.
  • Сброс сторожевого таймера (WDT reset) – процесс обнуления значения сторожевого таймера. Сброс заставляет таймер...

   Смотреть полный текст статьи с примером и кодом программы!

 

   Формирование синусоиды с преобразованием в ШИМ сигнал и дополнительные возможности таймеров в Xmega!

   Микропроцессоры Xmega имеют несколько таймер-счетчиков с расширенными возможностями, которые могут быть использованы, например, для управления двигателями или для контроля за питанием. Данная статья посвящена данным возможностям и в частотности формированию синусоиды и формировании из нее ШИМ сигнала с вставкой интервалов мертвого времени для управления ключами инвертора, который может использоваться, например, для управления электродвигателями.

   Улучшение дополнительных сигналов

   Улучшение дополнительных сигналов – «Advanced Waveform eXtension» (AWeX) является расширением возможностей таймера-счетчика, которые обычно используют в применениях для управления двигателями и контролем за питанием. Когда используется улучшение AWeX, выходной сигнал ШИМ с таймер-счетчика проходит через модуль AWeX контролирующий ножки порта.

   На следующем рисунке показан модуль AWeX имеющий три подфункции: вставка мертвого времени – «Dead-time Insertion» (DTI), образцовый генератор и защита от повреждения.

Формирование синусоиды с преобразованием в ШИМ сигнал в Xmega

   

   Вставка мертвого времени

   Во многих применениях, таких, как управление электродвигателями, используется генерация ШИМ сигнала по полумостовой схеме, аналогичной...

   Смотреть полный текст статьи с примерами и кодами программ!

 

   Использование DMA микропроцессора Xmega!

   Данная статья посвящена особенностям использования прямого доступа к памяти DMA в микропроцессорах Xmega.

   Прямой доступ к памяти (Direct Memory Access, DMA) — режим обмена данными между устройствами или же между устройством и основной памятью (RAM) без участия центрального процессора.

   Контроллер DMA (DMAC) в микропроцессорах Xmega является очень гибким четырехканальным контроллером, предназначенным для обмена данными между памятью и периферийными устройствами без вмешательства центрального процессора. Пока центральный процессор находится в спящем режиме или выполняет другие задачи, контроллер DMA берет на себя задачи по копированию данных из одной области в другую.

   Гибкий выбор приоритета канала, различные способы адресации, возможность двойной буферизации и большой объем делает контроллер DMA микропроцессора Xmega мощным инструментом для всех применений ориентированных на обмен данными, таких как обработка сигналов и промышленное управление.

   Пример использования DMA контроллера проиллюстрирован на следующем рисунке:

Использование DMA микропроцессора Xmega

 

   Каналы DMA

   В дополнение к общим регистрам у контроллера DMA есть четыре независимых канала с отдельно устанавливаемыми регистрами управления и состояния. Каждый канал имеет необходимую информацию по управлению и состоянию для одиночного DMA обмена: источник, адреса получателя, количество байтов и состояние. После завершения обмена, канал можно...

   Смотреть полный текст статьи с примерами и кодами программ!

 

   Промышленный протокол Modbus!

   Данная статья посвящена особенностям использования протокола Modbus для промышленных микропроцессорных применений.

   На сегодняшний день протокол Modbus является одним из самых распространенных протоколов обмена используемых для промышленных применений как между процессорами одного уровня, так и между различными уровнями.

   В протоколе Modbus устройства (процессоры) осуществляющие обмен между собой делятся на ведущие и ведомые (Master и Slave), что не позволяет ведомым устройствам передавать данные по мере их появления и требует интенсивного опроса ведомых устройств ведущим.

   Разновидностями Modbus являются протоколы Modbus Plus - многомастерный протокол с кольцевой передачей маркера и Modbus TCP, рассчитанный на использование в сетях Ethernet и Интернет. Сам же протокол Modbus имеет два режима передачи: RTU (Remote Terminal Unit – «удаленное терминальное устройство») и ASCII. Стандарт предусматривает, что режим RTU в протоколе Modbus должен присутствовать обязательно, а режим ASCII является опционным.

   В данной статье будем описывать протокол Modbus RTU, как наиболее широко применяемый в промышленных микропроцессорных исполнениях.

   Стандарт Modbus RTU предусматривает применение физического интерфейса RS-485, RS-422 или RS-232. Наиболее распространенным для организации промышленной сети является 2-проводной интерфейс RS-485, т.к. позволяет наиболее удаленную передачу без использования повторителей. Для соединений точка-точка на коротки расстояния (как правило, не более 1-2 метров) может быть использован интерфейс RS-232 или RS-422.

 

   Организация сети

   Протокол Modbus позволяет создать промышленную сеть из одного ведущего устройства и до 247 ведомых (модулей ввода-вывода). Обмен данными всегда инициируется ведущим устройством, а ведомые не начинают передачу данных, пока не получат запрос от ведущего. Ведомые устройства не могут обмениваться данными друг с другом. В любой момент времени в сети Modbus может происходить только...

   Смотреть полный текст статьи с кодом программы вычисления контрольной суммы!

 

   Использование EEPROM микропроцессора Xmega!

   Данная статья посвящена особенностям использования энергонезависимой памяти EEPROM в микропроцессорах Xmega.

   EEPROM (Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое постоянное запоминающее устройство (ЭСППЗУ), один из видов энергонезависимой памяти (таких как PROM и EPROM). Память такого типа может стираться и заполняться данными до миллиона раз.

   Микропроцессоры Xmega имеют энергонезависимую память EEPROM, адреса и доступ к которой могут располагаться как в отдельном пространстве данных (по умолчанию), так и в стандартном пространстве данных. Память EEPROM поддерживает как доступ к отдельному байту, так и к странице.

   Расположение памяти EEPROM в пространстве данных процессора показано на следующем рисунке:

Использование EEPROM микропроцессора Xmega

   Контроллер энергонезависимой памяти (NVM)

   Доступ к памяти EEPROM осуществляется через контроллер энергонезависимой памяти, который также используется для доступа к fuse-битам и битам блокировки (lock), а также для программного обновления Flash-памяти.

   Поскольку контроллер NVM используется не только для обслуживания памяти EEPROM, необходимо проверять, не занять ли контроллер NVM другими операциями перед использованием его для доступа к EEPROM. Бит занятости контроллера NVM (NVMBUSY) в регистре состояния NVM (STATUS) установлен всегда когда...

   Смотреть полный текст статьи с кодом программы!

 

   Программная реализация ПИД-регулятора!

   Данная статья посвящена особенностям программной реализации ПИД-регулятора с ограничением темпов нарастания и убывания на языке C.

   Пропорционально-интегрально-дифференциальный (ПИД) регулятор – устройство в цепи обратной связи, используемое в системах автоматического управления для формирования управляющего сигнала. ПИД-регулятор формирует управляющий сигнал, являющийся суммой трёх слагаемых, первое из которых пропорционально входному сигналу, второе является интегралом входного сигнала, а третье – производная от входного сигнала.

   Зачастую на практике ПИД-регулятор используется для формирования сигнала управления (задания) какой-либо системой, где в качестве обратной связи используется технологический датчик по требуемому параметру (температуре, давлению, уровню и т.д.).

    Функциональная схема управляющей системы с обратной связью по технологическому датчику (ТД) на основе ПИД-регулятора показана на следующем рисунке:

Программная реализация ПИД-регулятора

   Где y0 – заданное значение технологического параметра; y – выходной сигнал, он же сигнал обратной связи с технологического датчика; e – ошибка по управлению (разница между заданием y0 и выходным сигналом y); u – выходной сигнал ПИД-регулятора, входной сигнал системы.

   Математически ПИД-регулятор описывается...

   Смотреть полный текст статьи с кодом программы!

 

   Использование USART микропроцессора Xmega!

   Данная статья просвещенна особенностям использования и настройки USART микропроцессора Xmega.

   USART (Universal Synchronous Asynchronous Receiver Transmitter – перев. Универсальный Синхронный Асинхронный Приемник Передатчик) является основным элементом в последовательной передачи данных между компьютерами, терминалами и другими устройствами. USART поддерживает полноценную дуплексную передачу как в асинхронном так и в синхронном режиме.

   Передача выполняется посылками, формат которых задается пользователем и позволяет добиться совместимости с различными стандартами. Модуль USART буферизован в обоих направлениях, что позволяет добиться непрерывности передачи данных без каких-либо пауз между посылками. Предусмотрены отдельные векторы прерываний по завершению приема и передачи, что позволяет реализовать управление связью по прерываниям. Ошибки в посылке и по переполнению буфера обнаруживаются на аппаратном уровне, о чем сигнализируют отдельные флаги статуса. Также поддерживается генерация и проверка паритета (четность или нечетность).

   В статье будет рассматриваться асинхронный режим приема-передачи, т.е. режим в котором часы приемника и передатчика не синхронизированы.

 

   Принцип работы

   Передача по UART основана на символах (кусках), размер символа может быть установлен величиной 5, 6, 7, 8 или 9 битов. Каждому символу (куску посылки) предшествует стартовый бит, а по завершению следует один или два стоповых бита. Стартовый бит всегда низок и противоположен высокому состоянию линии.

   Дополнительно можно включить бит четности, который располагается после битов данных и до стоповых битов. Бит четности помогает обнаружить ошибку в один бит, но бесполезен при ошибки в несколько битов.

   На следующем рисунке показана возможная посылка с одним стартовым битом, 8 битами данных, битом четности и ...

 Использование USART микропроцессора Xmega

   Смотреть полный текст статьи с примерами и кодами программ!

 

   Отладка и прошивка процессора ARM в IAR!

   Статья посвящена основам работы с микропроцессором ARM (AT91SAM9260) и китом AS-9260 фирмы АРГУСОФТ в программе IAR Embedded Workbench, а именно особенностям отладки и прошивки программ. Статья может служить примером по основам работы с другими ARM-процессорами.

   Общие принципы работы с микропроцессорами ARM описаны в статье «Начинаем работать на ARM (AT91SAM9260)», там же описывается, как настроить АРМ на автоматический запуск рабочей программы.

   Теперь поговорим об отладке программы в режиме реального времени, для этого нам понадобится программа IAR Embedded Workbench с поддержкой ARM (подойдут версии 5.40 или выше) и JTAG-программатор для ARM (у меня в наличии SAM-ICE фирмы Atmel).

   В качестве проекта под IAR возьмем все тот же getting-started-project идущей в комплекте с IAR и хранящийся в папке Example в месте установки программы. Данный пример мигает светодиодом и выдает в терминал чередование 1 и 2. Если у Вас по каким-то причинам его нет - вот исходник.

   Запускаем IAR. В общем, проект готов к использованию для процессора AT91SAM9260 и программаторов типа J-Link. Рекомендуется установить галочку Run в окне Debugger во вкладке Setup и записать значение main для начала работы отладчика с метки main.

   Если у Вас другой процессор или программатор, то необходимо настроить проект под них. Для этого...

   Смотреть полный текст статьи с проектами!


[1][2][3]

Кто онлайн

Сейчас 100 гостей онлайн