Софт-Портал

Atmel Avr

Рейтинг: 4.7/5.0 (448 проголосовавших)

Категория: Windows

Описание

МИКРОКОНТРОЛЛЕРЫ ATMEL AVR


Обзор подходов к созданию роботов с элементами самосознания

Корнеллский робот. Робот университета Мейдзи. Эволюционное моделирование самосознания.

Создание BEAM-роботов - это не просто технологический процесс или увлекательное хобби. BEAM - это целая культура, со своей философией и эстетикой.


Робот "Омнибот" на базе встраиваемого компьютера стандарта PC/104

Робот-теннисист разработан командой механико-математического факультета МГУ.

МИКРОКОНТРОЛЛЕРЫ ATMEL AVR: ИСТОРИЯ СОЗДАНИЯ

Идея разработки нового прогрессивного RISC-ядра зародилась в норвежском городе Тронхейм (Trondheim) в светлых головах двух студентов Norwegian University of Science and Technology (NTNU). Звали изобретателей Альф Боген (Alf-Egil Bogen) и Вегард Воллен (Vegard Wollen). Находясь в очаровательном окружении смеси университетских зданий, вычислительных центров и кафе местечка Bakklandet, будущие директора Atmel Norway создали архитектуру, которая стала одной из самых удачных на мировом рынке микроконтроллеров.

В 1995 году Боген и Воллен решили предложить американской корпорации Atmel, известной на тот момент своим "ноу-хау" изготовления чипов с Filash-памятью, выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flash-памятью программ на кристалле. Идея настолько понравилась руководству Atmel Corp. что было принято решение незамедлительно инвестировать данный проект.

В 1996 году был основан исследовательский центр Atmel в Тронхейме. Стоит сказать, что 150-тысячный Тронхейм усилиями своего университета каждый год порождает до 20-ти новых компаний, специализирующихся в секторах рынка начиная от автоматизации и до передачи и обработки данных. В конце 1996 года был выпущен опытный кристалл AT90S1200, а во второй половине 1997-го корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров, к их рекламной и технической поддержке.

Новое ядро было запатентовано и получило название AVR, которое по прошествии уже нескольких лет стало трактоваться самыми различными способами. Кто-то утверждает, что это не иначе как A dvanced V irtual R ISC, другие полагают, что не обошлось здесь без A lf Egil Bogen V egard Wollan R ISC. Держателями патента при этом являются: Wollan, Vegard (NO); Bogen, Alf-Egil (NO); Myklebust, Gaute (NO); Bryant, John, D. (US).

Интересно, что система команд и внутреннее устройство чипов AVR разрабатывались совместно с фирмой IAR Systems - производителем компиляторов языков программирования С/С++, что обеспечило уникальные характеристики этих микроконтроллеров. В результате для AVR стало возможным получать высокую плотность кода при использовании языков высокого уровня, практически не теряя в производительности по сравнению с программами, написанными на низкоуровневом языке Ассемблера.

Кроме того, использование прогрессивной технологии конвейеризации у AVR сокращало цикл "выборка - исполнение" команды. Например, у микроконтроллеров семейства x51 короткая команда выполняется за 12 тактов генератора. В PIC-контроллерах фирмы Microchip, где уже реализован конвейер, короткая команда выполняется за 4 периода тактовой частоты. В микроконтроллерах AVR короткая команда в общем потоке выполнялась всего за один период тактирующего сигнала. Такое построение кристалла обеспечило существенное повышение производительности, которая в пределе может достигать значения 1MIPS на 1МГц. Это во многих случаях при заданной производительности позволяло снизить тактовую частоту, а значит, и потребляемую мощность устройства. AVR-микроконтроллеры предоставляли более широкие возможности по оптимизации производительности/энергопотребления, что было особенно важно при разработке приложений с батарейным питанием.

Конечно же, новые микроконтроллеры от Atmel были встречены с большим интересом. Их продажи неуклонно росли, команда AVR, состоящая в 1997 году не более чем из 10 человек, сейчас превышает сотню сотрудников только в Норвегии, без учета технических специалистов по AVR в двух специализированных центрах во Франции и Финляндии.
Сегодня Atmel выпускает два семейства микроконтроллеров с ядром AVR: Tiny и Mega. Микроконтроллеры Classic, первого из семейств AVR, постепенно заменяются более современными моделями. В 2003 году Atmel Corp. торжественно отпраздновала крупное событие - количество выпущенных микросхем с ядром AVR превысило 500 миллионов штук!

Atmel avr:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Atmel AVR

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

    Корпорация Atmel анонсировала новые микроконтроллеры ATtiny441/841 семейства AVR Только стоить они наверное будут в 5 раз дороже чем Atmega8.

    Микроконтроллеры семейства PIC мы уже научились прошивать вот из этой статьи. Но, существует не менее популярное семейство AVR микроконтроллеров. В

    Наверное, многим разработчикам программного обеспечения для микроконтроллеров AVR, использующим среду AVRStudio4, хотелось бы программировать чипы прямо в AVRStudio4 с использованием AVRISP. Обычно мы используем упрощенную версию AVRISP работающую с PonyProg или AVRDUDE.

    Программка бесплатна, для программирования 8- и 32-битовых чипов от Atmel. Работает ли под ОС Linux, мне пока неизвестно, нужно будет попробовать запустить через WINE Интегрирован C компилятор Новый проектный визард Продвинутый редактор Подробнее здесь Скачать можно здесь: AVR Studio Atmel AVR Software Framework.

    Программирование контроллеров AVR, АТМЕЛ и дрИюль 27, 2007 |Без рубрики ]]>Некоторое время назад, Сильвер озаботился вопросом: «- Какие ресурсы internet следует показать своему папе?» Уж не знаю, на чем там остановился Сильвер, но моему папику вполне впору придутся следующие места: Форум программистов:Сайт производителя www.atmel.com Сводная таблица характеристик всех АТМЕЛ кристаллов на русском со ссылками на даташитыссылка Исходник TCP/IP стека для AVR на английском ссылка Инсталляция и конфигурация компилятора С WINAVR на русскомссылка Примеры применения AVR на русскомссылка Книга Ефстифеев Микроконтроллеры ТИНИ и МЕГА скачать Графический Ассемблер Algorithm Builder ссылка Проект SPIJTAG на русском ссылка Статья про АТМЕЛ на русском ссылка Описание АТмега 128 на русском, почти полный перевод даташита ссылка Сборник ссылок на английском ссылка FAQ по компилятору IAR C на русском ссылка Примеры применения семейства AVR на русском ссылка AVR для начинающих, сайт разработчика на русскомссылка Разработка диктофона на АТМЕЛ С на русском ссылка Библиотека подпрограмм С на английском ссылка Библиотека подпрограмм ASM на английском ссылка Как подключить AVR к Ethernet ветка форума на русском ссылка Продолжение следует… ]]> Ссылки на эту статью(HTML-BBcode-Plain Text)Для ссылки на эту статью, воспользуйтесь одним из вариантов: HTML:Программирование контроллеров AVR, АТМЕЛ и дрBBcode:[url=http://kibin.ru/programmirovanie-kontrollerov-avr-atmel-i-dr/]Программирование контроллеров AVR, АТМЕЛ и др[/url] Plain Text:«Программирование контроллеров AVR, АТМЕЛ и др»http://kibin.ru/programmirovanie-kontrollerov-avr-atmel-i-dr/ ]]>.

    Персональный блог Алексея Теплякова

    Atmel AVR программатор

    K119 Atmel AVR программатор

    Данный программатор предназначен для внутрисхемного программирования Atmel AVR микроконтроллеров. Подключается к USB порту персонального компьютера, имеет возможность подачи питания на программируемое устройство, выбора частоты программирования, работоспособен под управлением операционных систем Linux, Mac OS X и Windows.

    • Напряжение питания: 5 В
    • Ток потребления: 25 мА
    • Скорость программирования: 750 кГц

    Схема расположения элементов:

    Устройство является аналогом программатора USBasp *1, может быть собрано с использованием микроконтроллеров ATmega8/ATmega48, и не требует дополнительных контроллеров USB-шины. Для осуществления возможности выбора частоты программирования, предусмотрена перемычка JP1, замкнув которую, частоту ISP порта можно понизить с 375кГц до 8кГц. Это необходимо при программировании микроконтроллеров, тактовая частота которых меньше 1,5МГц. Перемычка JP3 предназначена для подачи питания на программируемое устройство. Для защиты USB порта от перегрузки или короткого замыкания, применен быстродействующий предохранитель F1, с током срабатывания 250мА. Разомкнув перемычку JP2, можно понизить напряжение питания программатора с 5В до 3,3-3,6В, это может быть необходимо при программировании устройств с напряжением питания 3,3В *2.

    Для индикации режима работы устройства предназначены светодиоды D3 и D4: D3 индицирует подачу питания на устройство, а D4 - чтение/запись программируемого микроконтроллера. Причем напряжение на D4 подается немного раньше начала процесса чтения/записи, что может использоваться как сигнал для включения дополнительных буферов с тремя состояниями для преобразования уровней сигналов.

    Программатор поддерживает следущее ПО::

    1. AVRDUDE, начиная с версии 5.2 (Рекомендуется)

    2. BASCOM-AVR, начиная с версии 1.11.9.6;

    3. Khazama AVR Programmer;

    Архитектура AVR от Atmel - Студопедия

    Архитектура AVR от Atmel

    Микроконтроллер AVR от Atmel

    AVR - самая обширная производственная линии среди других флэш-микроконтроллеров корпорации Atmel. Atmel представила первый 8-разрядный флэш-микроконтроллер в 1993 году и с тех пор непрерывно совершенствует технологию. Прогресс данной технологии наблюдался в

    · снижении удельного энергопотребления (мА/МГц),

    · расширении диапазона питающих напряжений (до 1.8 В) для продления ресурса батарейных систем,

    · увеличении быстродействия до 16 млн. операций в секунду,

    · встраивании эмуляции в реальном масштабе времени,

    · реализации функции самопрограммирования,

    · совершенствовании и расширении количества периферийных модулей,

    · встраивании специализированных устройств (радиочастотный передатчик, USB-контроллер, драйвер ЖКИ, программируемая логика, контроллер DVD, устройства защиты данных) и др.

    Успех AVR-микроконтроллеров объясняется возможностью простого выполнения проекта с достижением необходимого результата в кратчайшие сроки, чему способствует доступность большого числа инструментальных средств проектирования, поставляемых, как непосредственно корпорацией Atmel, так и сторонними производителями. Ведущие сторонние производители выпускают полный спектр компиляторов, программаторов, ассемблеров, отладчиков, разъемов и адаптеров. Отличительной чертой инструментальных средств от Atmel является их невысокая стоимость.

    Другая особенность AVR-микроконтроллеров, которая способствовала их популярности, это использование RISC-архитектуры с мощным набором инструкций, большинство которых выполняются за один машинный цикл.

    Это означает, что при равной частоте тактового генератора они обеспечивают производительность в 12 (6) раз больше производительности предшествующих микроконтроллеров на основе CISC-архитектуры (например, MCS51). С другой стороны, в рамках одного приложения с заданным быстродействием, AVR-микроконтроллер может тактироваться в 12 (6) раз меньшей тактовой частотой, обеспечивая равное быстродействие, но при этом потребляя гораздо меньшую мощность. Таким образом, AVR-микроконтроллеры представляют более широкие возможности по оптимизации производительности/энергопотребления, что особенно важно при разработке приложений с батарейным питанием. Микроконтроллеры обеспечивает производительность до 16 млн. оп. в секунду и поддерживают флэш-память программ различной емкости: 1… 256 кбайт. AVR-архитектура оптимизирована под язык высокого уровня Си, а большинство представителей семейства megaAVR содержат 8-канальный 10-разрядный АЦП, а также совместимый с IEEE 1149.1 интерфейс JTAG или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры megaAVR с флэш-памятью емкостью 16 кбайт и более могут программироваться через интерфейс JTAG.

    · Количество команд 90…130.

    · Число выводов 8…64.

    · Частота тактового генератора 10…16 МГц.

    · Большинство инструкций выполняются за 1 цикл тактового генератора ТГ.

    · Производительность 10…16 МIPS (Millions Instructions per Second).

    · Память программ типа FLASH ROM. Перепрограммируется до 1000 раз.

    · Память данных ОЗУ (тип EEPROM). Перепрограммируется до 100000 раз.

    · 32 регистра общего назначения.

    · Есть режимы с пониженным энергопотреблением.

    · Отладчик AVR Studio, бесплатный.

    · Tiny AVR – миниатюрные МК. Flash ROM 1…2 Кбайт, ОЗУ типа EEPROM 64 байт

    · Classic AVR. Flash ROM 2…8 Кбайт, ОЗУ типа EEPROM 64…512 байт, ОЗУ типа SRAM 128…512 байт

    · Mega AVR Flash ROM 2…128 Кбайт, ОЗУ типа EEPROM 64…512 байт, ОЗУ типа SRAM 2…4 Кбайт, 10 разрядный 8-и канальный АЦП, аппаратный умножитель 8*8

    Микроконтроллер AT90S2313 выбран как пример для изучения основ. Это современный 8-битный КМОП МК. Он имеет производительность 1 MIPS при частоте ТГ в 1 МГц, так как почти все его команды выполняются за 1 период ТГ.

    Используется расширенная RISC архитектура от ARM, 32 регистра общего назначения. Все регистры подключены к арифметико-логическому устройству АЛУ, что дает доступ к 2-м регистрам в течение 1 цикла. Его основные характеристики:

    · 2 Кб загружаемой FLASH памяти. Может быть перепрограммирования через интерфейс SPI.

    · 128 байт EEPROM для данных.

    · 15 линий ввода/вывода общего назначения.

    · 2 таймера/счетчика (один 8-разрядный, другой 16-разрядный.).

    · Внешние и внутренние прерывания

    · Встроенный последовательный порт.

    · Программируемый сторожевой таймер со встроенным генератором.

    · Последовательный порт SPI для загрузки программ.

    · 2 выбираемых программно режима низкого энергопотребления.

    · PORT B (PB7…PB0) – 8-разрядный параллельный порт ввода/вывода. Выводы PBO, PB1 являются также положительным (A1N0) и отрицательным (A1N1) входами встроенного аналогового компаратора.

    · PORT D (PD6…PD0) – 7-разрядный двунаправленный параллельный порт ввода/вывода с встроенными подтягивающими резисторами. Входы воспринимают ток до 20 мА.

    · RESET – вход сброса для перезапуска МК.

    · XTAL1 и XTAL2 – вход и выход инвертирующего усилителя, используемые для построения ТГ. К ним можно подключить кварцевый резонатор, задающий частоту ТГ.

    Файл регистров общего назначения РОН. 32 8-разрядных. Регистровый файл занимает адреса $00…$1F, поэтому к регистрам можно обращаться и как ячейкам памяти данных.

    Большинство команд, использующих регистры, могут обращаться к любым РОН. Исключение составляют команды, работающих с константами: SBCI, SUBI, CPI, ANDI, ORI, LDI. Они работают только со второй половиной файла РОН – R16…R31.

    Каждому регистру присвоен и адрес в первых 32 ячейках ОЗУ. Это удобно.

    Пространство ввода/вывода состоит из 64 адресов $20…$5F.

    АЛУ поддерживает арифметические и логические операции.

    6 РОН (R26…R31) можно использовать как 3 16-разрядных указателя X,Y,Z в адресном пространстве данных. Указатель Z можно использовать для адресации таблиц в памяти программ.

    Использована Гарвардская архитектура – данные и программа в разных устройствах памяти.

    Во время выполнения одной команды следующая команда считывается одновременно из памяти программ.

    Прямая регистровая адресация с одним регистром. В качестве источника используется любой РОН. Результат заносится туда же.

    Код команды содержит 1 слово. КОП – код операции, РОН определяет используемый регистр.

    Прямая регистровая адресация с двумя регистрами. Код команды содержит 1 слово: КОП – код операции, Rr – источник данных, Rd – получатель результата.

    Прямая адресация к области ввода вывода. Операция осуществляется с данными в поле P. Используется регистр РОН, он может быть источником или получателем данных.

    Прямая адресация к памяти данных. Код команды состоит из 2-х слов. В старшем слове команды размещены - код операции КОП и используемый РОН. В младшем слове находится 16-разрядный адрес ячейки памяти данных.

    Косвенная адресация к памяти данных. Адрес операнда находится в одном из регистров X, Y, Z.

    Косвенная адресация к памяти данных со смещением. Адрес операнда определяется как сумма содержимого Z или Y регистра и смещения.

    Косвенная адресация к памяти данных с предварительным декрементом. Адрес операнда находится в одном из регистров X, Y или Z. Перед выполнением операции он уменьшается на 1.

    Косвенная адресация к памяти данных с постинкрементом. Адрес операнда находится в одном из регистров X, Y или Z. После выполнение операции он увеличивается на 1.

    Адресация к константам в памяти программ. Константа в регистре Z. 15 старших битов определяют адрес слова, а младший (0) бит задают младший (если 0) или старший (если 1) байт константы в памяти программ.

    Косвенная адресация памяти программ. После операций IJMP или ICALL выполнение программы продолжается с адреса записанного в регистре Z. Его содержимое переносится в счетчик команд.

    Относительная адресация памяти программ. После операций RJMP или RCALL выполнение программы продолжается с адреса (Счетчик команд)+k+1. Относительный адрес k = -2048…2047

    Память программ. Содержит 2 Кб флэш-памяти. Она организована как 1Кх16. Может перепрограммироваться до 1000 раз. Программный счетчик имеет 10 разрядов и может адресовать 1024 слов памяти программ.

    EEPROM память данных. Содержит 128 байтов электрически стираемой энергонезависимой памяти (EEPROM). Организована как отдельная область данных, каждый байт которой может быть прочитан и при необходимости переписан. Выдерживает не менее 100000 циклов записи/стирания. К этой памяти может обращаться программа. Данные а нее можно занести с помощью внешнего программатора.

    Оперативная память данных включает 224 ячейки: регистровый файл (32 адреса), память ввода/вывода (64 адреса), оперативная память данных (128 адресов).

    Проблемы с программаторами Atmel AVR и их решение

    Проблемы с программаторами Atmel AVR и их решение

    Нежданно-негаданно в новом 2016 году, как минимум, на двух компьютерах с Win10 и Avr Studio 5.1 одинаковым образом перестали работать avr-программаторы от слова вообще. Клон avrispmkII и самый настоящий jtagice3.

    Выглядит это так: программаторы видны в списке, но сделать с ними что-то не выходит. Появляется окошко «Unable to connect to JTAGICE3», а в логе появляются несколько строк об ошибке, самой информативной из коих является одна:


    Код ошибки 0x20000009 означает «No valid license». Имеется в виду, как я понял, атмеловская лицензия на драйвер Jungo. Лицензия эта в виде строки забита намертво в файле com_atmel_hil_usb.dll (найти её можно по строке Atmel_Norway). То ли срок у неё вышел (офигеть теперь), то ли драйвера все испортились из-за очередного обновления винды — неясно, но работать ничего не хочет.

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

    Пришлось обновлять студию до 7.0.634, где, по слухам, проблем с драйвером Jungo уже нет.
    Не сразу, не без лагов, но JTAGICE3 после обновления своей прошивки завёлся. А вот клон, который у меня очень древней версии 1.11, и которым очень удобно шить, нет.

    Информация по исправлению функциональности программатора взята из обсуждений гитхаба. В файле (папка студии)\atbackend\codeCache\com_atmel_hil_usb.dll надо пропатчить один условный переход:
    — для AS 6.2: изменить байт 0x74 на 0xEB по смещению 0x35F11;
    — для AS 7.0: изменить байт 0x74 на 0xEB по смещению 0x2F632;
    — для AS 7.0.634: изменить байты 0x0F 0x84 на 0x90 0xE9 по смещению 0x2F74C.
    Говорят, там есть какая-то проблема со сбросом частоты на стандартные 125кГц, но пока не заметил.
    UPD. В версии студии 7.0.790 патчить файл не пришлось, всё заработало само.

    Это исправление позволит студии работать с программатором, невзирая на его неоригинальность. Но если программатор выдаёт версию менее, чем 1.18, то студия не даст работать, требуя обновления.
    Есть два варианта решения:
    1. Прогрейдить программатор прошивкой с версией 1.18 или выше (если есть такая возможность);
    2. Убрать файлик avrispmkii_fw.zip из папки (папка студии)\tools\AVRISPmkII или его переименовать. Требование об обновлении исчезнет.

    Ещё одна засада, связанная с версией ПО, поджидает пользователей консольного интерфейса atprogram.exe:


    Но это решается ключом --force, который запрещает проверять версию ПО.

    Может, решение не идеальное, но мало ли кому срочно надо что-то прошить, а тут такие пироги.
    Интересно, кого-нибудь ещё случилась такая оказия в последнее время?

    UPD от 10.05.2016 :
    Вчера срочно потребовалось прошить пару десятков авр приборов, и вдруг выяснилось, что атмел студия сдохла. Выдавала какие-то ошибки типа Пакет «ErrorListPackage» не был правильно загружен (с десяток аналогичных). Помогла переустановка студии, но вот программаторы отказались работать (как минимум, клон авриспмк2). Все вышеперечисленные действия не помогли. В консоли он выдавал что-то вроде TCF Error code: 1, в студии при попытке подключиться к контроллеру, появлялась надпись у программатора «Disconnected». Что это было — непонятно.
    Проблема решилась с помощью программы Zadig, драйвер с Jungo переставил на LibUsb 1.2.6.0, оказывается, студия нынче и так умеет. Надеюсь, хоть с этим драйвером проблем не будет.
    Программаторы работают и из студии (потребовалось только перезапустить студию), и из консоли. Огрызок для консольной прошивки почему-то потребовалось обновить (папки atbackend и atpackmanager), иначе не работало. Это странно, раньше с той же студией всё было ок.

    Прерывание на контроллере AVR в Atmel AVR Studio

    Прерывание на контроллере AVR в Atmel AVR Studio

    Первым делом о том что такое прерывание.
    Прерывание ( interrupt ) - это своеобразная функция, которая будет выполнена при поступлении сигнала на какой нибудь вход контроллера.
    При работе в AVR Studio прерывания создаются при помощи макросов ISR(). SIGNAL() и INTERRUPT(). Они помечают некоторую функцию как обработчик прерывания. Их различие в том, что INTERRUPT() и ISR() определяют функцию обработчик для случая, когда разрешено общее прерывание (обработчик может быть прерван), а SIGNAL() для случая когда общее прерывание запрещено.

    На этом покончим с теорией и перейдём к практике (хотя теории ещё будет ниже).
    Соберём в ISIS такую схему:

    Как вы уже наверное догадались мы напишем прерывание (которое генерируется кнопкой) которое будет зажигать и тушить диод.
    Итак, откройте студию и создайте стандартный проект.
    Для использования прерываний включим заголовочный файл:

    Условимся, что прерывание (физически) не будет включать выключать питание на ноге контроллера (как это делается я уже рассматривал), а всего лишь будет изменять флаг. При определённых значениях которого и будет включаться и выключаться диод.
    Зададим этот флаг глобально:

    Теперь объявим прерывание:

    Как видите в скобках макроса указан так называемый вектор прерывания. Этот вектор указывает компилятору для какого входа будет сгенерировано прерывание. Для INT1 - это SIG_INTERRUPT1. Для АЦП (ADC) например это - SIG_ADC. (весь перечень отлично описан в книге "Шпак Ю.А. Программирование на языке Си для AVR и PIC микроконтроллеров".)
    Теперь перейдём к функции main нашей "программы".
    Нам необходимо разрешить прерывания в целом и для INT1 в частности:

    Когда это сделано нужно настроить поведение прерывания. Оно может быть сгенерировано по разному.
    Скачиваем datasheet (ссылка есть при создании проекта) и находим в разделе прерывания (interrupt) такую таблицу:

    Думаю как перевести это вы и так поймёте.
    Установим состояние генерации прерывания при каждом "логическом изменении на INT1".

    Теперь установим весь порт С как выход:

    Ну а это уже должно быть понятно:

    Ждать не обязательно. Тем более что это уменьшает быстродействие. Но мне так хочется.
    Программа целиком:

    Компилируем hex и собираем схему в Proteus. Наслаждаемся работой прерывания при изменении положения кнопки.

    ATMEL AVR DIP Programmer

    Volkswagen Golf Black Panther › Бортжурнал › ATMEL AVR DIP Programmer — адаптер для программирования микроконтроллеров AVR

    Недавно купил USBasp AVR Programmer. Мне нужно было адаптер для программирования микроконтроллеров AVR. В интернете-магазине нашел хороший вариант.

    НО это устройство стоит 1450 руб. Для меня дорого. На другом сайте нашел схема и файл платой. Я собираюсь сделать плату для моего AVR программатора.

    Для изготовления платы адаптера нам нужно:
    1. Односторонняя плата
    2. Цанговые панели DIP8,14,20 2шт, 28 и 40 2шт
    3. Гнездо на плату, 1х8 прямое
    4. Переключатель DIP, 4 контактных групп
    5. Кварцевый резонатор 8.000 МГц
    6. Гнездо питания на плату
    7. Светодиод зеленый D=5мм
    8. Клеммник винтовой, 2-контактный
    9. Конденсатор электролитический 10 мкФ 2шт
    10. Кнопка миниатюрная
    11. Cтабилизатор напряжения 78L05 TO92
    12. Вилка прямая, контактов 10
    13. Резисторы SMD 0 Ом 10шт, 10 кОм 2шт, 470 Ом 2шт
    14. Конденсаторы SMD 18пФ 2шт, 100пФ, 0,1мкФ

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

    В прошедшем бортовом журнале изготовил плату. Теперь продолжаю собирать детали в плату.

    Вот что получилось у меня. Теперь пользуюсь. Может пригодиться многим.

    Модуль «ATMEL AVR DIP PROGRAMMER» является дополнительным расширением к широко известным программаторам STK200, AVR ISP и другим, и позволяет программировать ATMEL AVR микроконтроллеры в DIP корпусе.
    Модуль предназначен для разработчик, в устройствах которых на плате отсутствует разъем ISP, не остается свободных выводов контроллера для подключения интерфейса внутрисхемного программирования, либо эти выводы не могут быть использованы по какой либо другой причине.
    Модуль поддерживает все ATMEL AVR микроконтроллеры, имеющие интерфейс ISP (в том числе новые 14-выводные ATTiny24, 44, 84).
    Для программирования контроллеров необходим внешний программатор (STK200, AVR ISP или другой). Программатор подключается к модулю «ATMEL AVR DIP PROGRAMMER» с помощью стандартного 10-контактного разъема (IDC10 – BH10).

    Назначение выводов 10-и контактного разъема
    1. MOSI
    2. Питание +5В
    3. Вход внешней тактовой частоты (при использовании в качестве внешнего программатора AVR ISP) – используется в случае программирования контроллера с установленными FUSE битами внешнего тактового сигнала
    4. GND
    5. RESET
    6. GND
    7. SCK
    8. GND
    9. MISO
    10. GND

    Тактирование
    «ATMEL AVR DIP PROGRAMMER» позволяет выбирать тип тактирования контроллера (внешнее тактирование, внешняя RC цепь или кварцевый генератор 8 МГц), что дает возможность программировать любой контроллер независимо от конфигурации его fuse битов.
    Выбор осуществляется путем установки перемычек на соответствующие места.
    При использовании STK200 программатора и необходимости внешнего тактирования внешняя тактовая частота подается на правый контакт джампера «Ext.»]

    Положение перемычек для тактирования внешней частотой

    Положение перемычек для тактирования с RC цепочкой

    Положение перемычек для тактирования кварцевым резонатором

    Источник питания
    При использовании программатора AVR ISP внешнее питание подавать не нужно — +5В подается через кабель внутрисхемного программирования от программатора.

    Однако при использовании какого либо другого программатора существует необходимость подачи внешнего питания. Для этого на плате модуля «ATMEL AVR DIP PROGRAMMER» предусмотрены 2 типа разъемов питания: стандартное JACK гнездо с диаметром центрального контакта 2,1мм (+ питания на центральный контакт, — питания на внешний контакт) и терминал-блок с 2-мя контактами (полярность подключаемого напряжения указана на плате). Модуль «ATMEL AVR DIP PROGRAMMER» имеет встроенный стабилизатор напряжения +5В. Диапазон подаваемого напряжения на входы питания +6В.+15В

    Для более комфортной работы с модулем «ATMEL AVR DIP PROGRAMMER» предусмотрена кнопка, отключающая питание, и светодиод зеленого цвета статуса включения (“PWR ON”)

    Файл моей платой
    Адаптеры(переходники) для микроконтроллеров AVR «ATMEL AVR DIP Programmer»

    Принцип работы с микроконтроллерами Atmel (Avr)

    Принцип работы с микроконтроллерами Atmel (Avr)

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

    И это очень важно понять для начала изучения микроконтроллеров.

    Список периферийных устройств контроллера очень большой.

    • универсальные цифровые порты - имеют настраиваемый режим работы как на ввод, так и вывод;
    • другие интерфейсы ввода-вывода, такие как UART, USB, IEEE 1394, Ethernet;
    • аналого-цифровые и цифро-аналоговые преобразователи;
    • компараторы;
    • широтно-импульсные модуляторы;
    • таймеры;
    • массивы встроенной флеш-памяти;
    • встроенный тактовый генератор и/wp-admin/post.php?post=119&action=edit сторожевой таймер.
    Есть и более экзотические устройства - радиочатотные передатчики, драйверы различных устройств и т.д.

    В заметках рассмотрим принцип работы с микроконтроллерами Atmel (Avr)

    Для начала достаточно разобраться с универсальными цифровыми портами.

    Каждый контроллер от Atmel имеет порты, с названиями PORTA, PORTB . в зависимости от типа микроконтроллера. Порты не обязательно начинаются с PORTA - например, в DIP Atmega8 его нет. В зависимости от типа контроллера, порты имеют разную разрядность (8, 16, 32 и т.д. бит). Розрядность порта может фигурировать в названии контроллера. Например, тот же Atmega8, Atmega16, Atmega32. А может и не фигурировать (Attiny2313 как вариант - но он тоже 8-битный). Надеюсь, интуитивно понятно, что разрядность порта определяет, сколько бит информации одновременно передается - а, значит, сколько ножек имеет порт.

    Рассмотрим работу с микроконтроллером на языке C.

    Для начала надо настроить порт на ввод или на вывод. Это можно сделать с помощью регистра DDRx, где х - порт (A, B, C и т.д.) 1 - порт настроен на выход, 0 - на ввод.

    Нумерация ножек порта:

    Например, настроем первый бит (1 ножку) порта А на вывод:

    0b в начале означает, что число представленое в двоичной сичтеме исчисления. Вы можете представлять числа в любой удобной для вас форме. Но принято использовать 2 формы - двоичную (бинарную) и шестнадцатиричную. В двоичной системе проще понимать (0 - низкий логический уровень на ножке, 1 - высокий), в шестнадцатиричной более компактная запись. Что использовать - решать вам.

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

    Теперь можем передать значение на порт (на ту же 1 ножку):

    Ну и. Фактически все для ознакомления! Этих элементарных знаний плюс немного фантазии плюс немного базового опыта в программировании достаточно для того, чтобы, например, создать какую-то светодиодную мигалку (например, как здесь: Подарок девушке своими руками (на attiny2313 )).

    Например, под gcc-avr простейша программа имеет следующий вид:

    И так мы можем зажечь/спалить светодиодик =)