И снова о программаторах для AVR

ПРОЛОГ

На заре использования микроконтроллеров конечно же немаловажным было наличие программатора, а для новичка это было делом трудоемким. Прочитав кучу форумов, и не найдя какой-то универсальности случайно наткнулся в журнале Радио на замечательный в то время проект PonyProg в тандеме с хардварным JDM флешером подключаемым к com portу персонального компьютера. Сразу же повторил базовый модуль, модуль под микроконтроллеры фирмы Atmel AVR, микроконтроллеры фирмы Microchip PIC. А сколько радости было, когда я запрограммировал им первый PIC (хороший флешер для PIC — WinPic800)!

Собирал из того что было, даже разъемы от старого советского магнитофона.
Естественно время не стоит на месте, у меня появился ноутбук, в котором COM port отсутствовал априори. Копаясь в интернет, читая про простые USB программаторы под ATMEL AVR выбор пал на USBasp , покупал на ebay за 2 доллара (тогда это было около 16 Грн. плюс freeshipping), а для PIC взял PickitII Light (с PIC вообще перестал работать, программатор в принципе лежит без дела).

ACTION

Недавно заказывал на Али всякие ништяки, и наткнулся на USB программатор, по описанию вроде как USBasp, но в алюминиевом корпусе, немного меньших размеров, с распиновкой ISP – разъема и логотипом Atmel. Решил купить, за 400 рублей. “Будет основным, а старый отправлю на скамейку запасных”, — подумал я, и нажал «order». В общем дождался я его, радостно распаковал, инсертнул в USB и тут лютый батхерд, в дереве устройств отсутствовал мой любимый libusb. Ну естественно полез в Google. Тут же нашел Статью на easyelectronics. Но, у меня камень стоял Atmega 88, на офф. сайте нашел сырцы и хексы, сделал петлю между двумя программаторами

Залил последний HEX – файл, загорелся вместо красного светодиода голубой, программатор перестал вообще определяться системой. Нашел несколько форумов, где люди под разные версии что-то там перепаивали и тд. Мне как-то не хотелось ковырять нормальный с виду девайс, продолжил поиски и нашел хорошую статью, а так же переработанный исходник в 4ой студии. Hacking AVR programmer, судя по всему была проблема с этим программатором в этих строчках:
There are some tiny, yet important, differences to the original USBasp programmer: in the USBasp USB-D- is connected to pin PB0, USB-D+ to PB1 and PD2/INT0. Here also USB-D- was connected to a pin on port D: PD3/INT1. Well, this should not really make a difference, and I continued my search for differences. OK, for some reason, also the LEDs are connected in parallel to 2 port pins each – so what… In despair I decided to look into the source code of the USBasp firmware. The header files: OK – pin assignments were as expected, nothing special here. But let’s wait, where is the definition of the utilization of port D? Well, it was in the main.c file:
int main(void) {
  uchar i, j;

  /* no pullups on USB and ISP pins */
  PORTD = 0;
  PORTB = 0;
  /* all outputs except PD2 = INT0 */
  DDRD = ~(1 << 2);

Автор изменил его на:
All pins of port D are defined as output, except for PD2/INT0? I always tell my students to only define pins as output, which are really used as output… And what happens here? Since the modified design also connected USB-D- to PD3/INT1, the rather aggressiv definition of output pins leads to a unsolveable conflict, when suddenly PD2 is driving against the USB signals from the host!
Changing this little piece of code solved the problem. Rather conservative I set all pins of port D as input (none of them is currently used as output!):
int main(void) {
  uchar i, j;

  /* no pullups on USB and ISP pins */
  PORTD = 0;
  PORTB = 0;
  /* all PDx input */
  /* MK-USBISP v3.0 */
  DDRD = 0x00;

Пересобрал проект изменив в конфигураторе Atmega8 на Atmega88, снова залил своей петелькой из двух программаторов HEX, подключил и вуаля, программатор сразу же определился системой как libusb. Я тут же считал/записал код из Atmega16 (сердце моей отладочной паты) ExtremeBurner. На этом в принципе все. Исходя из количества покупаемых таких девайсов людьми из рунета (почему Китайцы не пишут, что это не совсем тот USBasp, а устройство с другой прошивкой видимой системой как HID-устройство, работающей только с софтом progisp) Надеюсь этот пост пригодится. Исходник естественно выкладываю.

ЗЫ: Что-то мне захотелось программировать все из под Codvision и Atmel Studio, нашел хорошую статью переделки USBasp в AVR-Doper (STK-500) — Статья, правда PonyProg не использовал, а заюзал USBbasp как в предыдущей переделке. Все заработало на Windows 8 x64. USBasp на Atmega 8 — кварцевый резонатор на 12МГц. Архивы ниже 01022016_mega88_usbisp.zip — firmware для переделки USBisp в USBasp, avrcdc_inf.zip — Драйвера к AVR_Doper, AVR-Doper.2012-12-08.zip — firmware и make файлы к программатору AVR_Doper. usbasp-mega8-12mhz.hex.zip на всякий случай — еще один HEX для переделки USBasp в AVR_DOPER.

ЗЫЫ: потестил AVR_DOPER с Atmel Studio 7 — шьет намного быстрее камень, чем программатор в CodeVision. Еще заметил один нюанс, в простом сеансе на Windows 8 отказывается работать, нужно перегрузиться отключив подпись драйверов. После таких манипуляций, все работает. Выложу еще пару скринов работы AVR_DOPER:
CodevisionAVR




Atmel Studio 7


  • +5
  • 02 февраля 2016, 11:09
  • Jman
  • 4

Комментарии (20)

RSS свернуть / развернуть
замечательный в то время проект Pony Prog в тандеме с хардварным JDM флешером подключаемым к com portу персонального компьютера PonyProg
Точку из ссылки перемести в текст. Да и вообще, лучше сделать ссылкой первое упоминание PonyProg, а второе убрать.
Тут же нашел на статью we.easyelectronics.ru/xterro/prevraschaem-kitayskiy--programmator-usbisp-v-usbasp.html.
Аналогично. Опять же, лучше сделать ссылкой слово «статью».
+1
  • avatar
  • Vga
  • 02 февраля 2016, 16:01
Спасибо, подправил.
0
А точки из ссылок так и не убрал.
0
по описанию вроде как USBasp, но в аллюминиевом корпусе,
Где взять подобные корпуса для своих девайсов? В последнее время во многих устройствах такие используют, а самих корпусов в продаже не видел.
0
Аналогично, пока не встречал. Первый USBasp покупал в виде платки. Тут наткнулся на девайс в алюминиевом корпусе — тут же купил. Теперь хочу приобрести клон JTAG ICE в таком же форм факторе.
0
0
0
Такой и хочу приобрести. Как ощущения от него?
0
Я пока-что тоже его хочу!)))
0
Попробуй набери на Али или Ебее что-то типа «aluminum case diy» — увидишь тучу приятных металлических корпусов разных цветов и размеров.
0
Спасибо за совет. Нашел что искал. Но цены расстроили. За такие деньги продают готовое устройство в этих же корпусах.
0
Крастота требует жертв, и в первую очередь финансовых)
+1
Корпуса эти явно из пошинкованного профиля. Попробуй сам профиль поискать.
0
Глянул цены и вспомнил что нечто подобное видел на рынке и явно дешевле, надо будет ещё раз посмотреть.
0
Профиль или корпуса готовые?
0
Готовые корпуса.
0
Хехе, вот неплохое решение в качестве самодельного корпуса) Моддинг
0
Первым у меня был программатор Громова, и какая то софтина, уже не помню как называлась для прошивки. А вторым был USBasp и AVRDUDE к нему в придачу. Собственно он и сейчас у меня есть, и пока покупать третий нет никакой необходимости. Всё отлично шьётся. Я брал по полтора доллара кажется на алиэкспресс, взял сразу парочку на всякий случай — так они и живут у меня, один дома, второй кочевой.
0
У меня в связке USBasp + Extreme Burner тоже уже года три как работал. Случайно наткнулся на программатор в корпусе, решил апгрейд сделать и инкриминировать количество программаторов на единицу, а тут такая бага (фича) в виде непонятного мне HID-устройства. Вот и пришлось пол дня покопаться с ним. А старый USBasp прикрутил к Atmel Studio и Codvision — так удобно стало с IDE все заливать без промежуточных флешеров. Я когда с Arduino в связке с Flowcode баловался пару дней, то же постарался прикрутить процесс программирования Ардуино прямо из под Flowcode с родным bootloader. Загорелся теперь купить китайский клон JTAGICE.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.