Програматор за микроконтролери от серията AVR на фирмата Аtmel


Възможности и предимства:
Програмира следните видове микроконтролери:
AT90S1200 (C, D), AT90S2313 (A), AT90S2323 (A), AT90S4414 (A), AT90S8515 (A), ATmega103 (A), AT89S8252

Програмиране директно върху платката която разработвате
При работа със стандартен програматор се процедира по следния начин: изваждате микроконтолера от вашата платка (за целта е необходимо той да е монтиран върху цокъл), програмирате го и го връщате отново на платката. Това в повечето случаи води до деформации на чипа и цокъла и до евентуални грешки от невнимание например неправилно поставяне, което може да доведе и до повреди. С настоящия програматор е необходимо при разработване на вашата платка да изведете сигналите, използвани за програмиране на малък куплунг, и тъй като не се налага вадене на чип, бихте могли да запоите микроконтролера директно върху платката.

Комуникация с PC по стандартен сериен интерфейс RS232C:
Освен компактността на интерфейса, предимство е, че той е галванично развързан спрямо компютъра, което не може да се постигне, ако работите с паралелен интерфейс (например интерфейса за принтер). Програматорът е лесно преносим и единственото изискване е наличието на какъвто и да е персонален компютър.

Програмира както вътрешната FLASH памет, така и вградения EEPROM
Микроконтролерите от фамилията AVR позволяват независимо програмиране на програмната FLASH памет и вградения ЕЕPROM за данни. При асемблиране се изработват два отделни файла за FLASH и EEPROM. Често се налага записването само на един от тях.

Програмиране на Lock битовете
Lock битовете са 2 и служат съответно за защита на вградените FLASH и EEPROM памети от четене. При четене в защитен режим, контролерът връща ехо на последния изпратен му байт, което в случая е адресът на байта за четене, а не реално записаните данни. Lock битовете се изчистват при команда "Chip erase" (изтриване на чипа).

Захранва се от потребителската платка
Не е необходимо външно захранване за програматора, което значително намалява конструктивните му размери.

Минимална консумация
Не повече от 35 mА.

 
фиг. 1
Програматорът (фиг. 1) реализира така наречения Serial Downloading алгоритъм за програмиране, заложен във всички микроконтролери от серията AVR на фирмата Atmel на базата на синхронен сериен интерфейс. Този тип програмиране изисква 3 комуникационни линии (SCK, MISO, MOSI), захранване в границите 2.7-6 V и разбира се обща маса. За да не настъпят конфликти с периферните схеми върху вашата развойна платка, е необходимо те да бъдат поставени в неактивно състояние, което налага използването на още един сигнал - RESET. Този сигнал е необходим също и за установяването на програмирания микроконтролер в състояние "Готовност за програмиране". На фиг. 2 е показано разположението на сигналите върху програмиращия куплунг.
Забележка: Програматорът е разработен за програмиране директно върху платката на потребителя. Ако желаете да програмирате само чипове (без платка), е необходимо да използвате допълнителна приставка, която може да се изработи в зависимост от програмирания микроконтролер.
фиг. 2
Таблица 1
Сигнал Описание
MISO (Master Input Slave Output) Вход за програматора и изход за програмирания MCU*. Вход на програматора за приемане на данни.
MOSI (Master Output Slave Input)Изход за програматора и вход за програмирания MCU. Изход за предаване на данни от програматора.
SCK (Synchronious Clock) Генерира се от програматора и тактува серийната връзка.
RESET За да се приведе програмираният MCU в съответния режим за програмиране.
XTL1 Изводи от кварцовия резонатор(разположен върху платката на програматора) за програмирания микроконтролер. Използва се само в случай, че работите с приставка за програмиране.
Vcc Захранване, вход за програматора. Позволява програмирането да се извърши с напрежението, с което се захранва системата, в която е включен програмираният MCU.
Vcc трябва да е в границите 2.7-6 V, за да може вграденият в MCU повишаващ импулсен регулатор да изработи необходимото напрежение за програмиране на FLASH и EEPROM паметите.
GND Common Ground - Обща маса.
* MCU(Micro Controller Unit ) - Микроконтролер
Забележка: Поради спецификата на програмиране (Serial Downloading) не е възможно да се програмират Fuse битовете, които обикновено са два (за RC осцилатор и за забрана на Serial Downloading). В незаписано състояние те разрешават Serial Downloading и забраняват RC осцилатора, т. е. работи се с кварц.
Начин на работа и конструктивни изисквания
При установяване на RESET в ниско ниво и изпращане на съответните команди, програмираният MCU влиза в режим на серийно зареждане (Serial Downloading). Автоматично установява всичките си I/O линии във входове, като същевременно забранява и вътрешните поляризации към захранването (pull-ups). Потребителят би трябвало така да разработи платката си, че при активен RESET ("0") използваните периферни схеми да установяват изходите си към MCU в "трето" състояние, така че те да не подават сигнали към програмирания микроконтролер. Ако това е невъзможно за всички I/O линии, задължително е поне използваните за програмиране (MISO,MOSI и SCK) да са "изолирани" от периферията. Желателна е също и добра шумозащитеност на линията SCK по платката на потребителя. Консумацията от Vcc при програмиране не превишава 35 mА.
Всеки от контролерите има записан идентификатор за интелигентно програмиране. При запитване програмираният MCU отговаря с 3 байтов индентификационен код XX YY ZZ, който се тълкува според Табл. 2.
Въпреки това в софтуера за програмиране се задава и типът на контролера, тъй като идентификаторите не определят точно номера на контролера, а дават информация за производителя и размера на паметта. Трябва да се има предвид, че паметта може да е защитена от четене. Връщаният идентификатор в този случай е 00 01 02, който не дава информация за типа на програмирания чип. Идентификаторът е записан във FLASH паметта и при определени обстоятелства може също да бъде изтрит.
Таблица 2
Байт XX YY ZZ
Код Код на производителя Фамилия и размер на FLASH паметта Номер на чипа
Валидни кодове $1E
Atmel
$90
AVR с 1к FLASH
$01
AT90S1200
$1E
Atmel
$91
AVR с 2к FLASH
$01
AT90S2313
$1E
Atmel
$92
AVR с 4к FLASH
$01
AT90S4414
$1E
Atmel
$93
AVR с 8к FLASH
$01
AT90S8515
$00
$01 $02
MCU е защитен от четене
$FF $FF $FF
Изтрит код на устройство
RS232C към PC работи със скорост 19200 bps, което позволява сравнително бърз обмен на данни. Реално това има значение защото при всяка комадна се изпращат и приемат данни, а и в края на програмирането се извършва проверка (verify) за коректността на записаните данни в цялата програмирана памет. Времето за програмиране се определя от времето за програмиране на клетките на FLASH паметта, а не от времето за обмен на данни.
Програматорът е базиран на процесор AT90S1200. Вариант на асемблер кода на програмата (source code) може да намерите във WEB сайта на Atmel под името AN910.ASM . При желание от страна на потребителя (и разбира се възможности :)), или поява на нови микроконтролери от фамилията, потребителят би могъл да разшири възможностите на програматора, като за целта е необходимо да добави новия код към съществуващия и да презапише управляващия процесор. Тъй като управляващият процесор е от същата фамилия, не е необходим допълнителен хардуер.
Програматорът се обслужва от стандартния софтуер за PC на Atmel, имащ варианти както за работа под DOS, така и за Windows 95/98. За съжаленение няма версия за Windows 3.1x и потребителите на тази операционна система ще трябва да работят под DOS.
Допълнителна информация относно продуктите на фирмата Atmel бихте могли да получите посредством Internet на адрес www.atmel.com . Там ще намерите асемблер и симулатор за чиповете от фамилията AVR. Разбира се бихте могли да намерите и по-добър развойен софтуер, тъй като софтуерът предлаган от Atmel не е най-сполучливия вариант за работа.

Използвани елементи
Интегрални схеми U1 - AT90S1200, U2 - MAX232.
Резистори и кондензатори R1 - 1 МOM, R2 - 470 OM, R3 - 4.7 кOM, C1 - 100 nF,
C2, C3, C4, C5- 1 mikroF, C6, C7, C8, C9 - 18 pF.
Кварцови резонатори Y1, Y2 - 4 MHz.

Печатна платка на устройството - страна "спойки" (19KB, PDF)
- страна "елементи" (40KB, PDF)
инж. Данаил ЧАНЕВ

списание "Млад конструктор" брой 1/2000 год.