НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 93949596979899 ... 159


Процесс программирования PIC-микроконтроллеров среднего 0одсемейства, имеющих Память EPROM, включает следующие шаги:

1. Передается инструкция Load Data (Загрузка данных), содержащая слово команды.

2. Передается инструкция Begin Programming (Начало программирования) в PIC-микроконтроллер.

3. Задержка на 100 мс (пауза).

4. Передается инструкция End Programming (Окончание программирования) в PIC-микроконтроллер.

5. Передается инструкция Read Data (Считать данные) в PIC-микроконтроллер, при этом считываются 14 бит команды (старший и младший биты 16-разрядной последовательности данных не рассматриваются) из текущей ячейки памяти программ.

6. Пункты 1-5 (цикл программирования) повторяются 25 раз или до тех пор, пока не будут считаны правильные данные.

7. Пункты 1-4 повторяются три раза в каждом цикле, а повторение циклов происходит столько раз, сколько потребуется для правильной записи. Эта операция называется перепрограммированием.

8. С помощью инструкции Increment Address (Инкрементировать адрес) инкрементируется состояние программного счетчика PIC-микроконтроллера.

9. Пункты 1-8 повторяются до завершения записи всей программы приложения.

10. Инструкция Load Config (Загрузка слова конфигурации) отправляется на PIC-микроконтроллер для установки в программном счетчике адреса 0x02000.

11. Биты конфигурации PIC-микроконтроллера программируются при помощи цикла, описанного в пунктах 1-7.

Для программирования может быть использован следующий фрагмент:

ICSPProgram() Программа, предназначенная для "зашивки", { содержится в таблице адресов и данных,

int РС=0; Программный счетчик,

int 1, i i к; int retvalue=0;

for (1=0; (i-PGMsize) && (retvalue==0); I++)



if (PC !=address[i]) {

if ((address [I ]> = 0x02000 ) U (PC<0xO200O)) {

LoadConfiguratin(0x07FFE);

PC=Ox02000;

for (; PC,address[i]; PC++)

IncrementAddress(); for (i = 0; (i,<25) U (retvalue !=data[I ]);I + +) {

LoadData{ins[i]<<1); Цикл программирования.

BeginProgramming(); Dlay(lOOusec); EndProgramming(); Retvalue = ReadData();

if (i==25)

retvalue = -1; Ошибка программирования,

else{

retvalue =0 Трижды повторить цикл

программирования.

for (к = 0; k<(].3); к++){ LoadData{ins[i]<<l); BeginProgramming(); Dlay(lOOusec); EndProgramming(); }

} Конец оператора if.

} Конец оператора if.

} Конец оператора for.

} Конец программы.

После того как память будет запрограммирована, необходимо выключить и снова включить напряжение Vpp, считать программную память Р1С-микроконтроллера и сравнить ее содержимое с исходным. Затем следует повторить проверку при напряжениях питания Vdd, равных минимальному и максимальному значению рабочего диапазона (4,5 и 5,5 В). Вторая проверка используется программаторами Production PICmicro® MCU Programmers. Программаторы, в которых отсутствуют шаги проверки при минимуме-максимуме рабочего напряжения Vdd, известны как Prototype PICmicro® Programmers.

Микроконтроллеры младшего подсемеггства PIC 12С50х и PIC 16С50х программируются при помощи протокола, аналогичного протоколу программирования EPROM PIC-микроконтроллеров среднего подсеме11ства.



Первая команда вводит режим программирования (при этом на выводы Data и Clock подается низкий уровень, вслед за чем напряжение на выводе MCLR устанавливается равным 13В). После этого программный счетчик PIC-микроконтроллера устанавливается в состояние OxOFFF, что является адресом регистра конфигурации.

Модели PIC 12С50х и PIC 16С505 используют 12-битное командное слово. Когда данные поступают на PIC-микроконтроллер, три старших бита (вместо одного старшего) имеют значение О и не рассматриваются программатором при проверке. Первый отправляемый бит также равен О, за ним следует младший бит (LSB) командного слова (табл. 9.6).

Таблица 9.6

Инарукции для программирования микроконтроллеров PIC 12С50х и PIC 16С505

Инструкция

Загрузка данных

000010 + 0, данные (12 бит), ООО

Считывание данных

000100 + 0, данные (12 бит), ООО

Инкрементирование программного счетчика

001000

Завершение программирования

001110

Наиболее простой способ формирования 16 бит данных (инструкций) для программирования из кодов команд, которые должны быть записаны в PIC 12С50х и PIC 16С505, - сохранить команду в виде 16-разрядной переменной и затем сдвинуть ее влево на один бит. Инструкции, используемые для программирования PIC 12С50х и Р1С 16С505, имеют шестибитный заголовок, кроме того, существует дополнительная инструкция для слова конфигурации.

Фирма Microchip использует модифицированную версию алгоритма программирования, приведенного выше, для микроконтроллеров PIC 16F8x, имеющих память типа Flash. Такой алгоритм значительно проще, как и техническая реализация этой схемы программирования. На рис. 9.6 представлена типичная схема программирования Flash-контроллеров.

Электрические величины программирующих напряжений в основном совпадают с напряжениями, которые требуются для микроконтроллеров среднего подсемейства.

Однако существует одно различие в значениях токов линии Vpp. Так, в микроконтроллерах среднего подсемейства для программирования EPROM требуется ток до 50 мА. Микроконтроллеры 16F8x содержат встроенный генератор напряжения Vpp для программирования EPROM и Flash. Линия Vpp используется только для задания режима



0 ... 93949596979899 ... 159