При отладке схем на микроконтроллерах бывает необходимо обеспечить гальваническую изоляцию между схемой и программатором. Особенно, если это недешёвый in-system программатор, как, например, Atmel-ICE. Даже при использовании обычных SPI-программаторов бывает необходимо обеспечить развязку схемы от программатора, подключенного по USB к рабочему ПК. Особенно, если схема имеет бестрансформаторный блок питания или в ней присутствуют высокие напряжения.
За основу модуля была взята схема из app. note AVR077, перевод которой приведён в [1], рис.4.1. Однако, это схема «развязки» только для debugWire, что не позволяет переключать МК из режима SPI в debugWire и обратно, настраивать фьюзы в окне “Device Programming” Atmel Studio без подключения линий MISO, MOSI и SCK непосредственно к программатору. Три канала для SPI-интерфейса добавлены «размножением» соответствующих элементов схемы, два на передачу данных (со стороны «хоста», т.е., программатора) и один — на приём. Внутренне гальванически развязанная сдвоенная кнопка с фиксацией Sw1 через входы VE 6N137 включает или выключает каналы MISO, MOSI, SCK. P-канальный MOSFET защиты от переполюсовки со стороны МК заменён более компактным IRLML6402, а со стороны «хоста» исключён вследствие дефицита места на плате под выбранный корпус, а также потому, что используется гнездо DC-питания. Хотя, он и здесь не был бы лишним. Снижен номинал R9 на исходной схеме (R10 на рабочей, соотв.) с 12 до 10кОм: иначе, не работал детектор питания схемы (VTref). Часть компонентов заменена на SMD.
6-пиновый разъём для программатора разведён под распиновку штатного кабеля Atmel-ICE. К микроконтроллеру — разъём IDC 10 с разводкой как у программаторов USB ASP, включая питание. Питание схемы со стороны «хоста» — разъём DC под jack, внутренний контакт — «+» питания. Питание осуществляется от USB ПК, к которому подключен программатор.
Рисунок 1. Схема модуля оптронной изоляции
Гнездо питания DC выбрано довольно редкое под имевшийся кабель дополнительного питания с jack’ом 4мм, от внешнего HDD.
Правильно собранный модуль отладки не требует.
Рисунок 2. Готовое устройство
Плата на рис.2 — начальный вариант, ошибки в разводке которого исправлены в приведённых ниже материалах. LED не установлен. Проект выполнен в KiCAD 4.0.7. Файлы проекта и фотошаблонов обеих сторон платы прилагаются.
R22, R24 — подбор номиналов по яркости LED, если планируется его установка.
Резисторы, конденсаторы — 5% точности. Соответствие SMD резисторов типоразмерам — нестрогое, вместо 0603 можно ставить 0805 в зависимости от того, что есть в наличии.
Чертёж кнопки Sw1 приведён в прилагаемом архиве.
Модуль эксплуатировался около полугода с Atmel-ICE в среде Atmel Studio 7.0 в режимах внутрисхемной отладки и SPI с МК Attiny4313, Atmega88PA и по SPI с Attiny2313A.
Выводы по опыту эксплуатации:
- Отключение SPI (кнопка с соотв. частью схемы) оказалось невостребованным. Т.е., это можно убрать и этим упростить схему.
- Две 6N137 можно заменить на одну сдвоенную HCPL2630 и сэкономить один корпус.
- Может оказаться целесообразным добавить ещё один канал на приём и один — на передачу, для UART. Однако, при использовании внутрисхемной отладки это не столь актуально.
- Частоту интерфейса (ISP Clock) в диалоге “Device Programming” Atmel Studio лучше оставить по умолчанию, т.к. опытным путём установлено, что устойчивая работа сохраняется до частот не выше 2МГц. Хотя, оптопары заявлены до 10Мбит. Однако, это не является серьёзным ограничением, т.к. скорость работы Atmel-ICE с такими настройками всё равно выше, чем даже у программатора на основе FTDI FT232RL в режиме BitBang [2, 3].
Ссылки:
- http://microsin.net/programming/avr/avr077-opto-isolated-emulation-for-the-debugwire.html
- http://easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html
- https://www.radiokot.ru/articles/79/
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | Оптопара | HCPL2630 | 1 | |||
U2-5 | Оптопара | 6N137 | 4 | |||
Q3 | MOSFET-транзистор | BS170 | 1 | |||
Q1 | Биполярный транзистор | BC847 | 1 | |||
Q2, Q4-9 | Биполярный транзистор | BC857 | 7 | |||
Q10 | MOSFET-транзистор | IRLML6402 | 1 | |||
D1 | Диод Шоттки | BAT43 | 1 | |||
LD1 | Светодиод | 1 | 3мм., 2-х цв.,общий катод | |||
C1-5 | Конденсатор | 200 нФ | 5 | SMD, 0805 | ||
R1, R25 | Резистор | 1.2 кОм | 2 | SMD, 0603 | ||
R2,4,8 | Резистор | 3.3 кОм | 3 | SMD, 0603 | ||
R3,12,16,17,20 | Резистор | 2.0 кОм | 5 | SMD, 0805 | ||
R5 | Резистор | 330 | 1 | SMD, 0603 | ||
R6,7,10,14,26 | Резистор | 470 | 5 | SMD, 0805 | ||
R9,18,19,21 | Резистор | 270 | 4 | SMD, 0805 | ||
R11, R23 | Резистор | 10 кОм | 2 | SMD, 0603 | ||
R13 | Резистор | 330 | 1 | в отв., 1/8Вт | ||
R15 | Резистор | 2.3 кОм | 1 | SMD, 0805 | ||
R22 | Резистор | 2.2 кОм | 1 | SMD, 0805 | ||
R24 | Резистор | 1 кОм | 1 | SMD, 0603 | ||
SW1 | Переключатель | 1 | Кнопка с фикс. 5,8×5,8мм | |||
J1 | DC Power Socket | 1 | гнездо под jack | |||
J2 | Разъём д/программатора | 1 | IDC6, угловой | |||
J3 | Разъём д/МК | 1 | IDC10, прямой | |||