Профессия: бэкенд-разработчик
Содержание
- 1 Работа с программатором
- 2 Установка Atmel Studio
- 3 AVRISP MkII для avrdude и Arduino
- 4 Прошивка AVRISP MKII в Arduino ATmega16U2
- 5 Лучшие книги и средства обучения
- 6 Важные личные качества
- 7 Корпус
- 8 Какие бывают микроконтроллеры Atmel
- 9 Перепрошиваем Arduino ATMEGA16U2 в оригинальное ПО
- 10 Основная информация
- 11 Установка программного обеспечения Atmel FLIP
- 12 О программаторе USBTiny-MkII slim
- 13 Базовые требования к профессионалу
- 14 Сборка и прошивка
Работа с программатором
При использовании avrdude надо в командной строке задать тип программатора так: или так .
При работе с AtmelStudio сначала необходимо установить драйвера. После первого включении программатора в USB-порт чего драйвера должны установиться
автоматически. Если этого не произошло, то надо вручную указать каталог, в который установлена AtmelStudio. Устройство успешно работает
как с AvrStudio4, так и с AtmelStudio6, как в 32-битный, так и в 64-битных версиях Windows.
Не знаю, на счёт более ранних версий, но AtmelStudio7 точно умеер работать с libusb-драйвером. Таким образом, можно смело переводить программатор
в режим libusb (замыканием джампера RST так, чтобы после перезапуска оба светодиода моргнули два раза одновременно) и забыть про режимы.
Если в будущем возникнет необходимость обновить прошивку MkII, то сначала замыкается джампер HWB, затем RST, после чего устройство
определяется студией как «Atmel Mega DFU».
Установка Atmel Studio
Скачайте и установите Atmel Studio (включая драйверы) отсюда. После установки подключите Arduino к USB-кабелю. Оба светодиода (RX и TX) должны мигать два раза (это означает, что 16U2 находится в режиме Atmel Studio). Новое устройство будет распознано.
Установите драйверы. Если они не распознаются автоматически, вы найдете их в USB-драйверах: С:\Program Files\Atmel.
Перейдите в Диспетчер устройств, нажмите: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Должно быть в Jungo Connectivity -> AVRISP MKII.
Вот теперь мы готовы прошить Arduino ATMEGA328P. Переходим к следующему шагу.
AVRISP MkII для avrdude и Arduino
Программатор AVRISP MkII, а точнее его клон AVRISP XPII производства Waveshare Electronics, отлично работавший с Atmel Studio 6-7, и умеющий прошивать огромный список микроконтроллеров по протоколам ISP, PDI и TPI, отказался работать с avrdude и Arduino под Windows 10 x64, выдавая такое сообщение об ошибке:
Вот лог avrdude:
D:\avrdude\avrdude -v -p m328p -c avrispmkII -e -U flash:w:TransistorTester.hex avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53 Copyright (c) 2000-2005 Brian Dean, //www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "D:\avrdude\avrdude.conf" Using Port : usb Using Programmer : avrispmkII avrdude: usbdev_open(): did not find any USB device "usb" (0x03eb:0x2104) avrdude done. Thank you.
После небольшого разбирательства, проблема была найдена в драйвере, установленном Atmel Studio. Для работы AVRISP MkII с avrdude и Arduino требуется драйвер libusb-win32. Для его установки нужна утилита Zadig, скачать её можно на официальном сайте .
Выбираем AVRISP mkII и драйвер libusb-win32
Идём в Диспетчер задач и проверяем появилось ли новое устройство AVRISP mkII?
D:\avrdude\avrdude -v -p m328p -c avrispmkII -e -U flash:w:TransistorTester.hex avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53 Copyright (c) 2000-2005 Brian Dean, //www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "D:\avrdude\avrdude.conf" Using Port : usb Using Programmer : avrispmkII avrdude: usbdev_open(): Found AVRISP mkII, serno: 0000B8080308 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500V2 Description : Atmel AVR ISP mkII Programmer Model: AVRISP mkII Hardware Version: 1 Firmware Version Master : 1.24 Vtarget : 4.8 V SCK period : 4.00 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e950f (probably m328p) avrdude: safemode: hfuse reads as DE avrdude: safemode: efuse reads as FD avrdude: erasing chip avrdude: reading input file "TransistorTester.hex" avrdude: input file TransistorTester.hex auto detected as Intel Hex avrdude: writing flash (30614 bytes): Writing | ################################################## | 100% 5.90s avrdude: 30614 bytes of flash written avrdude: verifying flash memory against TransistorTester.hex: avrdude: load data flash data from input file TransistorTester.hex: avrdude: input file TransistorTester.hex auto detected as Intel Hex avrdude: input file TransistorTester.hex contains 30614 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 5.60s avrdude: verifying ... avrdude: 30614 bytes of flash verified avrdude: safemode: hfuse reads as DE avrdude: safemode: efuse reads as FD avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF) avrdude done. Thank you.
AVRISP MkII с avrdude заработал! Zadig работает с Windows 7-10 x86/x64. Если нужна работа с Atmel Studio придётся переключиться на их собственный драйвер.
Политика конфиденциальности
Transmission для Windows
Прошивка AVRISP MKII в Arduino ATmega16U2
Мы готовы перепрошить прошивку в 16U2.
Скачайте hex файл AVRISP MKII отсюда. Отключите Arduino от USB-кабеля и питания. Замкните контакты 5-6 ICSP1. Подключите Arduino к USB. Разомкните выводы ICSP1 5-6.
Запустите программное обеспечение FLIP: Пуск -> Все программы -> Flip. Зайдите в: Настройки -> Связь -> USB. Нажмите «Открыть».
Перейдите в: Файл -> Загрузить файл HEX. Далее выберите LUFA-BOTH-AVRISP-MKII.hex и нажмите «Выполнить».
ATMEGA16U2 теперь AVRISP MKII и работает в режиме Atmel Studio. Arduino AVRISP MKII может работать в двух режимах: Atmel Studio или Avrdude. Ниже я буду говорить только о режиме Atmel Studio, так как у меня было много проблем с режимом Avrdude.
Лучшие книги и средства обучения
- Базовая книга по вашему языку программирования — мне нравятся издания O’Reilly, многие переведены издательством «Питер».
- Аналогично базовые книги по вашему стеку.
- Кукбуки (cookbook) по языкам и рекомендации корпораций, статьи в блогах и т.д.
- Бек Кент, Экстремальное программирование. Разработка через тестирование — отличная книга для любого разработчика в принципе, но особенно для бэкендера. Проникнуться философией TDD дорого стоит.
- Джоэл Х. Спольски — можно читать его блог, можно ещё на просторах Рунета найти электронную книгу «Джоэл о программировании» — сборник постов из блога на русском.
- Роберт Мартин «Идеальный программист», «Чистый код» — переводная книга от «Питера» хороша, но в оригинале стиль и шутки вообще бесподобны.
- Мартин Фаулер и коллектив авторов «Шаблоны корпоративных приложений» — «взрослая» книга для джавистов, но не помешает ни для одного серверного языка как сборник инсайтов и крутых находок.
- Бесплатные курсы и видео, которых бесконечно много на Youtube на русском и английском языках. Просто слушайте, повторяйте, систематизируйте знания. Для начала подойдут любые, очень скоро вы научитесь отличать крутые вещи от дилетантских.
- webref.ru — очень классный сайт для разработчиков веба, разбирайтесь, обучайтесь.
- codecademy.com — интерактивный сайт для обучения разработке на разных языках программирования на английском, с самого низкого, нулевого, уровня.
- ITc | сообщество программистов — вагон организованной информации с курсами, лекциями и чем угодно. Читайте комментарии, легко определяйте лучшее для обучения.
- Библиотека программиста — куча книг по любой айти-тематике.
Важные личные качества
Ответственность. Действительно, на бэкендере лежит ответственность буквально за всё: чтобы данные сохранились, чтобы реляционные таблицы работали как надо, чтобы временные пояса учитывались, чтобы сайт был шустрым и т.д
И если кривая навигация от фронтендера приведёт к паре злобных вскриков пользователей, то ошибка бэкендера может стоить очень дорого — в прямом смысле (например, если бизнес-данные по какой-то причине перестанут сохраняться или не сработает разделение прав доступа в какой-нибудь CRM-системе).
Внимательность и внимание к мелочам. Опять же, мелочей в бэкенде не бывает, поэтому необходимо тщательно проектировать связность работы всех компонент и не упустить ничего.
Трудоспособность
Прокрастинация — опасный враг бэкендера, он должен уметь сосредоточенно работать, иногда в крайне сжатые сроки, поэтому «пилить код с ленцой» это, пожалуйста, в пет-проект или уже в состоянии тимлида (там других задач хватает).
Логическое мышление и аналитический склад ума. Оно и понятно.
Умение доводить дело до конца, нацеленность на результат. В бэкенде важен результат — корректно и ожидаемо работающее приложение.
Способность переключаться на макрозадачах. Нередко бывает, что нужно оставить код одной части проекта и реализовать довольно крупную функцию. Это непросто, потому что программист уже погружён в архитектуру и логику. Способность переключаться без особых проблем для задач — практически джедайская.
Навыки планирования и исполнения плана. Бэкенд любого проекта — это сборник разноплановых задач. И если вы единственный бэкендер проекта или у вас с коллегами слабо реализовано разделение труда, только планирование и спасёт от авралов, факапов и срыва дедлайнов. Жёсткое к себе и времени планирование — залог спокойной работы практически без переработок (которые у бэкендеров случаются чаще остальных).
Умение работать в команде. Вам нужно будет взаимодействовать с единой командой разработки единого же приложения, а значит, дискуссии, но не конфликты, рефакторинг, но не оскорбления, отстаивание своей позиции, но не бойкоты. Если злой интровертный бэкендер отлично сделает свою работу, закоммитит и умоет руки, его труд пользователи ещё долго не смогут оценить — потому что нужно «собирать» проект в составе всей команды, а не отгораживаться по принципу «к фронтенду ни ногой».
Корпус
Корпус я решил распечатать на 3d-принтере, для чего была спроектирована моделька. Т.к. для программирования через ISP-разъём обычно используются
10-проводные шлейфы, то для удобства работы решено было добавить ещё 10-пиновый ISP-разъём. Последний вынесен на заднюю стенку корпуса. Сам корпус
состоит из двух половинок, которые склеиваются между собой. Под джамперы, светодиоды и разъёмы программатора (и подписи к ним) сделаны окошки.
Вот так выглядит получившаяся 3d-моделька:
В нижней половине сделаны углубления для выступающих частей джамперов, в итоге плата ложиться на дно корпуса и плотно там фиксируется.
Корпус я печатал из ABS-пластика. Для придания ему большего эстетизма, корпус был отшлифован и обработан в ацетоновой бане. Т.к. под рукой
не было мелкой наждачки, шлифовал лезвием обычного канцелярского ножа, располагаемым перпендикулярно обрабатываемой поверхности. После того, как
поверхность распечатки стала более-менее ровной, детали были помещены на 30 минут в ёмкость с парами ацетона.
Вот как выглядел корпус до (снизу на фото) и после (сверху на фото) постобработки:
Плата в корпусе:
Для 10-пинового разъёма был вырезан небольшой кусок макетной платы (из стеклотекстолита) чтобы предотвратить продавливание контактов в будущем.
После впаивания разъёма в такую платку, они точно никуда не денутся. После чего разъём подпаивался проводками с обратной стороны платы программатора и
приклеивался суперклеем к нижней части корпуса. В завершении две половинки корпуса склеивались между собой.
Какие бывают микроконтроллеры Atmel
Начнем с самого популярного, для освоения микроконтроллеров в целом, – Atmel AVR. Его можно разделить на два направления:
- 8-битные микроконтроллеры.
- 32-битные микроконтроллеры.
Среди простых проектов для любителей электроники особую популярность снискала именно 8-битная часть семейства. Есть хорошая справочная литература «Микроконтроллеры AVR семейства classic фирмы Atmel», в которой описана вся архитектура, назначение отдельных узлов, регистров и прочего. Не стоит беспокоиться, что она посвящена уже устаревшему семейству AVR Classic – в наши дни оно вытеснено контроллерами Attiny и Atmega, хотя самая маленькая и быстрая модель – AT90S2313 выпускается и по сей день, слегка в модернизированном виде – Attiny 2313.
Современные семейства программно и функционально совместимы с более старыми, а переход с Classic на Mega и Tiny требует минимальных трудозатрат и изменений программного кода. Среди семейства особенную популярность заслужил микроконтроллер с маркировкой Atmega 328p, применяемый во многих популярных платах Arduino. Почти все они имеют небольшое количество энергонезависимой памяти с ограниченным числом циклов записи (до 100 000) – EEPROM.
Такая память нужна не для текущих вычислений, потому что быстро закончится её ресурс, а для хранения данных в долгосрочной перспективе. Энергонезависимость EEPROM памяти обеспечивает сохранность всей информации после обесточивания микроконтроллера.
Семейство Atmel Smart базируется на архитектуре ARM. Компания правообладатель ARM свободно продает лицензии на разработку контроллеров со своей архитектурой разным производителям, что ускоряет распространение и популяризацию первых. Стоит отметить яркого представителя – микроконтроллер AT91SAM3X8E, является сердцем Arduino DUE, 32-бита. Это позволяет очень легко начать знакомство с такой архитектурой и разработку устройств энтузиастам электроники. Atmel ARM по характеристикам превосходит большинство микроконтроллеров Atmel AVR
Семейство Atmel 8051 – основано на по-настоящему легендарной архитектуре. Intel 8051 является одним из первых массовых микроконтроллеров с широчайшей сферой применения. Позволяет проектировать высокопрецизионные устройства с огромным быстродействием, практически сравнимым с быстродействием схем на логике. В линейке есть микроконтроллеры, работающие на частотах в 100 МГц, при этом выполняющие 100 миллионов операций в секунду, а это отличные показатели для этой архитектуры. Вы можете добиться быстродействия в долях микросекунд.
Перепрошиваем Arduino ATMEGA16U2 в оригинальное ПО
Почти сделано. Нам нужно вернуть оригинальное программное обеспечение в ATMEGA16U2.
Отключите Arduino от питания и USB. Замкните на ICSP1 контакты 5-6. Подключите USB-кабель. Разомкните пины ICSP1 5-6.
Запустите программное обеспечение FLIP. Перейдите в: Пуск -> Все программы -> Flip -> Flip. Далее: Настройки -> Связь -> USB.
Нажмите «Открыть». Перейдите в: Файл -> Загрузить файл HEX.
Выберите файл:
С:\Program Files\Arduino\hardware\arduino\firmwares\atmegaxxu2\arduino-usbserial\Arduino-usbserial-atmega16u2-Uno-Rev3.hex
Нажмите «Выполнить».
Отсоедините USB-кабель и подключите его снова. Новое устройство USB должно быть распознано. Если драйвер не установлен автоматически, вы найдете его в: С:\Program Files\Arduino\drivers.
Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли загружен драйвер. Вы должны увидеть его в: Ports -> Arduino Uno.
Теперь мы можем проверить любой скетч из примеров, типа Blink. Запустите программное обеспечение Arduino (Пуск -> Arduino).
Нажмите: Open (стрелка вверх) -> -> 01.Basics -> Blink.
Выберите COM-порт а: Инструменты -> Последовательный порт -> COM (выберите порт, на котором была распознана плата).
Нажмите значок «Загрузить» (стрелка вправо). Светодиод должен начать мигать.
Всё готово. Мы узнали как прошить Ардуино и успешно перепрограммировали ATMEGA328P без использования какого-либо внешнего программатора.
Основная информация
ID
595421623
Можно редактировать:
нет
Можно скрыть настройками приватности:
нет
Уникальный идентификатор пользователя, определяется при регистрации ВКонтакте.
Домен
id595421623
Можно редактировать:
да
Обязательно к заполнению:
нет
Можно скрыть настройками приватности:
нет
Домен служит для установки красивой запоминающейся ссылки на страницу пользователя ВКонтакте.
Имя
Mkll
Можно редактировать:
да
Обязательно к заполнению:
да
Можно скрыть настройками приватности:
нет
Фамилия
Mkl
Можно редактировать:
да
Обязательно к заполнению:
да
Можно скрыть настройками приватности:
нет
Отчество
не указано
Можно редактировать:
нет
Обязательно к заполнению:
нет
Можно скрыть настройками приватности:
нет
ВКонтакте больше нельзя редактировать отчество для пользователей, у которых оно не было указано ранее.
Пол
мужской
Можно редактировать:
да
Обязательно к заполнению:
да
Можно скрыть настройками приватности:
нет
Дата рождения
скрыта или не указана
Можно редактировать:
да
Обязательно к заполнению:
да
Можно скрыть настройками приватности:
да
ВКонтакте присутсвует возможность скрыть дату рождения полностью или частично (при этом будут отображены только день и месяц рождения).
Установка программного обеспечения Atmel FLIP
На плате Arduino есть два микроконтроллера — ATMEGA328P (328P) и ATMEGA16U2 (16U2). Вы можете обновить прошивку 16U2, сделав его программатором AVRISP MKII, а затем использовать Atmel Studio для прошивки 328P.
Я пробовал разные варианты, но возникали разные проблемы. Многие рекомендации плохо работали в моем случае особенно в части перепрошивки загрузчика через ПО Arduino.
Переда началом прошивки Ардуино потребуется программное обеспечение Atmel (Microchip) FLIP для обновления прошивки внутри 16U2.
Скачиваем Flip с сайта Microchip — отсюда. Устанавливаем. Не должно возникнуть никаких проблем, просто следуйте инструкциям мастера установки.
Возьмите плату Arduino, отсоедините питание и USB. Замкните на ICSP1 пины 5-6 (16U2 RESET будет в низком состоянии).
Распиновка ICSP1
Выглядеть это будет так:
Далее подключите Arduino к USB. Разъедините пины на ICSP1 (5-6). В этот момент 16U2 переходит в режим DFU. Новое устройство USB должно быть распознано.
Если драйвер не устанавливается автоматически, установите его из: C:\Program Files\AtmelFlip3.4.7usb»
Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Он будет расположен под USB-устройствами Atmel -> ATmega16U2.
О программаторе USBTiny-MkII slim
USBTiny-MkII slim — компактный и быстрый USB-программатор для микроконтроллеров AVR, совместимый с фирменным программатором AVRISP-MKII от Atmel.
Немалая стоимость оригинала поспособствовала появлению его многочисленных клонов, и самым удачным из них, пожалуй, является именно USBTiny-MkII SLIM.
Устройство может программировать все 8-разрядные AVR-микроконтроллеры, обладающие возможностью внутрисхемного программирования (поддерживаются
интерфейсы ISP, TPI и PDI).
MkII обладает следующими возможностями:
- Поддержка интерфейса программирования ISP (для микроконтроллеров ATTiny и ATMega)
- Поддержка интерфейса программирования TPI (актуально для некоторых моделей ATTiny)
- Поддержка интерфейса программирования PDI (для микроконтроллеров XMega)
- Возможность запитать программируемый микроконтроллер от 3.3В или 5В (выбирается джампером)
- Это быстрый программатор. 128 Кб флеша ATMega128 полностью считываются за 35 секунд (для сравнения, usbasp делает это за 70 секунд), и
пишутся чуть медленнее (скорость записи ~15 Кб/сек) - Работа как с утилитой avrdude, так и с IDE AtmelStudio (которая видит программатор как родную железку)
- Есть вывод CLK для воскрешения микроконтроллера с “испорченными” FUSE битами
Интерфейс TPI (Tiny Programming Interface) используется для программирования low-end микроконтроллеров Atmel серий ATtiny4, ATtiny5, ATtiny9, ATtiny10,
ATtiny20, ATtiny40. TPI по сути обычный USART с двунаправленной линией данных (TPIDATA), тактовым сигналом (TPICLK) и линией сброса (RESET).
Подробнее об этом интерфейса можно почитать в атмеловском документе AVR918. Также для этого документа доступны исходные коды прошивки
программатора TPI на основе микроконтроллера ATmega324P.
Про интерфейс PDI можно почитать в атмеловском документе AVR1612.
Базовые требования к профессионалу
- Знание хотя бы одного «серверного» языка программирования: PHP, Go, ASP.NET, C/C++, Python, Ruby, Java. В некоторых случаях достаточно знания JavaScript для бэкенда (Node.js), но это скорее как плюс, чем как пункт.
- Знание API (REST, SOAP — всё реже).
- Понимание принципов работы серверов Apache, NGINX, IIS и проч.
- Навыки написания юнит-тестов и покрытия кода тестами.
- Основы сетевой безопасности и знание инструментов её обеспечения.
- Знание популярных веб-фрейморков, которые способны решать задачи разработки конкретного приложения.
- Навыки написания запросов к БД и проектирования баз данных.
- Знание основ фронтенда — и это не плюс, а обязательный пункт, иначе вам придётся крайне непросто проектировать и писать приложение.
- Администрирование UNIX или знание Linux (можно любого одного дистрибутива).
- Знание принципов работы HTTP (кэширование, авторизация, структура сообщений, заголовки, коды ответов и проч.)
- Модель OSI.
- Навыки составления и оценки технического задания (ТЗ) — очень важный навык, который необходим для сбора самой точной информации о требованиях к ПО.
Стажёр (Intern) | Младший (Junior) | Средний (Middle) | Старший (Senior) | Ведущий (Lead) |
---|---|---|---|---|
|
|
|
|
|
— | + ООП, фреймворки | + ООП, фреймворки, Docker | + высоконагруженные системы, ООП, фреймворки, Docker | + Linux, ООП, фреймворки, Docker |
Топ-5 востребованных технологий у специалистов по данным «Хабр Карьера», 2 полугодие 2019 года, нижняя строка — «дополнительные» скиллы.Принцип формирования списка: пользователи, внося данные о заработной плате, указывают скиллы, которые у них в приоритете (что они умеют делать!). То есть это не требования работодателя, а навыки специалистов каждой категории.роадмап, но уже для бэкенд разработчика
Сборка и прошивка
Сборка печатной платы не должна вызывать проблем. Стоит только заметить, что стабилизатора IC3 имеет специфическую цоколёвку и не получится
вместо его поставить распространённую микросхему вроде AMS1117. Тут надо ставить LF33, либо MCP1825S-3302ED, либо другой, совместимый по выводам.
Также не стоит пытаться заменять преобразователь уровней GTL2003 на более распространённый и дешёвый MAX2003 — с последним будет работать плохо и
нестабильно.
Светодиод LED1 можно поставить зелёного цвета свечения — он сигнализирует о подаче питания, LED2 горит при активности устройства
(т.е., при чтении/записи в МК), тут более уместен, например, красный цвет свечения.
Плата в сборе выглядит так:
Когда загрузчик на месте, программатор можно подключать к USB и загружать в него прошивку. Для этого в интернетах обычно предлагают использовать утилиту
FLIP, которая выложена на сайте Atmel, причём, разных версий и под разные ОС. Последняя верися 3.4.7 без встроенной явы не запустится на 64-битных ОС
выдав ошибку о том, что Java-виртуальная машина не найдена (хотя ява стоит). Аналогичная сборка со встроенной явой выдаст точно такую же ошибку.
Чтобы выяснить причину такого безобразия, я расковырял файл flip.exe и обнаружил внутри его jar-файл (он расположен почти в самом начале экзешника, и
легко ищется в hex-редакторе по сигнатуре ‘PK’ и последующему характерному заголовку jar-ки). Вырезав и запустив этот jar, я получил ошибку JNI
при загрузке динамических библиотек, которые оказались 32-битными. Вывод: дання утилита в принципе не будет работать в 64-битной Windows (причём, на
сайте Atmel об этом ни слова не сказано). Ещё можно скачать старую версию FLIP 2.4.6, которая написана на чистой яве и прекрасно работает везде,
в том числе и на 64-битных ОС. Но эта версия не поддерживает AT90usb162. Итог — про FLIP лучше навсегда забыть.
Atmel Studio умеет прошивать AT90usb162 «из коробки». Для этого идём в главное меню, Сервис -> Device Programming, или нажимаем Ctrl+Shift+P.
В появившемся окне выбираем инструмент «Atmel Mega DFU» и микроконтроллер AT90USB162:
Теперь перейдя на вкладку Memories, можем читать и писать прошивку и фьюзы:
Прошивка программатора основана на проекте AVRISP-MKII из библиотеки LUFA с открытым исходным кодом. Пара слов о её конфигурировании:
Частота кварца может быть 8 МГц или 16 МГц и задаётся в файле Projects/AVRISP-MKII/makefile, параметр F_CPU, по умолчанию там 16 МГц.
В файле конфигурации Projects/AVRISP-MKII/Config/AppConfig.h помимо конфигурации выводов МК есть парочка интерсных параметров:
Первый параметр включает возможность быстрого переключения между режимами Jungo (который для Avr/Atmel Studio) и LibUSB (для avrdude) драйвером в одной
прошивке. Для переключения режимов достаточно замкнуть джампер сброса (RST), после чего в системе появится отдельное устройство с другим
серийным номером. При этом программатор моргнёт светодиодами два раза, если находится в режиме Jungo и четыре раза, если включен режим LibUSB.
В обоих случаях потребуется установка соответствующих драйверов (это касается Windows, в Linux и MacOS libusb установлен “из коробки”).
Кстати, программатор запоминает последний выбранный режим, и после повторного подключения он стартует именно в нём. А ещё он запоминает
последнюю используемую частоту SCK. И всё это включается параметром . По умолчанию этот параметр включен.
Иногда после выхода очередного обновления для AtmelStudio возникали проблемы — программатор переставал поддерживаться, т.к. его версия
оказывается ниже требуемой. В этом случае надо раскомментировать параметр и указать в нём версию прошивки.
Например, у меня AtmelStudio 7 захотела прошивку версии не ниже 1.18, вместо обнаруженной 1.14. После раскомментирования параметра
и установки его в 0x18 проблема была решена. На всякий случай, я увеличил его (с запасом) до 0x30,
скомпилированную прошивку можно скачать в конце статьи.