Interrupt cpu – прерывание cpu

Figure 37: CCU Interrupt Status Encode register
Рис.37: Регистр закодированного состояния прерывания CCU
*
|
Бит |
Символ |
Функция |
|
TICE2.7-3
TIFR2.2-0
|
-
ENCINT.2-0
ENCINT.2-0 000 001 010 011 100 101 110
|
Зарезервированы для дальнейшего использования. Не должны быть установлены в ‘1’ пользовательской программой.
Выход закодированного прерывания CCU. Когда происходят множественные прерывания, в регистре флагов прерывания CCU (TIFR2) устанавливается больше, чем один флаг. Закодированный выход может быть прочитан для того, чтобы определить, какое прерывание должно быть обслужено. Пользователь должен записать ‘0’, чтобы снять соответствующий бит прерывания в регистре TIFR2, после того, как соответствующее прерывание будет обслужено. Обратитесь к рис.38 за описанием TIFR2. Источник прерывания Нет прерываний, ожидающих обслуживание Прерывание выходного канала D (самый низкий приоритет) Прерывание выхода С Прерывание выхода B Прерывание выхода A Прерывание входного канала В Прерывание входа А |

Figure 38: CCU Interrupt Flag register
Рис.38: Регистр флагов прерывания CCU
*
|
Бит |
Символ |
Функция |
|
TIFR2.7
TIFR2.6
TIFR2.5
TIFR2.4
TIFR2.3
TIFR2.2
TIFR2.1
TIFR2.0 |
TOIF2
TOCF2D
TOCF2С
TOCF2В
TOCF2А
-
TICF2B
TICF2A |
Бит прерывания по переполнению таймера CCU. Устанавливается аппаратно по переполнению таймера CCU. Снимается программно.
Бит прерывания с выходного канала D. Устанавливается аппаратно, когда содержимое TH2:TL2 совпадает с OCRHD:OCRLD. Сравниваемый канал D должен быть доступен для того, чтобы сгенерировать это прерывание. Если бит EA в IEN0, бит ECCU в IEN1 и бит TOCIE2D установлены, программный счетчик будет направлен на соответствующее прерывание. Снимается программно.
Бит прерывания с выходного канала С. Устанавливается аппаратно, когда содержимое TH2:TL2 совпадает с OCRHС:OCRLС. Сравниваемый канал С должен быть доступен для того, чтобы сгенерировать это прерывание. Если бит EA в IEN0, бит ECCU в IEN1 и бит TOCIE2С установлены, программный счетчик будет направлен на соответствующее прерывание. Снимается программно.
Бит прерывания с выходного канала В. Устанавливается аппаратно, когда содержимое TH2:TL2 совпадает с OCRHВ:OCRLВ. Сравниваемый канал В должен быть доступен для того, чтобы сгенерировать это прерывание. Если бит EA в IEN0, бит ECCU в IEN1 и бит TOCIE2В установлены, программный счетчик будет направлен на соответствующее прерывание. Снимается программно.
Бит прерывания с выходного канала А Устанавливается аппаратно, когда содержимое TH2:TL2 совпадает с OCRHА:OCRLА. Сравниваемый канал А должен быть доступен для того, чтобы сгенерировать это прерывание. Если бит EA в IEN0, бит ECCU в IEN1 и бит TOCIE2А установлены, программный счетчик будет направлен на соответствующее прерывание. Снимается программно.
Зарезервирован для дальнейшего использования. Не должны быть установлены в ‘1’ пользовательской программой.
Бит прерывания с входного канала В. Устанавливается аппаратно, когда обнаружено событие по вводу. Снимается программно.
Бит прерывания с входа A. Устанавливается аппаратно, когда обнаружено событие по вводу. Снимается программно. |

Figure 39: CCU Interrupt Control register
Рис. 39: Регистр управления прерываниями CCU
*
|
Бит |
Символ |
Функция |
|
TICR2.7
TICR2.6
TICR2.5
TICR2.4
TICR2.3
TICR2.2
TICR2.1
TICR2.0 |
TOIE2
TOCIE2D
TOCIE2С
TOCIE2В
TOCIE2А
-
TICIE2B
TICIE2A |
Бит разрешения прерывания по переполнению таймера CCU.
Бит разрешения прерывания от выходного канала D. Если бит EA и этот бит установлены в ‘1’, когда канал D доступен и содержимое TH2:TL2 совпадает с OCRHD:OCRLD, программный счетчик будет направлен на соответствующее прерывание.
Бит разрешения прерывания от выходного канала С. Если бит EA и этот бит установлены в ‘1’, когда канал С доступен и содержимое TH2:TL2 совпадает с OCRHС:OCRLС, программный счетчик будет направлен на соответствующее прерывание.
Бит разрешения прерывания от выходного канала В. Если бит EA и этот бит установлены в ‘1’, когда канал В доступен и содержимое TH2:TL2 совпадает с OCRHВ:OCRLВ, программный счетчик будет направлен на соответствующее прерывание.
Бит разрешения прерывания от выходного канала А. Если бит EA и этот бит установлены в ‘1’, когда канал А доступен и содержимое TH2:TL2 совпадает с OCRHА:OCRLА, программный счетчик будет направлен на соответствующее прерывание.
Зарезервирован для дальнейшего использования. Не должны быть установлены в ‘1’ пользовательской программой.
Бит разрешения прерывания от входного канала В. Если бит EA и этот бит установлены, когда обнаружено событие по вводу, программный счетчик будет направлен на соответствующее прерывание.
Бит разрешения прерывания от входного канала А. Если бит EA и этот бит установлены, когда обнаружено событие по вводу, программный счетчик будет направлен на соответствующее прерывание. |
Универсальный асинхронный приемопередатчик (UART)
LPC932 имеет усовершенствованныйUART, который совместим с традиционным 8051UART, за исключением того, что переполнение таймера 2 не может быть использовано как источник скорости двоичной передачи.LPC932 не включает в себя независимого генератора скорости двоичной передачи. Скорост двоичной передачи может быть выбран из резонатора (поделенный на константу), переполнение таймера 1, или независимый генератор скорости двоичной передачи. В дополение к генератору скорости двоичной передачи, улучшения над стандартом 80C51UARTвключаетFraningErrordetection(обнаружение ошибки фрейма), обнаружение прерывание передачи, автоматическое разрешения адреса, выборочный двойной буфер и несколько опций прерывний.
UARTработает в 4 режимах:
Mode 0 (режим 0)
Последовательные данные поступает и выходит через RxD.TxDвыводит такт сдвига. 8 бит передаются или принимаются,cамый младший первый. Скорость передачи фиксирована как 1/16 от тактовой частоты процессора.
Mode 1 (режим 1)
10 бит передаются (через TxD) или принимаются (черезRxD): стартовый бит (логический 0), 8 бит с данными (самый младший первый), и стоп-бит (логическая 1). Когда данные получены, стоп-бит запоминается вRB8 в регистре специальных функцийSCON. Скорость передачи переменный и определяется скоростью переполнения таймера 1 или генератором скорости двоичной передачи.
Mode 2 (режим 2)
11 бит передаются (через TxD) или принимаются (черезRxD): стартовый бит (логический 0), 8 бит с данными (самый младший первый), программируемый 9-й бит с данными и стоп-бит (логическая 1).Когда данные передаются, 9-му биту (TB8 вSCON) может быть присвоена логическая 1 или логический 0. Или, например, бит четности (P, вPSW) может быть записан вTB8. Когда данные принимаются, 9-й бит записывается вRB8 в регистре специальных функцийSCON, а стоп-бит не сохраняется. Скорость передачи программируется как 1/16 или 1/32CCLK, в зависимости от установкиSMOD1 бита вPCON.
Mode 3 (режим 3)
11 бит передаются (через TxD) или принимаются (черезRxD): стартовый бит (логический 0), 8 бит с данными (самый младший первый), программируемый 9-й бит с данными и стоп-бит (логическая 1). Режим 3, такой же как и режим 2, за исключением скорости передачи. Скорость передачи в режиме 3 переменна и контролируется скоростью переполнения таймера 1 или генератором скорости передачи.
Во всех четырех режимах, передача инициируется любой командой, которая использует SBUFкак конечный адресат. Прием иницируется в режиме 0 условиемR1=0 иREN=1. Прием инициируется в других режимах входным стартовым битом, еслиREN=1.
Пространство регистра специальных функций.
|
Регистр |
Описание |
Расположение SFR |
|
PCON |
Управление питанием |
87H |
|
SCON |
Управление последовательный порт (UART) |
98H |
|
SBUF0 |
Буфер данных последовательного порт (UART) |
99H |
|
SADDR |
Адрес последовательного порт (UART) |
A9H |
|
SADEN |
Разрешение адреса последовательного порта (UART) |
B9H |
|
SSTAT |
Статус последовательного порта (UART) |
BAH |
|
BRGR1 |
Cтарший байт генератора скорости двоичной передачи |
BFH |
|
BRGR0 |
Младший байт генератора скорости двоичной передачи |
BEH |
|
BRGCON |
Управление скоростью двоичной передачи |
BDH |
Генератор скорости передачи и выборки.
Усовершенствованный UARTPC932 имеет независимый генератор скорости двоичной передачи. Скорость передачи определяется значением, запрограммированным в регистрах специальных функцийBRGR1 иBRGR0.UARTможет использовать либо таймер 1, или выход генератора скорости двоичной передачи, как определеноBRGCON.2-1 (см. Сх. 41). Примечание: таймер 1 далее делит частоту пополам, еслиSMOD1 бит (PCON.7) установлен. Независимый генератор скорости двоичной передачи использует ССLK.
Обновление BRGR0 иBRGR1.
Регистры специальных функций скорости двоичной передачи, BRGR1 иBRGR0 должны загружаться, когда генератор скорости двоичной передачи отключен (BRGENбит в регистреBRGCONустановлен в “0”). Это позволяет избегать загрузки внутреннего значения в генератор скорости.
ПРЕДУПРЕЖДЕНИЕ: если в один из регистров BRGR0 илиBRGR1 производится запись, когдаBRGEN=1, то результат непредсказуем.
Таблица 14.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FIGURE_40
FIGURE_41
Framing Error.
Ошибка фрейминга случается, когда стоп-бит «воспринимается» как логичский “0”. Ошибка фрейминга отображается в регистре статуса (SSTAT). В дополнение, еслиSMOD0 (PCON.6) установливается в “1”, то ошибки фрейминга могут быть сделаны вSCON.7. ЕслиSMOD0 – “0”,SCON.7 –SM0. РекомендуетсяSM0 иSM1 (SCON.7-6) программируется приSMOD.0 – “0”.
Breakdetect.
Breakdetectотображается в регистре статуса (SSTAT). Разрыв обнаруживается, когда 11 последовательных бит посылаются как “0”. Так как условие разрыва также удовлетворяет появлению ошибки фрейминга, то разрыв приведет к появлению ошибки фрейминга. Если был обнаружен разрыв, тоUARTперейдет в состояние бездействия и останется в нем до получения стоп-бита. Обнаружение разрыва может быть использовано для сброса устройства и принужденному переводу вISPрежим путем установкиEBRRбита (AUXR1.6).
|
Бит |
Символ |
Функция |
|
SCON.7 |
SM0/FE |
Использование этого бита определяется SMOD0 в регистре PCON. Если SMOD0 = “0”, то этот бит читается и пишется как SM0, который, с SM1, определяет режим последовательного порта. Если SMOD0=”1”, то этот бит читается и пишется как FE (Framing Error). FE устанавливается приемником при получении неправильного стоп-бита. Установив, этот бит не может быть сброшен правильными фреймами, но может быть сброшен программно. (Примечание: UART режимные биты SM0 и SM1 должны програмироваться, когда SMOD0 – “0”, режим по умолчанию после сброса) |
|
SCON.6 |
SM1 |
Совместно с SM0 определяют режим последовательного порта. (см. Табл. Ниже) |
|
SCON.5 |
SM2 |
Включает мультипроцесорную коммуникацию в режимах 2 и 3. В режиме 2, или 3, если SM2 установлен в 1, тогда R1 не будет активирован, если 9-й (программируемый) бит установлен в “0”. В режиме 0, SM2 должен быть 0. В режиме 1, SM2 обязан быть 0. |
|
SCON.4 |
REN |
Включает последовательный прием. Устанавливается программно для приема. Снимается тоже программно для отключения приема. |
|
SCON.3 |
TB8 |
9-й (программируемый) на передачу бит с данными. Устанавливается и снимается программно. |
|
SCON.2 |
RB8 |
9-й (программируемый) принятый бит в режимах 2 и 3. В режиме 1 (SM2 обязан быть 0) RB8 – принятый стоп-бит. В режиме 0 – RB8 не определен. |
|
SCON.1 |
TI |
Флаг прерывания передачи. Устанавливается оборудованием в конце 8-го бита в режиме 0, или приблизительно на полпути через стоп-бита в режиме 1. |
|
SCON.0 |
RI |
Флаг прерывания передачи. Устанавливается оборудованием в конце 8-го бита в режиме 0, или приблизительно на полпути через стоп-бита в режиме 1. |
Схема 42. – SCON регистр.
|
Бит |
Символ |
Функция |
|
SSTAT.7 |
DBMOD |
Режим двойной буфферизации. Когда установлен в 1 – включение двойной буферизации. Обязан быть 0 для режима 0 UART. Для того, чтобы быть совместимым с существующими 80C51 устройства, этот бит сбрасывается в 0 для отключения данного режима. |
|
SSTAT.6 |
INTLO |
Позиция передачи прерывания. Когда установлен в “0”, то Tx прерывание выдается в начале стоп-бита. Когда установлен в “0”, то Tx прерывание выдается в конце стоп-бита. Обязан быть “0” для режима 0. Учтите, что в случае одиночной буферизацииб если Tx прерывание происходит в конце STOP бита, то возможнен интервал перед следующим старт-битом. |
|
SSTAT.5 |
CIDIS |
Совмещенное отключение прерывание. |
|
SSTAT.4 |
DBISEL |
|
|
SSTAT.3 |
FE |
|
|
SSTAT.2 |
BR |
|
|
SSTAT.1 |
OE |
|
|
SSTAT.0 |
STINT |
|
|
|
|
|
Схема 43.
Подробнее о режиме 0 UART.
В режиме 0, запись в SBUFвызовет передачу. В конце передачи,TI(SCON.1 ) устанавливается, который затем должен быть сброшен программно. Режим двойной буферизации в данном режиме обязательно должен быть отключен.
Прием инициируется сбросом RI(SCON.0). Синхронизированная последовательная передача происходит иRIбудет установлен снова в конце пеедачи. При сбросеRIначинается прием следующего символа. Обратитесь к схеме 44 для временных интервалов.
FIGURE_44
Подробнее о режиме 1 UART.
Прием инициируется путем установления перехода из 1 в 0 на RxD.RxDопрашивается в 16 раз чаще запрограммированной скорости передачи. Когда устанавливается наличие перехода, счетчик деления на 16 сбрасывается. Каждов время бита таким образом делится на 16 состояний счетчика. На 7, 8, и 9 состояниях счетчика, считывается состояниеRxD. Принимаемое значение – то, которое появилось в 2-3 опросах. Это делается для подавления шумов. Если значение, которое принято в первом отсчете не 0, то приемные схемы сбрасываются и приемник снова будет искать переход из 1 в 0. Это обеспечивает тказ от ложных старт-битов. Если старт-бит правилен, то он сдвигается во входной регистр сдвига и просиходит прием фрейма.
Сигнал для загрузки SBUFиRB8, и установкиRIбудет сгенерирован при условии если, и только если следующие условия выполняются во время генерации сигнала последнего сдвига:RI=0, и либоSM2=0 или полученный стоп-бит равен 1. При условии, что хотя одно из двух условий не выполняется, то полученный фрейм считается потерянным. Если выполняются оба условия , то стоп-бит записывается вRB8, 8 бит с данными пишутся вSBUF,RI– активируется.
FIGURE_45
Подробнее о режимах 2 и 3 UART.
Прием точно такой же, как в режиме 1.
Сигнал для загрузки SBUFиRB8, и установитьRIбудет сгенерирован, если, и только если, следующи условия выполняются во время генерации сигнала последнего сдвига: (a)RI=0, и (b) либоSM2=0 или полученный 9-й (программированный) бит равен 1. При условии, что хотя одно из двух условий не выполняется, то полученный фрейм считается потерянным. Если выполняются оба условия , то 9-й бит записывается вRB8, 8 бит с данными пишутся вSBUF.
FIGURE_46
Framing Error и RI в режимах 2, 3 с SM2=1
Если SM2=1 в режимах 2 и 3,RIиFEведут себя следующим образом.
Таблица 15. FEиRIприSM2=1 в режимах 2 и 3.
|
Режим |
PCON.6 (SMOD0) |
RB8 |
RI |
FE |
|
2 |
0 |
0 |
Нет RI при RB8=0 |
Происходит в течение STOP-бита |
|
1 |
Похоже на cх. 46 c SMOD0=1, RI происходит в течение RB8, один бит перед FE. |
Происходит в течение STOP-бита | ||
|
3 |
1 |
0 |
Нет RI при RB8=0 |
НЕ происходит |
|
1 |
Похоже на cх. 46 c SMOD0=1, RI происходит в течение стоп-бита. |
Происходит в течение STOP-бита |
BreakDetect.
Разрыв происходит, когда 11 последовательных бит воспринимаются нулями и это отбражается в регистре статуса (SSTAT). Для режима 1, это состоит из старт-бита, 8 битов с данными, два стоп-бита. Для режимов 2 и 3, это состоит из старт-бита, 9 бит с данными, и одним стоп-битом. Бит обнаружения разрыва сбрасывается программно или по сбросу. Обнаружение разрыва может быть использовано для сброса устройства и принудительному переходу устройства вISPрежим. Это происходит в случае, еслиUARTвключен и битEBRR(AUX1.6) установлен и разрыв происходит.
Двойная буферизация.
UARTимеет двойную буферизацию передачи, который позволяет буферизацию следующего символа для записи вSBUF, пока передается первый символ. Двойная буферизация позволяет передачу цепочки символов толко с одним стоп-битом между любыми двумя символами, для того, чтобы следующий символ пишется между старт битом и стоп-битом предыдущего символа.
Двойная буферизация может быть отключена. Если отключена, (DBMOD,SSTAT.7=0)UARTсовместим с традиционным 80С51UART. Если включен, тоUARTпозволяет запист вSBUF, пока предыдущие данные сдвигаются наружу.
Двойная буферизация в различных режимах.
Двойная буферизация разрешена только в режимах 1, 2 и 3. В режиме 0 двойная буферизация должна быть обязательно отключена. (DBMOD=0).
Прерывания передачи в режиме включенной двойной буферизации в режимах 1, 2, 3
В отличие от традиционного UART80С51, при включении двойной буферизации, прерываниеTxDгенерируется по готовности двойного буфера принимать новые данные. Происходит следующее при передаче(предполагается 8 бит с данными):
изначально двойной буфер пуст
процессор пишет в SBUF
данные SBUFзагружаются в регистр сдвига иTxпрерывание генерируется немедленно
если есть еще данные, то переходим в п. 6, иначе идем далее.
если данных пока нет:
если DBISEL=”0”, то больше прерываний не происходит
если DBISEL=”1” иINTLO=”0”, тоTxпрерывание случится в начале стоп-бита данных, которые в данный момент находятся в сдвигателе (последние данные)
если DBISEL=”1” иINTLO=”1”, тоTxпрерывание случится в конце стоп-бита данных, которые в данный момент находятся в сдвигателе (также последние данные)
если есть еще данные, то процессор пишет в SBUА снова. Тогда:
Если INTLO=”0”, то новые данные будут загружены иTxпрерывание случится в начале стоп-бита, которые в данный момент находятся в сдвигателе.
Если INTLO=”1”, то новые данные будут загружены иTxпрерывание случится в конце стоп-бита, которые в данный момент находятся в сдвигателе.
Переход к п. 3
Примечание: если DBISEL=”1” и процессор пишет вSBUF, когда стоп-бит последних данных сдвигается, может возникнуть неясность случилось лиTxпрерывание генерируется уже сUART, который не знает, где следующие данные.
FIGURE_47
9-й бит (бит 8) в двойной буфферизации (режимы 1, 2 и 3)
Если двойная буфферизация отключена (DBMOD,SSTAT.7=0),TB8 может быть записан до или после записи вSBUFдля того, чтобыTB8 обновляется перед тем, какTB8 сдвигается наружу.TB8 не должен меняться снова до тех пор, покаTB8 сдвиг не выполнен, что показыает прерываниеTxD.
Если включена двойная буферизация, то TB8 ОБЯЗАТЕЛЬНО должно быть обновлено перехд записьюSBUF, так какTB8 будет буферизовано дважды вместе сSBUFданными. Операция описана в секции (Прерывания передачи в режиме включенной двойной буферизации в режимах 1, 2, 3) становится такой:
1 изначально двойной буфер пуст
процессор пишет в TB8
процессор пишет в SBUF
данные TB8/SBUFзагружаются в регистр сдвига иTxпрерывание генерируется немедленно
если есть еще данные, то переходим в п. 7, иначе идем далее.
если данных пока нет:
если DBISEL=”0”, то больше прерываний не происходит
если DBISEL=”1” иINTLO=”0”, тоTxпрерывание случится в начале стоп-бита данных, которые в данный момент находятся в сдвигателе (последние данные)
если DBISEL=”1” иINTLO=”1”, тоTxпрерывание случится в конце стоп-бита данных, которые в данный момент находятся в сдвигателе (также последние данные)
если есть еще данные, то процессор пишет в TB8 снова.
процессор пишет в SBUF. Тогда:
Если INTLO=”0”, то новые данные будут загружены иTxпрерывание случится в начале стоп-бита, которые в данный момент находятся в сдвигателе.
Если INTLO=”1”, то новые данные будут загружены иTxпрерывание случится в конце стоп-бита, которые в данный момент находятся в сдвигателе.
Переход к п. 4
Примечание: если DBISEL=”1” и процессор пишет вSBUF, когда стоп-бит последних данных сдвигается, может возникнуть неясность случилось лиTxпрерывание генерируется уже сUART, который не знает, где следующие данные.
Мультипроцессорное взаимодействие.
UARTрежимы 2 и 3 имеют специальное обеспечение для мультипроцессорной коммуникации. В этих режимах, 9 бит с данными принимаются или передаются. При получении данных, то 9-й бит записывается вRB8.UARTможет быть запрограммирован так, что при получении стоп-бита, то прерывание последовательного порта будет активировано только приRB8=1. Эта особенность включается установкой битаSM2 вSCON. Есть лишь один метод использования :
Когда задающий процессор хочет передать блок данных нескольком подчиненным процессорам, то сначала посылает адресный байт, который идентифицирует процессор-получателя. Адресный байт отличается от байта данных тем, что 9-й бит равен 1 в адресном байте, и 0 в байте данных. При SM2=1, ни один из подчиненых процессоров не может быть прерван байтом данных. Адресный байт, тем не менее, прервет все подчиненные процессоры для того, чтобы каждый из них мог прочесть адресный байт и выяснить, не предназначаетя ли он ему. Тот процессор, кому он был адресован, сбросит егоSM2 бит и подготовится к приему данных. Остальные процессоры оставляютSM2 в текущем состоянии и занимаются своим делом дальше, игнорирую биты с данными.
Примечание: SM2 не важен в режиме 0, и обязан быть в “0” в режиме 1.
Автоматическое распознавание адреса.
Автоматическое распознавание адреса – это функция, которая позволяет UARTдля распознавания определенных адресов в последовательном потоке битов, используя аппаратное обеспечение для проведения сравнений. Эта функция сохраняет большое долю труда для программистов, так как исключает необходимость проверки программным обеспечением каждый последовательный адрес, который проходит через последовательный порт. Эта функция включается путем установки битаSM2 в регистреSCON. В 9-ти битных режимахUART(2 и 3),RIфлаг будет автоматически установлен, если принимаемый байт содержит либо “данный” адрес или “широковещательный” адрес. 9-ти битный режим требует, чтобы 9-й бит был “1”, для того, чтобы отличить этот байт от байта данных.
Используя автоматическое распознавание адреса, это позволяет задающему процессору выборочно работать с одним или более подчиненных процессоров, путем запроса адреса нужного процессора, или адресов. Все подчиненный процессоры могут быть адресованы через “широковещательный” адрес – broadcast. Два регистра специальных функций используются для того, чтобы определить адрес ведомого процессора,SADDR, и адресная маска –SADEN.SADENиспользуется для определения какие биты вSADDRважны, а какие нет. Адресная маска может быть логически связана операциейANDсSADDR, для создания заданного адреса , который задающий процессор будет использовать для адресации к ведомым. Использование “Given” адреса позволяет нескольким ведомым быть опознынными, исключая другие.
Следующие примеры помогут показать многосторонность данной схемы
Пример #1
PIC_
В примере выше SADDRтакой же, аSADENиспользуется для проведения различия между двумя ведомыми. Ведомый 0 требует “ 0” в бите 0, и игнорирует бит 1. Ведомый 2 требует “0” в бите 1, а бит 0 – игнорирует. Уникальный адрес для ведомого 0 будет 1100 0010, так как ведомый 1 требует “0” в бите 1. А уникальный адрес для ведомого 1 будет 1100 0001, так как “1” в 0 бите исключит ведомого 0. Оба ведомых могут быть выбраны в одно и тоже время по адресу, где бит 0 будет равен “0” (для ведомого 0) и бит 1 равен “0” (для ведомого1). Следовательно, оба могут быть адресованы как 1100 0000.
Пример #2
В примере выше различие между тремя ведомыми в трех младших адреных битах. Ведомый 0 требует, чтобы бит 0 был равен “0” и он может быть уникально адресован, как 1100 0110. Ведомый 1 требует, чтобы бит 1 был равен “0” и он может быть уникально адресован как 1100 0101. Ведомый 2 требует, чтобы бит 2 был равен “0”, и его уникальный адрес будет 1110 0011.
Последовательный интерфейс I2C.
Шина I2Cиспользует два провода, последовательный такт (SCL) и последовательные данные (SDA) для передачи информации между устроствами, присоединенными к шине, и имеет следующие особенности.
Двунаправленная передача данных между ведущим и ведомым
Многоведомая шина (нет цетрального ведущего)
Арбитраж между одновременной передачей ведущих без искажения данных на шине
Синхронизация такта позволяет устройствам с различной скоростью взаимодействовать серез одну последовательную шину.
Синхронизация такта может быть использована как механизм рукопожатия для приостановки и возобновления последовательной передачи.
Шина I2Cможет быть использована для тестовых и диагностических целей.
Типичная конфигурация шины I2Cпоказана на схеме 48. В зависимости от состояния бита направления (R/W), возможны два типа передачи данных по шинеI2C:
Передача данных с ведущего передатчика на ведомый приемник. Первый байт, передаваемый передатчиком является адресом приемника. Следующий байт содержит информацию о количестве байт передаваемых данных. Ведомый передает байты подтвержления о приеме после каждого принятого байта.
Передача данных от ведомого передатчика на приемник ведущего. Первый байт (адрес ведомого) передается ведущим. Затем ведомый возвращает бит подтверждения. Далее следуют байты с данными, передаваемые ведомым ведущему. Ведущий затем возвращает бит подтверждения после всех полученных байтов, кроме последнего. В конце полученного последнего байта, “не подтверждено” возвращается. Ведущее устройство генерирует все тактовые сигналы и условия STARTиSTOP. Передача заканчивается условиемSTOP, или повторомSTART. Так какSTARTозначает новую последовательную передачу, то шинаI2Cне будет освобождена.
LPC932 обеспечивает байт-ориентированныйI2Cинтерфейс. Он имеет четыре рабочих режима:MasterTransmitterMode(режим ведущего-передатчика),MasterReceiverMode(режим ведущего-приемника),SlaveTransmitterMode(режим ведомого-передатчика) иSlaveReceiverMode(режим ведомого-приемника).
FIG_48
Процессор LPC932 связан с шинойI2Cчерез шесть регистров специальных функий (SFR):I2CON(регистр управленияI2C),I2DAT(регистр данныхI2C),I2STAT(регистр статусаI2C),I2ADR(регистр адреса ведомогоI2C),I2SCLH(регистр рабочего циклаSCL, старший байт) иI2SCLL(регистр рабочего циклаSCL, младший байт).
Регистр данных I2C.
I2DATрегистр содержит данные для передачи или для приема. Процессор может считывать и записывать в 8-ми битный регистр, пока не не начнется процесс сдвигания байта. Так ка даннный регистр должен быть только адресоваться, если установленSIбит. Данные вI2DATостаются прежними до тех пор, покаSI=1. Даные вI2DATвсегда сдвигаются справа налево: первый бит для передачи – старший, бит 7, и после того, как байт получен, то первый бит полученных данных - старший вI2DAT.
FIG_49
Регистр адреса ведомого I2C.
I2ADR– возможно и чтение, и запись. Используется только, когдаI2Cинтерфейс установлен в режиме ведомого. В режиме ведущего никакой рои не играет. Самый младший битI2ADR– основной бит вызова. Пока бит установлен, распознается основной адрес вызова (00h).
FIG_50
Регистр управления I2C.
Процессор может и читать содержимое регистра, и писать в него. Аппаратное обеспечение может вляить на содержимое двух битов: SIбит иSTOбит.SI– устанавливается аппаратно, аSTO– стирается аппаратно.
CRSELопределяет источникSCL, когдаI2Cв режиме ведущего. В режиме ведомого, этот бит игнорируется и шина автоматически синхронизируется с любой тактовой частотой до 400Khzот ведущегоI2Cустройства. ПриCRSEL= 1,I2Cинтерфейс использует скорость переполнения таймера 1, поделенное пополам для тактовой скоростиI2C. Таймер 1 должен быть запрограммирован пользователем в 8-ми битный режим с автоперезагрузкой (режим 2).
Cкорость данныхI2C=Cкорость переполнения таймера / 2 =PCLK/ (2*256*загр. знач)).
Если Fosc=12Mhz, загр. значение 0-255, следовательно скоростьI2C– 11.72 – 3000Kbps.
Когда CRSEL=0,I2Cинтерфейс использует внутренний тактовый генератор, который опирается на значениеI2SCLLиI2SCLHрегистра. Рабочий цикл не обязан быть 50%.
STAбит - флагSTART. Установка этого бита приводитI2Cинтерфейс к переходу в режим ведущего и пытается передать стартовые условия или передает повторяющеесяSTARTусловие, когда уже произведен переход в режим ведущего.
STOбит – флагSTOP. При установке этого битаI2Cинтерфейс передает стоп-условие в режиме ведущего или восстановление из ошибочного условия врежим ведомого.
Если STAиSTOоба установлены, тогдаSTOPусловие передается наI2Cшину, если она в режиме ведущего, и передаетSTARTусловие сразу после этого. Если она в режиме ведомого, внутреннееSTOPусловие будес сгенерировано, но на шину не будет выдаваться.
I2CON
|
Бит |
Символ |
Функция |
|
I2CON.7 |
- |
Зарезервирован для будущего использования. Не должен устанавливаться в 1 программами пользователя. |
|
I2CON.6 |
I2EN |
Включение интрефейса I2C. Когда установлен, включает интерфейс. Когда снят, I2C функция отключена. |
|
I2CON.5 |
STA |
Стартовый флаг. STA=1: I2C входит в режим ведущего, проверяет шину и генерирует условие START, если шина свободна. Если шина несвободна, то она ждет STOP условия (которое освободит шину) и генерирует условие START после задержки на половину периода такта внутреннего тактового генератора. Когда I2C |
|
I2CON.4 |
STO |
STOP-флаг. |
|
I2CON.3 |
SI |
|
|
I2CON.2 |
AA |
|
|
I2CON.1 |
- |
|
|
I2CON.0 |
CRSEL |
|
|
|
|
|
Регистр статуса I2C.
Это регистр только для чтения. Он содержит статусный код I2Cинтерфейса. Младшие три бита всегда нули. Всего возможно 26 статусных кодов. Когда кодF8h, то нет существенной информации иSIне установлен. Все остальные 25 статусных кодов соответствуют определенным состояниямI2C. Когда происходит переход в одно из состояний, то происходт установкаSI. Смотрите таблицы 17-20 для подробной информации.
FIG_52
Регистры рабочего цикла SCL(I2SCLHиI2SCLL)
Когда внутренний SCLгенератор выбирается дляI2Cинтерфейс установкойCRSEL=0 вI2CONрегистр, пользователь должен установить значения для регистровI2SCLLиI2SCLHдля выбора скорости данных.I2SCLHопределяет номерPCLKциклов дляSCL– старшие биты,I2CLL– младшие биты. Частота определяется по следующей формуле:
Частота = fpclk/ 2* (I2SCLH+I2SCLL))
Fpclk– частотаPCLK.
Значения
Таблица 16: выбор скорости частоты I2C
|
I2SCLL + I2SCLH |
CRSEL |
Скорость передачи битов (Kbit/sec) на fOSC | ||||
|
7,373 Mhz |
3,6865 Mhz |
1,8433 Mhz |
12 Mhz |
6 Mhz | ||
|
6 |
0 |
- |
307 |
154 |
- |
- |
|
7 |
0 |
- |
263 |
132 |
- |
- |
|
8 |
0 |
- |
230 |
115 |
- |
375 |
|
9 |
0 |
- |
205 |
102 |
- |
333 |
|
10 |
0 |
369 |
184 |
92 |
- |
300 |
|
15 |
0 |
246 |
123 |
61 |
400 |
200 |
|
25 |
0 |
147 |
74 |
37 |
240 |
120 |
|
30 |
0 |
123 |
61 |
31 |
200 |
100 |
|
50 |
0 |
74 |
37 |
18 |
120 |
60 |
|
60 |
0 |
61 |
31 |
15 |
100 |
50 |
|
100 |
0 |
37 |
18 |
9 |
60 |
30 |
|
150 |
0 |
25 |
12 |
6 |
40 |
20 |
|
200 |
0 |
18 |
9 |
5 |
30 |
15 |
|
- |
1 |
3.6 – 922 Kbps |
|
|
|
|
Рабочие режимы I2C.
Master Transmitter Mode.
В данном режиме данные передаются от ведущего к ведомому. Перед переходом в данный режим, I2CONдолжен быть инициализирован следующим образом:
PIC
CRSELопределяет скорость передачи битов.I2ENдолжен быть установлен в 1 для включенияI2Cфункции. ЕслиAAбит – “0”, то интерфейс не подтвердит его собственный ведомый адрес, или общий адрес вызова в случае, если другое устройство становится задатчиком шины и может не войти в режим ведомого.STA,STOиSIбиты должны быть сброшены в “0”.
Первый переданный байт содержит адрес ведомого принимающего устройства (7 бит) и бит направления данных. В этом случае, бит направления данных (R/W) будет логическим 0, означая запись. Данные передаются байтом. После передачи всех байтов, приходит бит подтверждения.STARTиSTOPусловия – на выходе означают начало и конец последовательной передачи.
I2C войдет в режим Master Transmitter Mode установкой STA бита. ЛогикаI2CвыдастSTARTусловие как только шина освободится. После передачиSTARTусловия, устанавливаетсяSIбит и статусный код вI2STATдолжен быть 08h. Этот статусный код должен быть использован для указания на обработчик прерывания, куда пользователь должен загрузить адрес ведомого вI2DATи бит направления данных (SLA+W).SIбит должен быть сброшен перед передачей данных.
Когда адрес ведомого и R/Wбит переданы и получен бит подтверждения,SIснова устанавливается, и возможные статусные коды – 18h, 20hили 38hдля режима ведущего, и 68h, 78h, или 0B0hдля режима ведомого (установкойAA= “1”). Соответствующее действие для каждого из статусных кодов описаны в табл. 17.
FIG_53
МasterReceiverMode
В режиме MasterReceiver, данные принимаются с ведомого передатчика. Передача начинается в такой же манере, как и в режимеMasterTransmitter. Когда условиеSTARTпередано, программа обработки прерывания должна загрузить адрес ведомого и направление данных вI2DAT. БитSIдолжен быть сброшен перед передачей данных.
Когда адрес ведомого и бит направления данных переданы и бит подтверждения полученб устанавливается бит SIи регистр статуса отобразит статусный код. Для режима ведущего возможные коды 40h, 48h, или 38h. Для режима ведомого возможные статусные коды 68h, 78h, илиB0h. Обратитесь к таблице 18 за дальнейшей информации.
FIG_54
После повторения STARTусловия,I2Cможет переключиться в режимMasterTransmitter.
FIG_56
SlaveReceiverMode
В режиме SlaveReceiver, байты с данными получаются с ведущего передатчика. Для инициализации режимаSlaveReceiver, ползователь дожен писать адрес ведомого вI2ADRиI2CONдолжен быть сконфигурирован таким образом:
I2CON_PIC
CRSELне используется для режима ведомого.I2ENдолжен быть установлен в “1” для включения функцииI2C.AAбит должен быть установлен в “1” для подтверждения его ведомого адреса или общий адрес вызова.STA,STOиSIсбрасываются в “0”.
После I2ADRиI2CONинициализированы, интерфейс ждет до тех пор, пока не адресуется его собственный адрес или общий адрес, за которым следует бит направления данных, который “0” (W). Если бит направления данных “1” (R), он входит в режимSlaveTransmitter. После того как адрес и бит направления получены,SIустановлен и правильный статусный код может быть прочтен изI2STAT. Обратитесь к таблице 19 для статусных кодов и действий.
FIG_56
SlaveTransmitterMode
Первый полученный байт и обрабатывается как и SlaveTransmitterMode. Однако, в этом режиме, бит направления укажет, что направление передачи изменено на обратно. Последовательные данные передаюст черезP1.3/SDAпока поледовательная частота – есть вход черезP1.2/SCL. УсловияSTARTиSTOPраспознаются как начало и конец последовательной передачи. В данном приложении,I2Cможет работать как ведущий и ведомый. В режиме ведома,I2Cаппратное обеспечение ищет его собственный адрес ведомого и общий адрес вызова. Если устанавливается один из адресов, то запрашивается прерывание. Когда микроконтроллеры желают стать задатчиком шины, аппаратное обеспечение ждет до тех пор пока шина не освободиться, перед тем как войдет в режим ведущего, так возможные действия ведомого не прерываются. Если арбитраж шины потерян в режиме ведущего,I2Cпереключается в режим ведомого немедленно и может его собственный ведомый адрес в той же передаче.
Cхема
57.

Схема 58.
Таблица 17. Master Transmitter Mode.


|
Статус. код (I2STAT) |
Статус апп. об. шины I2C |
Ответ приложения пользователя |
След действие, приним. | ||||
|
в/из I2DAT |
в I2CON |
| |||||
|
STA |
STO |
SI |
AA |
| |||
|
08h |
Условие STARTпередается |
|
|
|
|
|
|
|
|
Условие |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Идут Table.
SPI– последовательный периферийный интерфейс.
LPC932 обеспечивает другой высокоскоростной последовательный интерфейс,SPI.SPI– полнодуплекная, высокоскоростная, синхронная информационная шина с двумя рабочими режимами: режим ведущего и режим ведомого. Скорость передачи до 3Mb/sможет поддерживаться как в режиме ведущего, так и в режиме ведомого. Имеется флаг окончания переноса (TransferCompletionFlag) и флаг защиты от одновременной записи (WriteCollisionFlafProtection).

SPI интерфейс имеет 4 вывода : SPICLK, MOSI, MISO, ~SS.
SPICLK,MOSIиMISOобычно связываны вместе между двумя или более устройствами. Данные от ведущего к ведомому идут черезMOSI(MasterOutSlaveIn) выводе и втекают от ведомого к ведущему черезMISO(MasterInSlaveOut) вывод. СигналSPICLK– выход в режиме ведущего и вход в режиме ведомого. ЕслиSPIсистема отключена, т.еSPEN(SPCTL.6)=0 (значение сброса), эти выводы сконфигурированы для функций порта.
SS – это необязательный


|
Бит |
Символ |
Функция |
|
SPSTAT.7-0 |
- |
Флаг выполения переноса SPI. |
|
SPSTAT.6 |
|
Флаг коллизий записи SPI. Бит WCOLустанавливается, если в SPDAT пишется в течение передачи. WCOL флаг сбрасывается путем записи “1” в данный бит. |
|
SPSTAT.5-0 |
- |
Зарезервированы для будущего использования. Не должен устанавливаться в 1 программами пользователя. |

|
Бит |
Символ |
Функция |
|
SPD.7-0 |
- |
Биты 7-0 переданных данных. |

В схеме 63, SSIG(SPCTL.7) для ведомого – “0”, иSSиспользуется для выбора ведомого.SPIведущий может использовать любой вывод порта (включаяP2.4/SS) для переводаSSвывода.

Cхема показывает случай, где два устройства соединены один к другому и любое устройство может быть как ведущим, так и ведомым. Когда нет операцийSPI, оба могут быть сконфигурированы как ведущие (MSTR=1) иSSIGсброшен в 0 иP2.4 (notSS) сконфигурированы в квази-двунаправленном режиме. Когда устройство инициирует передачу, то может конфигурироватьP2.4 как выход и перевести его в низкое состояние, приводя к изменению режима на другом устройстве в режим ведомого.

В схеме 65, SSIG(SPCTL.7) биты для ведомого – “0”,и ведомые выбираются соответствующимиSSсигналами.SPIведущий может использовать любой вывод порта. (включаяP2.4/SS) для управленияSSвыводами.
Конфигурирование SPI.
|
SPEN (SPCTL.6) |
SSIG (SPCTL.6) |
SS pin |
MSTR (SPCTL.4) |
Ведущий или ведомый |
MISO |
MOSI |
SPICLK |
Примечания |
|
0 |
X |
P2.4 |
X |
SPI откл. |
P2.3 |
P2.2 |
P2.5 |
SPI отключен. P2.2, P2.3, P2.4, P2.5 используются как выводы порта. |
|
1 |
0 |
0 |
0 |
Ведомый |
выход |
вх |
вх |
|
|
1 |
0 |
1 |
0 |
Ведомый |
Hi. Z |
вх |
вх |
|
|
1 |
0 |
0 |
1(->0)2 |
Ведомый |
вых |
вх |
вх |
|
|
1 |
0 |
1 |
1 |
Ведущий |
вх |
Hi-Z |
Hi-Z |
|
|
1 |
0 |
X |
1 |
Ведущий |
вх |
вых |
вых |
|
|
1 |
1 |
P2.4 |
0 |
Ведомый |
вых |
вх |
вх |
|
|
1 |
1 |
P2.4 |
1 |
Ведущий |
вх |
вых |
вых |
|
Дополнительная информация по ведомому.
Когда CPHAравняется нулю, тоSSIGобязан быть в “0” иSSобазян быть снят и заново установлен после каждого удачно переданного байта через интерфейс. ЕслиSPDATрегистр пишется покаSSв активный (“0”), то возникает ошибка записи. Операция неопределена приCPHA- “0”,SSIG– “1”.
Когда CPHAравняется “1”,SSIGможет быть установлен в “1”. ЕслиSSIG=0,SSвывод может оставаться в активном низком уровне между удачно завершившимимся передачами (может быть низким все время). Это формат предпочитаетсяв системах с одним фиксированным ведущим и одним ведомым, управляющийMISO.
Дополнительная информация по ведомому.
В SPI, передачи всегда инициируются ведущим. ЕслиSPIвключен (SPEN=1), и выбран как ведущий, то записывая в регистр данныхSPIведущим запускает тактовый генераторSPIи собственно передачу данных. Данные появятся на линииMOSIчерез время от половины такта до такта, после того, как были записаны вSPDAT.
Заметьте, что ведущий может выбирать ведомого переводом SSвывода на соответствующем устройстве в низкое состояние. Данные, записанные вSPDATрегистр ведущего сдвигаются сMOSIведущего наMOSIведомого, в тоже время данные вSPDATв ведомом сдвигаются вMISOи передаются наMISOведущего.
После сдвига одного байта, тактовый генератор SPIостанавливается, устанавливая флаг окончания завершения передачи (SPIF) и вырабатывается прерывание, если включены прерыванияSPI(ESPI, илиIEN1.3=1). Два сдвигающих регистра в процессоре ведущего и процессоре ведомого могут рассматриваться как один распределенный 16-ти разрядный круговой регистр. Когда данные сдвигаются от ведущего к ведомому, данные сдвигаются в обратном направлении одновременно. Это подразумевает, что в течение одного цикла сдвига, данные в ведущем и ведомом поменяются местами.
Смена режима на SS.
Если SPEN=1,SSIG=0 иMSTR=1,SPIвключен в режиме ведущего.SSвывод может быть сконфигурирован как вход или квази-двунаправленный(P2M2.4=0). В этом случае, другой ведущий может перевести этот вывод в низкое состояние для выбора этого устройства в качествеSPIведомого и начать пересылку данных. Для того чтобы избежать состязаний на шине , процессор становится ведомым. В результате переходаSPIв режим ведомого,MOSIиSPICLKпереводятся в состояния входов, аMISOстановится выходом.
2. SPIFфлаг вSPISTATустановлен, и если включеныSPIпрерывания, то происходит прерываниеSPI.
Программное обеспечение пользователя должно всегда проверять MSTRбит. Если он сброшен выбором ведомого и пользователь хочет использоватьSPIкак ведущий, то пользователь должен сброситьMSTRбит, иначеSPIостанется в режиме ведомого.
Столкновения записи.
SPIбуферизован на передачу и дважды буферизован на прием. Новые данные для передачи не могут быть записаны в сдвигающий регистр до тех пор, пока предыдущая транзакция не будет окончена.WCOL(SPSTAT.6) бит устанавляивается для отображения столкновения данных, когда в регистр пишутся данные во время передачи. В этом случае, данные которые передаются будут продолжать передаваться, а новые (т.е. которые вызвали коллизию) будут потеряны.
Пока столкновение записи обнаруживается для ведущего и ведомого, редко когда для ведущего, т.к. последний имеет полное управление передачей. Ведомый, однако, не имеет управления и когда ведущий инициирует передачу, то можетслучиться коллизия.
Для приема данных, принимаемые данные переносятся в паралелльный буфер для чтения, т.к сдвигающий регистр свободен для принятия следующего символа. Однако, принимаемый символ должен быть прочитан из регистра данных перед тем , как следующим символ будет сдвинут. Иначе, все предыдущие данные потеряны.
WCOLможет быть сброшен программно путем записи “1” в соответствующий бит.
Режим данных.
Тактовый фазовый бит (CPHA) позволяет пользователю установить фронты для квантования и изменения данных. Бит полярности тактирования (CPOL) позволяет пользователю установить полярность такта. Схемы 66-69 показывают различные установки битаCPHA.




Выборка предварительного делителя частоты SPI.
Выборка предварительного делителя частоты использует SPR0-SPR1 биты вSPCTLрегистре (см. Схему 60).
Аналоговые компараторы.
Два аналоговых компаратора включено в LPC932. Входные и выходные опции позволяют использовать компараторы в различных конфигурациях. Операция компаратора такая, что выход – логическая единица (которые могут быть в регистре и/или перенаправляется на выход) когда положительного входа (один или два выбранных вывода) больше чем, отрицательный вход (выбирается из выводов или как внутренее опорное напряжение). Иначе на выходе 0. Каждый компаратор может быть сконфигурирован для вызова прерывания, когда значение на выходе измениться.
Конфигурация компараторов.
Каждый из компараторов имеет регистр управления, СMP1 для компаратора 1 иCMP2 для компаратора 2. Регистр управления идентичны и показаны на рисунке 70.
Общие соединения для обоих компараторов и показаны на рисунке схема 71. Имеется восемь возможных конфигураций для каждого компаратора, как определено управляющими битами в соответствующих CMPnрегистре:CPn,CNn, иOEn. Эти конфигурации показаны в схеме 72.
Когда каждый компаратор впервые включен, выход компаратор и флаг прерывания не гарантируют быть стабильными для 10 микросекунд. Соответствующие компараторное прерывание не должно включаться в течение этого времени, и флаг прерывания должен быть очищен перед тем, как включить.

|
Бит |
Символ |
Функция |
|
СMPn7.6 |
|
Зарезервировано для будущего использования. Не должно устанавливаться в 1 программами пользователя. |
|
CMPn. 5 |
CEn |
Включение компаратора. Когда установлен, соответствующий компараторная функция включена. Выход компаратора стабилен 10 микросекунд после установки Cen. |
|
CMPn.4 |
CPn |
Выбор положительного входа компаратора. Когда 0, CINa выбирается как положительный компаратор вход. Когда 1, CINnB выбирается как положительный вход компаратора. |
|
CMPn.3 |
CNn |
Выбор отрицательного входа компаратора. Когда 0, компараторный вход сравнения CPMREF выбирается как отрицательный вход компаратора. |
|
CMPn.2 |
OEn |
Включение выхода. Когда в 1, выход компаратора соединен с CMPn выводом, если компаратор включен (CEn=1). Этот выход асинхронен к такту процессора. |
|
CMPn.1 |
Con |
Выход компаратора, синхронизирован с процессором для взаимодействия с программным обеспечением. |
|
CMPn.0 |
CMFn |
Флаг прерывания компаратора.Этот бит устанавливается аппаратно при любом изменении выхода компаратора Con. Этот бит вызывает аппаратное прерывание, если включен. Снимается программно. |

Внутреннее опорное напряжение.
Как внутреннее опорное напряжение, Vref, может снабжать опорное напряжение по умолчанию, когда используется один вход компаратора. Обратитесь к спецификации.
Прерывание компаратора.
Каждый компаратор имеет флаг прерывания CMFn, который содержится в его конфигурационном регистре. Этот флаг устанавливается при любом изменении состояния выхода компаратора. Флаг может быть опрошен или может быть использован для выработки прерывания. Два компаратора используют один общий вектор прерывания. Прерывние будет выработано, когда бит включениеECв регистреIEN1 регистре устанавливается и ситема прерывания включена через битEAв регистреIEN0. Если оба компаратора включают прерывания, после
Компараторы и режимы снижения энергопотребления.
Любой или оба компаратора могут оставаться включенными, когда активируются режимы выключения питания или режим бездействия, но оба компаратора выключены автоматически в режиме полностью выключенного питания.
Если включено прерывние компаратора (кроме режима полностью выключенного питания), изменение на выходе компаратора вызовет выработку прерывания и разбудит процессор. Если вывод компаратора к выводу включен, то вывод должен быть сконфигурирован в двутактном режиме для того, чтобы приобрести быстрое время переключения пока в режиме выключенного питания. Причина кроется в том, что резонатор остановлен, а временно резкое повышение питания, которое обычно случается при переключении на квази-двунапрвленном выводе порта не имеет места.
Компараторы потребляют энергию в режиме выключенного питания и режиме бездействия, так же, каки при нормальной работе. Это должно быть принято во внимание, когда системное потребление энергии – проблема. Для уменьшения потребления энергии, пользователь может отключить компараторы от питания путем их выключения и установки PCONA.5 в “1”, или просто полностью отключить питание от устройства.

Пример конфигурации компараторов.
Нижележащий пример – пример инициализации одного из компараторов. Компаратор 1 сконфигурирован для использования CIN1AиCMPREFвходы, выводит результат компаратора на выводCMP1, и вырабатывает прерывание, когда меняется значение на выходе компаратора.
CMPINIT:
MOV PT0AD,#030h ;
ANL P0M2,#0CFh ;.
MOV CMP1,#024h ;
CALL delay10us ;
ANL CMP1,#0FEh ;
SETB EC ;
SETB EA ;
RET ;
Програма обработки прерывания должна сбросить флаг прерывания (CMF1 в данном случае) перед возвращением.
Прерывание клавиатуры (KBI).
Функция прерывания клавиатуры предназначена в основном для разрешения генерации одиночного прерывания, когда порт 0 равен или не равен определенному образцу. Эта функция может быть использоыана для опознавания адреса шины или опознавания клавиатуры. Пользователь может конфигурировать порт через SFR под различные задачи.
Используются 3 регистра специальных функций. Регистр маски прерываний клавиатуры (KBMASK) используется для определения какие входные выводы присоединенные к порту 0 включены для защелкивания прерывания. Регистр образца клавиатуры (KBPATN) используется для определения образца, который сравнивается со значением порта 0. Флаг прерывания клавиатуры (KBIF) в регистре управления прерываниями клавиатуры (KBCON) устанавливается, когда условие подходит, пока функция прерывания клавиатуры активна. Прерывание будет выработано, если функция включена путем установкиEKBIбита в регистреIEN1 иEA=1.PATN_SELбит в регистре управления прерывнанием клавиатуры (KBCON) используется для определения равенства или неравенства при сравнении.
Для того, чтобы использовать прерывание клавиатуры как оригинальную KBIфункцию, похожую в 87LPC76х серии, пользователю требуется установитьKBPATN=0FFhиPATN_SEL=1 (не равен), далее любой клавишей, присоединенной к порту 0, который включенKBMASKрегистром, что вызывет аппаратную установкуKBIF=1 и выработает прерывание, если включено. Прерывание может быть использовано для пробуждения процессора из режима бездействия или режима выключенного питания. Эта функция частично полезна в ручных, питающихся от батарейки системах, которым необходимо осторожно потреблять электроэнергию и в тоже время быть удобным в использовании.
Для того, чтобы установить флаг и выработать прерывание, образец на порту 0 должен храниться более 6 циклов CCLK.



Сторожевой таймер.
Подсистема сторожевого таймера защищает систему от выполнения неправильного кода путем системного перезапуска, когда происходит исчезновение разрядов в результате ошибки ПО для того, чтобы снабжения таймера до того, как последний достигнет финальног счета. Сторожевой таймер может быть только сброшен при сбросе после включения питания.
Функция сторожевого таймера.
Сторожевой таймер имеет втроенны в кристалл резонатор с частотой работы 400 kHz. Когда включен, сторожевой таймер может работать от резонатора сторожевого таймера или частотуPCLK(см. схему 76), выбор осуществляется путем конфигурирования битаWDCLKв регистре управления сторожевого таймера –WDCON. Когда включена функция сторожевого таймера, таймер должен регулярно устанавливаться в некоторые значения, запрограмированные в ПО для того, чтобы предотвратить его от сброса процессора.
Для управления Сторожевым таймером используются следующие регистры:
регистр управления сторожевым таймеров – WDCON,
регистр загрузки сторожевого таймера – WDL
регистры установки числа сторожевого таймера: WFEED1 и WFEED2.
Два бита регистра специальных функций в конфигурационном байте FlashUCFG1, которые относятся к конфигурации сторожевого таймера: бит включения сторожевого таймера (WDTE) и бит включения безопасности сторожевого таймера –WDSE. Используются они следующим образом:
Таблица 22. Конфигурация сторожевого таймера.
|
WDTE (UCFG1.7) |
WDSE (UCFG1.4) |
Функция |
|
0 |
x |
Сторожевой таймер отключен. Таймер может быть использован как внутренний таймер и может быть использован для выработки прерывания. WDSE не имеет значения. |
|
1 |
0 |
Включен сторожевой таймер. Пользователь может установить WDCLK для выбора источника тактовых сигналов. |
|
1 |
1 |
Сторожевой таймер включен, но сдополнительными функциями безопасности:
|
Схема 78 отображает cторожевой таймер, работающий в основном режиме. Он содержит программируемый 13-ти разрядный делитель частоты и 8-ми разрядный обратный счетчик. Обратный счетчик считает по сигналу, исходящему от делителя частоты. Делитель частоты использует частоту осциллятора или частотуPCLK, выбор происходит в зависимости от битаWDCLKв регистреWDCON.
Примечание: переключение источников тактового сигнала не происходит немедленно!
Если функция сторожевого таймера отключена, то он може быть использован как таймер интервалов и может вырабатывать прерывания.
Сторожевой таймер обеспечивает сброс самого себя при утере значащих цифр и сторожевой таймер включается. Когда он включается, запись в WDLиWDCONдолжна обязательно быть завершена загрузкой новых значащих разрядов для того, чтобы произошли изменения.
Если произошел сброс, то внутренний сброс активен в течении одного частотного цикла сторожевого таймера (PCLKили частоты резонатора сторожевого таймера). ЕслиCCLKвсе еще запущен, то выполнение кода начнется сразу же после цикла сброса. Если процессор был в режиме выключенного питания, то сторожевой таймер запустит резонатор и выполнение кода будет продолжено после того, как достигнется стабильность последнего.
Последовательность загрузки значащих разрядов.
Регистр управления сторожевого таймера и 8-ми разрядный обратный счетчик не загружаются пользователем напрямую. Пользователь пишет в регистры WDCONиWDLSFR. В конце цикла загрузки значения изWDCONиWDLзаписываются в регистр управления и 8-ми разрядный обратный счетчик. Перед загрузкой разрядов, любые новые значения, записанные в в эти дваSFRа не будут иметь никакого эффекта. Для того, чтобы избежать сброса сторожевого таймера, последний нужно загружать (через специальную последовательность функций ПО) перед исчезновением значащих разрядов.
Для загрузки значащих разрядлов, две команды записи должны успешно выполняться последовательно. Между двумя командами чтение SFRзапрещено. Команды должны перенести содержимоеA5hв регистрWFEED1, а содержимое 5Аh- в регистрWFEED2. Неправильное заполнение регистров приведет к немедленному сбросу сторожевого таймера.
Пример:
CLR EA ; запрещаем прерывание
MOV WFEED1,#0A5h ; загрузка Feed1
MOV WFEED2,#05Ah ; загрузка Feed2
SETB EA ; разрешаем прерывания
Эта последовательность подразумевает, что система прерываний LPC932 включена и есть возможность возникновения прерывания в течение загрузки значащих разрядов. Если обработка прерывания разрешена и программа обработки прерывания, которая содержит некоторыеSFR, производит запись, то это защелкнет сброс сторожевого таймера. Если известно, что прерываний во время загрузки не может случиться, то команды для включения и отключения прерываний могут быть убраны.
В режиме сторожевого таймера (WDTE=1) запись в регистрWDCONдолжна быт НЕМЕДЛЕННО продолжена загрузкой значащих цифр для загрузкиWDLв 8-ми разрядный обратный счетчик, иWDCONв теневой регистр. В противном случае будет произведен сброс сторожевого таймера.
Пример:
MOV ACC,WDCON ; получаем WDCON
SETB ACC.2 ; устанавливаем WD_RUN=1
MOV WDL,#0FFh ; загружаем новое значение в 8-им разрядный счетчик
CLR EA ; запрещаем прерывания
MOV WDCON,ACC ; записываем обратно в WDCON
MOV WFEED1,#0A5h ; записываем в Feed1
MOV WFEED2,#05Ah ; записываем в Feed2
SETB EA ; разрешаем прерывания
В режиме счетчика (WDTE=0)WDCONзагружается в регистр управления каждый циклCCLK(не требуется загрузка последовательности), но сама последовательность требуется для загрузки изWDLSFRв 8-ми битный обратный счетчик перед тайм-айтом.


|
Бит |
Символ |
Функция |
|
WDCON.7-5 |
PRE2-PRE0 |
Сторожевой таймер отключен. Таймер может быть использован как внутренний таймер и может быть использован для выработки прерывания. WDSE не имеет значения. |
|
WDCON.4-3 |
- |
Включен сторожевой таймер. Пользователь может установить WDCLK для выбора источника тактовых сигналов. |
|
WDCON.2 |
WDRUN |
Сторожевой таймер включен, но сдополнительными функциями безопасности:
|
|
WDCON.1 |
WTOF |
Флаг тайм-аута таймера сторожевого таймера. Этот бит установлен, когда происходит опустошение сторожевого таймера, загружаемая последовательность сбросит этот бит. Также можно его сбросить программно. |
|
WDCON.0 |
WDCLK |
Выбор частоты входного сигнала сторожевого таймера. Когда установлен, то выбран резонатор сторожевого таймера. Когда сброшен, выбран PCLK. (если процессор отключен, то сторожевой таймер отключен, если WDCLK=0. Примечание: если WDTE и WDSE установлены в 1, то этот бит принудительно устанавливается в 1. |
Количество тактов СТ перед окончанием высчитывается по следующей формуле:
![]()
где:
- PRE– значение делителя частоты, которое может быть установлено от 0 до 7;
- WDL– значение загрузочного регистра, которое может быть от 0 до 255;
Минимальное количество тактов – 33, максимальное – 1 048 832.
Таблица 23. Значений тайм-аутов сторожевого таймера LPC932
|
PRE2-PRE0 |
WDL (в десятичных) |
Период тайм-аута (в циклах) |
Источники тактового сигнала для сторожевого таймера | |
|
000 |
0 |
33 |
82,5 ns |
5.50 ns |
|
255 |
8.193 |
20,5 ms |
1.37 ms | |
|
001 |
0 |
65 |
162.5 ns |
10.8 ns |
|
255 |
16.385 |
41.0 ms |
2.73 ms | |
|
010 |
0 |
129 |
322.5 ns |
21.5 ns |
|
255 |
32.769 |
81.9 ms |
5.46 ms | |
|
011 |
0 |
257 |
642.5 ns |
42.8 ms |
|
255 |
65.537 |
163.8 ms |
10.9 ms | |
|
100 |
0 |
513 |
.1.28 ms |
85,5 ns |
|
255 |
131.073 |
327.7 ms |
21.8 ms | |
|
101 |
0 |
1.025 |
2.56 ms |
170.8 ns |
|
255 |
262.145 |
655.4 ms |
43.7 ms | |
|
110 |
0 |
2.049 |
5.12 ms |
341.5 ns |
|
255 |
524.289 |
1.31 s |
87.4 ms | |
|
111 |
0 |
4097 |
10.2 ms |
682.8 ns |
|
255 |
1.048.577 |
2.62s |
174.8 ms | |

Сторожевой таймер в режиме таймера.
Схема 79 отображает сторожевой таймер в режиме таймера. В этом режиме, любые изменения в WDCONзаписываются в теневой регистр после одного цикла сторожевого таймера. Опустошение сторожевого таймера установитWDTOFбит. ЕслиIEN.6 установлен, то опустошение сторожевого таймера будет вызывать прерывание.WDTOFсбрасывается путем записи “0” в этот бит програмно. Когда случается опустошение, содержимоеWDLперезагружается в обратный счетчик и сторожевой таймер начинает снова считать.
Загрузка последовательночти – необходима для того, чтобы вызвать загрузку WDLв обратный счетчик перед тем, как случится опустошение.

