Функции стимула

Стимул подготавливает сигналы для симулятора MPLAB SIM. Вам предоставляется возможность моделировать состояние портов ввода/вывода или записывать значения непосредственно в регистры.

Существует четыре вида стимулов:

· Асинхронный стимул - непосредственное управление состоянием портов ввода/вывода.

· Файл состояния порта ввода/вывода - текстовый файл, описывающий состояние порта вода/вывода.

· Файл стимула регистра - текстовый файл, содержащий 8-разрядное значение регистра.

· Стимул тактового сигнала - регулярный, программируемый, периодический источник тактового сигнала.

6.9.1 Асинхронный стимул

Используется для моделирования логического состояния порта ввода/вывода настроенного на вход (установка значений +5В или 0В). Вы можете нажатием кнопки в диалоговом окне асинхронного стимула указывать входной сигнал на портах ввода/вывода.

Для примера будем управлять состоянием сигнала на входе PORTB микроконтроллера PIC16F84.

Выберите пункт меню Debug > Simulator Stimulus > Asynchronous Stimulus на экране появится диалоговое окно, показанное на рисунке.

Поместите курсор на кнопке «Stim1 (P)» и нажмите правой кнопкой «мыши», на экране появится сокращенное меню.

 

 


Выберите пункт Toggle.

Снова поместите курсор на кнопку «Stim1 (Т)» (символ «P» был заменен на «Т» значение Toggle) и нажмите правой кнопкой «мыши», на экране появится сокращенное меню.

Список портов ввода/вывода PIC16F84.

 

Двойным щелчком левой кнопкой «мыши» выберите порт RBO. Асинхронный диалог теперь должен иметь вид, показанный на рисунке.

 

 

Обратите внимание, что значение «Stim1 (Т)» заменено на «RBO (Т)». Выберите пункт меню Debug > Run > Animate для запуска быстрого выполнения программы по шагам.

Нажмите кнопку «RBO (Т)» в диалоговом окне асинхронного стимула. Изменение состояния PORTB вы можете увидеть в окне регистров специального назначения.

6.9.2 Файлы стимула порта ввода/вывода

Текстовый файл стимула портов ввода/вывода состоит из нескольких колонок. Первая колонка определяет номер цикла при выполнении программы, в котором будут изменяться значения портов ввода/вывода.

6.9.2.1 Порядок создания файла стимула

1. Создайте новый текстовый файл - File > New File. Вы будете вводить текст файла стимула в этом окне.

2. Впишите первое слово в первой линии CYCLE.

Примечание. Для совместимости с более ранними версиями MPLAB IDE, первое слово в первой строке всегда должно быть CYCLE или STEP. Первый столбец определяет номер цикла (в соответствии с секундомером MPLAB IDE), в котором будет изменяться состояние порта ввода/вывода.

3. Справа от слова CYCLE укажите имена выводов микроконтроллера, которые должны соответствовать типу моделируемого микроконтроллера.

Примечание. Чтобы увидеть список поддерживаемых портов ввода/вывода, воспользуйтесь пунктом меню Debug > Simulator Stimulus > Asynchronous Stimulus и нажмите правой кнопкой «мышки» на одной из кнопок окна.

4. Заполните таблицу, указав номер цикла и состояние вывода. После знака «;» или «!» можно вписать комментарии.

5. Сохраните файл стимула - File > Save As... Укажите имя и директорию сохраняемого файла. Файл стимула должен иметь расширение .sti. Теперь файл готов к использованию в проекте.

6.9.2.2 Порядок использования файла стимула

1. Подключите файл стимула к проекту- Debug > Simulator Stimulus > Pin Stimulus > Enable.

2. Откройте дополнительные окна. Например, окно секундомера Window > Stopwatch и окно специальных регистров Window > Special Function Registers. В окне секундомера будет показано прошедшее время при выполнении каждой команды. Если секундомер сбрасывается, файл стимула портов ввода/вывода тоже сбрасывается в начальное состояние.

3. Сбросьте микроконтроллер и наблюдайте за состоянием порта ввода/вывода, выполняя программу по шагам.

6.9.2.3 Пример создания и работы с файлом стимула портов ввода/вывода

Примечание. Этот пример подразумевает, что Вы создали проект, описанный в главе 3.

1. Для создания файла стимула порта ввода/вывода, выберите пункт меню File > New File, на рабочем столе среды MPLAB IDE появится безымянный файл. Введите текст указанный ниже. После символов«;» или «!» можно вписать комментарии.

CYCLE RB1 RBO

20 0 0

41 1 0 ; Установить высокий уровень сигнала на RB1

52 0 1 ; Установить высокий на RBO, низкий на RB1

55 1 1

60 0 0

65 1 0 ; Переключить RB1, тогда ....

76 0 1 ; .... переключить RBO.

 

Введите слово CYCLE на первой строке нового файла. Справа от слова CYCLE введите имя выводов порта ввода/вывода PICmicro RB1 и RBO.

Примечание. Для совместимости с более ранними версиями MPLAB IDE, первое слово в первой линии всегда должно быть CYCLE или STEP. Первый столбец определяет номер цикла (в соответствии с секундомером MPLAB IDE), в котором будет изменяться состояние порта ввода вывода.

В этом файле второй столбец содержит значения для вывода RB1 (PORTB бит 1), третий столбец содержит значения для RBO (PORTB бит 0). Названия выводов должны соответствовать типу моделируемого микроконтроллера PICmicro. Чтобы увидеть список поддерживаемых портов ввода/вывода, воспользуйтесь пунктом меню Debug > Simulator Stimulus > Asynchronous Stimulus и нажмите правой кнопкой «мышки» на одной из кнопок окна.

2. Выберите пункт меню File > Save As... и сохраните подготовленный текст в файле tutor84.sti.

3. Выберите пункт меню Debug > Simulator Stimulus > Pin Stimulus > Enable для подключения файла стимула к проекту.

 


 

4. Откройте окно секундомера Window > Stopwatch и окно регистров специальных функций Window > Special Function Registers для просмотра состояния PORTB. В окне секундомера можно увидеть текущий номер цикла, время выполнения программы и тактовую частоту микроконтроллера.

5. На 41 цикле, считая от сброса секундомера, PORTB изменит свое значение.

 
 

6.9.3 Файл стимула регистра

Текстовый файл стимула регистра состоит из одной колонки значений, которые будут переданы регистру, когда адрес в счетчика команд PC равен значению, указанному в диалоговом окне стимула регистра. Это может быть полезно при моделировании работы АЦП.

6.9.3.1 Порядок создания файла стимула регистра

1. Создайте новый текстовый файл - File > New File. Вы будете вводить текст файла стимула в этом окне.

2. В безымянном окне введите список значений в одну колонку, которые Вы хотите назначить регистру.

3. Сохраните созданный файл - File > Save As... Выберите директорию, в которой хотите сохранить файл, введите имя файла с расширением .reg.

6.9.3.2 Порядок использования файла стимула регистра

1. Выберите пункт меню Debug > Simulator Stimulus > Register Stimulus > Enable для открытия диалогового окна настройки стимула регистра.

2. Укажите адрес в памяти программ, в котором значения из файла должны быть подставлены в регистр.

3. Укажите адрес регистра в памяти данных, в который будут подставляться значения из файла.

4. Нажмите кнопку Browse и выберите файл стимула регистра.

5. Откройте окно памяти данных - Window > File Registers.

6. Сбросьте микроконтроллер и выполните шаги программы. Каждый раз, когда значения адреса счетчика команд PC совпадет с указанным адресом в диалоговом окне, в регистр будет занесено значение из файла стимула. Значения из файла стимула будут подставляться циклически, пока выполняется программа в симуляторе MPLAB-SIM.

6.9.3.3 Пример работы с файлом стимула регистра

Примечание. Этот пример подразумевает, что Вы создали проект, описанный в главе 3.

1. Создайте новый файл - File > New File и введите следующий текст:

АО

FD

2. Сохраните файл File > Save As... с именем tutor84.reg. Этот файл будет использоваться для последовательного ввода значений в регистр.

3. Выберите пункт меню Debug > Simulator Stimulus > Register Stimulus > Enable для открытия диалогового окна стимула регистра. Укажите в качестве адреса памяти программ (Program Memory Address) метку Loop, адрес регистра памяти данных (Register Address) 0x0D и нажмите кнопку Browse для указания файла стимула tutor84.reg.


4. Откройте окно с регистрами Window > File Registers для наблюдения эффекта стимула регистра.


5. Сбросьте микроконтроллер и выполните шаги программы. Каждый раз, когда значения адреса счетчика команд PC совпадет с указанным адресом Loop, в регистр 0x0D будет занесено значение из файла стимула tutor84.reg. Значения 0х10, Ох2Е будут внесены в регистр, выбранный в диалоговом окне стимула регистра, при проходе через метку Loop. После того как подставлено последнее значение (0xFD из файла tutor84.reg), при следующей подстановке, будет использоваться первое значение (0х10), т.е. MPLAB-SIM выполняет подстановку циклически.

6.9.4 Стимул тактового сигнала

Стимул тактового сигнала формирует на входе порта ввода/вывода регулярную форму сигнала с периодичностью кратной тактовым циклам микроконтроллера. Параметры настройки стимула тактового сигнала сохраняются, пока Вы не закроете MPLAB IDE или не удалите их.

Выберите пункт меню Debug > Simulator Stimulus > Clock Stimulus для открытия диалогового окна стимула тактового сигнала, показанного на рисунке.


 

Настройки, показанные на рисунке следующие:

· RBO - 4 цикла высокий уровень, 6 циклов низкий;

· RB1 - 8 цикла высокий уровень, 8 циклов низкий;

Для добавления стимула тактового сигнала - укажите имя порта ввода/вывода, длительность высокого и низкого уровня сигнала и нажмите кнопку Add.

Удалить существующий стимул тактового сигнала можно следующим образом - выберете удаляемый стимул из списка и нажмите кнопку Delete.

6.10.3 Модель микроконтроллера

6.10.3.1 Сброс и режим SLEEP

Все условия сброса поддерживаются симулятором MPLAB SIM. Сброс -MCLR в нормальном или SLEEP режиме микроконтроллера, может быть смоделирован с помощью файла стимула или командой Debug > Run > Reset. Сброс от сторожевого таймера WDT происходит (если он разрешен) через 18мс после последнего сброса счетчика WDT при условии, что предварительный делитель не используется перед WDT.

Причина сброса определяется битами -ТО - сброс от сторожевого таймера и -PD - сброс по включению питания в регистре STATUS. Эта функция полезна при отладке алгоритмов обработки причин сброса.

6.10.3.2 Сторожевой таймер WDT

Работа сторожевого таймера WDT полностью моделируется симулятором MPLAB SIM. Включение WDT выполняется в меню Options > Development Mode раздел Configuration. Коэффициент предделителя определяется битами в регистре OPTION. Период WDT при коэффициенте деления 1 примерно равен 18мс (синхронизируется относительно циклов команд).

6.10.4 Периферия

В симуляторе MPLAB SIM полностью реализована работа модуля TMRO как от внутреннего, так и от внешнего источника тактового сигнала. Значение предделителя TMRO указано в переменной 'TOPRE' для удобства отладки программы.

Примечание. Источник тактового сигнала с длительностью логического уровня меньше 1 TCY моделироваться не может.

6.11.4.3 Сторожевой таймер WDT

Работа сторожевого таймера WDT полностью моделируется симулятором MPLAB SIM. Включение WDT выполняется в меню Options > Development Mode раздел Configuration. Коэффициент предделителя определяется битами в регистре OPTION. Период WDT при коэффициенте деления 1 примерно равен 18мс (синхронизируется относительно циклов команд).