9 февраля 2014 г.

Нулевой уровень


Вводная статья. Она описывает используемый мною программатор, его положительные и отрицательные стороны, показывает общие принципы подключения программатора к микроконтроллеру.

Для начала мой рабочий комп :)
DNS Porto [0133642]
Процессор: AMD E-350, 2 х 1600 МГц
Оперативная память: 4 Гб
Графика: AMD Radeon HD 6310M
Диски: SSD 64 Гб + ESATA HDD 320 Гб

Операционная система: Linux Mint 15 (Mate)






Для прошивки микроконтроллеров был куплен USBasp программатор
Сайт изготовителя: www.betemcu.cn
Страничка продавца: www.aliexpress.com/...
Стоимость покупки: 5.2$

Спаян очень аккуратно. В комплект входит: собственно плата программатора, разборный пластиковый корпус, 65см шлейф с 10-пиновыми разъемами, плата-переходник 10/6 пин. Может питать программируемый микроконтроллер от 5В или 3В.


Программатор собран практически по классической схеме от Thomas Fischl, но есть небольшие отличия и дополнения.
Ниже принципиальная схема снятая путем "прозвона" печатной платы.
(скачать схему USBasp_schematics.jpg)


Минусы данного программатора:
- Перемычки JP3 (Slow SCK) на плате не предусмотрено. 25-я ножка микроконтроллера просто никуда не подключена. Наличие данной перемычки порой весьма желательно, см. ниже.
- Перемычка JP2 (Self Programming) хоть и предусмотрена, но не распаяна на плате. Она представлена двумя отверстиями чуть выше светодиодов. Поэтому для перепрошивки МК самого программатора необходимо или установить этот джампер, или временно чем-либо надежно замыкать эти отверстия.
- Перемычка JP1 (Supply Target) обеспечивающая выбор напряжения питания (5/3.3 вольт) подаваемого на разъем программируемого микроконтроллера (от встроенного стабилизатора напряжения) реализована весьма своеобразным образом - в виде впаянного резистора ноль Ом. Таким образом чтобы программировать микроконтроллер от 3.3 В, нужно выпаять этот резистор. На плате этот резистор помечен "5V/3V3 Set".
- Использована модифицированная прошивка МК (по сравнению с Thomas Fischl), которая не всегда корректно работает с avrdude - утилитой для прошивки МК.
- Рекомендуемая китайцами утилита Progisp якобы полностью поддерживает программатор, умеет автоматически менять частоту SCK (видимо из этих соображений китайцы и убрали JP3), но увы, Progisp рассчитан на запуск из-под windows.
Progisp 1.72


Плюсы программатора:
- Классическая схема и возможность перепрошивки МК в программаторе различными альтернативными прошивками.
- Установлены защитные резисторы 100 Ом перед ножками MOSI, MISO, SCK, RESET выходного ISP разъема
- Установлен ращитный предохранитель 500мА, защищающий шину USB компьютера от короткого замыкания с схеме программируемого устройства.


Про режим Slow SCK
Если использовать avrdude и стандартную родную прошивку (usbasp.2011-05-28.tar.gz), то частота SCK без перемычки JP3 равна 375 кГц, с перемычкой 8 кГц.

Понижение частоты требуется для программирования микроконтроллеров с низкой частотой тактирования (меньше 1.5 МГц). Как известно многие МК исходно запрограммированы на заводе на тактирование от внутреннего RC-генератора 1 МГц, поэтому требуется установка джампера JP3, как минимум для первичного программирования МК.

В этом случае обычно программируют в два приема: сначала с джампером выставляют ставлю фьюзы для работы от внешнего кварца (4, 8, 12... МГц), затем снимают джампер, подключают кварц, и заливают микропрограмму на максимальной скорости обеспечиваемой программатором.

Без перемычки JP3 скорость программирования ~5 КБайт/с, с перемычкой ~0,1КБайт/с.

Например, ATmega8 (8К флеш памяти) шить на пониженной скорости весьма тоскливо (1.5 мин), а для ATmega328 (32К) вообще можно уходить на 5 минутное чаепитие.


С "китайской" версией прошивки МК в программаторе, утилитf avrdude постоянно выводит ошибку:
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
и пытается работать с прошиваемым МК на максимальной частоте SCK, и как вы уже понимаете, это будет получаться у ней не всегда удачно.



Поддерживаемые программатором микроконтроллеры
Сайт продавца утверждает что поддерживаются следующие микроконтроллеры:

AT89S51,AT89S52
AT86RF401,AT90CAN32,AT90CAN64,AT90CAN128,
AT90PWM2,AT90PWM2B,AT90PWM3,AT90PWM3B,
AT90PWM81,AT90PWM216,AT90PWM316,AT90S1200,
AT90S2313,AT90S2323,AT90S2343,AT90S4414,AT90S4433,
AT90S4434,AT90S8515,AT90S8535,AT90SCR100H,AT90USB82,
AT90USB162,AT90USB646,AT90USB647,AT90USB1286,AT90USB1287,
ATmega8,ATmega8A,ATmega8U2,ATmega8HVA,ATmega16,ATmega16A,
ATmega16HVA,ATmega16HVB,ATmega16M1,ATmega16U2,ATmega16U4,
ATmega32,ATmega32A,ATmega32C1,ATmega32HVB,ATmega32M1,ATmega32U2,
ATmega32U4,ATmega32U6,ATmega48,ATmega48P,ATmega48PA,ATmega64,ATmega64A,
ATmega64C1,ATmega64M1,ATmega88,ATmega88P,ATmega88PA,ATmega103,ATmega128,
ATmega128A,ATmega128RFA1,ATmega161,ATmega162,ATmega163,ATmega164P,ATmega164PA,
ATmega165,ATmega165P,ATmega168,ATmega168P,ATmega168PA,ATmega169,ATmega169P,
ATmega323,ATmega324,ATmega324PA,ATmega325,ATmega325P,ATmega328P,ATmega329,
ATmega329P,ATmega406,ATmega640,ATmega644,ATmega644P,ATmega644PA,ATmega645,
ATmega649,ATmega1280,ATmega1281,ATmega1284P,ATmega2560,ATmega2561,ATmega3250,
ATmega3250P,ATmega3290,ATmega3290P,ATmega6450,ATmega6490,ATmega8515,ATmega8535,
ATtiny10,ATtiny11,ATtiny12,ATtiny13,ATtiny13A,ATtiny15,ATtiny22,ATtiny24,ATtiny24A,
ATtiny25,ATtiny26,ATtiny28,ATtiny43U,ATtiny44,ATtiny44A,ATtiny45,ATtiny48,ATtiny84,
ATtiny85,ATtiny88,ATtiny167,ATtiny261,ATtiny261A,ATtiny461,ATtiny861,ATtiny861A,ATtiny2313,ATtiny231A




Программатор: разъемы для подключения
Программатор имеет USB разъем для подключения к компьютеру, и 10-выводной ISP разъем для подключения к программируемому микроконтроллеру. Также имеется 10-проводной шлейф, оконцованный ответной частью такого же разъема.



Допустим вы решили собрать некую схему, пусть будет такая:


Для прошивки микроконтроллера необходимо соединить выходы программатора VCC, GND, RESET, SCK, MOSI, MISO с соответствующими выходами микроконтроллера.

В рассматриваемом примере это ATMega8. Он имеет следующее расположение выводов:
Необходимые нам ножки :
1  — RESET
17 — MOSI
18 — MISO
19 — SCK
20 — AVCC

Итак, соединяем одноименные ножки МК и программатора. Вот как это может выглядеть если собирать на макетной плате:






___
Продолжение следует ....

Комментариев нет:

Отправить комментарий