Electronic Banner Exchange (ElBE)

RoboRealm  - это бесплатный софт для распознавания
изображений в системах машинного зрения.

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

Вот первый вариант - описание применения RoboRealm на русском     (3 Мб)

Вот что он пишет :

Отличная прога.
Я бросил синюю флешку на пол в комнате и добавил фильтр по цвету
прога схватывает местоположение флешки на полу в во всех случаях когда она  в кадре Very Happy

можно добавить ещё разные условия под освещение, типа режим день ночь
надо будет купить в магазине мячик какогонить самого ужасно ядовитого цвета  Very Happy



Новый топик на форуме  - RoboRealm - жизнь в России

Спрашивайте и делитесь впечатлениями !




Robot Vision RoboRealm® is a powerful robotic vision software application for use in computer vision, image processing, and robot vision tasks. Using an easy to use point and click interface complex image analysis and robot control becomes easy!

RoboRealm v1.7.6.6 is free to download!


What's New


03/16/2007 - MouseMouse Module - We did something totally new today ... we were able to grab and drag a window around on the desktop without touching the mouse or keyboard. We did this by just moving around a red ball. This is not going to make the mouse extinct but it is a fun new interface that makes a lot of sense in some situations.

03/12/2007 - Affine TransformAffine Transform - Not all images are perfectly aligned with the camera view. The Affine Transform provides a way to align an object into a more uniform view in preparation for measurement or other attribute analysis.

03/12/2007 - Radial TransformRadial Transform - If you take pictures with webcams that use smaller lenses you will notice a rounding of straight lines. These are known as barrel or pincushion distortions. Using the Radial transform you can correct for those distortions to improve the image content.


03/02/2007 - Surveyor SRV1Surveyor SRV-1 - RoboRealm now supports the Surveyor SRV-1 robot with the addition of the Surveyor_SRV1 module. The folks at Surveyor have designed a really nice robot for use in machine vision and we're excited to join RoboRealm and the SRV-1. To show you a quick example of what is possible have a look at our wall avoiding tutorial that shows off the new module by helping the SRV-1 avoid walls.

02/19/2007 - IRobot CreateIRobot Create - Many of you have probably already discovered IRobot's new Create Robot that was announced in Vegas at CES. We were very excited about seeing its potential given its very inexpensive price range. We've happy to announce that we REALLY like the Create! It is just a great robot base. For those of you who don't like to get into the mechanics of building a robot base from scratch it is a really nice platform. We're happy to announce that RoboRealm now speaks Create's Open Interface language! If you're interested in incorporating vision into the Create then you will need to check out what RoboRealm plus the Create have to offer.

02/17/2007 - Creative_Live_MotionCreative Live! Motion - Joining the Logitech Orbit camera RoboRealm now supports the Creative Live! Motion webcam that also has pan and tilt built into the camera. These cameras are a great way to experiment with pan tilt systems incorporated with vision.

02/16/2007 - Population_ThresholdPopulation Threshold - Natural images often produce many small pixel groupings that need to be clustered together to produce larger blobs that can be further processed by other modules. The Population Threshold module provides a quick way to cluster those unconnected pixel groupings while ignoring other sparse clusters.

02/05/2007 - Arbitrary Blob ImageShape Matching - We've really improved the shape matching capabilities of RoboRealm by adding in multiple shape detection and filters to remove bad or unwanted objects. The Shape Match module provides you a way to examine objects based solely on their shape (or silhouette). You can also read a great forum discussion that lead to its improvement at Object Analysis.

01/28/2007 - Circles ImageCircles - Detecting circles is a very basic need for many vision projects. We've introduced a new contour based circle detector that should help you detect those illusive balls, coins, traffic lights, finger tips, etc.

01/22/2007 - Mosaic ImageMosaic - For many of you one camera was not enought! RoboRealm now supports up to 16 simultaneous cameras! This should be enough for everyones camera needs. Using multiple cameras is easy. Just plug in all available USB cameras and use the modules to process them as needed. You will notice the cameras being listed in many of the dropdown menus within modules that make sense. For example, the Mosaic module can be used to create a mosaic of all the camera images. Other modules include the Marker module (easiest way to switch the current processing to another camera view), the Math module, the Replace Blob modules, and more.

01/15/2007 - Logitech OrbitLogitech Orbit - Need an easy to use pan/tilt device? Have you looked at the Logitech Orbit camera? We've had one for a while and are very pleased with the image quality. We've now introduced an Orbit module that allows you to control the pan/tilt actions of that camera. This is a great solution for a pan/tilt camera that can be attached to any PC based solution using USB.

01/15/2007 - ConnectPointsConnect Points - Often after using an edge detector or thresholding an image you are left with many points along a potential edge that are slightly disconnected. Subsequent processing would work better if these points were connected. The Connect Points does just that. Points that are close to each other are connected together and help "connect the points".

01/15/2007 - KeyboardKeyboard Interface - We introduced the Joystick control a while back and it became quickly apparent that many of you don't have Joysticks! We've handled that issue by providing a keyboard interface to perform a similar function. Now you can control your USB missile launcher using your keyboard.

12/28/2006 - USB Missile LauncherUSB Missile Launcher Tutorial - Our latest tutorial introduces two new modules. The Joystick module allows you to control your robotic projects using an ordinary joystick. The USB Missile Launcher module provides control over the Dream Cheeky USB Missile Launcher. The tutorial shows how we used those two modules to setup joystick control of the Launcher.

Continue ...

If you don't find what you need in RoboRealm, then check other OpenSource/FreeWare Vision Packages. If you're looking to buy a robot have a look at some robot stores.



Using RoboRealm you can create a low cost vision software solution with a standard webcam that allows you to explore the very complex world of image analysis and image processing. Through an easy to use analysis pipeline you can add image processing filters to translate an image into robotic movements or computer actions for your vision-guided robotic projects.

Image and/or video processing can be technically difficult. Home robots are continuously moving towards high powered PC based systems that are capable of supporting complex image processing functions. Sometimes you just need a testbed of current image processing applications to test potential ideas that you want your robot or computer + webcam application to perform. We've compiled several image processing functions into a freely available windows based application that you can use with your computer's webcam. You can use it to test out your machine vision ideas and see what may be possible or not ... have fun! We did!



getting started guide to machine vision, vision software, computer vision, and image processing

Introduction to Servos to get you started - как управлять сервомашиинками.






Object Following - A simple object following robot can be built from standard off the shelf parts. Following can be accomplished via vision processing. The advantage to a vision processing follower is that little electronics knowledge is needed to build a complex robot.

Wall Avoidance using the SRV-1 robot. We placed the SRV-1 into a small room and used vision to guide its movements to avoid the walls. This is done by looking at the floor/wall intersection and interpreting the results.

Remote Control Camera using the Orbit camera over the web. This is a quick one page tutorial on how to setup RoboRealm as a webserver to respond to requests over the web. In this example we show how to move the Orbit camera using web browser buttons.

The Society of Robots has an excellent series of computer vision tutorials with lots of great images. We recommend anyone exploring the field of image processing in robotics to take some time reading through those tutorials.

Controlling a USB Missile Launcher Here is a fun and quick demonstration on hooking your Joystick up to a USB Missile Launcher. This tutorial shows you have to map the values from your Joystick and scale them into useable values by a usb missile launcher device.

Adding vision to the Lego NXT Want to give sight to your Lego NXT robot? Here's how we managed to add a wireless camera to the TriBot and get it to pick up a blue ball and move it over to an orange cone.


Orienting the Lego Roverbot Don't know which way your Lego bot it pointing? Use vision to figure out which way round is the front verses the back.


Color Object Tracking Target colored objects and move your robot towards those objects .. but not too close!


Visual Line Following Guide your robot along lines of any kind using just vision as your sensor. No encoders needed!







Краткий курс - Самоучитель - AVR - быстрый старт с нуля


- стр. 2 -

Советую читать курс с начала !

Что такое Микроконтроллер (МК) ?

Почему AVR ? 

Главное по устройству МК. 

Внешние сигналы. 

Как МК решает, что на ножке: "1" или "0"

Ножки - выводы МК - какие они бывают.


Я считаю, что МК это микросхема (чип, камень, IC) - которая в ответ на внешние электрические сигналы действует в соответствии с :

- возможностями заложенными производителем 

- электроникой подключенной к МК

- программой которую в него загрузите ВЫ !

Возможность МК действовать по вашей программе - вот суть-соль МК. 

Это главное отличие МК от "обычных" 
НЕ программируемых  микросхем.


Что такое  AVR ? 

Это семейство МК (Таблица всех МК AVR) от компании ATMEL разработанных
с учетом особенностей и удобства написания программ на языке Си.


Вот ознакомительная статья:  Знакомьтесь, господа: AVR !

Вот полное описание МК AVR на русском языке - 
перевод ДатаШита : AVR ATmega русский ДШ


Там перечень AVR'ов и ДатаШиты

Книги и учебники по  AVR тут



Почему  AVR ? 

Это не дорогие, широко доступные, надежные, простые, довольно быстро считающие  большинство инструкций выполняется за 1 такт - т.е. при кварце 10 МГц выполняется до 10 млн. инструкций в секунду ! 

AVR имеют развитую периферию, т.е. набор аппаратуры окружающей процессор-вычислитель в одном корпусе МК или набор встроенных в МК электронных устройств, блоков, модулей. 


Вот основные параметры AVR

- тактовая частота до 20 МГц ; 
- встроенный программируемый RC-генератор, частота 1, 2, 4, 8 МГц; 
- Flash-ПЗУ программ, программируемое в системе, 10 000 циклов перезаписи; 
- EEPROM данных (100 000 циклов)
- она не "забывает" при откл. питания

- внутреннее ОЗУ со временем доступа 1 такт; 
- 6 аппаратных команд умножения (для семейства mega); 
- развитая система адресации, оптимизированная для работы с С-компиляторами; 
- 32 регистра общего назначения (аккумулятора); 

- синхронный (USART) или асинхронный (UART)
(в mega64 и mega128 их по 2)
- синхронный последовательный порт (SPI); 
- двухпроводный интерфейс TWI, совместимый с интерфейсом I2C; 
- многоканальный PWM 8-, 9-, 10-, 16-битный ШИМ-модулятор; 

- 10-битный АЦП с дифференциальными входами; 
- программируемый коэффициент усиления перед АЦП  1, 10 и 200; 
- встроенный источник опорного напряжения 2,56 В; 
- аналоговый компаратор; 

- сторожевой таймер  - перезагружает МК при "зависании"; 
- настраиваемая схема задержки запуска после подачи питания; 
- схема слежения за уровнем напряжения питания; 

- JTAG-интерфейс для подключения эмулятора (в МК с объемом ПЗУ от 16 кбайт); 
- микропотребление (менее 100 мкА в активном режиме на частоте 32 кГц);
- датчик температуры (в ATtiny25 ATtiny45 ATtiny85).

Существуют AVR-ы со встроенными интерфейсами USB, CAN 
и со встроенными радио приемо-передатчиками

Есть специализированные МК AVR для управления электроприводом электродвигателями - серия AT90PWMxxxx - пример на стр. 1




Читать курс дальше ...










ключевые слова: программирование микроконтроллеров, как написать программу для микроконтроллера, обучение программированию микроконтроллеров, микроконтроллеры atmega128, как запрограммировать микроконтроллер, как прошить микроконтроллер, отладка программы для AVR, моделирование работы электронных схем, электронные проекты, хобби, язык си для микроконтроллеров, язык программирования си Основы программирования (кнопочки, светодиоды) Работа с портами. Прерывания и таймеры. Основы ШИМ, программная и аппаратная реализация. Сервоприводы. Работа с АЦП Настройка и программирование UART Работа с I2C Связь (UART, I2C, SPI) 
AT76C712 , AT76C713 , AT90CAN128 , AT90CAN128 Automotive , AT90CAN32 , AT90CAN64 , AT90PWM2 , AT90PWM3 , AT90S1200 , AT90S2313 , AT90S2323 , AT90S2343 , AT90S4433 , AT90S8515 , AT90S8535 , ATmega128 , ATmega1280 , ATmega1281 , ATmega16 , ATmega161 , ATmega162 , ATmega163 , ATmega164 , ATmega165 , ATmega168 , ATmega168 Automotive , ATmega169 , ATmega2560 , ATmega2561 , ATmega32 , ATmega323 , ATmega324 , ATmega325 , ATmega3250 , ATmega329 , ATmega3290 , ATmega406 , ATmega48 , ATmega48 Automotive , ATmega64 , ATmega640 , ATmega644 , ATmega645 , ATmega6450 , ATmega649 , ATmega6490 , ATmega8 , ATmega8515 , ATmega8535 , ATmega88 , ATmega88 Automotive , ATtiny11 , ATtiny12 , ATtiny13 , ATtiny15L , ATtiny2313 , ATtiny25 , ATtiny26 , ATtiny28L , ATtiny45 , ATtiny85






аппаратные возможности

За время своего относительно недолгого существования (с 1997 года) микроконтроллеры семейства AVR (серия AT90S) фирмы Atmel Corp. приобрели чрезвычайную популярность в мире и в России. 2001 год стал переломным более половины российских разработок с использованием 8-разрядных микроконтроллеров было создано именно на AVR. На сегодняшний день продолжается развитие в том же направлении. Это легко объяснить: благодаря очень удачной архитектуре ядра процессора и широкому набору периферийных модулей на кристалле существенно облегчается процесс программирования конечного устройства. Еще одним фактором, привлекательным для разработчиков, стал выпуск в 2002 году AVR-микроконтроллеров следующего поколения. Эти микросхемы производятся по технологическим нормам 0,35 мкм, в отличие от первых AT90S, выпускающихся по технологии 0,5 мкм. Заметное отличие - увеличенная в два раза тактовая частота новых контроллеров - 16 МГц, обеспечивающая производительность до 16 MIPS, (типовая команда у AVR-контроллеров выполняется за один период тактовой частоты), но это, как говорится, вершина айсберга.


Фирма ATMEL ежегодно устраивает семинары для дистрибьюторов. Обычно семинар проходит в течение 5 рабочих дней. На семинаре,который проходил в конце марта 2003 года, AVR-микроконтроллерам было выделено более полутора дней — больше, чем любому другому направлению.Основную информацию по этим микроконтроллерам представлял Ингар Фредриксен (Ingar Fredriksen)(рис.1) из норвежского отделения ATMEL (стоит напомнить, что ядро этих RISC-микроконтроллеров разработали 2 норвежца, имена которых и заложены в аббревиатуре AVR).

Когда фирма ATMEL начала выпуск принципиально нового семейства 8-битных микроконтроллеров, построенных на базе RISC-архитектуры с расширенным набором команд, она условно разбила их на три подсемейства: tiny, classic и mega. Все микросхемы имеют идентичное ядро с регистровым файлом из тридцати двух 8-битных регистров общего назначения и встроенное Flash-ПЗУ емкостью от 1 до 128 кбайт. Обобщенная функциональная схема AVR-микроконтроллера представлена на рис.2.

Функциональная схема AVR

Ширина шины команд составляет 16 бит.5-битное поле адреса регистра обеспечивает доступ к любому из 32 регистров общего назначения. В результате этих схемотехнических решений стало возможным отказаться от многобанковой организации регистров общего назначения и страничной адресации памяти. Помимо облегчения жизни программиста, пишущего на ассемблере, такая архитектура поз, волила создать высокоэффективные компиляторы языка С, генерирующие компактный код.

Микросхемы в подсемействах в основном отличались объемом памяти и количеством портов ввода-вывода. Так, микроконтроллеры tiny имели объем Flash-ПЗУ 1 –2 кбайт и корпус 8 –20 выводов (за исключением tiny28), classic-объем Flash-ПЗУ 2 –8 кбайт и корпус 28 –44 вывода, а mega — 128 кбайт и корпус 64 вывода.

Все микросхемы позволяют производить перепрограммирование памяти программ непосредственно в системе.

С момента начала производства в 1997 году ежегодный объем выпуска AVR-микроконтроллеров неуклонно увеличивается. На рис.3 представлены соответствующие показатели. Для справки: в 2002 году было выпущено более 100 миллионов микросхем.

Диаграмма выпуска микроконтроллеров по годам

С выпуском микроконтроллеров второго поколения в позиционировании подсемейств произошли изменения. Новые микросхемы содержат только два подсемейства: tiny и mega. Микросхемы tiny по-прежнему имеют Flash-ПЗУ 1 –2 кбайт и корпуса 8 –20 выводов,а вот ряд mega существенно расширился: Flash-ПЗУ 8 –128 кбайт и корпус 28 –64 вывода. Фактически произошло поглощение подсемейства classic. Краткие характеристики микросхем представлены в таблице 1.

Таблица 1

Микросхема ПЗУ программ, кбайт ОЗУ ЭСПЗУ Таймеры Посл. порты АЦП Корпус, количество выводов Совместимость
ATtiny26/L 2 128 Б 128 Б 2 USI 11 вх. 20 нет
ATmega8/L 8 1 KБ 512 Б 3 USART 6/8 вх. 28,32 AT90S4433
ATmega8515/L 8 512 Б 512 Б 2 USART нет 40,44 AT90S8515
ATmega8535/L 8 512 Б 512 Б 2 USART 8 вх. 40,44 AT90S8535
ATmega16/L 16 1 KБ 512 Б 3 USART 8 вх. 40,44 ATmega163
ATmega162L/V 16 1 KБ 512 Б 4 2 USART нет 40,44 ATmega161
ATmega169L/V 16 1 KБ 512 Б 3 USART 8 вх. 40,44 нет
ATmega32/L 32 2 KБ 1 Б 3 USART 8 вх. 40,44 ATmega323
ATmega64/L 64 4 KБ 2 Б 4 2 USART 8 вх. 64 ATmega103
ATmega128/L 128 4 KБ 4 KБ 4 2 USART 8 вх. 64 ATmega103

Из анализа таблицы можно видеть следующее. Для каждой микросхемы classic есть «дублер » mega в идентичном корпусе. Таким образом, в существующей разработке, например, вместо AT90S8515 можно использовать микроконтроллер ATmega8515, получив при этом преимущества в виде увеличения скорости процессора, добавления команд умножения и расширенных характеристик последовательных портов. Кстати, если тактовая частота контроллера в усторйстве не превышает 8 МГц, рекомендуется использовать «дублер » версии «L ». Это объясняется тем, что диапазон напряжений питания этих микросхем составляет 2,7 –5,5 В, и таким образом, повышается помехозащищенность устройства: ему не будут страшны кратковременные (а в ряде случаев и долговременные) провалы в питании до уровня 2,7 В. Для каждого типа микроконтроллера существует файл, где детально описаны отличия кристаллов первого и второго поколений. Как правило, при замене микроконтроллера требуется перекомпиляция исходного кода программы, однако в большинстве случаев это является механической операцией замены строки с именем соответствующего подключаемого файла (в данном примере — на В ряду новых AVR-микроконтроллеров отсутствует представитель с емкостью памяти программ 4 кбайт. Это объясняется тем, что младший кристалл в семействе mega — микроконтроллер ATmega8 с памятью программ 8 кбайт — имеет цену даже ниже, чем 4-килобайтный прототип — микроконтроллер AT90S4433.

В подсемействе tiny выпущена интересная микросхема второго поколения — ATtiny26. Этот кристалл при цене менее $2 содержит высокоскоростной ШИМ, а также 11-канальный АЦП с возможностью работы в дифференциальном режиме, с регулируемым входным усилителем и встроенным источником опорного напряжения.

Ниже приведены основные характеристики новых AVR-микроконтроллеров:

  • тактовая частота до 16 МГц,время выполнения команды 62,5 нс;
  • встроенный програмируемый RC-генератор, частота 1, 2, 4, 8 МГц;
  • Flash-ПЗУ программ,программируемое в системе, до 128 кбайт (10 000 циклов перезаписи);
  • электрически перепрограммируемое ПЗУ данных до 4 кбайт (100 000 циклов перезаписи);
  • внутреннее ОЗУ со временем доступа 1 такт, до 4 кбайт;
  • мощный набор команд (более 120 инструкций);
  • 6 аппаратных команд умножения (для семейства mega);
  • развитая система адресации, оптимизированная для работы с С-компиляторами;
  • 32 регистра общего назначения (аккумулятора);
  • синхронный (USART) или асинхронный (UART) последовательные порты;
  • синхронный последовательный порт (SPI);
  • двухпроводный интерфейс TWI, совместимый с интерфейсом I2C;
  • многоканальный 8-, 9-, 10-, 16-битный ШИМ-модулятор;
  • 10-битный АЦП со временем преобразования 70 мкс и дифференциальными входами;
  • программируемый коэффициент усиления — 1; 10 или 200;
  • встроенный источник опорного напряжения 2,56 В;
  • аналоговый компаратор;
  • сторожевой таймер;
  • настраиваемая схема задержки запуска после подачи питания;
  • схема слежения за уровнем напряжения питания;
  • JTAG-интерфейс для подключения эмулятора (в микросхемах с объемом ПЗУ от 16 кбайт);
  • микромощное потребление (менее 100 мкА в активном режиме на частоте 32 кГц).

Полное техническое описание AVR-микроконтроллера составляет несколько сотен страниц,поэтому в рамках данной статьи есть возможность поговорить только об основных особенностях. Архитектуру микроконтроллеров нового поколения удобно рассматривать на старшем представителе семейства — ATmega128, так как в нем присутствует весь набор периферийных модулей.Итак,чем интересен этот микроконтроллер?

Система тактирования

Во-первых, ATmega128, как и другие AVR-микроконтроллеры второго поколения, имеют расширенную,достаточно гибкую структуру тактирования. В качестве формирователя тактового сигнала могут быть использованы следующие источники (рис.4):

  • высокочастотный или низкочастотный кварцевый резонатор;
  • пьезорезонатор;
  • внешняя RC-цепочка;
  • внутренний настраиваемый RC-генератор;
  • внешний источник тактовых импульсов.

Схема модуля тактирования

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

Выбор способа тактирования производится установкой соответствующих установочных битов (fuse bits)CKSEL0...CKSEL3 при программировании микросхемы. Эти установочные биты управляют также задержкой включения микроконтроллера после выхода из состояния ожидания. В таблице 2 приведены варианты установок этих битов.

Таблица 2

CKSEL3...0 Источник тактирования Комментарий
0000 Внешняя частота 0...16 МГц
0001 Встроенный RC генератор 1 МГц
0010 Встроенный RC генератор 2 МГц
0011 Встроенный RC генератор 4 МГц
0100 Встроенный RC генератор 8 МГц
0101 Внешний RC генератор <0,9 МГц
0110 Внешний RC генератор 0,9...3,0 МГц
0111 Внешний RC генератор 3,0...8,0 МГц
1000 Внешний RC генератор 8,0...12 МГц
1001 Низкочастотный пьезорезонатор 32,768 кГц
101х Кварцевый резонатор 0,4...0,9 МГц
110х Кварцевый резонатор 0,9...3,0 МГц
111х Кварцевый резонатор 3,0...8,0 МГц

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

Типичная ошибка — неверная установка битов CKSEL0...CKSEL3. В случае установки этих битов «в нули» (0000) микросхема переходит в режим работы от внешнего генератора. Таким образом, даже подключенный кварцевый или пьезорезонатор не «запускает » микросхему. Единственный выход «оживить» микроконтроллер — подать на вывод XTAL1 внешние импульсы с частотой 0,5 –16 МГц, не выпаивая его из схемы, и правильно переустановить биты CKSEL0...CKSEL3.

Попутно следует отметить, что микросхемы поставляются с установочными битами, установленными для работы от встроенного RC-генератора с частотой 1 МГц,т аким образом, простое подключение внешнего кварца не дает ожидаемого эффекта. Встроенный RC-генератор имеет достаточно хорошие характеристики, нестабильность по температуре составляетт 3 –4%в диапазоне –40...+85 °С, нестабильность по питанию в диапазоне от 3,3 до 5,0 В — 4 –5%.

На рис.5 показано начальное, «заводское », состояние установочных битов микросхемы ATmega128.

Окно установочных битов

Рассмотрим более подробно набор установочных битов. Биты защиты не требуют комментариев, их функции очевидны.

Биты BLB0x BLB1x отвечают за защиту от чтения и модификации данных в основной памяти программ и загрузочном блоке соответственно.

Два бита SUT (startup time) определяют задержку пуска микроконтроллера. Это важно при использовании задающих кварцевых резонаторов с большим временем выхода на режим.Для таких кварцев можно установить задержку до 65 мс.

Биты BOD (brown out detector) и BODLEVEL управляют схемой слежения за питанием. Эта схема «наблюдает» за уровнем напряжения питания микроконтроллера, и, в случае снижения этого уровня ниже порога на время более 2 мкс,производит перезапуск контроллера. Пороговое напряжение составляет 4,0 или 2,7 В, в зависимости от состояния бита BODLEVEL.

Биты BOOTSZ0 и BOOTSZ1 служат для настройки размера boot-блока, от 1 до 4 страниц памяти. Страница памяти в различных микросхемах имеет емкость от 256 байт до 2 кбайт. Это позволяет более рационально использовать пространство памяти программ.

Бит CKOPT выполняет различные функции, в зависимости от типа используемого задающего генератора. Если это кварцевый разонатор, бит CKOPT отвечает за настройку коэффициента усиления встроенной схемы генератора. Если используется кварц с частотой выше 8 МГц, рекомендуется запрограммировать этот бит (сделать его "0"), если же в системе используется кварц на частоту 8 МГц и менее, бит CKOPT можно распрограммировать (сделать его "1" как "с завода"). В результате уменьшится потребляемый микроконтроллером ток и снизится электромагнитное излучение цепей генератора.

Если же в качестве задающего генератора используется «часовой » пьезорезонатор на частоту 32,768 кГц, при программировании бита CKOPT к выводам XTAL1 XTAL2 подключаются внутренние конденсаторы номиналом 36 пФ, что снимает необходимость использования дополнительных компонентов.

Бит SPIEN разрешает последовательное программирование-чтение микросхемы, и биты JTAGEN OCDEN соответственно активизируют JTAG-интерфейс и разрешают работу встроенных отладочных цепей. Бит OCDEN требует внимательного к себе отношения, так как при его активном состоянии некоторые внутренние цепи тактирования не отключаются, что приводит к повышенному потреблению мощности в режиме ожидания.

Заключительный бит, М103С, следует рассмотреть более подробно. Как уже упоминалось выше, микросхема ATmega128 имеет на кристалле существенно больше периферийных модулей, чем ее прототип — микросхема ATmega103. Следовательно, на кристалле значительно увеличилось количество управляющих регистров — вместо 64 их стало 224. В традиционных микроконтроллерах в таком случае организовывалась дополнительная страница регистров, однако AVR-архитектура основывается на линейной адресации для ускорения доступа к данным. В соответствии с этой концепцией новый массив регистров размещен непосредственно за массивом базовых регистров,а начальный адрес внутреннего ОЗУ сдвинут на 160 байт, что отображено на карте памяти (рис.6).

Карта памяти


Конфигурация А соответствует микросхеме ATmega128, а конфигурация В — микросхеме ATmega103.

Если микросхему ATmega128 устанавливают в ранее разработанное устройство, и ее дополнительные функции не используются, следует установить бит М103С, и тогда она будет работать в режиме эмуляции ATmega103. При этом не надо забывать о правильной установке битов CKSEL0...CKSEL3!

Универсальность AVR-микроконтроллеров заключается в гибком построении кристалла — идентичное ядро и разнообразный набор периферийных модулей. Таким образом, можно использовать программы, написанные для одной микросхемы, в качестве основы программы другой, с более развитой периферией. Например, отлаженная программа, написанная для микросхемы ATtiny26, может служить основой программы для микросхемы ATmega32 — потребуется лишь добавить функции, использующие новые ресурсы и перекомпилировать исходный текст.

Система прерываний

Система прерываний AVR-микроконтроллеров обслуживает несколько источников. В младших адресах памяти программ находится таблица прерываний, в которой записываются вектора для каждого из обслуживаемых прерываний. Каждое прерывание имеет индивидуальный бит разрешения, также есть бит общего разрешения прерываний. Вектор прерывания занимает один или два адреса памяти программ в зависимости от размера памяти конкретного микроконтроллера (следует еще раз отметить, что шина команд — 16-разрядная). Прерывания, размещенные по младшим адресам, имеют более высокий приоритет, в нулевом адресе таблицы находится вектор прерывания «Сброс».

В обычном режиме после снятия сигнала низкого уровня на входе «Сброс » начинает выполняться программа по вектору, указанному в нулевом адресе. Если же установлен установочный бит загрузчика BOOTRST, по сбросу стартует программа, размещенная в загрузочной области памяти микроконтроллера. Эта функция позволяет, например, загружать в ПЗУ две различные программы, и, управляя состоянием бита BOOTRST, запускать любую из них без перепрограммирования всего объема Flash-памяти.

Ниже представлен фрагмент кода с указанием названий векторов прерываний микросхемы ATmega128. Из тридцати пяти векторов восемь (с именами EXT_INT0 ...EXT_INT7)являются внешними,остальные — внутренними.

$0000 jmp RESET; Reset Handler
$0002 jmp EXT_INT0; IRQ0 Handler
$0004 jmp EXT_INT1; IRQ1 Handler
$0006 jmp EXT_INT2; IRQ2 Handler
$0008 jmp EXT_INT3; IRQ3 Handler
$000A jmp EXT_INT4; IRQ4 Handler
$000C jmp EXT_INT5; IRQ5 Handler
$000E jmp EXT_INT6; IRQ6 Handler
$0010 jmp EXT_INT7; IRQ7 Handler
$0012 jmp TIM2_COMP; Timer2 Compare Handler
$0014 jmp TIM2_OVF; Timer2 Overflow Handler
$0016 jmp TIM1_CAPT; Timer1 Capture Handler
$0018 jmp TIM1_COMPA; Timer1 CompareA Handler
$001A jmp TIM1_COMPB; Timer1 CompareB Handler
$001C jmp TIM1_OVF; Timer1 Overflow Handler
$001E jmp TIM0_COMP; Timer0 Compare Handler
$0020 jmp TIM0_OVF; Timer0 Overflow Handler
$0022 jmp SPI_STC; SPI Transfer Complete Handler
$0024 jmp USART0_RXC; USART0 RX Complete Handler
$0026 jmp USART0_DRE; USART0,UDR Empty Handler
$0028 jmp USART0_TXC; USART0 TX Complete Handler
$002A jmp ADC; ADC Conversion Complete Handler
$002C jmp EE_RDY; EEPROM Ready Handler
$002E jmp ANA_COMP; Analog Comparator Handler
$0030 jmp TIM1_COMPC; Timer1 CompareC Handler
$0032 jmp TIM3_CAPT; Timer3 Capture Handler
$0034 jmp TIM3_COMPA; Timer3 CompareA Handler
$0036 jmp TIM3_COMPB; Timer3 CompareB Handler
$0038 jmp TIM3_COMPC; Timer3 CompareC Handler
$003A jmp TIM3_OVF; Timer3 Overflow Handler
$003C jmp USART1_RXC; USART1 RX Complete Handler
$003E jmp USART1_DRE; USART1, UDR Empty Handler
$0040 jmp USART1_TXC; USART1 TX Complete Handler
$0042 jmp TWI; Two-wire Serial Interface Interrupt 
$0044 jmp SPM_RDY; SPM Ready Handler
$0046 RESET: ldir16, high(RAMEND); Main program start
$0047 out SPH, r16; Set stack pointer to top of RAM
$0048 ldi r16, low(RAMEND)
$0049 out SPL, r16
$004A sei; Enable interrupts
$004B < instr>xxx

При входе в прерывние бит общего разрешения прерываний сбрасывается и все прерывания запрещаются. В программе-обработчике прерывания можно снова установить этот бит, и, таким образом, вновь разрешить прерывания. В этом случае вновь поступившее прерывание останавливает работу обработчика текущего прерывания. Бит общего разрешения прерываний устанавливается при выходе из прерывания. Существует два типа прерываний. Первый тип — триггерный, при этом устанавливается флажок прерывания. Второй тип прерываний не имеет соответствующего флажка, и такое прерывание может быть потеряно, если в это время бит общего разрешения прерываний был сброшен. Для запрещения и разрешения прерываний в системе команд есть соответствующие инструкции — CLI и STI.

Время отклика на любое прерывание занимает 4 периода тактовой частоты. Если прерывание происходит во время выполнения длинной команды, эта команда корректно завершается до начала обработки прерывания. Если прерывание происходит в то время, когда контроллер находился в режиме ожидания, добавляются еще 4 такта для перехода контроллера в активный режим. Возврат из прерывания также занимает 4 периода тактовой частоты.

Рассмотрим периферийные модули, которые входят в состав микросхемы ATmega128.


ATmega128 имеет на борту 4 таймера-счетчика. Два 8-разрядных счетчика с независимыми входными делителями и режимами сравнения. Следующая пара счетчиков — 16-разрядные, в дополнение к ранее указанным функциям имеют режимы сравнения и захвата. Один 8-разрядный счетчик может использоваться как таймер часов реального времени. Для этого на входе счетчика есть микромощный генератор, к которому непосредственно можно подключить «часовой » кварц. Основная функция этого счетчика — формирование длинных интервалов времени,максимальный период — 8 секунд. На базе таймеров-счетчиков построены широтно-импульсные модуляторы, причем 2 канала ШИМ 8-разрядные, и 6 каналов — с программируемой разрядностью от 2 до 16 бит.

Структурная схема 8#разрядного таймера-счетчика

Структурная схема 16#разрядного таймера-счетчика

Модуль АЦП

Многие AVR-микроконтроллеры имеют встроенный аналого-цифровой преобразователь. У микросхем Atmega8535/16/32 из-за небольшого количества выводов пришлось пожертвовать возможностью работы с внешним ОЗУ, однако ATmega128 не имеет такого ограничения.

В состав микросхемы входит 8-канальный 10-битный АЦП со временем преобразования 65 мкс на канал. Интегральная нелинейность АЦП составляет 0,5 единицы младшего разряда. АЦП может работать в следующих режимах:

  • 8-канальный с одиночными входами;
  • 7-канальный псевдодифференциальный;
  • 2-канальный дифференциальный с программируемым входным усилителем (1х, 10х и 200х).

Также на кристалле имеется источник опорного напряжения 2,56 В. Максимальное напряжение на аналоговых входах не должно превышать уровень аналогового напряжения питания AVCC. Процесс аналого-цифрового преобразования в установившемся режиме занимает 13 тактов генератора.

Структурная схема модуля АЦП представлена на рис.9.

Схема модуля АЦП

Последовательные порты

Микроконтроллер ATmega128 щедро оснащен портами ввода-вывода. Стандартно он имеет 7 параллельных портов: 8-разрядные A, B, C, D, E, F и 5-разрядный порт G. Однако, в соответствии с общей тенденцией перехода на последовательные коммуникационные интерфейсы, ATmega128 поддерживает связь с внешним миром через несколько последовательных портов. Естественно, в силу ограниченого количества выводов корпуса микросхемы ATmega128, многие выводы имеют несколько альтернативных режимов. Краткое описание портов представлено в таблице 3.

Таблица 3

Название порта Скорость обмена Число линий связи
UART/USART0 до 2 Мбод 2/3
UART/USART1 до 2 Мбод 2/3
SPI,Master/Slave до 8 Мбод 3/4
TWI,Multi master до 400 кбод 2

Примечание: порт TWI аппаратно реализует интерфейс I2C

Характеристики порта USART:

  • полнодуплексный обмен;
  • асинхронные или синхронные операции;
  • двойная скорость обмена в асинхронном режиме;
  • работа в многопроцессорной конфигурации;
  • тактирование от контроллера или периферийного устройства;
  • генератор частоты обмена с высоким разрешением;
  • работа со словами 5, 6, 7, 8 или 9 бит данных и 1 либо 2 стоповыми битами;
  • аппаратный генератор бита паритета;
  • определение ошибки передачи пакета;
  • входной фильтр, снижающий влияние шума;
  • три независимых прерывания: завершение приема,завершение передачи, опустошение регистра передачи.

Порт UART/USART, как видно из названия, может работать либо в асинхронном, либо в синхронном режиме. В первом случае используются две линии, а во втором — три. Работа порта в асинхронном режиме аналогична работе UART в AVR-микроконтроллерах первого поколения. Отличие — в регистре данных приемника UDR, который стал двухуровневым, таким образом, можно начинать прием следующего пакета до завершения обработки предыдущего. Структурная схема порта USART представлена на рис.10.

Схема модуля USART

Характеристики порта SPI:

  • полнодуплексный синхронный обмен;
  • поддержка режимов Master и Slave;
  • начало передачи со старшего или младшего бита;
  • семь программируемых скоростей передачи;
  • удвоенная скорость передачи (половина тактовой частоты);
  • флаг прерывания по окончании передачи;
  • обнаружение ошибки записи.

Передача информации по интерфейсу SPI представляет собой обмен данными между двумя закольцованными сдвиговыми регистрами, один из которых размещен в устройстве Master, а второй — в устройстве Slave.

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

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

Схема модуля SPI

Характеристики порта TWI:

  • полная совместимость с интерфейсом I2C;
  • скорость передачи до 400 кГц;
  • поддержка режимов Master и Slave;
  • 7-разрядный адрес позволяет использовать до 128 устройств на шине;
  • микроконтроллер может функционировать как приемник и как передатчик;
  • схема ограничения скорости нарастания фронтов выходных сигналов;
  • защита по входам от шумов и кратковременных ложных импульсов;
  • переход из «спящего » состояния в активное при распознавании адреса обращения.

АЦП может работать в режиме одиночного запуска или в непрерывном режиме. После окончания преобразования вырабатывается соответствующее прерывание.Для получения максимальной точности измерения аналогового сигнала рекомендуется на время аналого-цифрового преобразования перевести микроконтроллер в спящий режим.

Помимо АЦП на кристалле есть еще аналоговый компаратор. Он сравнивает сигналы на входах AIN1 и AIN2. Есть возможность подать на инвертирующий вход компаратора любой из входных сигналов АЦП.

Режимы энергосбережения

Режим энергосбережения (режим ожидания, «спящий » режим) позволяет отключить неиспользуемые модули микроконтроллера и таким образом снизить энергопотребление. AVR — микроконтроллеры имеют несколько режимов ожидания, и программист может выбрать оптимальный режим для конкретной задачи.

Для перевода контроллера в любой режим ожидания следует установить биты SM2, SM1 и SM0 в регистре MCUCR и выполнить команду SLEEP. Перечень режимов представлен в таблице 4.

Таблица 4

SM2 SM1 SM0 Режим
0 0 0 Idle
0 0 1 ADC Noise Reduction
0 1 0 Power down
0 1 1 Power save
1 1 0 Standby*
1 1 1 Extended Standby*
*режимы Standby и Extended Standby доступны при работе с внешним осциллятором

Если во время нахождения контроллера в режиме ожидания возникает прерывание, контроллер переходит в активный режим, и через 4 такта после окончания периода «пробуждения », необходимые для выполнения процедуры прерывания, продолжает выполнение программы с команды, следующей за командой SLEEP. Содержимое регистров и ОЗУ остается таким же, какое было до «пробуждения».

Рассмотрим коротко каждый из режимов ожидания.

Режим Idle. Останавливается процессор, но продолжают работать модули SPI, USART, TWI, аналоговый компаратор, АЦП, таймеры счетчики, сторожевой таймер и модуль прерываний.

Режим ADC Noise Reduction. В этом режиме останавливается процессор, модули SPI и USART.

Также отключаются цепи тактирования clkI/O, clkCPU и clkFlash.

Режим ADC Noise Reduction используется для получения более точных результатов измерений АЦП.

Режим Power-down. В этом режиме отключается тактовый генератор, но продолжают работать модуль внешних прерываний, интерфейс TWI и сторожевой таймер. Также отключаются все цепи тактирования, остаются работать только асинхронные модули. Для перехода в активный режим требуется дополнительная задержка, необходимая для запуска тактового генератора. Эта задержка устанавливается fuse-битами CKSEL.

Режим Power-save. Этот режим подобен предыдущему за одним исключением. Если таймер-счетчик 0 тактируется асинхронно, он продолжает функционировать после выполнения команды SLEEP. Контроллер может быть «разбужен » по переполнению таймера или по срабатыванию цифрового компаратора, если разрешено соответствующее прерывание.

Режимы Standby и Extended Standby аналогичны режимам Power-down и Power-save соответственно. Однако в этих режимах тактовый генератор не отключается и время перехода в активный режим составляет 6 тактов.


Принципиально новым у лом микроконтроллера ATmega128 является JTAG-интерфейс. Этот интерфейс используется для проведения периферийного тестирования микросхемы в соответствии со стандартом IEEE std 1149.1, а также для подключения внутрисхемного эмулятора ATJTAG ICE. Физически JTAG-интерфейс занимает 4 старших разряда АЦП. Режим отладки с использованием JTAG-эмулятора поддерживается микроконтроллерами ATmega16/162/169/32/64/128. На кристалле микроконтроллера размещен специальный набор отладочных регистров, через которые эмулятор и управляет выполняемой программой. Еще одна функция JTAG-эмулятора — внутрисхемное программирование микроконтроллера. Следует отметить, что при программировании битов защиты работа JTAG-порта запрещается, чтобы исключить возможность использовать этот порт для несанкционированного доступа к содержимому программной памяти микроконтроллера.Применение JTAG-эмулятора позволяет использовать пользовательскую плату как отладочную. Для этого необходимо разместить 10-контактный разъем для подключения JTAG-эмулятора. В качестве отладочного кристалла используется собственно микроконтроллер, на котором запускается отлаживаемая программа.

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

Один из авторов статьи задал (можно сказать ретранслировал) Ингару Фредриксену типичный вопрос российских разработчиков — а каков срок жизни у этих новых AVR-микроконтроллеров? Мы совсем недавно привыкли к микросхеме ATmega103, вполне всех устраивающей, а теперь приходится переходить на ATmega128, которая, конечно, лучше, однако требует некоторой модификации исходных кодов (если они доступны) и перекомпиляции проекта. Этот вопрос породил обстоятельный ответ, который вылился в 15-минутный монолог, и его суть в двух словах такова: анализ статистики задач, решаемых 8-разрядными микроконтроллерами, показывает, что от хорошего универсального, то есть пригодного к использованию практически в любой задаче своего класса, контроллера требуются 2 основных качества. Первое — быстродействие не менее 10 MIPS, чтобы не думать о запасе производительности. Второе — большой объем памяти программ, чтобы писать код на языке высокого уровня и не заботиться размере выходного hex-файла. При наличии этих качеств работу можно сделать быстро, а это очень важно. В свете вышеперечисленных требований AVR-контроллеры второго поколения идеально подходят для применения в любой области, где нужен 8-разрядный контроллер. А наличие идентичного ядра еще более развязывает руки разработчику — очень легко перейти к любой микросхеме этого обширного семейства без существенных временных затрат. Таким образом, можно сказать, что революционные изменения в аппаратной архитектуре контроллеров просто не требуются, то есть AVR-контроллеры набрали «необходимую высоту » и теперь переходят в режим «горизонтального полета ».

В заключение стоит в двух словах рассказать о новых изделиях. Это кристаллы ATmega162 и ATmega169, отличительной особенностью которых является возможность работы при питании 1,8 В и микропотребление в активном режиме. Для справки: у ATmega169 ток потребления в активном режиме при питании 1,8 В на частоте 32 кГц составляет 20 мкА! Кроме этого, ATmega169 имеет контроллер управления сегментным ЖКИ с матрицей 25 сегментов, 4 колонки. К концу года ожидается выпуск кристалла на базе микросхемы ATmega128 с CAN-интерфейсом. А в более отдаленной перспективе прорисовывается микросхема ATmega256.

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



AVR раз, два, три...   это просто!

действительно Краткий Курс !

МикроКонтроллеры AVR Начинающим "с нуля" 


Хостинг от uCoz