Микроконтроллеры AVR

Архитектура микроконтроллеров AVR и PIC. Описание и структура регистров из области ввода/вывода. Внутренняя и внешняя память SRAM микроконтроллеров AVR. Особенности аналого-цифрового преобразования. Переключение в режим параллельного программирования.

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 28.05.2010
Размер файла 755,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

где Т - требуемая временная задержка, К1 - коэффициент деления предварительного делителя частоты; К2 - коэффициент деления делителя частоты запросов на прерывание; PR2 - содержимое регистра PR2; F - частота системной синхронизации.

Модуль ССР

Таймеры TMR1 и TMR2 микроконтроллеров PIC применяются в составе модуля сравнения/захвата/ШИМ - ССР (Compare-Capture-PWM). Таких модулей может быть два: ССР1 и ССР2, - управление которыми реализовано с помощью регистров CCPxCON (рис. 4.15),

7

6

5

4

3

2

1

0

-

-

DC1BX1

DC1BX0

CCP1M3

CCP1M2

CCP1M1

CCP1M0

Рис. 4.15. Регистр CCPxCON микроконтроллеров PIC

Назначение отдельных разрядов регистра CCPxCON:

ССР1М0 - ССР1МЗ - выбор режима захвата/сравнения (табл. 4.9) DC1ВХ0 - DC1ВХ1 - два младших разряда 10-разрядной ШИМ.

Таблица 4.9. Назначение разрядов ССР1М1 -ССР1МЗ регистра CCPxCON

ССР1МЗ

ССР1М2

ССР1М1

ССР1М0

Значение

0

0

X

X

Модуль ССР отключен

0

1

0

0

Захват по каждому ниспадающему фронту

0

1

0

1

Захват по каждому нарастающему фронту

0

1

1

0

Захват по каждому 4-му нарастающему фронту

0

1

1

1

Захват по каждому 16-му нарастающему фронту

1

0

0

0

В случае совпадения на выходе - высокий уровень

1

0

0

1

В случае совпадения на выходе - низкий уровень

1

0

1

0

В случае совпадения - запрос на прерывание

1

0

1

1

Особый случай режима сравнения

1

1

X

X

Режим ШИМ

В режиме захвата (то есть, фиксации значения таймера в момент появления определенного условия) используются регистры CCPR1H, CCPR1L (в случае TMR1) или CCPR2H, CCPRL (в случае TMR2). В таком режиме таймер выполняет функции счетчика тактовых импульсов, и при наступлении условия захвата его содержимое переписывается в регистровую пару CCPRx.

В режиме сравнения модуль ССР формирует сигнал на выходе ССРх в том случае, когда содержимое счетного регистра становится равным значению, записанному в регистровой паре CCPRxL, CCPRxH. Этот режим обычно используется для выдачи сигналов на внешние устройства по истечении некоторого временного интервала.

В режиме ШИМ таймер работает как делитель частоты, формирующий период ШИМ-сигнала. Его значение постоянно сравнивается с содержимым регистра PR2, и при совпадении компаратор сбрасывает таймер в исходное состояние, после чего цикл повторяется. Параллельно организован контур сравнения, включающий в себя таймер, второй компаратор и регистр CCPRxH. Выходы обоих компараторов управляют RS-триггером, выход которого соединен с выводом ССРх.

Вначале триггер устанавливается в "1" по сигналу сброса таймера, а по сигналу компаратора контура сравнения - сбрасывается в "О". Таким образом, на выходе RS-триггера формируется сигнал с периодом, определяемым содержимым регистров PR2 и CCPRxH.

Сторожевой таймер

Сторожевой таймер (watchdog timer) - встроенный таймер, тактируемый внутренним RC-осциллятором, который автоматически сбрасывает микроконтроллер при переполнении своего счетного регистра. В частности, он используется для предотвращения перехода микроконтроллера в режим бесконечного цикла, когда на него невозможно повлиять извне. Обобщенная структурная схема сторожевого таймера показана на рис. 5.1.

В микроконтроллерах AVR и PIC управление сторожевым таймером несколько отличается. Так, в микроконтроллерах AVR для этого используется регистр управления WDTCR (адрес в области ввода/вывода - 0x21, адрес SRAM - 0x41) (рис. 5.2).

Рис. 5.1. Структурная схема сторожевого таймера

7

6

5

4

3

2

1

0

-

-

-

WDTOE

WDE

WDP2

WDP1

WDP0

Рис. 5.2. Регистр WDTCR микроконтроллеров AVR

Назначение отдельных разрядов регистра WDTCR:

- WDP0-WDP2 - выбор коэффициента деления частоты следования сигналов сброса (при этом период до наступления сброса зависит от рабочего напряжения процессора - табл. 5.1);

- WDE - включение/отключение сторожевого таймера (1 - включен);

- WDTOE - если сторожевой таймер должен быть отключен, следует установить этот разряд в лог. 1. После установки этого разряда он в течение четырех периодов такта системной синхронизации остается в состоянии лог. 1, а затем аппаратно сбрасывается в лог. 0. Программа пользователя имеет возможность отключить сторожевой таймер посредством записи лог. 0 в разряд WDE только во время этих четырех тактов системной синхронизации.

Таблица 5.1 Назначение разрядов WDP0 - WDP2 регистра WDTCR

WDP2

WDP1

WDPP

Коэффициент деления

Период до сброса (при Vcc в 5 В)

Период до сброса (при Vcc = 3 В)

0

0

0

1

16 мс

47 мс

0

0

1

2

32 мс

94 мс

0

1

0

4

64 мс

190 мс

0

1

1

8

128 мс

380 мс

1

0

0

16

256 мс

750 мс

1

0

1

32

512 мс

1,5с

1

1

0

64

1 с

Зс

1

1

1

128

2,1 с

В системе команд AVR сторожевой таймер сбрасывается в исходное состояние по команде wdr. В микроконтроллерах PIC для управления сторожевым таймером предназначен рассмотренный выше регистр OPTION. Для этого разряд PSA должен быть установлен в лог. 1, чтобы предварительный делитель частоты был переключен на использование совместно со сторожевым таймером, а не с TMR0. Коэффициент деления выбирается с помощью разрядов PS2-PS0 (табл. 5.2). В отличие от микроконтроллеров AVR, в микроконтроллерах PIC отсутствует возможность включать/отключать сторожевой таймер с помощью регистра управления. Единственный способ предотвратить сброс от сторожевого таймера - периодически выполнять ассемблерную команду clrwdt.

Таблица 5.2. Выбор коэффициента деления частоты следования сигналов сброса от сторожевого таймера в микроконтроллерах PIC

PS2

PS1

PS0

Коэффициент деления

Период до сброса

0

0

0

1

18 мс

0

0

1

2

36 мс

0

1

0

4

72 мс

0

1

1

8

144 мс

1

0

0

16

288 мс

1

0

1

32

576 мс

1

1

0

64

1,2 с

1

1

1

128

2,3 с

2. Параллельные порты ввода/вывода

Параллельные порты - это особые устройства ввода/вывода, позволяющие передавать во внешний мир или принимать одновременно восемь разрядов данных. Для обозначения портов используются латинские буквы А, В, С и т.д. Количество портов ввода/вывода варьируется в зависимости от модели микроконтроллера.

В микроконтроллерах AVR каждому параллельному порту ввода/вывода поставлены в соответствие три регистра (букве х соответствует имя порта А, В и т.д.):

- DDRx - регистр направления передачи данных - определяет, является тот или иной вывод порта входом или выходом; если некоторый разряд регистра DDRx содержит лог. 0, то соответствующий вывод порта сконфигурирован как вход, в противном случае - как выход;

- PORTx - регистр порта - если вывод выполняет роль выхода, то в соответствующий разряд записывается значение, предназначенное для вывода; если вывод выполняет роль входа, то лог. 0 в некотором разряде регистра PORTx соответствует высокоомный вход, а лог. 1 - вход, нагруженный подтягивающим сопротивлением;

- PINx - регистр выводов порта - в отличие от регистров DDRx и PORTx доступен только для чтения и позволяет считать входные данные порта на внутреннюю шину микроконтроллера.

Выводы портов зачастую выполняют различные альтернативные функции при работе с внутренними и периферийными модулями микроконтроллеров AVR. Так, к примеру, в некоторых моделях в качестве внешних тактовых входов таймеров/счетчиков Т/С0 и Т/С1 используются разряды 0 и 1 порта В или 4 и 5 порта D. Точное назначение выводов портов следует сверять по спецификации микроконтроллера.

В микроконтроллерах PIC каждому параллельному порту ввода/вывода поставлены в соответствие два регистра:

- PORTx - регистр данных порта;

- TRISx - регистр направления передачи данных через выводы порта (лог. 1 в некотором разряде этого регистра соответствует режим ввода, а лог. 0 - режим вывода).

В микроконтроллерах PIC серии 18Сх порт D может работать в режиме управляемого параллельного порта PSP (Parallel Slave Port). Это означает, что он действует как регистр, который может быть подключен к шине другого микроконтроллера, обмениваясь с ним данными. В режиме PSP, как и в случае обмена данными с любым периферийным устройством, используются сигналы RD (чтение), WR (запись) и CS (выбор кристалла) - разряды 0-2 порта Е (пример - рис. 6.1).

Рис. 6.1. Пример подключения внешнего микроконтроллера PIC в режиме PSP

Для управления режимом PSP используется регистр TRISE (рис. 6.2).

7

6

5

4

3

2

1

0

IBF

OBF

IBOV

PSPMODE

-

TRISE2

TRISE1

TRISE0

Рис. 6.2. Регистр TRISE микроконтроллеров PIC

Режим PSP активизируется путем установки в лог. 1 разряда PSPMODE. Прерывания разрешаются установкой в лог. 1 разряда PSPIE (разряд 7) регистра PIE1, а запросы формируются в разряде PSPIF (разряд 7) регистра PIR1. С помощью разрядов 0-2 регистра TRISE осуществляется выбор режима для соответствующих разрядов порта Е.

Когда на линиях CS и RD (выводы RE2 и RE0) одновременно появляется низкий уровень сигнала, содержимое регистра OUTREG выводится через порт D. При записи в регистр OUTREG устанавливается в лог, 1 разряд OBF регистра TRISE - это означает, что выходной буфер заполнен данными. После передачи данных разряд OBF автоматически сбрасывается в лог. 0.

Когда на линиях CS и WR (выводы RE2 и RE1) одновременно появляется низкий уровень сигнала, осуществляется прием данных через порт D. Принятая величина сохраняется в регистре INREG, при этом автоматически устанавливается в лог. 1 разряд IBF регистра TRISE. После программного считывания содержимого регистра INREG этот разряд автоматически сбрасывается в лог. 0.

Если ранее принятый байт не считывается до поступления следующего байта в регистр INREG, устанавливается в лог. 1 разряд IBOV регистра TRISE, указывающий на переполнение входного буфера.

Последовательный ввод/вывод

В отличие от параллельного обмена данными, в случае последовательного ввода/вывода используется только одна информационная линия. При этом передача данных бывает асинхронной и синхронной.

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

В противоположность этому, при асинхронной передаче данных передается не тактовый сигнал, а старт-бит и стоп-бит, определяющие начало и завершение передачи слова данных (рис. 7.1).

Рис. 7.1. Типичный формат асинхронной передачи данных (в данном примере - байта 10000010)

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

В микроконтроллерах AVR асинхронная передача данных осуществляется с помощью приемопередатчика UART, а в микроконтроллерах PIC - приемопередатчика USART или по шине CAN. Для синхронного ввода/вывода используется особый режим приемопередатчика USART, а также интерфейсы SPI и I2С (в микроконтроллерах PIC - с помощью порта MSSP).

Приемопередатчик UART микроконтроллеров AVR

Для работы UART выделены в общей сложности четыре регистра:

- регистр управления UCR (адрес в области ввода/вывода - 0х0А, адрес SRAM - 0х2А) - предназначен для управления функциями приемопередатчика и для разрешения/запрета прерываний от UART (рис. 7.2);

- регистр состояния USR (адрес в области ввода/вывода - 0x0В, адрес SRAM -0x2В) (рис. 7.3);

- регистр данных UDR (адрес в области ввода/вывода - 0х0С, адрес SRAM - 0x2С) - физически состоит из двух регистров, обращение к которым осуществляется по одному и тому же адресу; один из них используется для передачи, а другой - для приема данных;

- регистр UBRR (адрес в области ввода/вывода - 0x09, адрес SRAM - 0x29) - применяется для настройки требуемой скорости передачи данных с помощью встроенного контроллера, позволяющего устанавливать наиболее распространенные скорости передачи по стандарту RS232C.

7

6

5

4

3

2

1

0

RXCIE

TXCIE

UDRIE

RXEN

TXEN

CHR9

RXB8

TXB8

Рис. 7.2. Регистр управления UCR микроконтроллеров AVR

Если разряд RXCIE и разряд общего разрешения прерываний I в регистре состояния SREG установлены в лог. 1, то разрешается прерывание по завершению приема через UART.

Если разряд TXCIE и разряд общего разрешения прерываний I в регистре состояния SREG установлены в лог. 1, то разрешается прерывание по завершению передачи через UART.

Если разряд UDRIE и разряд общего разрешения прерываний I в регистре состояния SREG установлены в лог. 1, то разрешается прерывание по опустошению регистра данных UART.

Если разряд RXEN установлен в лог. 1, то происходит разблокирование приемника, и вывод 0 порта D становится входом UART. Если разряд RXEN содержит лог. 0, то принимающий элемент приемопередатчика UART блокируется, и вывод 0 порта D может использоваться в качестве обычного входа/выхода. Если разряд RXEN содержит лог. 0, то флаги OR и FE регистра состояния USR не могут быть установлены. Если эти флаги все же установлены, то они с помощью RXEN не сбрасываются.

Если разряд TXEN установлен в лог. 1, то происходит разблокирование передатчика, а вывод 1 порта D становится выходом UART. Если разряд TXEN содержит лог. 0, то передающий элемент UART блокируется, и вывод 1 порта D может использоваться в качестве обычного входа/выхода. Если разряд TXEN во время процесса передачи устанавливается в лог. 0, то передатчик не блокируется до тех пор, пока текущий символ в сдвиговом регистре, а также символ, возможно, ожидающий на передачу в регистре UDR не будут полностью переданы.

Если разряд CHR9 установлен в лог. 1, то слова данных, подлежащие передаче/считыванию имеют длину 11 бит (9 разрядов данных плюс стартовый и стоп-бит). Девятый бит из разряда ТХВ8 при передаче попадает в UCR, а при приеме - в разряд RXB8 регистра UCR. Девятый бит может быть использован для размещения дополнительных информационных данных, например, в качестве бита четности или второго стоп-бита. Если разряд CHR9 установлен в лог. 0, то слова данных, подлежащие передаче/считыванию имеют длину 10 бит (8 разрядов данных плюс стартовый и стоп-бит).

7

6

5

4

3

2

1

0

RXC

TXC

UDRE

FE

OR

-

-

-

Рис. 7.3. Регистр состояния USR микроконтроллеров AVR

Регистр состояния USR информирует программу пользователя о состоянии приемопередатчика UART.

Флаг RXC устанавливается в лог. 1, если принятое слово данных было перенесено из сдвигового регистра в регистр UDR (без учета возможных ошибок кадрирования, которые могли возникнуть во время передачи данных). После чтения регистра UDR флаг RXC автоматически сбрасывается в лог. 0.

Флаг ТХС будет установлен в лог. 1, если символ в сдвиговом регистре был передан полностью (то есть, включая стоп-бит), и из регистра UDR не ожидается новый байт данных. Флаг очень полезен в полудуплексном режиме работы, когда непосредственно после передачи необходимо переключиться в режим приема. При входе в подпрограмму обработки прерывания флаг завершения передачи ТХС аппаратно сбрасывается в лог. 0.

Флаг UDRE устанавливается в лог. 1, если содержимое регистра UDR было перенесено в сдвиговой регистр. С его помощью пользователь получает уведомление о том, что приемопередатчик готов к передаче нового байта.

Соответствующая подпрограмма обработки прерывания выполняется до тех пор, пока установлен флаг UDRE. Флаг UDRE сбрасывается при записи байта данных в регистр UDR. В случае сброса при включении питания флаг UDRE устанавливается в лог. 1, чтобы показать, что приемопередатчик готов к передаче нового байта данных.

Флаг FE устанавливается в лог. 1 при обнаружении ошибки кадрирования. Это происходит, если при трех сканированиях стоп-бита был более одного раза обнаружен лог. 0, и тем самым стоп-бит был распознан как сигнал низкого уровня. Флаг FE сбрасывается, когда стоп-биту соответствует сигнал высокого уровня. Пользовательская программа должна постоянно проверять флаг FE перед чтением регистра UDR, чтобы можно было распознать потенциально некорректный символ в регистре приема.

Флаг OR устанавливается в лог. 1, если один из символов, переданных в регистр UDR из сдвигового регистра, не был прочитан перед следующим поступившим символом. Этот флаг обновляется после считывания действительного символа из регистра UDR, поэтому пользовательская программа должна всегда проверять флаг OR после чтения регистра UDR, чтобы распознать потерю одного поступившего символа. Флаг OR сбрасывается при переносе считанного символа в регистр UDR.

Настройка скорости передачи данных через UART

В приемопередатчик UART встроен специальный контроллер скорости передачи данных, представляющий собой делитель частоты для определения скорости передачи данных на основании такта системной синхронизации.

Скорость передачи может быть вычислена по следующему уравнению:

где fBaud - скорость передачи в бодах, Ф - такт системной синхронизации; UBRR - содержимое 8-разрядного регистра UBRR (0...255).

Значения, записываемые в регистр UBRR для наиболее распространенных скоростей передачи данных, представлены в табл. 7.1.

Таблица 7.1. Значения регистра UBRR для наиболее распространенных скоростей передачи данных и частоты работы кварцевого осциллятора

Скорость

передачи

данных,

бод

1,8432 МГц

Погрешность (%)

3,6864 МГц

Погрешность (%)

4 МГц

Погреш ность

(%)

1200

UBRR = 95

0,0

UBRR = 191

0,0

UBRR = 207

0,2

2400

UBRR = 47

0,0

UBRR = 95

0,0

UBRR = 103

0,2

4800

UBRR = 23

0,0

UBRR = 47

0,0

UBRR = 51

0,2

9600

UBRR = 11

0,0

UBRR = 23

0,0

UBRR = 25

0,2

14400

UBRR=7

0,0

UBRR=15

0,0

UBRR = 16

2,1

19200

UBRR=5

0,0

UBRR = 11

0,0

UBRR=12

0,2

2400

UBRR = 207

0,2

UBRR = 287

-

UBRR = 312

-

4800

UBRR = 103

0,2

UBRR = 143

0,0

UBRR = 155

0,2

9600

UBRR = 51

0,2

UBRR = 71

0,0

UBRR = 77

0,2

14400

UBRR = 34

0,8

UBRR = 47

0,0

UBRR = 51

0,2

19200

UBRR = 25

0,2

UBRR = 35

0,0

UBRR = 38

0,2

Значения, выделенные курсивом, превышают 255, и потому не могут быть установлены в регистре UBRR, имеющем длину всего 8 разрядов. Если потребуется соответствующая скорость передачи данных, то необходимо переходить на более низкие частоты колебаний кварцевого осциллятора.

Приемопередатчик USART микроконтроллеров PIC

В микроконтроллерах PIC скорость обмена данными через приемопередатчик USART задается восьмиразрядным счетчиком во взаимодействии с регистром SPBRG. Когда содержимое счетчика и регистра SPBRG совпадает, счетчик сбрасывается в нуль. На значение скорости передачи через USART также влияет состояние разряда BRGH регистра управления TXSTA (рис. 1.32). Этот разряд определяет, какая требуется скорость для передачи данных: высокая (BRGH = 1) или низкая (BRGH = 0).

Значение для записи в регистр SPBRG вычисляется по следующей формуле:

SPBRG = (FOSC * 4BRGH) / (64 * скорость передачи) - 1.

Например, для того чтобы получить скорость передачи 9600 бод при микроконтроллере с рабочей частотой FOSC = 10 МГц в регистр SPBRG должно быть записано значение (10 * 106 * 4)/(64 * 9600) - 1 = 64,1 (округляем до 64).

Управление приемопередатчиком USART осуществляется с помощью регистров TXSTA, который используется для управления процессом передачи (рис. 7.4), и RCSTA, который используется для управления процессом приема (рис. 7.5).

7

6

5

4

3

2

1

0

CSRC

TX9

TXEN

SYNC

-

BRGH

TRMT

TX9D

Рис. 7.4. Регистр TXSTA микроконтроллеров PIC

В отличие от приемопередатчика UART микроконтроллеров AVR, устройство USART может обмениваться данными не только в асинхронном, но и в синхронном режиме. В этом случае поразрядный сдвиг данных из сдвигового регистра в линию передачи (или наоборот) осуществляется по синхроимпульсам самого приемопередатчика USART или внешнего устройства. Выбор режима работы USART осуществляется с помощью разряда SYNC регистра TXSTA (1 - синхронный режим; 0 - асинхронный режим), а выбор источника тактовых импульсов в синхронном режиме - с помощью разряда CSRC (1 - внутренний источник; 0 - внешний источник).

Назначение остальных разрядов регистра TXSTA:

- TX9D - девятый бит передаваемых данных, если ТХ9 = 1;

- TRMT - флаг, сигнализирующий о завершении передачи байта;

- TXEN - флаг разрешения передачи данных;

- ТХ9 - разрешение (лог. 1) передачи данных в девятиразрядном формате.

7

6

5

4

3

2

1

0

SREN

RX9

SREN

CREN

ADDEN

FERR

OERR

RX9D

Рис. 7.5. Регистр RCSTA микроконтроллеров PIC

Назначение разрядов регистра RCSTA:

- RX9D - девятый бит принимаемых данных, если RX9 = 1;

- OERR - флаг, указывающий на переполнение буфера приема;

- FERR - флаг, указывающий на обнаружение ошибки в формате принимаемых данных;

- ADDEN - разрешение обнаружения адреса в асинхронном режиме передачи девяти бит данных- в некоторых микроконтроллерах PIC приемник USART может использоваться для приема сразу двух байтов в формате "данные:адрес", где адрес предназначен для идентификации устройства, связанного с шиной данных (в таком случае подпрограмма обработки прерывания вначале проверит адрес запрошенного устройства и только потом обработает байт данных);

- CREN - разрешение режима непрерывного приема;

- SREN - флаг разрешения однократного приема в синхронном режиме (после приема данных автоматически сбрасывается в лог. 0);

- RX9 - флаг разрешения приема девяти бит данных;

- SREN - флаг активизации USART (для передачи битов данных используется вывод 6 порта С, а для приема - вывод 7 того же порта).

Флаги запросов (TXIF и RCIF) и разрешения (TXIE и RCIE) прерываний от USART находятся в регистрах PIR и PIE.

Синхронная передача данных по интерфейсу SPI

Интерфейс SPI (Serial Peripheral Interface) служит для обмена данными с периферийными устройствами. В качестве таких устройств могут выступать простые сдвиговые регистры или буквенно-цифровые модули индикации, а также сложные микропроцессорные системы или системы регистрации данных. Многие компании-изготовители предлагают большой выбор устройств с интерфейсом SPI.

В случае обмена данными по интерфейсу SPI микроконтроллер работает в режиме ведущего устройства (Master), взаимодействуя с одним или несколькими ведомыми блоками (Slave). Схема передачи данных по интерфейсу SPI микроконтроллеров AVR/PIC показана на рис. 7.6 (MSB - старший разряд, a LSB - младший разряд передаваемого байта).

Рис. 7.6. Схема передачи данных по интерфейсу SPI микроконтроллеров AVR/PIC

Ведущее устройство берет на себя активную часть обмена данными, вызывая передачу и управляя процессом. Ведомое устройство не может само быть активным. Оно принимает и передает данные только тогда, когда происходит его активизация со стороны ведущего устройства по линии /SS. Ведущее устройство также генерирует такт для передачи по выходной линии SCK. Для ведомого блока вывод SCK является входом, через который он получает от Master-устройства тактирующие сигналы.

Если ведомое устройство активизируется ведущим по линии /SS, то начинается обмен данными: Master записывает подлежащий передаче байт в свой сдвиговой регистр данных (для микроконтроллеров AVR - регистр SPDR, для микроконтроллеров PIC - регистр SSPBUF). С помощью каждого выработанного тактового импульса Master перемещает один бит данных на выход MOSI/SDO, a Slave одновременно в обратном направлении передает один бит на вход MISO/SDI ведущего блока. Таким образом, в течение цикла SPI, состоящего из восьми тактовых импульсов, Master и Slave обмениваются байтом данных.

По окончании передачи данных в регистре состояния интерфейса SPI устанавливается флаг соответствующего запроса на прерывание. Этот флаг указывает на окончание передачи и вызывает запрос на прерывание после того как в регистре управления SPI будет установлен разряд разрешения на прерывание от интерфейса SPI. В режиме "Master" текущая передача данных может быть преждевременно завершена выдачей в линию /SS сигнала лог. 1.

К интерфейсу SPI ведущего устройства можно подключать несколько ведомых устройств (пример для микроконтроллеров AVR - на рис. 7.7), однако активным будет только то из них, на вход /SS которого будет подан уровень лог. 0. Выходы MISO незадействованных ведомых блоков находятся в высокоомном состоянии и не влияют на процесс передачи данных.

В примере на рис. 7.7 устройство G2, с точки зрения ведущего устройства, является только блоком передачи (например, ЦАП с интерфейсом SPI), а устройство G3 - только блоком приема.

Рис. 7.7. Подключение нескольких ведомых устройств к одному ведущему по SPI (для AVR)

В микроконтроллерах AVR в качестве линий SPI используются выводы порта В (табл. 7.2). В микроконтроллерах PIC для последовательной синхронной передачи данных используется порт MSSP, работающий в режиме интерфейса SPI или I2С. Линиям SPI соответствуют выводы порта А и С (табл. 7.2).

Таблица 7.2. Распределение выводов портов для линий интерфейса SPI

Линия

Микроконтроллеры AVR

Микроконтроллеры PIC

/SS

Разряд 4 порта В

Зависит от модели (например, разряд 5 порта А)

MOSI (SDO)

Разряд 5 порта В

Разряд 5 порта С

MISO(SDI)

Разряд 6 порта В

Разряд 4 порта С

SCK

Разряд 7 порта В

Разряд 3 порта С

Регистры управления и состояния SPI в микроконтроллерах AVR

Регистр управления SPCR интерфейса SPI в микроконтроллерах AVR (рис. 7.8) находится в области ввода/вывода по адресу 0x0D (адресу 0x2D в SRAM).

7

6

5

4

3

2

1

0

SPIE

SPE

DORD

MSTR

CPOL

CPHA

SPR1

SPR0

Рис. 7.8. Регистр управления SPCR микроконтроллеров AVR

По окончании передачи данных через интерфейс SPI аппаратная часть устанавливает в регистре состояния SPCR разряд SPIF (флаг прерываний от интерфейса SPI). Этот флаг указывает на завершение передачи, и приводит к запросу на прерывание как только в регистре управления SPCR будет установлен разряд SPIE, а в регистре состояния SREG - флаг общего разрешения прерываний I.

Разряд SPE активизирует интерфейс SPI (лог. 1) или отключает его (лог. 0). После поступления сигнала сброса этот разряд принимает значение лог. 0, и тем самым система SPI отключается.

Если разряд DORD содержит лог. 0, то сначала будет передан старший разряд байта данных. При DORD = 1 первым передается младший разряд.

Когда разряд MSTR содержит лог. 0, то система SPI определяется как ведомая (Slave), а при MSTR = 1 она будет определена как ведущая (Master). Когда линия /SS в режиме Master сконфигурирована как вход, то разряд MSTR при низком уровне сигнала на выводе /SS сбрасывается в лог. 0, и тем самым интерфейс SPI определяется как Slave. В этом случае в регистре состояния устанавливается флаг SPIF.

Когда разряд CPOL содержит лог. 0, то на выходе SCK в неактивном состоянии находится сигнал низкого уровня. Если CPOL = 1, то на SCK в неактивном состоянии находится сигнал высокого уровня. С помощью этого разряда, а также разряда СРНА (выбор фазы синхронизации) устанавливается один из четырех режимов передачи данных по интерфейсу SPI (табл. 7.3).

Разряды SPR1 и SPR0 при работе интерфейса SPI в режиме Master служат для выбора тактовой частоты для линии SCK. Если система SPI сконфигурирована как Slave, то эти разряды не имеют никакого значения. Взаимосвязь между разрядами SPR1, SPR0 и частотой импульсов в линии SCK показана в табл. 7.4.

Таблица 7.3. Режимы передачи данных по интерфейсу SPI в МК AVR

CPOL

СРНА

Описание режима

0

0

Master переводит линию /SS в состояние лог. 0. Для соответствующего ведомого блока передача начинается по ниспадающему фронту этого сигнала. Его выход MISO переходит из высокоомного в активное состояние, и старший разряд байта, находящегося в его регистре данных SPDR, появляется на выходе MISO.

Собственно передачу данных Master начинает записью подлежащего передаче байта данных в свой регистр SPDR. Вслед за этим на выходе MOSI ведущего блока появляется старший разряд. На протяжении первой половины первого тактового импульса тактовая линия еще остается в состоянии покоя для того, чтобы обеспечить стабильную установку на соответствующем входе бита данных.

По нарастающему фронту первого и каждого последующего тактового импульса принимаются биты, расположенные на входах Master и Slave, а по ниспадающему фронту следующий бит сдвигается дальше. После восьмого тактового импульса передача данных завершена, флаги SPIF в регистрах состояния ведущего и ведомого блоков установлены, а содержимое сдвиговых регистров будут перенесено в соответствующие приемные буферы. Выход MOSI ведущего блока возвращается в состояние покоя (лог. 1), а на выходе MISO ведомого блока, как правило, находится старший разряд байта, только что принятого ведущим блоком.

Одновременно со сбросом линии /SS в исходное состояние (лог. 1) Master завершает передачу, Slave становится неактивным, а его выход MISO переходит в высокоомное состояние

0

1

Аналогично описанному выше случаю с той разницей, что состояние покоя тактовой линии здесь устанавливается при лог. 1, биты данных принимаются по первому и каждому последующему тактовому импульсу, а сдвиг осуществляется по нарастающему фронту сигнала

1

0

Для того чтобы при этом режиме начать передачу данных, Master, как и в первом случае, переводит линию /SS в состояние лог. 0. Блок Slave разблокирован, и его выход MISO переходит из высокоомного в активное состояние. Логический уровень на MISO для этого случая не определен, но, как правило, на MISO находится младший разряд байта, переданного во время предыдущей передачи от Slave к Master. Собственно передачу данных Master в этом режиме начинает посредством записи байта данных, подлежащего передаче, в регистр SPDR. Для ведомого блока передача начинается по нарастающему фронту тактового сигнала. Старшие разряды подлежащих передаче байтов в ведущем и ведомом блоках с помощью нарастающего фронта первого тактового импульса устанавливаются на выходе MOSI ведущего блока (выходе MISO ведомого блока). По ниспадающему фронту первого и каждого последующего тактового импульса они переносятся на входы Master и Slave, а по нарастающему фронту следующий разряд сдвигается.

После восьмого тактового импульса передача данных завершается, устанавливаются флаги SPIF в регистрах состояния интерфейсов Master и Slave, а содержимое их сдвиговых регистров переносится в соответствующие буферы приема. Выход MOSI ведущего блока возвращается в состояние покоя (лог. 1), на выходе MISO ведомого блока остается младший разряд байта, только что переданного ведущему блоку. Одновременно с возвратом в исходное состояние линии /SS (лог. 1) Master завершает передачу в целом, Slave становится неактивным, а его выход MISO переходит в высокоомное состояние.

1

1

Аналогично описанному выше случаю стой разницей, что состоянием покоя тактовой линии здесь является лог. 1, а биты данных сдвигаются по ниспадающему фронту первого и каждого последующего тактового импульса, а принимаются по нарастающему фронту

Таблица 7.4. Частота импульсов в линии SCK в зависимости от разрядов SPR1, SPR0

SPR1

SPR0

Частота импульсов в линии SCK

0

0

Частота системной синхронизации / 4

0

1

Частота системной синхронизации /16

1

0

Частота системной синхронизации / 64

1

1

Частота системной синхронизации /128

Регистр состояния SPSR интерфейса SPI в микроконтроллерах AVR расположен в области ввода/вывода по адресу 0х0Е (0x2E в SRAM). В этом регистре используются только разряды 6 и 7:

- разряд 6 - флаг WCOL - устанавливается в том случае, когда во время передачи данных через интерфейс SPI предпринимается попытка записи в регистр данных SPI, что приводит к разрушению только что переданного байта данных. По этой причине текущая передача данных доводится до завершения, а новый байт не записывается в сдвиговый регистр интерфейса SPI. Флаг WCOL должен быть сброшен пользователем вручную посредством считывания регистра состояния и последующего обращения к регистру данных интерфейса SPI;

- разряд 7 - флаг SPIF - указывает на завершение передачи и вызывает запрос на прерывание, как только в регистре управления SPCR будет установлен разряд SPIE, а в регистре состояния SREG - разряд I. Когда линия /SS в режиме Master сконфигурирована как вход, то при низком уровне сигнала на выводе линии /SS также будет установлен флаг SPIF. Флаг SPIF сбрасывается автоматически аппаратной частью при выполнении подпрограммы обработки прерывания от интерфейса SPI. Альтернативно, сброс может быть выполнен вручную посредством считывания регистра состояния SPSR и последующего обращения к регистру данных интерфейса SPI.

Регистры управления и состояния SPI в микроконтроллерах PIC

Для управления интерфейсом SPI в микроконтроллерах используются регистры SSPSTAT (рис. 7.9) и SSPCON1 (рис. 7.10).

7

6

5

4

3

2

1

0

SMP

CKE

D/A

P

S

R/W

UA

BF

Рис. 7.9. Регистр SSPSTAT микроконтроллеров PIC

Назначение разрядов регистра SSPSTAT:

- BF - флаг заполнения буфера данных;

- UA, R/W, S, P, D/A - имеют отношение к рассмотренному ниже последовательному интерфейсу ГС;

- СКЕ - выбор активного фронта импульсов SCK для передачи данных (используется совместно с разрядом СКР регистра SSPCON1, аналог в микроконтроллерах AVR - разряд SPHA регистра SPCR);

- SMP - точка стробирования данных в режиме Master (1 - стробирование в конце битового интервала; 0 - стробирование в середине интервала). В режиме Slave этот разряд всегда содержит лог. 0.

7

6

5

4

3

2

1

0

WCOL

SSPOV

SSPEN

CKP

SSPM3

SSPM2

SSPM1

SSPM0

Рис. 7.10. Регистр SSPCON1 микроконтроллеров PIC

Назначение разрядов регистра SSPCON1:

- SSPM0-SSPM3 - выбор режима работы порта MSSP (значения для интерфейса SPI представлены в табл. 7.5);

- СКР - выбор фронта для передачи (аналог в микроконтроллерах AVR - разряд CPOL регистра SPCR); если СКР=0? то передача осуществляется по нарастающему фронту тактового сигнала;

- SSPEN - флаг разрешения работы интерфейса SPI;

- SSPOV - флаг переполнения приемного буфера;

- WCOL - флаг коллизий при записи (1 - запись новых данных в буферный регистр была произведена в момент передачи).

Таблица 7.5. Выбор режима работы порта MSSP для интерфейса SPI

SSPM3

SSPM2

SSPM1

SSPM0

Режим

0

0

0

0

Режим Master, частота = Fosc / 4

0

0

0

1

Режим Master, частота = Fosc /16

0

0

1

0

Режим Master, частота = Fosc / 64

0

0

1

1

Режим Master, частота = выход TMR2 / 2

0

1

0

0

Режим Slave, вывод SS разрешен

0

1

0

1

Режим Slave, вывод SS не используется

Синхронная передача данных по интерфейсу I2С

Интерфейс I2С (Inter-integrated Circuit), состоящий только из двух линий (SDA и SCL), предназначен для низкоскоростного последовательного обмена данными с периферийными устройствами, подсоединенных к одной общей шине (рис. 7.11).

Рис. 7.11. Подключение устройств к шине I2C

Характеристики шины I2С:

- работа только с двумя линиями, благодаря чему требуется меньше мест соединения и минимизируются затраты на проводку;

- зона действия - до 3 м;

- возможность работать в режиме с одним ведущим блоком (Single-Master) или с несколькими ведущими блоками (Multi-Master).

Линия SCL используется для передачи синхроимпульсов. Если данные не передаются, она содержит высокий уровень сигнала. Линия SDA используется для побитной передачи данных. Если данные не передаются, то она имеет высокий потенциал. Передаваемые данные действительны в фазе высокого уровня такта и могут менять свое состояние только в фазе низкого уровня.

Каждый блок, подсоединенный к шине, во время передачи данных может быть или приемником или передатчиком, а также ведущим (Master) или ведомым (Slave). Ведущее устройство инициирует передачу данных. В частности, Master занимает шину тем, что генерирует стартовый сигнал на линии SCL и начинает обмен с ведомым устройством. До тех пор, пока на шине работает ведущее устройство, не может быть активным никакой другой Master-блок.

Ведомым является устройство, по адресу которого обращается ведущее устройство с требованием передачи данных. Теоретически Master может одновременно снабжать одними и теми же данными несколько ведомых устройств. В роли ведущего устройства в большинстве случаев выступает микропроцессор, оборудованный или специальной аппаратной частью с шиной типа I2С, или контроллером шины, работающим под управлением специального программного обеспечения.

Протокол шины I2С

Для того чтобы несколько блоков могли обмениваться данными, необходим некоторый протокол, который описывает процесс передачи данных по шине и в любой момент времени не допускает ошибочной интерпретации состояния шины. В случае шины с несколькими ведущими устройствами (что относится и к I2С) необходимо также установить, когда и какое ведущее устройство имеет право занимать шину. Эти условия регулируются протоколом шины (рис. 7.12).

Рис. 7.12. Протокол передачи байта данных через шину I2C

Работа шины и ее занятость, определяется условием начала передачи - изменение ведущим устройством состояние линии SDA с высокого уровня на низкий. После наступления условия начала передачи шина будет занята ведущим устройством, создавшим это условие, вследствие чего все другие ведущие устройства будут заблокированы. Условие начала является однозначным состоянием на шине, потому что смена уровня сигнала на линии SDA, как правило, допускается только тогда, когда тактовая линия SCL находится в состоянии низкого уровня.

Все устройства, подключенные к шине, должны распознать условие начала передачи и переключаются на прием (ведомое устройство/приемник). Условие начала передачи также учитывается и другим ведущим устройством, которое со своей стороны имело намерение занять шину. В результате оно немедленно отзывает свое требование. Устройство, создавшее условие начала передачи, в данный момент времени является для шины ведущим (Master), а все остальные устройства - потенциальными ведомыми (Slave). Ведущее устройство теперь отвечает за тактовый сигнал и становится передатчиком.

После создания условия начала ведущее устройство начинает передачу данных. Оно переводит тактовую шину в состояние низкого уровня и теперь может занять линию передачи данных затребованным информационным разрядом (высокий или низкий уровень в линии SDA). Затем тактовая шина опять переводится в состояние высокого уровня.

Изменение в линии SDA может происходить только в фазе низкого уровня сигнала в линии SCL Во время фазы высокого уровня в линии SCL линия SDA должна быть стабильной.

Передача данных, как правило, выполняется побайтно, при этом первым передается старший разряд. После передачи полного байта данных, состоящей из восьми тактовых циклов, следует бит подтверждения от приемника.

Бит подтверждения (квитирования) - это реакция приемника на принятый байт данных. Он является для передатчика признаком того, что приемник физически присутствует и "прослушивает" линию. Одновременно с этим бит подтверждения можно рассматривать как сигнал синхронизации.

Бит подтверждения, как правило, генерируется приемником. Если ведущее устройство принимает от ведомого устройства несколько байтов данных, то оно квитирует каждый отдельный байт битом подтверждения, за исключением последнего. Такое отрицательное квитирование сообщает ведомому устройству, что передача данных завершена, и далее последует условие завершения или новое условие начала передачи.

Для передачи бита подтверждения ведущее устройство генерирует на линии SCL дополнительный тактовый импульс (рис. 7.13). Приемник выдает сигнал положительного квитирования, переводя линию SDA в состояние низкого уровня, или отрицательного квитирования, переводя линию SDA в состояние высокого уровня.

Рис. 7.13. Выработка бита квитирования приемником, работающим в режиме ведомого устройства

Таким образом, для передачи одного байта данных, как правило, требуется девять тактовых циклов. После передачи одного байта данных и приема бита подтверждения передача данных может быть сразу же продолжена. Если приемник реагирует на передачу байта данных отрицательным квитированием, то ведущее устройство должно завершить передачу данных, опять освободив шину.

Шина после окончания передачи данных, которая может состоять из любого количества байтов, опять освобождается ведущим устройством. Освобождение шины осуществляется с помощью условия завершения - изменение в линии SDA уровня сигнала с низкого на высокий в то время, когда по тактовой шине SCL передается сигнал высокого уровня.

После создания условия завершения передачи шина освобождается. Условие завершения передачи также представляет собой однозначное состояние на шине. Все блоки и устройства распознают его и подготавливаются к появлению нового условия начала передачи. В том случае, если ведущее устройство из-за промежуточной занятости шины отзывает свое требование занять шину, то оно может предпринять новую попытку создать условие начала передачи и тем самым получить шину для своих нужд.

Полная передача данных через шину I2С, в принципе, состоит из условия начала передачи, одного или нескольких байтов данных (за которыми, соответственно, следует бит квитирования), и условия завершения передачи.

Адресация ведомых устройств

Выбор ведомого устройства, с которым хотело бы обмениваться данными ведущее устройство, осуществляется посредством первого байта, который всегда определяется как адрес ведомого устройства - первый байт последовательности данных. Он однозначно сопоставлен определенному устройству, подключенному к шине, и имеет длину 7 бит (разряды от 1 до 7). Теоретически, таким образом можно адресовать до 128 ведомых устройств, однако по определению некоторые адреса ведомых устройств имеют особое значение. Адрес ведомого устройства состоит из двух частей: постоянной и переменной (рис. 7.14).

Рис. 7.14. Формат адреса шины I2C

Постоянная часть адреса описывает требования к определенным группам устройств и определяется изготовителем. Его длина определена в результате практического опыта и в большинстве случаев составляет 4 бита. Он будет тем короче, чем больше однотипных устройств в схеме. Постоянная часть адреса жестко "прошита" в интегральной схеме и не может быть изменена пользователем.

Переменная часть адреса ведомого устройства служит для выбора определенного устройства из группы однотипных кристаллов, среди которых все имеют постоянную часть адреса ведомого устройства. Благодаря этому, к шине могут быть подсоединены несколько однотипных интегральных схем. Переменная часть

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

С помощью разрядов 1-7 адреса ведомого устройства однозначно идентифицируется требуемый ведомый блок. Разряд 0 задает направление передачи данных. Он определяет, должны ли быть приняты или переданы данные. Если разряд направления передачи данных содержит лог. 1 (чтение), то ведущее устройство находится в режиме приемника, а ведомое - в режиме передатчика. Если разряд направления передачи данных содержит лог. 0 (запись), то ведущее устройство будет работать как передатчик, а ведомое - как приемник.

Адрес ведомого устройства также подтверждается этим устройством с помощью бита квитирования. Если ведущее устройство после адресации получает отрицательное квитирование, то оно может заключить, что ведомое устройство или вообще отсутствует, или в настоящий момент с ним невозможно установить связь (например, оно занято обработкой заданий, критическими с точки зрения времени).

Работа с интерфейсом I2С в микроконтроллерах PIC

Интерфейс I2C аппаратно реализован не во всех микроконтроллерах AVR, однако, благодаря высокому допустимому значению тактовой частоты, возможна его организация с помощью программного обеспечения.

В микроконтроллерах PIC обмену данными по интерфейсу 12С соответствует особый режим работы порта MSSP. Линии SCL соответствует вывод 3 порта С, а линии SDA - вывод 4 того же порта.

Для управления передачей в режиме I2С используются три регистра: уже рассмотренные выше SSPSTAT (рис. 7.8) и SSPCON1 (рис. 7.9), а также SSPCON2 (рис. 7.10).

Назначение разрядов регистра SSPSTAT, имеющих отношение к 12С:

- BF - флаг заполнения буфера данных;

- UA - устанавливается в лог. 1 в том случае, если необходимо модифицировать адрес устройства (содержимое регистра SSPADD);

- R/W - указывает на тип операции: 0 - запись, 1 - чтение;

- S - устанавливается в лог. 1 при обнаружении условия начала передачи;

- Р - устанавливается в лог. 1 при обнаружении условия завершения передачи;

- D/A - признак переданного байта: 0 - байт адреса, 1 - байт данных. Назначение разрядов регистра SSPCON1, имеющих отношение к I2С:

- SSPM0-SSPM3 - выбор режима работы порта MSSP (значения для интерфейса I С представлены в табл. 7.6);

- СКР - установка этого разряда в лог. 1 разрешает тактирование;

- SSPEN - флаг разрешения работы интерфейса;

- SSPOV - флаг переполнения приемного буфера;

- WCOL - флаг коллизий при записи (1 - запись новых данных в буферный регистр была произведена в момент передачи).

Таблица 7.6. Выбор режима работы порта MSSP для интерфейса l2C

SSPM3

SSPM2

SSPM1

SSPMO

Режим

0

1

1

0

Режим Slave, используется 7-разрядный адрес

0

1

1

1

Режим Slave, используется 10-разрядный адрес

1

0

0

0

Режим Master, частота = F0sc / (4 (SSPADD + 1))

1

0

1

1

Режим Master с программным управлением

1

1

1

0

Режим Slave, используется 7-разрядный адрес

1

1

1

1

Режим Slave, используется 10-разрядный адрес

7

6

5

4

3

2

1

0

GCEN

ACKSTAT

ACKDT

ACKEN

RCEN

PEN

RSEN

SEN

Рис. 7.15. Регистр SSPCON2 микроконтроллеров PIC

Назначение разрядов регистра SSPCON2:

- SEN - устанавливается в лог. 1 для создания условия начала передачи;

- RSEN - устанавливается в лог. 1 для создания повторных условий начала передачи;

- PEN - сбрасывается в лог. О для создания условия окончания передачи;

- RCEN - устанавливается в лог. 1 для разрешения режима приема;

- ACKEN - инициирует последовательность битов квитирования;

- ACKDT - устанавливается в лог. 1 для отправки подтверждения при приеме байта;

- ACKSTAT - устанавливается в лог. 1 при получении подтверждения приема от ведомого устройства.

Модуль шины CAN

Когда осуществляется обмен данными между несколькими устройствами по одной общей шине, существует вероятность возникновения самых разнообразных ошибок. Кроме того, возникают сложности с адресацией. В системе, состоящей из двух устройств, все очень просто: одно устройство передает данные, а другое опрашивает шину и принимает данные. В случае же с несколькими устройствами, требуется определить, какое именно из них передает данные и какому из устройств, подключенных к общей шине. Все это обусловливает необходимость в некотором протоколе обмена данными.

Протокол определяет метод адресации, проверку ошибок и общий формат данных для всех устройств, использующих шину. Один из таких протоколов - протокол CAN (Controller Area Network), поддерживаемый рядом микроконтроллеров семейства PIC18 и некоторыми последними разработками компании Atmel.

3. Аналого-цифровое преобразование

Число в цифровой форме определяется на основании отношения входного напряжения к полному номиналу напряжения аналого-цифрового преобразователя (АЦП). Например, если на вход АЦП с номинальным напряжением 5 В подать напряжение 1 В„ то на цифровом выходе появится число, соответствующее 1/5=0,2 разрешающей способности преобразователя. Так, если используется АЦП с разрешением 8 бит, то максимальное возможное значение на его выходе 2 - 1 = 255. Таким образом, напряжению 1 В на аналоговом входе соответствует 0,2 - 255 = 51 на цифровом выходе.

Встроенные АЦП микроконтроллеров AVR и PIC имеют разрешение 10 бит и позволяют считывать напряжение на одном из восьми (в некоторых моделях - пяти) аналоговых входов (обычно - порт А).

В микроконтроллерах AVR для управления режимом АЦП используются два регистра: регистр управления ADCSR (рис. 8.1) и регистр мультиплексирования ADMUX (определяет, какие из восьми входов порта А являются аналоговыми).

7

6

5

4

3

2

1

0

ADEN

ADSC

ADFR

ADIF

ADIE

ADPS2

ADPS1

ADPS0

Рис. 8.1. Регистр ADCSR микроконтроллеров AVR

Назначение разрядов регистра ADCSR:

- ADPS0 - ADPS2 - выбор коэффициента деления тактовой частоты (табл. 8.1); чем выше частота работы АЦП (производная от частоты системной синхронизации), тем ниже эффективное разрешение, поэтому следует устанавливать коэффициент деления;

- ADIE - разряд маскирования прерывания от АЦП (1 - по окончанию преобразования разрешено прерывание);

- ADIF - флаг прерывания от АЦП (устанавливается аппаратно по окончанию цикла преобразования);

- ADFR - лог. 1 в этом разряде переводит АЦП в несинхронизированный режим работы - обычно АЦП работает в режиме прерывания, чтобы процессор каждый раз не ожидал завершения медленно протекающего преобразования, однако в несинхронизированном режиме АЦП выполняет преобразование постоянно, как можно быстрее (на период такого преобразования должны быть запрещены все прерывания);

- ADSC - флаг начала преобразования;

- ADEN - флаг разрешения использования АЦП.

Таблица 8.1. Выбор коэффициента деления частоты системной синхронизации для тактирования АЦП микроконтроллеров AVR

ADPS2

ADPS1

ADPS0

Коэффициент деления

0

0

0

1

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128

Таким образом, в общем случае процесс аналого-цифрового преобразования в микроконтроллерах AVR протекает следующим образом:

- установить в лог. 1 разряды регистра ADMUX, соответствующие аналоговым входам;

- установить разряды 0-2 регистра ADCSR для выбора коэффициента деления частоты системной синхронизации;

- установить в лог. 1 разряд ADIE для разрешения режима прерывания;

- установить в лог. 1 разряд ADEN, чтобы разрешить использование АЦП;

- установить в лог. 1 разряд ADSC, чтобы начать преобразование;

- результат преобразования сохраняется в регистровой паре ADCL, ADCH;

В микроконтроллерах PIC для управления работой встроенного АЦП также используются два регистра: ADCON0 (рис. 8.2) и ADCON1 (рис. 8.3).

7

6

5

4

3

2

1

0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADIF

ADON

Рис. 8.2. Регистр ADCON0 микроконтроллеров PIC

Назначение разрядов регистра ADCON0:

- ADON - флаг разрешения использования АЦП;

- ADIF - разряд запроса на прерывание по окончанию преобразования;

- GO/DONE - установка этого разряда в лог. 1 активизирует АЦП; по окончанию преобразования автоматически сбрасывается в лог. 0;

- CHS0-CHS2 - выбор аналогового входа порта А (назначение этих разрядов зависит от типа микроконтроллера);

- ADCS0-ADCS1 - выбор рабочей частоты АЦП (табл. 1.24).

Таблица 8.2. Выбор рабочей частоты АЦП микроконтроллеров PIC

ADCS1

ADCS0

Частота

0

0

Частота системной синхронизации / 2

0

1

Частота системной синхронизации / 8

1

0

Частота системной синхронизации / 32

1

1

Тактирование от встроенного RC-осциллятора АЦП (250 кГц)

Максимальная допустимая рабочая частота АЦП микроконтроллеров PIC - 625 кГц. Это следует учитывать при выборе коэффициента деления частоты системной синхронизации.

Использование внутреннего RC-осциллятора АЦП не рекомендуется для микроконтроллеров с частотой системной синхронизации выше 1 МГц.


Подобные документы

  • Особенности применения светодиодной индикации в микроконтроллерных системах. Характеристика основных приемов программирования универсальных портов ввода-вывода микроконтроллеров AVR. Этапы проектирования елочной гирлянды с микроконтроллерным управлением.

    лабораторная работа [291,7 K], добавлен 17.11.2012

  • Отличительные особенности микроконтроллеров AVR семейства Mega. Характеристики процессора, подсистемы ввода-вывода. Архитектура ядра и организация памяти. Регистры общего назначения. Алгоритмы моделирования команд. Реализация модели внешнего устройства.

    курсовая работа [3,7 M], добавлен 24.06.2013

  • Участие регистров ввода-вывода в работе периферийных устройств. Отражение состояния периферийных устройств в состоянии разрядов регистров состояния. Перечень имен и номеров регистров ввода-вывода, управления и состояния микроконтроллеров разных типов.

    курсовая работа [171,2 K], добавлен 22.08.2010

  • Назначение, особенности, структура и функционирование различных моделей микроконтроллеров. Средства их отладки и программирования. Способы адресации и система команд. Набор периферийных устройств. Порты ввода/вывода. Модуль формирования ШИМ-сигналов.

    курсовая работа [201,9 K], добавлен 25.12.2014

  • Архитектура микроконтроллеров семейства Mega. Организация памяти. Способы адресации памяти данных. Энергонезависимая память данных. Таблица векторов прерываний. Счетчик команд и выполнение программы. Абсолютный вызов подпрограммы. Сторожевой таймер.

    дипломная работа [213,9 K], добавлен 02.04.2009

  • Классическая архитектура компьютера. Понятие разрядной сетки. Устройство ввода-вывода. Арифметическо-логическое устройство, структура регистров АЛУ, куда помещаются исходные и результирующие данные, а также размер регистров (число двоичных разрядов t).

    презентация [1,5 M], добавлен 29.11.2013

  • Структура и основные элементы микроконтроллера. Разрядность и система команд процессора. Методы представления информации. Память и её типы. Режимы работы портов электронного устройства. Многофункциональность выводов микро-ЭВМ. Семейства микроконтроллеров.

    презентация [1,2 M], добавлен 16.12.2011

  • Определение основных функций процессора. Микросхема процессора и выводы шин адреса, данных и управления. Функции памяти и устройств ввода/вывода (мыши, клавиатуры, джойстика). Описание функций внутренних регистров микропроцессора. Оперативная память.

    презентация [603,1 K], добавлен 17.06.2014

  • Характеристика, разновидности, архитектура процессоров. Понятие интерфейса, описание видов шин, внешних запоминающих устройств, особенности конструкции. Специфика файловой системы устройства подсистемы ввода/вывода, достоинства, недостатки, база данных.

    курс лекций [747,0 K], добавлен 24.06.2009

  • Применение современных микроконтроллеров как одного из перспективных аппаратно-программных средств информационных систем. Общие принципы построения микроконтроллеров, их типовая структура. Разработка программы расчета задержек на языке ассемблер.

    курсовая работа [719,2 K], добавлен 22.04.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.