- •1.Функциональное описание микроконтроллера i80196kc
- •1.1. Обзор архитектуры
- •1.1.1. Ядро 80xc196kc
- •1.1.1.1. Файловый регистр (Register File)
- •1.1.1.2. Регистровое арифметико-логическое устройство (ралу)
- •1.1.1.4. Контроллер памяти ( Memory Controller)
- •1.1.1.5. Контроллер прерываний и pts (Interrupt Controller)
- •1.2. Параметры синхронизации
- •1.3. Внутренние периферийные устройства
- •1.3.1. Стандартные порты ввода-вывода
- •1.3.2. Последовательный порт ввода-вывода
- •1.3.3. Быстродействующий модуль
- •1.3.4. Аналого-Цифровой Преобразователь (ацп)
- •1.3.5. Широтно-импульсный модулятор (шим)
- •1.3.6. Сторожевой Таймер
- •2.Введение в программирование 8xc196kc
- •2.1. Типы программирования микроконтроллера
- •2.2. Система команд
- •2.3. Типы данных
- •2.4. Способы адресации
- •3. Карта памяти микроконтроллера i80c196kc
- •3.1. Основные разделы памяти
- •3.1.1. Разделы внешней памяти
- •3.1.2. Порты 3 и 4
- •3.1.3. Программная память и Память Специального назначения
- •3.1.3.1. Управление доступом к внутренней или внешней памяти
- •3.1.3.2. Память для программ
- •3.1.3.3. Память специального назначения
- •3.1.4. Регистровый Файл(Register File)
- •3.1.4.1. Указатель Вершины стека (sp)
- •3.1.4.2 Регистры Специальных Функций
- •3.2. Работа через горизонтальное окно
- •3.2.1. Выбор hWindow
- •3.3.1. Выбор vWindow
- •3.3.2. Работа с вертикальными окнами и Способы Адресации
- •4. Прерывания
- •4.1 Обработка Прерывания
- •4.2. Описание работы Контроллера Прерывания
- •4.3. Описание работы Периферийной Станции Транзакций(pts)
- •4.4. Приоритеты Прерывания
- •4.5. Изменение Приоритетов Прерывания
- •4.6. Программы Обработки прерывания
- •4.7. Распознавание Прерываний
- •4.8. Время Ожидания Прерывания
- •4.9. Специальные Прерывания
- •4.9.1. Прерывание по Невыполняемому Коду
- •4.9.2. Прерывание по Ловушке Программного
- •4.9.3. Немаскируемое Прерывание
- •4.10. Программирование Прерываний
- •4.11. Предоставление pts Прерывания
- •4.12. Предоставление Стандартных Прерываний
- •4.13. Выбор Источников Прерывания
- •4.14. Регистры Маскирования Прерываний
- •4.15. Регистры Захвата Прерывания
- •4.16. Pts Прерывания
- •4.16.1. Управляющие Блоки pts
- •4.16.1.1. Регистр ptscount
- •4.16.1.2. Прерывание End-of-pts
- •4.16.1.3. Регистр ptscon
- •4.16.2. Краткий Обзор Режима Одиночной
- •4.16.2.1. Пример Режима Одиночной Передачи
- •4.16.3. Краткий Обзор Режима Поблочной
- •4.16.3.1. Пример Режима Поблочной Пересылки
- •4.16.4. Краткий Обзор Режима Сканирования
- •4.16.4.1. Pts Циклы в Режиме Сканирования ацп
- •11Eh ad_result для ach0
- •102H ad_result для acHx
- •100H ad_command для acHx
- •4.16.5. Hsi. Краткий Обзор Режима
- •4.16.5.1. Пример Режима hsi
- •4.16.6. Hso. Краткий Обзор Режима
- •4.16.6.1. Пример Режима hso
- •6. Парраллельные порты ввода - вывода
- •6.1. Краткий Функциональный Обзор
- •6.2.Контакты Порта Ввода
- •6.3. Контакты Порта Вывода
- •6.4. Контакты квази-двунаправленного порта
- •6.5 Контакты Двунаправленного Порта с открытым стоком
- •6.6.Программирование Портов ввода-вывода
- •6.7.Организация Портов Ввода
- •6.7.1. Порт 0
- •6.8. Организация Портов Вывода
- •6.9. Порт 1
- •6.10. Порт 2
- •6.11. Доступ к Порту 3 и Порту 4
- •6.11.1. Порт 3 и Порт 4
- •6.12. Особенности работы с квази - двунаправленными портами
4.16.3.1. Пример Режима Поблочной Пересылки
PTSCB на рис.15 определяет три PTS цикла, каждый из которых будет передавать байты из ячеек памяти 20H-24H в один из следующих блоков: 6000H-6004H, 6005H-6009H, или 600AH-600EH. Каждый цикл PTS требует пакета из пяти передач. Источник и приёмник увеличиваются после каждой передачи, но только приёмник модифицируется после каждого цикла. Первый байт каждого цикла всегда читается из ячейки 20H.
Рис.15 PTSCB для режима Поблочной Пересылки
4.16.4. Краткий Обзор Режима Сканирования
Аналого-Цифрового Преобразователя (A/D;АЦП)
В Режиме Сканирования АЦП, PTS заставляет АЦП выполнять многократные преобразования на одном или нескольких каналах и затем сохраняет результаты. Чтобы использовать Режим Сканирования АЦП, Вы должны сначала установить в памяти таблицу команд / данных ( см. рис.16 ).
Таблица команд / данных содержит команды АЦП, которые чередуются с пустыми ячейками памяти. В этих пустых ячейках PTS сохраняет результаты преобразования. Чтобы инициализировать Режим Сканирования АЦП, разрешите прерывание по завершению А/Ц Преобразования(A/D Conversion Complete interrupt) и назначьте его ослуживание PTS, затем запустите программу начала первого преобразования.
Когда АЦП заканчивает первое преобразование и генерирует прерывание по завершению A/Ц Преобразования, инициализируется цикл PTS. В течение каждого цикла PTS, PTS сохраняет результаты из предыдущего преобразования и затем выполняет следующую команду преобразования. Так как результаты преобразования не сохраняются до следующего цикла PTS, последняя ячейка команды(Unused) должна содержать все нули, для того, чтобы предотвратить от повторного старта последнее преобразование.
Обычно, команды АЦП загружаются в таблицу из внешнего ROM. Размер таблицы ограничивается только количеством доступной памяти; она может постоянно находиться во внутреннем или внешнем ОЗУ.
Рис.16 Таблица команд/данных для режима Сканирования АЦП
В Режиме Сканирования АЦП, PTSCOUNT определяет общее число циклов А/Ц преобразования .
Регистр PTS_S/D указывает на таблицу команд/данных преобразования. Установка бита UPDT в регистре PTSCON (PTSCON.3) заставляет регистр PTS_S/D сохранять свое последнее значение в конце передачи PTS. Очистка этого регистра заставляет регистр возвращаться к значению, которое существовало в начале цикла PTS.
PTS_REG указывает на адрес 02H в HWindow 0. При чтении, эта ячейка содержит регистр AD_RESULT; при записи она содержит регистр AD_COMMAND. Режим Сканирования АЦП также использует два временных регистра, которые являются недоступными для пользователя.
4.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. Каждый вход таблицы - слово ( два байта ). На рис.17 приведён соответствующий 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 )
Адрес Содержание