Програматор за микроконтролери PIC16C84/PIC16F84 на фирмата Microchip

Двата варианта PIC16C84/PIC16F84 са идентични и взаимозаменяеми, като може би най-голямата им разлика от програмна гледна точка е, че 'F84 разполага с почти двойно по-голямо количество на регистрите с общо предназначение - 68 байта SRAM, относно 36 байта при 'C84. EEPROM-вариантът вече не се произвежда, тъй като FLASH-версията е технологично по-лека за призводителя, но поради големите количества, в които е произведен, все още бихте могли да попаднете и на EEPROM-вариант.

Схемата (фиг. 1) реализира лесен за изработка и компактен програматор, захранващ се от серийния порт на вашият компютър, без необходимост от допълнително захранване. Изводите RB6 и RB7, поставени в положение "0" (логическа нула) при нарастващ фронт на сигнала на извод MCLR/Vpp до достигане на ниво в границите от 12 до 14 V при захранване (Vcc) в диапазона 4,5-5,5 V, поставят микроконтролера в режим на серийно програмиране. При по-нататъшното програмиране изводите RB6 (вход с тригер на Шмидт) и RB7 (вход с тригер на Шмидт/изход) изпълняват съответно функциите на тактов сигнал и сигнал с данни. Бит RB7 променя функциите си в процеса на програмиране (вход/изход) затова е свързан едновременно към сигналите CTS (Clear To Send) - вход за комуникационния порт и DTR (Data Terminal Ready) - изход за комуникационния порт. Тактовият сигнал е свързан към извод RTS (Request To Send), който също е изход за порта. Линейният стабилизатор U2 осигурява стабилизирано напрежение от 5 V за захранване на чипа, където всъщност е най-голямата консумация при програмиране. C1 и C2 са филтри против самовъзбуждане на U2, а C3 е филтър за стабилизираните 5 V(Vdd). Ако ви е трудно да се снабдите с 78L05, бихте могли да го замените с ценеров диод с Vz=5.1 V и съпротивление за установяване на диода в работна точка. Това става по следния начин: между изводите 1 и 3 на липсващия U2 поставяте съпротивление от 2 к Omega, а на мястото на C2 поставяте ценеровия диод, като анодът му е свързан с извод 3 на U2, т. е. към съпротивлението. За изясняване процеса на програмиране ще се спрем по-подробно на принципа на "вътрешно схемното програмиране", използван от MICROCHIP за програмиране на контролерите им с FLASH или EEPROM памет. При влизане в режим на Програмиране/Проверка, адресното пространство на микроконтролера се интерпретира по различен начин спрямо режима на нормална работа. Разполагайки с 10-битов програмен брояч (PC - Program Counter) адресното пространство се разделя на две области: програмна - адреси $0000-$1FFF и конфигурационна - адреси $2000 - $3FFF. В нормален режим на работа адресното пространство е в диапазона $000-$3FF (1 КB), тъй като старшите 3 бита на PC се игнорират и при евентуално прехвърляне на последния физически съществуващ адрес $3FF се адресира отново същото адресно пространство, т.е адрес $400 се интерпретира като адрес $000, $401 като $001 и т.н. В режим Програмиране/Проверка потребителската (програмната) памет физически е същата както и при нормален режим на работа - адреси $0000-$03FF, но бихме могли да адресираме и несъществуваща памет на адреси $0400-$1FFF, защото старшите 3 бита на PC вече не се игнорират. От конфигурационната памет реално съществуват само адресите $2000-$200F, като в табл. 1 са описани част от тях, които имат отношение към процеса на програмиране.

Таблица 1
Адрес Описание/Функция
$2000 Идентификатор
$2001 Идентификатор
$2002 Идентификатор
$2003 Идентификатор
$2004 Резервиран
$2005 Резервиран
$2006 Резервиран
$2007 Конфигурационна дума

Конфигурационната дума е важна за установяване на опциите, с които микроконтролерът ще се стартира в нормален режим на работа, след като сме го програмирали. Идентификационните думи могат да бъдат записвани, но производителят препоръчва да се спазва следният формат 11 1111 1000 xxxx, където xxxx е идентификаторът. Клетките от паметта на всички адресируеми области са 14-битови, дори и в конфигурационната област. Това се определя от 14-битовия формат на инструкциите на разглеждания микроконтролер. За резервираните думи производителят не е публикувал допълнителна информация.

Конфигурационна дума - адрес $2007

13 12 11 10 9 8 7 6 5 4 3 2 1 0
- - - - - - - - - CP PWRTE WDTE FOSC1 FOSC0

Бит 4 CP

Code Protection (Защита на програмния код)
1-включена; 0-изключена.
Бит 3 PWRTE
Power Up Timer Enable Configuration Bit (Конфигурационен бит за разрешение на Power Up таймера-72 ms продължителност) - за защита на EEPROM-а от непредвидени записи и др. Поддържа се Reset, докато не се установи захранването.
1-разрешен; 0-забранен.
Бит 2 WDTE

Watch Dog Timer Enable (Разрешение на Watch Dog таймера).
1-разрешен; 0-забранен.
Бит 1-0 FOSC<1:0>
Oscillator Selection (Избор на тип осцилатор):
11-RC; 10-HS; 01-XT; 00-LP.

В режим Програмиране/Проверка микроконтролерът се управлява от команди, които бихте могли да проследите при наличието на по-съвременен осцилоскоп.
Както командите, така и данните се изпращат с младшия бит напред.
Команда/Описание Команда/ Битове
(ст.бит ... мл.бит)
Данни
Зареждане на конфигурация 0 0 0 0 0 0 0, данни (14 бита), 0
Зареждане на данни за програмната памет 0 0 0 0 1 0 0, данни (14 бита), 0
Четене на данни от програмната памет 0 0 0 1 0 0 0, данни (14 бита), 0
Увеличаване на адреса 0 0 0 1 1 0 -
Започване на програмиране 0 0 1 0 0 0 -
Зареждане на паметта за данни 0 0 0 0 1 1 0, данни (14 бита), 0
Четене от паметта за данни 0 0 0 1 0 1 0, данни (14 бита), 0
Пълно изчистване на програмната памет 0 0 1 0 0 1 -
Пълно изчистване на паметта за данни 0 0 1 0 1 1 -

Зареждане на данни за програмната памет

Потребителският софтуер за персоналния компютър, управляващ процеса на програмиране, има няколко варианта. При програмиране под DOS най-удачен е PIP02 на Silicon Studio. PIP02 е универсален софтуер за програмиране, като за различните типове програмиращи платки се използват различни драйвери, които трябва да се стартират преди стартирането на PIP02. В този случай се стартира драйверът COM84.EXE, който остава резидентен в паметта до премахването му с опция REMOVE. Драйверът може да се стартира с няколко опции: COMn, където n е в диапазона 1..3 и избира комуникационния порт, REMOVE премахва драйвера от паметта, BYPASS не позволява виртуализирането му от Windows. С PIP02 се работи много леко и затова няма да се спираме подробно в описание на менютата му. Преди да започнете програмиране, не забравяйте да се уверите дали сте избрали правилния тип на програмирания микроконтролер.
При работа под Windows може да използвате PICSER на Silicon Studio, който също работи с драйвери за различни видове платки. За да инсталирате драйвер COM84.DRV, използвайте следната последователност:
<>1. Копирайте COM84.DRV в /WINDOWS/SYSTEM.
2. Добавете линията PINAPI=COM84.DRV в SYSTEM.INI в секция [DRIVERS].
3. Стартирайте PICSER.EXE.
4. Натиснете върху бутон "Select".
5. В появилото се меню изберете "Setup".
6. Изберете желаният от вас комуникационен порт (COM 1..4).
7. Натиснете "OK".
8. Натиснете "OK".
9. Натиснете "EXIT".
10. Стартирайте отново PICSER.EXE.

Използвани елементи
Интегрални схеми 78L05
Резистори и кондензатори R1,R2 - 4.7 k, R3 - 10 к,
C1, C2- 100 nF, C3 - 47 F
Диод 1N4001

Печатна платка на устройството - страна "спойки" _(8KB, PDF)
- страна "елементи" _(18KB, PDF)

инж. Данаил ЧАНЕВ

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