Предыдущая Следующая

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 ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz