В комментах к посту про Angelino один из пользователей навел меня на интересную мысль: а действительно, как сделать из MKBoard программатор для другой платы? Для стандартных Duemilanova и Uno обычно берут скетч ArduinoISP и дальше действуют в соответствии с этой инструкцией. Но этот скетч совершенно не подходит для MKboard/metaboard, которые не имеют "честного" USB-порта.
Но оказывается - сделать из MKBoard программатор очень даже можно, причем получается практически полноценный STK500-совместимый программатор - AVR-Doper, который можно использовать с AVRStudio (разве что без высоковольтного последовательного программирования). Для этого берете этот хекс: mkboard_avrdoper.tar.gz, замыкаете джампер Upload, нажимаете на сброс и пишите:
avrdude -c usbasp -p m8 mkboard_avrdoper.hex
После завершения процесса вы получаете AVR-Doper в режиме HID.
Соединяйте провода с программируемой схемой, руководствуясь новым назначением пинов:
Для программирования достаточно соединить MKBoard и программируемую плату (target) согласно этой таблице:
MKBoard | Target |
---|---|
RESET | RESET |
MOSI | MOSI |
MISO | MISO |
SCK | SCK |
GND | GND |
+5B | VCC |
Если схема имеет собственное питание, последнее соединение (VCC и +5В) делать не нужно.
Откуда брать эти сигналы - с гребенки ISP6 или колодки цифровых пинов - не суть важно, но если соединяете ISP6 у MKBoard и устройства - получается практически "один в один", за исключением сигнала RESET - его надо брать все-таки с цифровой колодки, digital10.
Далее, для прошивки hex-файла через avrdude можно использовать следующую строку:
avrdude -c stk500 -P avrdoper -p MCU -U flash:w:file.hex
где MCU заменяем на тип программируемого микроконтроллера (более подробно см. справку к avrdude - для ATmega8 - m8, для ATmega328P - m328p и т.д.).
Если требуется совместимость с AVRStudio - снимаем джампер Upload и переподключаем питание. Как вы уже догадались, в данной прошивке программатора этот джампер управляет режимом HID: замкнут = вкл, разомкнут = выкл (и вместо него CDC). Но учтите, что выбор срабатывает один раз при подключении питания - если нажмете на сброс, запустится бутлоадер, который будет делать совершенно другие вещи (представляться как usbasp и пытаться запрограммировать самого себя).
Можно ли программировать через DIP-сокет? Разумеется - можете его установить хоть на макетном поле, но при этом:
- сделайте все вышеописанные соединения Target и MKBoard за исключением VCC и +5V;
- подключите SUPPLY1 и SUPPLY2 (оба два) к шине VCC программируемого MCU;
- подключите CLK к ножке XTAL1 программируемого MCU (замена кварцу и емкостям для создания тактовой схемы у target-а).
Два контакта под питание выглядят перестраховкой, но некое рациональное зерно в этом есть. Перед началом через SUPPLY подается питание на программируемый MCU, а по завершении - отключается. Так делает и оригинальный AVRDoper, только у него есть для этого специальная буферная микросхема, которой в MKBoard, увы, нет.
Во время программирования будет мерцать встроенный светодиод L, поскольку он оказался подключен к пину SCK (тактовые импульсы программирования). Оригинальный светодиод "ONLINE" для наглядности можно прикрутить к PC1 (или analog1 в нумерации Arduino), обязательно через токоограничительный резистор 1К - тогда он будет четко загораться в момент входа в режим программирования и при выходе из него.
В этой прошивке также можно использовать встроенный отладочный порт - если соединить GND, RX и TX отлаживаемого микроконтроллера с пинами digital 0 и digital1 (разумеется, перекрестив), то можно с ним обмениваться через USB-подключение MKBoard на скорости 19200 - читать и писать данные с помощью утилиты avrdebug.
Ну и напоследок - если программатор больше не нужен.... разбираете схему, замыкаете Upload, нажимаете сброс - и... плата снова готова к загрузке скетчей через ArduinoIDE! ;)
И, конечно же, скажем спасибо команде Objective Development, позаботившейся о том, чтобы код AVR-Doper компилялся не только под разные MCU и разные тактовые частоты, но и под разные схемы (оригинальная, usbasp, metaboard).
Посмотрите, я здесь описал как делал из ардуины STK500v2_by_Petka, он имхо работает намного быстрее и стабильнее... С Atmel Studio работает отлично! http://forum.ya1.ru/showthread.php?t=55944
ОтветитьУдалитьИдея - интересная! Но описание, конечно, не для начинающих :( Если захотите рассказать нашей аудитории подробнее про Вашу модификацию программатора - предлагаю этот блог ;) Могу помочь с оформлением, хостингом материалов и корректурой текста ;)
УдалитьПредложение заманчивое, тем более текст изначально и задумывался "для начинающих", но "...чукча не писатель...", надеюсь с вашей помощью доведём до ума... но несколько позже, сейчас занимаюсь переездом на ПМЖ в Питер...
Удалитья сделал шилд плату которая превращает Angelino в полноценный программатор stk50 by Petka
ОтветитьУдалитьесли интиресно могу прислать статью (куда?)