Схемата (фиг. 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 год.