Ремонт&Сервис
 

Новости

О нас

О журнале Р&С

Архив Р&С

номера

разделы

Анонсы Р&C

ПОКУПАЕМ от АдоЯ

Архив АдоЯ

Файловый архив

Приглашаем

Реклама

Подписка

Где купить

Наши партнеры

Поиск Р&С

ТРИЗ

Запчасти

Архив_новости

 

Журнал

Реммаркет

схемы новости электроники

Ремонт аппаратуры (схемы, справочники, документация)

 
Ежемесячный журнал по ремонту и обслуживанию электронной техники

• бытовая техника

• аудиотехника

• техника связи

• телевизионная техника

• оргтехника

• видеотехника

• телефония

• элементная база

 

Архив/Номера/№8–2010

Назад
 
 
 

Игорь Безверхний

 
 
 

Микроконтроллеры PIC16F676 и PIC16F630: основные характеристики, особенности и карта памяти

Благодаря наличию 8-канального 10-разрядного АЦП микроконтроллер (МК) PIC16F676 нашел широкое применение в измерительной технике, в лабораторных блоках питания, зарядных устройствах и т.п. При этом его средняя цена в странах СНГ незначительно превышает 1 доллар США. Внутренняя структура и назначение выводов PIC16F676 совпадают с PIC16F630. Хотя PIC16F630 дороже PIC16F676 примерно на 20%, он имеет более ограниченные возможности. Программировать эти МК можно даже с помощью очень распространенного программатора PonyProg2000, если его доработать (см. [1]). Русскоязычной литературы по МК PIC16F676 и PIC16F630 практически нет. Надеемся, что настоящая статья в какой-то мере восполнит этот пробел.

Описание микроконтроллеров PIC16F676 и PIC16F630

Микроконтроллеры PIC16F676 и PIC16F630 являются представителями так называемого „среднего семейства» микроконтроллеров (Mid-Range MCU Family) фирмы Microchip Technology Inc.

Ядром МК этого семейства является высокопроизводительный RISC-процессор, ассемблер для которого содержит всего 35 инструкций (команд), что заметно упрощает его освоение. Именно поэтому многие специалисты рекомендуют начинать изучение программирования микроконтроллеров с МК этого семейства.

Все команды состоят из одного бинарного 14-тиразрядного слова и исполняются за один машинный цикл, кроме инструкций перехода, которые выполняются за два машинных цикла. Минимальная длительность машинного цикла равна 200 нс. Каждый машинный цикл выполняется за четыре периода тактового генератора МК, т.е. за четыре такта. Тактовая частота как собственного генератора МК PIC16F676/630, так и внешнего тактового сигнала может быть в пределах от нескольких Гц до 20 МГц.

Программно можно осуществлять выбор одного из шести источников тактового сигнала:

- RC — внешний RC генератор (два режима);

- INTOSC — внутренний генератор 4 МГц (два режима);

- EC — внешний тактовый сигнал;

- XT — стандартный резонатор;

- HS — высокочастотный резонатор;

- LP — низкочастотный резонатор.

Диапазон напряжения питания МК PIC16F630 и PIC16F676 составляет 2,0…5,5 В. Микроконтроллеры имеют низкое энергопотребление:

- менее 1,0 мА при напряжении питания 5,5 В и тактовой частоте 4 МГц;

- 400 мкА (типовое) при напряжении питания 2,0 В и тактовой частоте 4 МГц;

- 100 мкА (типовое) при напряжении питания 2,0 В и тактовой частоте 1 МГц;

- 8,5 мкА (типовое) при напряжении питания 2,0 В и тактовой частоте 32 кГц;

- менее 1,0 мкА в режиме энергосбережения (SLEEP);

- типовое значение тока в дежурном (Standby) режиме при напряжении питания 2 В равно 1 нА.

Эти МК содержат два 6-разрядных порта: A (выводы RA0… RA5) и С (выводы RС0… RС5). Большинство выводов портов микроконтроллеров являются многофункциональными. Конкретное назначение каждого из них задается программно.

При работе выводов порта А на вход для каждого вывода программно (с отдельным битом включения) могут быть подключены внутренние подтягивающие резисторы.

МК PIC16F630/676 содержат Flash-память программ объемом 1024 х 14 бинарных слов и память данных EEPROM объемом 64 байта. Flash-память допускает перезапись 100 000 раз, а EEPROM — 1000000. Записанная в EEPROM и FLASH-память информация сохраняется более сорока лет.

Эти контроллеры поддерживают прерывание по изменению уровня сигнала, срабатывающее от четырех источников. Для работы с прерываниями и подпрограммами PIC16F630/676 имеют 8-уровневый аппаратный стек. Все это обеспечивает прямой, косвенный и относительный режимы адресации команд и данных.

Периферия PIC16F630/676 включает в себя 8-битный таймер-счетчик (Timer0), 16-битный таймер-счетчик (Timer1), 12 сильноточных портов ввода-вывода, настраиваемых индивидуально, один аналоговый компаратор с интегрированным программируемым источником опорного напряжения и программно мультиплицируемыми входами и выходом.

Кроме того, МК PIC16F676 содержит 10-битный модуль АЦП с 8-ю программируемыми каналами. Сразу заметим, что главное отличие PIC16F676 от PIC16F630 — это возможность программирования 8-ми из 12-ти выводов портов как входов АЦП (AN0…AN7). Кроме того, PIC16F630 не содержит модуль АЦП.

Можно отметить следующие особенности МК PIC16F630/676:

– сброс при включении питания (POR);

– сброс по снижению напряжения питания (BOR);

– наличие таймера включения питания (PWRT), таймера запуска генератора (OST) и сторожевого таймера (WDT) с собственным встроенным RC-генератором (для повышения надежности работы МК);

– режим энергосбережения (SLEEP) с быстрым выходом из этого режима при работе с внутренним генератором 4МГц.

PIC16F630 и PIC16F676 имеют мультиплицируемый вывод MCLR и программируемую защиту кода. Они могут программироваться прямо на плате изделия через последовательный интерфейс ICSPT с использованием всего двух выводов МК. Отладка этих МК также может производиться прямо на плате через последовательный двухпроводной интерфейс ICD.

Микроконтроллеры PIC16F676 и PIC16F630 изготавливаются в 14-выводных корпусах PDIP, SOIC и TSSOP. Расположение выводов этих МК приведено на рис. 1, а назначение — в таблице 1.

Рис. 1

Таблица 1. Назначение выводов МК PIC16F630 и PIC16F676

№ вывода Обозначение Функция Описание
13 RA0/AN0/CIN+/ICSPDAT RA0 Двунаправленный вход-выход с программируемым подтягивающим резистором и вход прерываний
AN0 Вход канала 0 АЦП
CIN+ Неинвертирующий вход компаратора
ICSPDAT Вход-выход данных ICSP
12 RA1/AN1/CIN-/VREF/ICSPCLK RA1 Двунаправленный вход-выход с программируемым подтягивающим резистором и вход прерываний по изменению уровня сигнала
AN1 Вход канала 1 АЦП
CIN- Инвертирующий вход компаратора
VREF Вход внешнего опорного напряжения
ICSPCLK Вход тактовых импульсов ICSP
11 RA2/AN2/COUT/T0CKI/INT RA2 Двунаправленный вход-выход с программируемым подтягивающим резистором и вход прерываний по изменению уровня сигнала
AN2 Вход канала 2 АЦП
COUT Выход компаратора
T0CKI Вход тактовых импульсов таймера 0 (Timer0)
INT Вход внешнего прерывания
4 RA3/-MCLR/VPP RA3 Вход 3 порта А и вход прерываний по изменению уровня сигнала
-MCLR Вход сигнала внешнего сброса (Master Clear)
VPP Вход напряжения программирования
3 RA4/-T1G/AN3/OSC2/CLKOUT RA4 Двунаправленный вход-выход с программируемым подтягивающим резистором и вход прерываний по изменению уровня сигнала
 -T1G Вход таймера 1
AN3 Вход канала 3 АЦП
OSC2 Выход кварцевого генератора
CLKOUT Выход тактовых импульсов
2 RA5/T1CKI/OSC1/CLKIN RA5 Двунаправленный вход-выход с программируемым подтягивающим резистором и вход прерываний по изменению уровня сигнала
T1CKI Вход тактовых импульсов таймера 1 (Timer1)
OSC1 Вход кварцевого генератора
CLKIN Вход внешних тактовых импульсов и подключения времязадающей RC-цепи
10 RC0/AN4 RC0 Двунаправленный вход-выход
AN4 Вход канала 4 АЦП
9 RC1/AN5 RC1 Двунаправленный вход-выход
AN5 Вход канала 5 АЦП
8 RC2/AN6 RC2 Двунаправленный вход-выход
AN6 Вход канала 6 АЦП
7 RC3/AN7 RC3 Двунаправленный вход-выход
AN7 Вход канала 7 АЦП
6 RC4 RC4 Двунаправленный вход-выход
5 RC5 RC5 Двунаправленный вход-выход
14 VSS VSS Корпус
1 VDD VDD Напряжение питания

Примечание: обозначения и комментарии в ячейках на сером фоне относятся только к МК PIC16F676.

Оперативная память микроконтроллеров PIC16F630 и PIC16F676

Кроме энергонезависимой Flash-памяти программ и EEPROM памяти данных PIC16F630 и PIC16F676 содержат оперативную память (ОЗУ), которая имеет регистровую однобайтовую структуру. Крайний справа бит байта — это младший бит (бит 0), его весовой коэффициент равен 1, следующего — 2. Весовые коэффициенты каждого последующего бита удваиваются. Крайний слева — бит 7 (старший бит) имеет весовой коэффициент 128. Вся область ОЗУ этих МК разделена на два банка: Банк 0 (Bank 0) и банк 1 (Bank 1), доступ к которым осуществляется раздельно. Регистры ОЗУ делятся на регистры общего назначения (GPR — General Purpose Registers) и регистры специального назначения (SFR — Special Function Registers). Карта оперативной памяти МК PIC16F630 и PIC16F676 сведена в таблицу 2. Автор увидел эту форму представления ОЗУ различных микроконтроллеров фирмы Microchip в [2]. Она очень удобна при присвоении имен регистрам общего назначения (при написании программ), а также при симуляции программ в среде MPLab.

К ячейкам ОЗУ можно адресоваться прямо или косвенно, через регистр-указатель FSR (04h). Это также относится и к EEPROM памяти данных.

Регистры общего назначения (GPR)

Регистры общего назначения, для обозначения которых очень часто используется русская аббревиатура РОН, выбираются программистом при написании программы и используются самими программами для записи-считывания данных при их исполнении. РОН предназначены, прежде всего, для хранения промежуточных результатов выполнения операций, подпрограмм и вычислений. В нулевом банке (Bank 0) программисту доступны 64 РОН с адресами 20h-5Fh, причем все эти ячейки отображаются и в банке 1 (Bank 1) с адресами A0h-DFh. Это значит, что обращаться к РОН можно как из одного, так и из другого банка.

Регистры специального назначения (SFR)

Регистры специального назначения используются для управления ядром МК и его периферией.

МК PIC16F676 имеет 32 регистра специального назначения, а PIC16F630 на пять меньше — 27. Это связано с тем, что PIC16F630 не имеет АЦП. Часть регистров банка 0 отображаются в банке 1. В таблице 2 их названия выделены жирным шрифтом.

Подробное описание регистров специального назначения можно найти в англоязычном техническом описании (даташите) МК PIC16F630/676 [3] и русскоязычном справочнике [4]. Мы ограничимся назначением и кратким описанием этих регистров и, в первую очередь, тем, на что в [3 и 4] обращается недостаточно внимания.

Начнем со счетчика команд РС. Он показывает номер выполняемой команды программы (точнее, номер ячейки памяти команд, в которой размещена эта команда). Поскольку объем памяти команд составляет 1024 слова, то счетчик команд РС должен считать до 1024. Поэтому одного 8-битового регистра для его создания недостаточно. Счетчик команд РС имеет ширину 13 бит и способен адресовать восемь 14-битовых килослов, хотя для рассматриваемых МК достаточно в восемь раз меньше. Счетчик команд состоит из двух регистров — PCL и PCLATH.

PCL — младший регистр программного счетчика с адресом 02h, он содержит восемь младших разрядов счетчика.

PCLATH — старший регистр программного счетчика с адресом 0Аh, в нем расположены остальные 5 разрядов счетчика.

Оба регистра расположены в нулевом банке, но отображаются и в банке 1, где имеют адреса 82h и 8Аh соответственно.

Регистр STATUS — регистр состояний, он расположен в банке 0 и отображается в банке 1 (адреса 03h и 83h соответственно). Два старших бита этого регистра не используются и читаются как 0. Бит 5 обеспечивает переключение банков ОЗУ. Остальные биты — это флаги, состояние которых говорит о том, произошло или нет то или иное событие (см. [3, 4]). Флаги может использовать программист при написании программ.

OPTION_REG — регистр выборок (установок) расположен в первом банке (адрес 81h). Три младших разряда этого регистра обеспечивают установку коэффициента деления предделителя. Бит 3 — выбор места (способа) включения предделителя. Бит 4 выбирает способ приращения таймера 0 при подаче внешнего тактового импульса. Бит 5 — этот бит выбора источника тактового сигнала. Бит 6 обеспечивает выбор активного перепада сигнала на входе INT, а бит 7 определяет включение-выключение подтягивающих резисторов порта А.

INTCON (Interrupt Control Register) — это регистр управления прерываниями. Обращаться к нему можно из обоих банков (адреса 0Bh и 8Bh). Он содержит три флага прерываний и пять бит разрешения разных прерываний.

PIE1 (Peripheral Interrupt Enable Register 1) — регистр разрешения прерываний периферии 1 с адресом 8Ch. Биты 1, 2, 4 и 5 не задействованы и читаются как 0. Остальные биты используются для разрешения прерываний от периферийных узлов: EEPROM, АЦП (только для PIC16F676), компаратора и при переполнении таймера 1.

PIR1 (Peripheral Interrupt Register 1) — регистр прерываний периферии 1 с адресом 0Ch. Биты 1, 2, 4 и 5 не задействованы и читаются как 0. Остальные биты — это флаги прерываний от периферийных узлов: EEPROM, АЦП (только для PIC16F676), компаратора и при переполнении таймера 1.

PCON (Power Control Register) — регистр управления питанием с адресом 8Eh. Шесть старших бит этого регистра не задействованы и читаются как 0. Бит 1 — это флаг сброса при включении питания (POR), а бит 0 — это флаг сброса по снижению напряжения питания (BOD).

OSCCAL (Internal Oscillator Calibration Register) — это регистр калибровки внутреннего генератора. Адрес 90h. При работе с внутренним генератором 4 МГц используется для хранения заводской калибровочной константы, которая переписывается в этот регистр из последней ячейки Flash-памяти программ 03FF, что обеспечивает калибровку частоты внутреннего генератора. У этого регистра используются шесть старших разрядов, два младших читаются как 0. Минимальной частоте соответствует код 000000, максимальной — 111111, а среднему значению — 100000.

INDF (Indirect Addressing File) — регистр косвенной адресации с адресом 00 или 80. Этот регистр отсутствует физически. При обращении к нему считывается адрес, записанный в регистр FSR.

FSR (File Select Register) — регистр выбора косвенно адресуемого регистра с адресом 04 или 84. Этот регистр правильнее было бы назвать регистром хранения адреса косвенной адресации (см. INDF).

PORTA — регистр 6-битового двунаправленного порта А с адресом 05h. Два старших разряда этого порта не используются и читаются как 0. Кроме того, вывод RA3 этого порта может работать только на вход.

TRISA (PortА Tristate Register) — регистр управления конфигурацией порта А с адресом 85h. Два старших бита этого регистра не используются и читаются как 0, а бит 3, который управляет третьим битом регистра PORTA, всегда читается как 1. Остальные биты регистра обеспечивают включение соответствующих выводов порта А как входов или выходов.

WPUA (Weak Pull-Up Register) — регистр включения резисторов подтяжки порта А с адресом 95h. Два старших бита и третий бит этого регистра не используются и читаются как 0. Остальные биты используются как биты разрешения подключения внутренних подтягивающих резисторов соответствующих выводов порта А.

IOCA (Interrupt-On-Change PortA Register) — регистр разрешения прерываний при изменении уровня сигнала на выводах порта A с адресом 96h.

ANSEL (Analog Select Register) — регистр выбора назначения выводов портов аналог-цифра с адресом 9Fh. Имеется только в МК PIC16F676. Каждый из восьми бит этого регистра обеспечивает подключение к соответствующему выводу портов А и С определенного канала АЦП.

PORTC — регистр шестибитового двунаправленного порта С с адресом 07h. Два старших разряда этого порта не используются и читаются как 0.

TRISC (PortС Tristate Register) — регистр управления конфигурацией порта С с адресом 87h. Два старших бита регистра не используются и читаются как 0. Остальные биты этого регистра обеспечивают включение соответствующих выводов порта С как входов или выходов.

T1CON (Timer1 Control Register) — регистр управления таймером 1 с адресом 10h.

Регистр TMR1H (Holding Register for the Most Significant Byte of the 16-bit TMR1 Register) — это регистр временного хранения информации старшего байта 16-битового таймера-счетчика TMR1, а регистр TMR1L (Holding Register for the Least Significant Byte of the 16-bit TMR1 Register) — это регистр временного хранения информации младшего байта 16-битового таймера-счетчика TMR1. Адреса этих регистров 0F и 0E соответственно.

CMCON (Comparator Control Register) — регистр управления компаратором (19h).

VRCON (Voltage Reference Control Register) — регистр управления опорным напряжением (99h).

ADCON0 (A/D Control Register) — регистр управления АЦП (1Fh). Имеется только в МК PIC16F676. Используется для настройки АЦП.

ADCON1 (A/D Control Register) — регистр управления АЦП 1 (9Fh). Имеется только в МК PIC16F676. Используется для выбора входов МК в качестве входов АЦП. Имеется только в МК PIC16F676.

Регистры ADRESH (1E) и ADRESL (9E) — это старшие (8 бит) и младшие разряды (2 бит) 10-битного регистра результата АЦП. Имеются только в МК PIC16F676.

EEDAT (EEPROM data register) — регистр данных EEPROM (9Ah).

EEADR (EEPROM address register) — регистр адреса EEPROM (9Bh).

EECON1 (EEPROM control register 1) — регистр управления EEPROM 1 (9Ch).

EECON2 (EEPROM control register 2) — регистр управления EEPROM 2 (9Dh) отсутствует физически. Все биты этого регистра читаются как 0. Он используется для реализации обязательной последовательности команд при записи данных в EEPROM.

В заключение рассмотрим биты конфигурации МК PIC16F630/676.

Эти биты объединены в слово конфигурации шириной 14 бит. Под слово конфигурации отведен регистр в памяти программ по адресу 2007h.

Три младших бита слова конфигурации (2, 1, 0) обеспечивают выбор одного из восьми режимов тактового генератора:

- 111 = — RC-генератор с внешней времязадающей RC-цепью на выводе RA5/OSC1/CLKIN и выход тактовых импульсов CLKOUT (FOSC/4) на вывод RA4/OSC2/CLKOUT;

- 110 = — то же, но вывод RA5/OSC1/CLKIN используется как обычный вход-выход RA5;

- 101 = INTOSC — внутренний генератор 4 МГц с выводом тактовых импульсов CLKOUT (FOSC/4) на вывод RA4/OSC2/CLKOUT. RA5/OSC1/ CLKIN используется как обычный вход-выход RA5;

- 100 = — то же, но вывод RA4/OSC2/CLKOUT также используется как обычный вход-выход (RA4);

- 011 = EC — внешний тактовый сигнал CLKIN поступает на вход RA5/OSC1/CLKIN. Вывод RA4/OSC2/CLKOUT используется как обычный вход-выход (RA4);

- 010 = HS — высокочастотный резонатор между выводами RA4/OSC2/CLKOUT и RA5/OSC1/CLKIN;

- 001 = XT — стандартный резонатор между выводами RA4/OSC2/CLKOUT и RA5/OSC1/CLKIN;

- 000 = LP — низкочастотный резонатор между выводами RA4/OSC2/CLKOUT и RA5/OSC1/CLKIN.

Бит 3 — это бит разрешения-запрета работы сторожевого таймера.

Бит 4 — бит разрешения-запрета работы таймера включения питания (PWRT).

Бит 5 — бит выбора работы вывода –MCLR.

Бит 6 — бит разрешения-запрета сброса по снижению напряжения питания.

Бит 7 — бит защиты FLASH-памяти программ.

Бит 8 — бит защиты EEPROM-памяти данных.

Биты 9, 10 и 11 не задействованы и читаются как 0.

Биты 12 и 13 — это биты калибровки запретной зоны для сбросов при включении питания и по снижению напряжения питания. Эти биты запрограммированы производителем МК и при использовании этих сбросов должны быть сохранены.

Литература и интернет-источники

1. Безверхний И. Доработка PonyProg2000 для программирования PIC-контроллеров PIC16F676хх. Ремонт & сервис. 2010, №5, с. 55-59.

2. http://ikarab.narod.ru/ — сайт Корабельникова Е. А.

3. DS40039C. Data Sheet. PIC16F630/676. 14-Pin FLASH-Based 8-Bit CMOS Microcontrollers. Microchip Technology Inc. 2003. Режим доступа: http://ww1.microchip.com/downloads/en/devicedoc/40039e.pdf

4. Справочник по среднему семейству микроконтроллеров PICmicroTM (перевод DS33023А). ООО „Микро-Чип». Москва — 2002. — Режим доступа: http://www.microchip.ru/files/d-sheets-rus/pic16_5.pdf

 
 
 

Свежий номер

№3–2024

Опрос

Обратная связь

 

Издательство СОЛОН-ПРЕСС

 

RB2 Network.
 
Rambler's Top100

© Издательство «Ремонт и Сервис 21», 1998-2007. Все права защищены.
Воспроизведение материалов сайта, журналов «Ремонт & Сервис», «Покупаем от А до Я» и справочника «Ремонт и сервис электронной техники» в любом виде, полностью или частично, допускается только с письменного разрешения издательства «Ремонт и Сервис 21».

 
RB2 Network.