27.2.7. Задание точки останова немедленного чтения
Определяя макрокоманду и подключая ее к точке останова немедленного чтения, пользователь может смоделировать макрокомандой поведение аппаратного устройства, например порта ввода/вывода, как это сделано в описываемом примере. Точка останова немедленного чтения не будет прерывать выполнение, а только временно приостановит его, чтобы отметить условия останова и выполнить связанную, с ней макрокоманду. В данном примере, моделируется ввод из UART путем^. установки точки останова немедленного чтения на адрес UARTRBRTHR и подключения к ней макрокоманды AccessQ. Макрокоманда моделирует ввод из UART. Задание точки останова немедленного чтения состоит из следующих шагов:
1. Выбрать View>Breakpoints, чтобы отобразить диалоговое окно Breakpoints, в котором «кликнуть» правой кнопкой «мыши», после чего откроется контекстное меню. В нем следует выбрать New BreakpointMmmediate, после чего откроется окно New Breakpoint с таблицей Immediate.
2. Таблицу Immediate необходимо заполнить в соответствии с Табл. 27.2.
Таблица 27.2. Настройки параметров окна Immediate
Установка |
Значение |
Описание |
Break at |
UARTRBRTHR |
Получить адрес буфера |
Access Type |
Read |
Тип точки останова (чтение или запись) |
Action |
AccessQ |
Макрокоманда, связанная с точкой останова |
В ходе выполнения, когда C-SPY обнаружит доступ для чтения по адресу UARTRBRTHR, он временно приостановит симуляцию и выполнит макрокоманду AccessQ- Макрокоманда будет читать значение из файла InputData.txt и записывать его в UARTRBRTHR. После этого C-SPYвозобновит симуляцию, читая получившееся содержимое UARTRBRTHR.
3. «Кликнуть» ОК, чтобы закрыть диалоговое окно New Breakpoints.
Чтобы автоматизировать установку контрольной точки, можно, вместо всего вышеприведенного, использовать системную макрокоманду_setSimBreak в
файле установок C-SPY.
27.3. Выполнение приложения
Когда в ходе выполнения приложения, управление в программе достигает цикла с условием while, которое ожидает ввода, происходят временные остановы. Запуск приложения на выполнение производится в следующей последовательности:
1. В окне исходного файла Interrupt.c найти функцию irqHandler.
2. Установить на команде ++ callCount; внутри функции irqHandler точку останова немедленного чтения, выбрав EdiOToggle Breakpoint или «кликнув» на кнопке Toggle Breakpoint на инструментальной панели.
3. Открыть окно Terminal I/O и запустить приложение, выбрав Debug>Go или «кликнув» на кнопке Go на инструментальной панели. Приложение должно остановиться в функции обработки прерываний.
4. «Кликнуть» Go, чтобы убедиться, что следующее число Фибоначчи будет напечатано в окне Teirninal I/O. Поскольку основная программа имеет
верхний предел для счетчика значений Фибоначчи, приложение скоро достигнет метки выхода и останова. При этом, окно Terminal I/O отобразит ряд Фибоначчи (Рис. 27.4)..
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |