Вводная
лекция «программирование
микропроцессоров,
микроконтроллеров,
микрокомпьютеров
»
Адрес
документа: |
http://90.189.213.191:4422/temp/gr_mi38_37_mp1_sh/gr_mi38_37_mp1_sh.doc |
Прежде
всего,
необходимо
обрисовать
ситуацию с
микроконтроллерами.
Дело в том,
что они
выпускаются
не одной
фирмой, а
сразу несколькими,
поэтому
существует
довольно много
различных
микроконтроллеров,
которые
имеют разные
параметры,
разные особенности
при
использовании
и различные возможности.
Различаются
они по
скорости быстродействия,
дополнительным
интерфейсам
и количеству
выводов.
Самыми
популярными
на всем
пространстве
бывшего СССР
являются
представители
РІС и AVR.
Программирование
микроконтроллеров
AVR и РІС не
составляет
труда, что и
обеспечило
их популярность.
Программирование
микроконтроллеров
осуществляется,
как правило,
с помощью
специальных
приспособлений,
которые
называются
программаторами.
Программаторы
могут быть
или
покупными или
самодельными.
Но
при прошивке микроконтроллера
с помощью
самодельного
программатора
шанс того,
что он
превратится
в «кирпич»,
довольно
высокий. Есть
ещё один
вариант,
который
можно
рассмотреть
на примере
платы
«Ардуино».
Плата
работает на
МК фирмы Atmel, и в
ней
осуществляется
программирование
микроконтроллеров
AVR. В плате уже есть
заранее
прошитый
порт USB,
которые позволяют
безопасно
прошить
используемый
микроконтроллер,
не давая
пользователю
доступа к
данным, что
могут этот
самый МК
вывести из
строя.
При
выборе
микроконтроллеров
следует обратить
внимание на
некоторые
аппаратные различия
даже не
разных
компаний, а и
в одном
модельном
ряду. Для
начала
следует
обратить
внимание на
возможность
перезаписи информации
на
микроконтроллер.
Эта функция
позволит вам
долго
экспериментировать
с одним МК.
. Также
обратите
внимание на
количество
выводов с их
предназначением.
Не обделяйте
вниманием и
частоту
работы кристалла,
на котором
работает
схема: от неё
зависит
количество
операций в
секунду, которые
может
выполнить
микроконтроллер.
Микроконтроллеры
AVR
являются
разработкой
и продуктом
фирмы Atmel. Отличие
данных
микроконтроллеров
от аналогичных,
в довольно
удачной
архитектуре
ядра
процессора и
широкому
набору
периферийных
модулей, что
облегчает
процесс
программирования
устройства.
Эти
микросхемы
производятся
по технологии
0,35 мкм, и
работают с
тактовой
частотой от - 16
МГц,
обеспечивая
производительность
до 16 MIPS.
В основе
микроконтроллеров
семейства AVR
лежит 8-ми
битное
центральное
процессорное
устройство,
построенное
по принципу
RISK-архитектуры.
Базой
данного
блока
является арифметико-логическое
устройство -
АЛУ. По тактовому
сигналу из
памяти
программ в
соответствии
с содержимым
счетчика команд,
выбирается
нужная
команда и
выполняется
вычисление.
При выборе
команды из
памяти
программ
происходит
выполнение
предыдущей
выбранной
команды, это
позволяет получить
быстродействие
на уровне 1 MIPS на
1 МГц. АЛУ
подключено
к 32-м регистрам
общего
назначения.
РОН
находятся в
начале
адресного
пространства
оперативной
памяти, но не
являются ее
частью физически.
Поэтому к ним
идёт
обращение и
как к
регистрам, и
как к памяти.
Фирма
ATMEL выпускает
такие
семейства
8-битных
микроконтроллеров:
tiny и mega.
Микроконтроллеры
tiny имеют
Флэш-ПЗУ по 1 и 2
кбайт в
корпусе на 8 –20 выводов,
а
микроконтроллеры
mega
соответственно:
Флэш-ПЗУ 8 –128
кбайт в
корпусе на 28 –64
вывода
.
Технические
характеристики
микроконтроллеров
AVR:
-
частота до 16
МГц с
временем
выполнения
команды 62,5 нс;
-
встроенный
програмируемый
RC-генератор, частота
1, 2, 4, 8 МГц;
-
Флэш-ПЗУ
программ,программируемое
в системе, до 128
кбайт;
-
двухпроводный
интерфейс TWI,
совместимый
с
интерфейсом
I2C;
-
многоканальный
8-, 9-, 10-, 16-битный
ШИМ-модулятор;
-
10-битный АЦП
со временем
преобразования
70 мкс и
дифференциальными
входами;
-
программируемый
коэффициент
усиления — 1; 10
или 200;
-
встроенный
источник
опорного напряжения;
-
аналоговый
компаратор;
-
настраиваемая
схема
задержки запуска
после подачи
питания;
- схема
слежения за
напряжением
питания;
-
JTAG-интерфейс
для
подключения
эмулятора;
- электрически
перепрограммируемое
ПЗУ данных до
4 кбайт;
-
внутреннее
ОЗУ со
временем
доступа 1
такт, до 4
кбайт;
-
мощный набор
команд (более
120 инструкций);
- 6
аппаратных
команд
умножения
(для семейства
mega);
-
развитая
система
адресации,
оптимизированная
для работы с
С-компиляторами;
- 32
регистра
общего
назначения
(аккумулятора);
-
синхронный (USART)
или
асинхронный
(UART) последовательные
порты;
-
синхронный
последовательный
порт (SPI);
-
потребление
тока 0.1 мА в
активном
режиме.
Типы микроконтроллеров
AVR: ТИП
память программ,КБайт
EEPROM
данных,байт
ОЗУ данных,байт
Такт.частота,МГц
ATTiny11 1 - - 6 6 ATTiny11L 1 - - 2 6 ATTiny12 1 64 - 8 6 ATTiny12L 1 64 - 4 6 ATTiny12V 1 64 - 1,2 6 ATTiny13 1 64 64 20 6 ATTiny15L 1 64 - 1,2 6 ATTiny28L 2 - - 4 19 ATTiny28V 2 - - 1,2 19 AT90S2313 4 256 512 10 15 ATMega16 16 512 1024 16 32 ATMega48 4 256 512 20 40
|
|
Так-же
микроконтроллеры
AVR семейства
Mega имеют возможность
самостоятельного
изменения содержимого
своей памяти программ.
Это
позволяет
создавать на
их основе
гибкие
системы,
алгоритм
работы
которых
будет изменяться
самим
микроконтроллером
в зависимости
от
внутренних
условий и
внешних
событий. Микроконтроллеры AVR
имеют
встроенный
8-канальный
10-битный
аналого-цифровой
преобразователь.
Режим
энергосбережения
позволяет
отключить
неиспользуемые
модули и в
результате
снизить
энергопотребление.
Микроконтроллеры
AVR могут
работать при
напряжениях питания
2 - 6 Вольт. Ток
потребления
в активном
режиме
составляет
около 1 мА для
работы на
частоте 500 кГц, 6
мА для 5 МГц и
до 10 мА на
частоте 12 МГц.
Есть
возможность
переводить
их программным
путем в такие
режимы
пониженного
энергопотребления:
1.Экономичный
режим.
Продолжает
работать только
генератор
таймера
обеспечивая
сохранность
временной
базы,
остальные
функции
отключены.
2.Режим
холостого
хода.
Прекращает
работу только
процессор и
фиксируется
содержимое памяти
данных,
внутренний
генератор
синхросигналов,
таймеры,
система
прерываний и сторожевой
таймер
продолжают
работать, при
этом ток
потребления
в районе 2,5 мА
на частоте 12
МГц.
3.Стоповый
режим.
Сохраняется
содержимое регистрового
файла,
останавливается
внутренний
генератор
синхросигналов,
и
останавливаются
все функции,
до поступления
сигнала
внешнего
прерывания
или аппаратного
сброса, ток
потребления
составляет 80
мкА.
Пример
схемы на
микроконтроллере -- ЛЮКСМЕТР
Конструкция
люксометра
Прибор
для
измерения
освещенности
обычно
используется
для
измерения
уровня светового
потока,
падающего на
поверхность.
Световой
поток -
видимый
компонент,
который
определяется
человеческим
глазом в
видимом
спектре. Это
означает, что
прибор
хорошо
подходит для
уровня освещенности,
подходящему
для глаза. Но
есть разница
между
спектрами
реакции
обычных кремниевых
фотодиодов и
человеческим
глазом,
поэтому они
не могут быть
использованы
для
качественного
люксметра.
Фотодиод
желательно
использовать
такой, который
пропорционален
входной
мощности
света. В этой
схеме,
выходной ток
преобразуется
в напряжение
с I-V
преобразователя,
он
обрабатывается
контроллером
Attiny-26 и значение
показыватся
LED индикаторами.
Элемент U1 в
этой схеме
выступает в качестве
вольт-амперного
преобразователя
и его
коэффициент
пересчета
становится 50
мв/мкА по
обратной
связи R5.
Конденсатор
С5 вводит
коррекцию
коэффициента
усиления, он
нейтрализует
собственную
ёмкость
фотодиода.
Микроконтроллеры
PIC
|
Кол-во
выводов/портов |
ПП,
слов |
ОЗУ,
Кбайт |
FLASH ПД,
Байт |
Таймеры |
Встроенные
периферийные
модули |
Розн.цена,
$ |
PIC12F629 |
8/6 |
1К |
64 |
128 |
TMR0, TMR1 |
аналоговый
компаратор |
1,4 |
PIC12F675 |
8/6 |
1К |
64 |
128 |
TMR0, TMR1 |
аналоговый
компаратор,
10-разр. АЦП |
1,8 |
PIC12F683 |
8/6 |
2К |
128 |
256 |
TMR0, TMR1, TMR2 |
аналоговый
компаратор,
10-разр. АЦП,
модуль захвата/сравнения/ШИМ |
2,3 |
PIC12F630 |
14/12 |
1К |
64 |
128 |
TMR0, TMR1 |
аналоговый
компаратор |
1,8 |
PIC16F676 |
14/12 |
1К |
64 |
128 |
TMR0, TMR1 |
аналоговый
компаратор,
10-разр. АЦП |
1,9 |
PIC16F684 |
14/12 |
2К |
128 |
256 |
TMR0, TMR1, TMR2 |
аналоговый
компаратор,
10-разр. АЦП,
модуль захвата/сравнения/ШИМ |
2,5 |
PIC16F688 |
14/12 |
4К |
256 |
256 |
TMR0, TMR1, TMR2 |
аналоговый
компаратор,
10-разр. АЦП,
модуль захвата/сравнения/ШИМ,
USART |
2,8 |
PIC16F628A |
18/16 |
4К |
224 |
128 |
TMR0, TMR1, TMR2 |
аналоговый
компаратор,
10-разр. АЦП,
модуль захвата/сравнения/ШИМ,
USART/SC |
3,5 |
PIC16F648A |
18/16 |
4К |
256 |
256 |
TMR0, TMR1, TMR2 |
аналоговый
компаратор,
10-разр. АЦП,
модуль захвата/сравнения/ШИМ,
USART/SC |
3,9 |
PIC16F84A |
18/13 |
1К |
68 |
64 |
TMR0 |
популярный,
устарел |
4,6 |
PIC16F818 |
18/16 |
1К |
128 |
128 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП,
SPI(master/slave)/I2C(slave)модуль
захвата/сравнения/ШИМ |
3,0 |
PIC16F819 |
18/16 |
2К |
256 |
256 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП,
SPI(master/slave)/I2C(slave)модуль
захвата/сравнения/ШИМ |
3,3 |
PIC16F870 |
28/22 |
2К |
128 |
64 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП, модуль
захвата/сравнения/ШИМ,
USART |
4,0 |
PIC16F871 |
40/33 |
2К |
128 |
64 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП, модуль
захвата/сравнения/ШИМ,
USART, PSP (parallel slave port) |
5,0 |
PIC16F872 |
28/22 |
2К |
128 |
64 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП, модуль
захвата/сравнения/ШИМ,
USART, MSSP SPI(master/slave)/I2C(master/slave) |
5,5 |
PIC16F873 |
28/22 |
4К |
192 |
128 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП, модуль
захвата/сравнения/ШИМ,
USART, MSSP SPI(master/slave)/I2C(master/slave) |
6,5 |
PIC16F874 |
40/33 |
4К |
192 |
128 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП, модуль
захвата/сравнения/ШИМ,
USART, MSSP SPI(master/slave)/I2C(master/slave), PSP(parallel slave port) |
7,5 |
PIC16F876 |
28/22 |
8К |
368 |
256 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП, модуль
захвата/сравнения/ШИМ,
USART, MSSP SPI(master/slave)/I2C(master/slave) |
7,5 |
PIC16F877 |
40/33 |
8К |
368 |
256 |
TMR0, TMR1, TMR2 |
10-разр.
АЦП, модуль
захвата/сравнения/ШИМ,
USART, MSSP SPI(master/slave)/I2C(master/slave), PSP (parallel slave port) |
7,8 |
Таблица
1.1.
Иллюстрация
сочетаний
свойств
различных
типов
микроконтроллеров
PIC16. Все МК имеют
·
Диапазон
тактовой
частоты 0...20МГц.
·
Одинаковое
ядро.
·
35
простых
инструкций.
·
Режим
энергосбережения
SLEEP.
·
POR (Power On Reset) -
сброс по
подаче
питания (при
достижении Vddmin).
·
OST (Oscillator Start-up Timer) -
удерживает
МК в
состоянии
сброса на время
запуска и
стабилизации
тактового
кварцевого
или
кристаллического
генератора.
·
BOD или BOR (Brown-out Detect
или Brown-out Reset) -
детектор
снижения Vdd с
настраиваемым
порогом.
·
WDT (Watchdog Timer) - сторожевой
таймер с
настраиваемым
периодом.
·
Микроконтроллеры
PIC16F873…877 могут
программировать
свою память
программ в
процессе
работы.
·
Все 8-ми и
14-ти выводные
МК, кроме
режимов генератора,
типичных для
всех PIC16, имеют
встроенный
стабильный (1%)
тактовый RC
генератор.
Языки
программирования
микроконтроллеров
В
качестве
языков
программирования
микроконтроллеров
используется
два: С/С++ и ассемблер.
Каждый из них
имеет свои
преимущества
и недостатки.
Так, если
говорить про
ассемблер, то
он даёт
возможность
сделать всё
очень тонко и
качественно,
особенно
важно это,
когда не
хватает
оперативной
памяти или
оперативных
мощностей (что,
впрочем,
довольно
редко
происходит).
Но его
изучение и
написание
программ на
нём требует
довольно
много усилий,
пунктуальности
и времени.
Поэтому для
разработок
на основе
микроконтроллеров
часто
используют
языки
программирования
С и С++. Они
являются более
понятными, по
своему виду и
структуре они
близки
человеческой
речи, хотя и
не представляют
из себя её в
полноценном
понимании.
Также они
имеют очень
хорошо
проработанный
функционал,
который
может
запросто взаимодействовать
с аппаратной
частью, представляя,
что это всего
лишь элемент
программы.
При всех
своих явных
преимуществах
на С и С++
создают
более
объемные
программы, нежели
на
ассемблере.
Также в
отдельных
случаях,
когда
критичным
является
используемое
оперативное
пространство,
можно
соединить
эти языки.
Почти все
среды
разработки
для С и С++
имеют возможность
установки в
программу
ассемблерных
вставок.
Поэтому в
случае возникновения
проблемы на
критическом
участке
можно
написать
ассемблерную
вставку и интегрировать
её в прошивку
для микроконтроллера,
а саму
прошивку,
точнее,
большую её
часть,
написать на С
или С++.
Программирование
микроконтроллеров
на СИ
является более
лёгким,
поэтому
многие
выбирают
именно эти
языки. Но те,
кто не боится
трудностей и
хочет понять
особенность
работы
аппаратуры,
могут
попробовать
свои силы и с
ассемблером.
Пример
программы на Ассемблере:
;======================== «ШАПКА» ПРОГРАММЫ ======================
;=========================================
; Имя файла: main.asm
; Дата: 28.05.07
; Автор: Ирков Алексей Николаевич
; E-mail: nsuirkov@ngs.ru
;==================================================================
; Используется микроконтроллер PIC16F877. Частота кварца 20 МГц.
;==================================================================
; Описание программы
; Данная программа заставляет все светодиоды загореться
;==================================================================
;================================================
; Настройка и конфигурация микроконтроллера
;================================================
LIST p=16F877
__CONFIG H'3F72'
;================================================
; Инициализация регистров специального назначения
;================================================
INTCON equ 0x0B
STATUS equ 0x03
PORTB equ 0x06
TRISB equ 0x86
;================================================
; Инициализация констант
;================================================
RP0 equ 0x05
;================================================
; Инициализация переменных в памяти данных
;================================================
;================================================
; Начало программы
;================================================
ORG 0x00
goto Start
В таблице
ниже пример
команды
Пример
программирования
на СИ
#include <pic.h>
__CONFIG(0x03F72);
int i=0;
void main(void)
{
T0IE=0;
GIE=0;
TRISB=0;
PORTB=0;
while(1==1)
{
PORTB++;
for(i=0; i<10000; i++)
{
i++;
i--;
}
}
}
Визуальные
языки
В отличие
от
классических
языков
программирования,
визуальные
языки
позволяют разрабатывать
программы в
виде
изображений.
Среди таких
языков можно
выделить FlowCODE или Scratah.
Достоинством
визуальных
языков
является
хорошо
воспринимаемая
структура
алгоритма.
Это
позволяет
просто
разобраться
в его
функционировании
любому
человеку, знающему
основные
символы
языка.
Перевод
структурных
схем в
команды микроконтроллера,
как правило,
выполняется
не сразу.
Вначале
алгоритм
транслируется
в команды
ассемблера
или
какого-либо
языка
высокого
уровня.
Только затем,
все преобразуется
в машинный
код.
Такая
схема,
несмотря на
свою
сложность,
позволяет
использовать
наиболее
удобные
компиляторы
разных разработчиков.
Еще одним достоинством визуального программирования становится простота изучения, поэтому подобные языки часто используются для обучения детей. Недостатком визуального подхода является громоздкость исходных материалов. Тем не менее, подобные языки программирования нашли очень большое распространение для решения специальных задач.
Промышленные
контроллеры
в основном
программируются
на
визуальных
языках. Например
Оwen
В
подсобных
помещениях и
коридорах
электрический
свет нужен
ограниченное
время. После
включения
освещения,
его нередко
забывают
отключить,
что приводит
к излишнему
расходу
электроэнергии.
Задача
обеспечить
включение
света на заданный
интервал
времени,
например, у
входной
двери в
квартиру, по
следующему
алгоритму:
1)
перед
входной
дверью
установлен
датчик освещения
(F1) и кнопка
включения
света ТАЙМЕР
(SB1);
2)
при
кратковременном
нажатии на
кнопку ТАЙМЕР,
при
недостаточном
естественном
освещении,
светильник
должен
включаться
на интервал
времени 1 мин –
этого времени
достаточно,
чтобы найти
замочную
скважину и
ключом
открыть
дверь;
3) при
удерживании
нажатой
кнопки
ТАЙМЕР в течение
2 с
светильник
должен
включаться на
интервал
времени 3 мин
независимо
от внешнего
освещения –
этот режим
может потребоваться
при уборке
коридора;
4) предусмотреть
возможность
управления работой
светильника
по командам
от внешних
управляющих
устройств
или при
помощи включателя
СВЕТ (SA1),
независимо
от внешнего освещения.
Этот режим
удобен во
время приема
гостей или
для
дальнейшей
автоматизации
квартиры в
рамках
программы
«умный дом»;
5) предусмотреть
возможность
включения светильника
только в
вечернее и
ночное время.
Схема
На
этапе планирования
составляется
схема
реализации
поставленной
задачи на
основе
логических
элементов и
функциональных
блоков, доступных
в программе
(см. Приложения
А и Б).
Схема
может иметь
вид,
приведенный
на рисунке 2.
Выход
Q2 схемы
используется
как
контрольный
для проверки
функционирования
логической
части
(элементов D1–D6).
Выход Q1
является
основным и
может
включиться
только в
заданные таймером
D7 интервалы
времени, при
соблюдении
логических
условий,
обеспечиваемых
элементами
D1–D6.
Вывод
по лекции и программированию
микроконтроллеров.
Что должен
уяснить
обучаемый,
рассказать и
показать:
Литература
и источники:
Подготовлено
на 11-2-2016