- •1.Основные сведения .
- •1.1 Обработка прерывания
- •1.2. Описание работы контроллера прерывания
- •1.3. Описание работы периферийной станции транзакций (pts)
- •1.4. Приоритеты прерывания
- •1.5. Изменение приоритетов прерывания
- •1.6. Программы обработки прерывания
- •1.7. Распознавание прерываний
- •1.8. Время ожидания прерывания
- •1.9. Специальные прерывания
- •1.9.1. Прерывание по невыполняемому коду операции
- •1.9.2. Прерывание по ловушке программного обеспечения
- •1.9.3. Немаскируемое прерывание
- •1.10. Программирование прерываний
- •Pts Select Register
- •1.11. Предоставление pts прерывания
- •1.12. Предоставление стандартных прерываний
- •1.13. Выбор источников прерывания
- •1.14. Регистры маскирования прерываний
- •1.15. Регистры захвата прерывания
- •1.16. Pts прерывания
- •1.16.1. Управляющие блоки pts
- •1.16.1.1. Регистр ptscount
- •1.16.1.2. Прерывание End-of-pts
- •1.16.1.3. Регистр ptscon
- •1.16.2. Краткий обзор режима одиночной передачи
- •1.16.2.1. Пример режима одиночной передачи
- •1.16.3. Краткий обзор режима поблочной пересылки
- •1.16.3.1. Пример режима поблочной пересылки
- •1.16.4. Краткий обзор режима сканирования
- •1.16.4.1. Pts циклы в режиме сканирования ацп
- •1.16.5. Краткий обзор режима hsi
- •1.16.5.1. Пример режима hsi
- •1.16.6. Краткий обзор режима hso
- •1.16.6.1. Пример режима hso
1.16.3.1. Пример режима поблочной пересылки
PTSCB на рис.@.8определяет три PTS цикла, каждый из которых будет передавать байты из ячеек памяти 20H-24H в один из следующих блоков: 6000H-6004H, 6005H-6009H, или 600AH-600EH. Каждый цикл PTS требует пакета из пяти передач. Источник и приёмник увеличиваются после каждой передачи, но только приёмник модифицируется после каждого цикла. Первый байт каждого цикла всегда читается из ячейки 20H.
Рис.@.8PTSCB для режима поблочной пересылки
1.16.4. Краткий обзор режима сканирования
аналого-цифрового преобразователя (A/D;АЦП)
В режиме сканирования АЦП, PTS заставляет АЦП выполнять многократные преобразования на одном или нескольких каналах и затем сохраняет результаты. Чтобы использовать режим сканирования АЦП, Вы должны сначала установить в памяти таблицу команд / данных ( см. рис.@.9). Таблица команд / данных содержит команды АЦП, которые чередуются с пустыми ячейками памяти. В этих пустых ячейках PTS сохраняет результаты преобразования. Чтобы инициализировать режим сканирования АЦП, разрешите прерывание по завершению А/Ц преобразования (A/D Conversion Complete interrupt) и назначьте его ослуживание PTS, затем запустите программу начала первого преобразования.
Когда АЦП заканчивает первое преобразование и генерирует прерывание по завершению A/Ц преобразования, инициализируется цикл PTS. В течение каждого цикла PTS, PTS сохраняет результаты из предыдущего преобразования и затем выполняет следующую команду преобразования. Так как результаты преобразования не сохраняются до следующего цикла PTS, последняя ячейка команды (Unused) должна содержать все нули, для того, чтобы предотвратить от повторного старта последнее преобразование.
Обычно, команды АЦП загружаются в таблицу из внешнего ROM. Размер таблицы ограничивается только количеством доступной памяти; она может постоянно находиться во внутреннем или внешнем ОЗУ.
-
XXX+0AH
A/D Result 2
XXX+8H
Unesed
A/D Command 3
XXX+6H
A/D Result 1
XXX+4H
Unesed
A/D Command 2
XXX+2H
A/D Result 0*
XXX
Unesed
A/D Command1
Рис.@.9Таблица команд/данных для режима сканирования АЦП
В режиме сканирования АЦП, PTSCOUNT определяет общее число циклов А/Ц преобразования .
Регистр PTS_S/D указывает на таблицу команд/данных преобразования. Установка бита UPDT в регистре PTSCON (PTSCON.3) заставляет регистр PTS_S/D сохранять свое последнее значение в конце передачи PTS. Очистка этого регистра заставляет регистр возвращаться к значению, которое существовало в начале цикла PTS.
PTS_REG указывает на адрес 02H в HWindow 0. При чтении, эта ячейка содержит регистр AD_RESULT; при записи она содержит регистр AD_COMMAND. Режим сканирования АЦП также использует два временных регистра, которые являются недоступными для пользователя.
1.16.4.1. Pts циклы в режиме сканирования ацп
Первое A/Ц преобразование должно начинать программное обеспечение (A/D Command 0). Прерывание по завершению A/Ц преобразования инициирует цикл PTS. После того, как начинается цикл PTS, происходят следующие действия:
1. PTS читает первую команду (A/D Command 1), сохраняет её во временной ячейке, и затем дважды увеличивает регистр PTS_S/D. PTS_S/D теперь указывает на первую пустую ячейку в таблице команд / данных ( чтобы адресовать xxx +2 ).
2.PTS читает регистр AD_RESULT, сохраняет результаты первого преобразования в ячейке xxx + 2 в таблице команд / данных(A/D Result 0), и дважды увеличивает регистр PTS_S/D. PTS_S/D теперь указывает на xxx + 4.
3. PTS загружает команду из временной ячейки в регистр AD_COMMAND. Это начинает следующий цикл A/Ц преобразования.
4. Если UPDT (PTSCON.3) сброшен, регистр PTS_S/D повторно инициализируется первоначальным значением. Следующая передача будет использовать ту же самую команду и запишет новые данные поверх предыдущих данных. Если UPDT установлен, PTS сохраняет новое содержимое PTS_S/D и она указывает на следующую команду.
5. PTSCOUNT уменьшается и CPU возвращается к выполнению программы. Когда PTSCOUNT достигнет нуля, аппаратные средства очищают соответствующий бит PTSSEL и устанавливает бит PTSSRV, который запрашивает прерывание “end-of-PTS”.
Когда преобразование, начатое циклом PTS, завершается и AЦП генерирует прерывание по завершению АЦП Преобразования , начинается новый цикл PTS. Шаги 1-5 повторяются.
Так как младшие шесть битов регистра AD_RESULT содержат информацию о состоянии, программа обработки “end-of-PTS” прерывания может сдвигать данные результатов вправо на шесть разрядов, чтобы оставить в памяти только результаты преобразования .
Пример 1 режима сканирования АЦП
Таблица команд / данных, показанная в табл.@.7устанавливает ряд АЦП преобразований, начинающихся в канале 7 и заканчивающихся в канале 0. Каждый вход таблицы - слово ( два байта ). На рис.@.10приведён соответствующий PTSCB.
Программное обеспечение начинает преобразование в канале 7. После завершения преобразования, прерывание по завершению A/Ц преобразования инициирует первый цикл PTS.
Шаг 1 запоминает команду канала 6 во временной ячейке и увеличивает PTS_S/D до 102H.
Шаг 2 запоминает результат преобразования канала 7 в ячейке 102H и увеличивает PTS_S/D до 104H.
Шаг 3 загружает команду канала 6 из временной ячейки в регистр AD_COMMAND , для того, чтобы начать следующее преобразование.
Шаг 4 модифицирует PTS_S/D(PTS_S/D указывает на 104H )
Шаг 5 уменьшает PTSCOUNT до 7.
Следующий цикл начинается с сохранения команды канала 5 во временной ячейке . В течение восьмого цикла ( PTSCOUNT = 1) в регистр AD_COMMAND загружается фиктивная команда и никакое преобразование не выполняется. PTSCOUNT уменьшается до нуля и запрашивается “end-of-PTS” прерывание.
Таблица @7. Таблица команд/данных ( Пример 1 )
-
Адрес
Содержание
11EH
AD_RESULT для ACH0
11CH
0000H ( фиктивная команда )
11AH
AD_RESULT для ACH1
118H
AD_COMMAND для ACH0
116H
AD_RESULT для ACH2
114H
AD_COMMAND для ACH1
112H
AD_RESULT для ACH3
110H
AD_COMMAND для ACH2
10EH
AD_RESULT для ACH4
10CH
AD_COMMAND для ACH3
10AH
AD_RESULT для ACH5
108H
AD_COMMAND для ACH4
106H
AD_RESULT для ACH6
104H
AD_COMMAND для ACH5
102H
AD_RESULT для ACH7
100H
AD_COMMAND для ACH6
-
Unused
Unused
PTS_REG(HI)=00H
PTS_REG(LO)=02H
PTS_S/D(HI)=01H
PTS_S/D(LO)=00H
PTSCON=CAH(UPDT=1)
PTSCOUNT=08H
Рис.@.10PTSCB для режима сканирования АЦП( Пример 1 )
Пример 2 режима сканирования АЦП
На рис.@.11приведен пример PTSCB для режима сканирования из 10 PTS циклов, при этом каждый читает один канал АЦП и сохраняет результат в одной ячейке (102H). UPDT очищен, поэтому первоначальное содержимое PTS_S/D после цикла восстанавливается.
Таблица команд / данных приведена в таблице 8.
-
Unused
Unused
PTS_REG(HI)=00H
PTS_REG(LO)=02H
PTS_S/D(HI)=01H
PTS_S/D(LO)=00H
PTSCON=C2H(UPDT=0)
PTSCOUNT=0AH
Рис.@.10 PTSCB для режима сканирования АЦП( Пример 2 )
Таблица @.8. Таблица команд/данных ( Пример 2 )
-
Адрес
Содержание
102H
AD_RESULT для ACHx
100H
AD_COMMAND для ACHx
Программное обеспечение начинает преобразование на канале x. Первый цикл PTS начинается, когда заканчивается преобразование и генерируется прерывание о завершении A/Ц преобразования. PTS сохраняет результат преобразования в ячейке 102H и затем копирует команду преобразования из ячейки 100H в регистр AD_COMMAND. CPU может обрабатывать или перемещать результирующие данные преобразования из таблицы перед тем, как завершится следующее преобразование и начнется новый цикл PTS . Когда начинается следующий цикл, PTS_S/D снова указывает на 100H. Результаты преобразования записываются в ячейку 102H и команда из ячейки 100H выполняется снова.