Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

USB ПРОГРАММАТОР — Меандр — занимательная электроника
Site icon Меандр — занимательная электроника

USB ПРОГРАММАТОР

Основой этого программатора является микроконтроллер ATTiny45. В качестве тактового генератора контроллера используется генератор системы ФАПЧ частотой 16,5 МГц, что позволило отказаться от применения уже привычного в данных схемах внешнего кварцевого резонатора. Резисторы R2, R3 токоограничительные, работают в паре со стабилитронами VD1, VD2 и служат для защиты компьютера от высокого напряжения (по стандарту не более 3,6 В).

       Стабилитроны могут быть заменены отечественными КС136 либо аналогичными импортными. Резистор R1 указывает компьютеру, что подключенное устройство работает на скорости LS, его номинал может изменяться в диапазоне 1,5 – 2,2 кОм. Резисторы R4-R7 служат для защиты выходов контроллера от короткого замыкания и согласования логических уровней в случае раздельного питания контроллера и программатора, их величина может изменяться от 270 до 560 Ом. Для соединения программатора и компьютера используется пятипиновое гнездо mini-USB (XS1). Это сделано для уменьшения размеров печатной платы, а также исходя из того, что кабель mini-USB имеется практически у каждого. Подключение программатора к программируемому контроллеру осуществляется при помощи 10-контактного разъема XS2, распиновка которого соответствует стандарту STK200/300.

Программатор AVR собран на плате из фольгированного стеклотекстолита. Внешний вид дорожек платы и расположение деталей на ней показаны на фото. Скачать файл платы в LAY и прошивки МК можно тут. Для тех, кому сложно достать не слишком пока распространенный контроллер ATTiny45, автором была разработана схема на более широко используемом контроллере ATTiny2313.

Схема отличается от предыдущей только наличием кварцевого резонатора ZQ1, частота которого должна равняться 12 МГц и конденсаторами C1 и C2, емкость которых может изменяться в пределах 18 – 24 пФ. И кроме того, в схеме вместо сложного в распайке гнезда mini-USB применено так называемое «принтерное» гнездо типа USB-B. Печатная плата для данной схемы разработана на обычных деталях, что несколько увеличило ее размеры, но позволило отказаться от сложных для пайки многими радиолюбителями smd-компонентами.

После программирования flash-памяти контроллера для ATTiny45 необходимо установить следующие конфигурационные биты: CKSEL3, CKSEL2, CKSEL1 (тактирование от схемы ФАПЧ), BODLEVEL0 (детектор пониженного напряжения на 1,8 В), RSTDSBL (поскольку количество выводов микроконтроллера невелико, то вывод RESET используется в качестве обычного порта ввода-вывода). Для ATTiny2313 необходимо запрограммировать только бит BODLEVEL0, а остальные сбросить.

Чтоб запрограммировать контроллер в первый раз при отсутствии под рукой самого программатора, можно применить любую схему. Например простейший программатор, именуемый в народе «5 проводков», подключается к LPT-порту компьютера и состоит из всего 4 сопротивлений, но сейчас это порт является скорее архаизмом, чем нормой. Сам автор для первоначальной прошивки использовал программатор, представленный на рис. 7. Он подключается с СОМ-порту компьютера и имеет ряд панелек для установки различных микроконтроллеров, что позволяет с легкостью запрограммировать контроллер перед его монтажом в устройство. Управляется программатор от известной программы PonyProg. Небольшой нюанс. PonyProg не знает ни ATTiny2313, ни ATTiny45, поэтому выберите любой контроллер с объемом памяти не меньше, чем 4 кб, например, ATMega8. При прошивке программатор выдаст ошибку о неверном типе контроллера. Выберите «Ignore» и контроллер все равно будет прошит.

Кроме того, поскольку прошивка контроллера ведется через интерфейс внутрисхемного программирования SPI, то возможно (и даже желательно для ATTiny45) прошивать его непосредственно в устройстве уже после распайки. Программирование можно осуществлять либо подпайкой к соответствующим выводам контроллеров проводков и дальнейшим их сопряжением с программатором, либо используя разъем XS2.

При использовании для программирования разъема XS2 необходимо учесть следующий нюанс. При прошивке контроллера он выступает ведомым, и для него вывод MISO является выходом, а MOSI – входом. Когда же контроллер сам выступает в роли программатора, то он сам является ведущим, и входы MISO и MOSI меняются местами.

При программировании контроллера ATTiny45 все необходимые выводы подведены к разъему XS2, в этом случае схема подключения будет иметь следующий вид. Поскольку обе части разъемов XS2 и XS3 представляют собой гнезда, то можно либо спаять кабель со штекерами с обеих сторон, либо выполнить соединения проводками, втыкая их в соответствующие контакты гнезд. На разъеме внешнего программатора не проставлены номера выводов – они могу быть различными для разных типов программаторов, и их следует уточнить в документации для каждого конкретного программатора.

При программировании контроллера ATTiny2313 сигнал сброса, подводимый к выводу RESET, формируется линией РВ0. В этом случае сигнал сброса от внешнего программатора необходимо подключать непосредственно к выводу RESET контроллера ATTiny2313 (вывод 1), подпаяв к нему дополнительный проводок. Можно обойтись и вовсе без него, но тогда необходимо перед подачей питания на контроллер замкнуть вывод RESET на землю, однако в данном случае возможны сбои, и этот вариант не рекомендуется для повторения.

Программатор необходимо подсоединять к компьютеру до запуска программы. При перестыковке программатора необходимо перезапустить программу.

Разберемся с назначением основных элементов интерфейса программы. Для автоматического определения типа подключенного к программатору микроконтроллера служит кнопка «Автоопределение». При этом автоматически считываются идентификатор микроконтроллера, калибровочные и конфигурационные ячейки и биты защиты.

Если же по каким-то причинам автоопределение контроллера дает неверные результаты, то можно установить тип контроллера вручную при помощи выпадающего списка «Ручной выбор контроллера». При этом конфигурационные биты и биты защиты устанавливаются по умолчанию для данного типа контроллера, поэтому стоит быть внимательным, чтобы не ошибиться. Следует заметить, что номенклатура поддерживаемых контроллеров несколько отличается от таковой у программатора AVRDUDE [8]. Во-первых, MICROPROG не поддерживает контроллеры семейства Classic и контроллеры с объемом памяти больше 128 кБ. Во-вторых, им поддерживаются новые чипы, еще не включенные в список AVRDUDE. Кроме того, этот список будет постоянно обновляться автором по мере выхода новых контроллеров.

Следующая, и одна из наиболее полезных особенностей данного программатора – это программное изменение частоты тактовых импульсов SCK. При этом имеется на выбор 5 фиксированных частот (1 МГц, 250 кГц, 50 кГц, 10 кГц, 2 кГц). Выбор частоты осуществляется из выпадающего списка «Частота тактового сигнала». По умолчанию при подключении программатора у него всегда устанавливается частота 1 МГц, поэтому будьте внимательны: если подключенный контроллер не определяется устройством, возможно, что для него установлена слишком высокая частота импульсов SCK. Попробуйте снизить ее и повторить попытку.

Возможно, у кого-то возникнет вопрос, зачем нужна столь низкая частота, как 2 кГц. Автор однажды столкнулся со следующей проблемой. При тактировании контроллера ATtiny13 внутренним генератором частотой 128 кГц и запрограммированном фьюзе CKDIV8 реальная тактовая частота контроллера установилась на уровне 16 кГц. При этом как следует из инструкции к контроллерам AVR, частота импульсов SCK должна быть меньше тактовой как минимум в 2,5 раза, то есть на уровне 6 кГц. Минимальная же частота импульсов SCK для того же программатора USBasp составляет 8 кГц, чего как оказалось, недостаточно. Таким образом, абсолютно рабочий контроллер оказался негодным к употреблению, пока не был создан программатор MICROPROG, который таки смог вернуть его к жизни. Но вернемся к описанию.

В поле «Идентификатор» указывается трехбайтовый шестнадцатеричный код, уникальный для каждого типа контроллера. Это поле доступно только для чтения.

В поле «Калибровочные ячейки» указываются значения, занесенные заводом-изготовителем при калибровке внутреннего RC-генератора контроллера. Количество значений зависит от количества фиксированных тактовых частот микроконтроллера (для ATTiny13 таких значений два – для 4,8 МГц и для 9,6 МГц). Это поле также доступно только для чтения.

В блоке «Конфигурационные ячейки» задаются конфигурационные биты, или фьюзы. Всего в микроконтроллерах AVR имеется три конфигурационных байта – старший (High Fuse, HF), младший (Low Fuse, LF) и дополнительный (Extended Fuse, EF). В представленной программе имеется двойная возможность задавать значения этих байтов.

1. Побитно, устанавливая или снимая флажки с соответствующих битов (важно помнить, что установленный флажок сбрасывает соответствующий бит в 0)

2. Побайтно, задавая сразу значение всего конфигурационного байта в правой части окна программы. Значение байта задается в шестнадцатеричном коде.

Оба способа задания конфигурационных ячеек равноценны. Изменения, созданные одним способом тут же отображаются и другим способом.

Кнопка «Чтение» позволяет считать фьюзы из контроллера. Кнопка «Запись» – записать выбранные в программе фьюзы в контроллер. Кнопка «Верификация» сравнивает выбранные в программе фьюзы с теми, которые записаны в контроллер. Кнопка «По умолчанию» устанавливает фьюзы по умолчанию для данного типа контроллера согласно инструкции (при этом биты устанавливаются только в программе, для их записи в контроллер необходимо воспользоваться кнопкой «Запись»).

В блоке «Ячейка защиты» задаются биты защиты. Их установка позволяет защитить программный код от несанкционированного чтения или записи. Все компоненты этого поля аналогичны таковым для блока «Конфигурационные ячейки».

В блоке «Программирование» осуществляются операции с flash- и eeprom-памятью контроллера. Кнопка «Стирание кристалла» предназначена для стирания всех областей памяти, включая биты защиты, flash и eeprom (последняя не стирается при установленном бите EESAVE). При этом конфигурационные ячейки остаются без изменения.

Под кнопкой расположено два почти идентичных подблока «Программирование FLASH» и «Программирование EEPROM». По нажатию на кнопку «Файл НЕХ» открывается диалоговое окно выбора файла с расширением *.hex. Имя выбранного файла и путь к нему отображаются в поле справа от кнопки. При этом поле является редактируемым, то есть путь можно прописать и вручную.

Кнопка «Чтение» позволяет считать flash-память контроллера в выбранный HEX-файл. По окончанию считывания на экране появится соответствующее сообщение. При этом в поле выбора файла можно указать имя несуществующего файла – он будет автоматически создан.

Кнопка «Запись» позволяет записать выбранный HEX-файл в flash-память контроллера. По окончанию программирования на экране появится соответствующее сообщение. ВАЖНО!!! Перед выполнением команды «Запись Flash» автоматически осуществляется выполнение команды «Стирание кристалла».

Кнопка «Верификация» позволяет сверить выбранный HEX-файл с содержимым flash-памяти микроконтроллера. По окончании процесса на экране появится сообщение об успешной верификации или об ошибке. Ошибка может быть вызвана установленными битами защиты или неверно выбранным для верификации файлом.

Назначение кнопок с идентичными названиями в подблоке «Программирование EERPOM» аналогично таковым для подблока «Программирование FLASH» за исключением того, что все операции здесь относятся к области eeprom-памяти, а файлы имеют расширение *.eep. Автор: Сокол Сергей, Радио 2-2012.

 

Exit mobile version