Меню

Программатор для atxmega32a4 своими руками

Программирование ATXMega32a4 самопалом AVRISP-MKII

Поделитесь plz опытом/ссылками, а то чего-то застрял.
Мой самопал AVRISP-MKII — это проц at90usb162 c обвязкой.
Ноги PD2(RXD1), PD3(TXD1) замкнуты и образуют линию PDI(DATA)
Нога PD5 (XCK) — PDI(CLK)
Прошито проектом из LUFA.
Питание подаю от USB через преобразователь на 3.3V,
поэтому кварец на at90usb162 — 8МГц.
ОС — Win7
В качестве проги для шитья использую AVRStudyo v5.0.1038.1038
Еще нужно установить USB драйвер Jungo.
Версия LUFA 110528
Там нужно подправить кварец на 8000000 и закоментить ключик LIBUSB_DRIVER_COMPAT

Студия программатор видит, но ничего не шьет и не читает. Выдает разные ошибки.
Пробовал версию LUFA 130303. Студия программатора не видит.
Можно использовать AVRDUDE со своим драйвером, но чего-то пока не пойму
как его ставить.
Может где-нибудь есть четкая инструкция с версиями и со всеми делами?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

atxmega32a4+ AVRISP mkII не входит в DEBUG режим
отладчик: AVRISP mkII контроллер: atxmego32a4 студия: AVRStudyo 6 Привет всем. Пните в нужную.

Проблема с AVRISP mkII
Всем привет! Купил программатор AVRISP mkII. Помучался с подключением (на схеме в инструкции.

Клон AVRISP MKII
Всем привет! Изучение МК решил начать со сборки клона AVRISP MKII по схеме. приведенной в данной.

Подключение avrisp mkii
Приобрел клон AVRISP MKII До этого прошивал arduino pro mini через переходник на ftdi и через.

Источник

Программатор для atxmega32a4 своими руками

9zip.ru Радиотехника, электроника и схемы своими руками Программатор AVRISP mkII для ATXmega на микроконтроллере AT90USB162

Ранее мы уже писали о популярных программаторов для микроконтроллеров AVR. Это, прежде всего, универсальный программатор для AVR и PIC, подключаемый к COM-порту. Он прекрасно работает, но компьютеры с последовательным портом сейчас уже не очень распространены. Другой популярный программатор — это USBasp (он же USBisp). Он уже может работать на любом компьютере, так как подключается к USB порту. И всем бы он был хорош, если бы умел ещё программировать микроконтроллеры ATXmega, имеющие интерфейс PDI. Именно для последних и предлагается к самостоятельной сборке рассматриваемый здесь программатор AVRISP mkII (он же AVRISP MK2). Он умеет всё то же, что и USBasp, но дополнительно работает и с ATXmega.

Клонов этого программатора много. Основой их является микроконтроллер AT90USB162. Он уже достаточно старенький, но его всё ещё можно найти на Aliexpress. Кстати, там же можно найти и готовый программатор, если не хочется паять. Некоторые клоны устроены очень просто — микроконтроллер и минимальный обвес. Их использование требует внимательности, потому что выходы микроконтроллера ничем не защищены.

Существует и более продуманный вариант — с 245 буфером, предложенный пользователем Grott на радиокоте, к которому развёл печатную плату Gordon Shumway:

Пользователь sio предложил свою доработку этой платы, заведя линию PTd напрямую от микроконтроллера, минуя буфер. По его словам, так эта линия работает более стабильно:

Авторская прошивка программатора от Grott:

Схема данного клона программатора несложная:


нажми для увеличения
Буфер, расположенный между микроконтроллером AT90USB162 и контактной колодкой программатора защищает выходы. Кнопки HWB и RESET предназначены для программирования AT90USB162 через USB без использования стороннего программатора. Хотя это можно делать и любым программатором, например — USBasp, подцепившись к одноимённым выводам микроконтроллера (на схеме они помечены зелёным цветом). Последнее может понадобиться, если попался микроконтроллер без бутлоадера. Говорят, что такое бывает. При этом AT90USB162 не будет видеться компьютером при подключении к USB.


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

Читайте также:  Ремонт масляного поддона своими руками

Колодка для подключения шлейфа программирования совместима с USBasp, поэтому можно пользоваться проводом от него.

Для заливки прошивки AVRISP mkII в AT90USB162 через USB следует:

  • скачать программу Flip
  • подключить программатор к USB порту
  • установить драйверы из каталога программы C:\Program Files\Atmel\Flip 3.4.7\usb
  • нажать RST
  • нажать HWB
  • отпустить RST
  • отпустить HWB
  • в программе Flip нажать на кнопку с изображением шнура USB и нажать Open
  • загрузить прошивку и нажать Run

С данным программатором должна работать avrdude, но нам так и не удалось их подружить, как бы мы ни колдовали с драйверами и фильтрами. Поэтому самым простым вариантом оказалась установка AVR Studio 4.9, взятая с сайта разработчика:

Вместе с ней идут все необходимые драйверы. Для работы с программатором в avr studio необходимо:

  • нажать на кнопку connect на панели инструментов
  • выбрать устройство AVRISP mkii, интерфейс USB и нажать кнопку connect
  • появится окно программирования, на вкладке main следует указать тип программируемого микроконтроллера
  • дальнейшая работа ведётся в соответствующих вкладках

В архиве at90usb162_avrisp_mkii.zip находятся:

at90usb162-bl-usb-1_0_5.hex — бутлоадер для AT90USB162 версии 1.0.5 (на всякий случай)
grott_v3_tssop_original.lay6 — оригинальный вариант печатной платы от Gordon Shumway (1)
grott_v3_tssop_mod.lay6 — модифицированная плата, она стала немного шире из-за более наглядного расположения надписей назначения контактов колодки для программирования (2)
grott_v3_tssop_stable.lay6 — доработка оригинальной платы пользователем sio, касаемо линии PTd (3)
AVRISPMKII-grott-LUFA170418-8MHz.hex — прошивка AVRISP mkII для кварцевого резонатора на 8 МГц
AVRISPMKII-grott-LUFA170418-16MHz.hex — прошивка для резонатора на 16 МГц

Понравилась статья?
Менделеев говорит:
поделись с друзьями!

Хочешь почитать ещё про схемы своими руками? Вот что наиболее популярно на этой неделе:
Зарядное устройство на UC3842/UC3843 с регулировкой напряжения и тока
Схемы и печатные платы блоков питания на микросхемах UC3842 и UC3843
GL7445 (LB1645) — двунаправленный драйвер электродвигателя с торможением

Дальше в разделе радиотехника, электроника и схемы своими руками: Миниатюрный дозиметр на микроконтроллере, схема простого и компактного дозиметра на микроконтроллере attiny85 с oled дисплеем.

Главная 9zip.ru База знаний радиолюбителя Контакты

Девять кучек хлама:

Дайджест
радиосхем

Новые схемы интернета — в одном месте!


Новые видео:

Источник

Мистер «Х» или ATXmega (на примере ATXmega32A4) быстрый старт.

Отмазки

Около года назад понадобилось мне соорудить девайс на основе ATXmega32A4, что в общем-то удалось, правда при изготовлении его я был дико огорчён полным отсутствием статей по данной серии МК, что спешу исправить. Сразу скажу, что статья из разряда «быстрый старт», так что на очень подробное описание тут рассчитывать не стоит. Отдельно хочу поблагодарить наших лающих товарищей за отличный перевод документации по серии Xmega. Ну к сути.

Суть

По сравнению с сериями ATmega и ATtiny ATXmega приобрела довольно много дичайше приятных плюшек, а именно:

Арифметико-логическое устройство (АЛУ). Теперь знаковые числа наши друзья, ибо МК умеет работать с ними хардварно!

Многоуровневый (а именно 3х уровневый) контроллер прерываний.

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

Программно-отладочный 4х проводной интерфейс PDI (2 провода из которых земля и питание). Шить и отлаживать через один и тот же маленький разъём дико круто по-моему 🙂

И ещё много плюшек о которых можно прочитать у наших лающих товарищей

Так же теперь абсолютно необязательно ставить RC цепочку на RESET пин, но резюком в 10КОм подтянут к питанию надо.

Единственное что может слегка смутить новичка, при переходе с классических AVR контроллеров — это то, что серия Xmega требует для питания 3,3в. Спешу вас успокоить, это требование не так сурово как кажется. Проведя ряд бесчеловечных экспериментов было установлено, что МК прекрасно работает хоть от 4,2в, кратковременно было подано 5в, МК даже не чихнул. Так-же подавались сигналы уровнем в 5в, и МК совершенно спокойно с ними работал, не теряя работоспособности.

Система тактирования
Отличительные особенности

Быстрое время запуска
Безопасное переключение синхронизации во время работы
Внутренние генераторы:
Внутренний RC-генератор частоты 32 МГц с возможностью автоматической калибровки
Внутренний RC-генератор частоты 2 МГц с возможностью автоматической калибровки
Внутренний калиброванный RC-генератор частоты 32 кГц
32 кГц-ый сверхмалопотребляющий генератор (ULP-генератор)
Внешние источники синхронизации
Кварцевый генератор частоты 0.4…16 МГц
Кварцевый генератор частоты 32.768 кГц
Внешний сигнал синхронизации
ФАПЧ с внутренними и внешними источниками синхронизации и коэффициентом умножения частоты от 1 до 31
Делители частоты синхронизации с коэффициентом деления от 1 до 2048
Быстродействующая синхронизация УВВ, в 2 и 4 раза превышающая частоту синхронизации ЦПУ
Автоматическая калибровка внутренних генераторов
Обнаружение отказа кварцевого генератора

При запуске или сбросе МК стартует от внутреннего RC-генератора с частотой 2 МГц. А дальше мы в коде уже выбираем то, что нам надо (если надо конечно). Лично мне хватило внутреннего RC-генератора с частотой 32 МГц, ибо его стабильность удовлетворяла всем моим потребностям.

Делается это так:

Тут всё просто:
С начала мы включаем работу внутреннего тактового генератора 32MHz, и он типа запускается, а мы ждём в цикле пока он не подготовится, тобиш его частота не установится, и он станет пригоден для использования, о чём нам сообщит бит RC32MRDY. Затем мы записываем значение в регистр CCP, тем самым давая возможность нам потревожить регистр CLK_CTRL, являющийся защищённым. Но тут тоже есть плюшка! Чтобы разрешить изменение защищенного регистра ввода-вывода или выполнить защищенную инструкцию в течение интервала времени, составляющего не более 4 циклов инструкции ЦПУ, в регистр CCP необходимо записать корректную сигнатуру. Все прерывания, возникшие по ходу этого интервала времени, игнорируются, а по его истечении — обрабатываются с учетом уровня и приоритета. Вот как раз 0xD8 и разрешает нам в течении последующих 4х циклов менять значение защищённого регистра. Разрешение получили, и в регистре CLK_CTRL говорим «тактуйся от выбранного источника (в нашем случае это внутренний тактовый генератор 32MHz)».

Для других способов тактирования принцип такой же, только регистры другие.

Подробнее о работе с защищёнными регистрами можно прочитать тут, а про системы тактирования МК тут.

Порты ввода-вывода

И так, нужную частоту мы выбрали теперь надо сделать своеобразный «Hello, world!» в стиле МК, а именно поморгать светодиодом. А для этого нам нужно научиться работать с портами ввода-вывода.

В серии Xmega работа с портами подобна работе с портами в классических AVR, но есть много дополнительных дичайше приятных плюше, а именно:

Раздельная настройка функций входов и выходов на каждом выводе МК
Гибкая конфигурация выводов через специальный регистр конфигурации выводов
Синхронный и/или асинхронный контроль входов с возможностями генерации прерываний и событий
Возможность асинхронного возобновления работы МК
Гибкая конфигурация выходного драйвера и подтяжки логических уровней:
Двухтактный выход
Подтягивание к плюса или минусу питания
Выход «монтажное И»
Выход «монтажное ИЛИ»
Адаптивная подтяжка
Инвертированный ввод/вывод
Управление скоростью фронтов
Гибкое маскирование выводов
Возможность одновременной настройки нескольких выводов с одинаковыми конфигурационными параметрами
Поддержка операций типа «чтение-модификация-запись»
Регистры переключения/сброса/установки бит регистров OUT и DIR
Возможность вывода синхронизации на линии порта
Выход канала события 0 на 7-ой линии портов
Отображение регистров портов (виртуальные порты) с битно-адресуемом пространстве памяти ввода-вывода

Для работы с портами у нас есть 3 регистра. Назначение линии ввода-вывода настраивается из программы пользователя. У каждого порта предусмотрены следующие регистры управления линиями в/в: регистр направления (DIR), регистр вывода данных (OUT). Для опроса состояния линий в/в предусмотрен регистр ввода данных (IN), а дополнительные возможности каждой линии в/в можно настроить через регистр конфигурации линии ввода-вывода (PINnCTRL, где n-номер линии в/в).

Направление линии n задается через отдельный бит DIRn регистра направления DIR. Если бит DIRn сделать равным единице, то линия n будет работать, как выход. Если же бит DIRn сделать равным нулю, то линия будет работать, как вход. Если линия настроена, как выход, то бит OUTn регистра OUT будет определять ее состояние. Запись единицы в бит OUTn приводит к установлению на линии n высокого уровня, а запись нуля — низкого уровня.

Для опроса состояния линии предусмотрен регистр IN. Опрос состояния линии можно выполнить, независимо от того, работает линия как вход или как выход, кроме ситуации, когда отключен цифровой входной каскад. После перевода МК в состояние сброса, все линии в/в, независимо от активности синхронизации, переходят в высокоимпедансное состояние.

У регистров DIR и OUT есть дополнительные регистры SET, CLR, GL где SET — установить значение, CLR — очистить значение, GL — инвертировать значение нужного бита просто записью единицы в нужный нам бит одного из этих регистров, в зависимости от того, что нам надо. Всё это не запрещает нам работать с регистрами DIR и OUT как в классических AVR.
что я собственно и сделал по началу изучения эти МК:

Так же каждый порт поддерживает конфигурацию 2х любых ножек на внешнее прерывание, имея при этом отдельный вектор каждому из 2х прерываний на порту.

Подробнее про порты ввода-вывода можно почитать тут

Многоуровневый контроллер прерываний

Раз мы уже затронули работу с прерываниями, то стоит рассказать о том, каким образом с этими прерываниями работать.
И так, у нас есть 2 вида разрешения прерываний. Глобальное разрешение, которое делается установкой бита в регистре SREG:

Но только данное действие не разрешит работу прерываний, ибо перед этим нам надо настроить сам контроллер прерываний. Делается это так:

В данном примере мы разрешили все уровни прерываний, которых как можно понять из примера 3. Прерывания более высокого уровня могут возникнуть даже во время прерываний более низкого уровня, а более низкоуровневые не могут перебить прерывания более высокого уровня.

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

Ещё отмазки

Данную статью прошу считать вводной частью по МК серии Xmega. Её целью было задать первый старт для тех, кому хотелось бы изучить данную серию МК.
Лично мне данная серия очень понравилась лёгкостью работы с ней, своей шустростью и довольно терпимому отношению к бесчеловечным экспериментам.
В следующей статье подробно рассмотрим работу с разнообразными интерфейсам данного МК.

Источник