Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab 5 ввод-вывод.doc
Скачиваний:
19
Добавлен:
25.08.2019
Размер:
124.42 Кб
Скачать

Обслуживание сторожевого таймера

22. Включение сторожевого таймера было только половиной задания, чтобы использовать его правильно. Теперь мы должны иметь дело с ним в нашем коде. Это означает, что если наш управляющий цикл работает как ожидается, сторожевой таймер, хотя он включен, никогда не должен запускать СБРОС. Как мы можем достигнуть этого? Ответ: Мы

должны, где-нибудь в нашем управляющем цикле, сообщить сторожевому таймеру восстанавливающую ключевую последовательность. Ключевая последовательность состоит из двух инструкций записи в WDKEY-регистр, 0x55 и сопровождающей 0xAA.

Вернитесь во вкладку «C/C++», просмотрите файл «Lab5_1.c». Найдите функцию «delay_loop()» и снимите знак «комментарий» с четырех строк:

EALLOW;

SysCtrlRegs.WDKEY = 0x55;

SysCtrlRegs.WDKEY = 0xAA;

EDIS;

Примечание: C-Макрос «EALLOW» откроет доступ к определенной группе регистров CPU, включая регистры сторожевого таймера. Макрос «EDIS» закроет этот доступ.

23. Нажмите кнопку «Rebuild All» или выполните:

Project Rebuild Active Project

24. Загрузите выходной файл для отладочной сессии:

Target » Debug Active Project

и переключитесь на вкладку “Debug” .

25. Запустите выполнение в реальном времени.

Target Run

25. Теперь наш управляющий код должен работать снова как ожидается. Сторожевой таймер активен, но из-за нашей ключевой последовательности он запустит СБРОС только если случится авария кода F2833x. Надо надеяться это никогда не случится!

Лабораторная работа 5_2: Цифровой вывод (модифицированный)

Необходимо модифицировать код Lab5_1. Вместо показа четырех младших битов переменной "counter" как в Lab5_1, необходимо теперь показать «движение» светодиодов слева направо и наоборот:

Порядок выполнения

Модифицируйте программу и файл проекта.

1. Откройте исходную программу «Lab5_1.c» из проекта Lab5.pjt в C:\DSP2833x_V4\Labs\Lab5 и сохраните этот файл как «Lab5_2.c».

2. Исключите файл «Lab5_1.c» из build. Правый клик на Lab5_1.c и в окне проекта выбор

Exclude File(s) from Build".

Добавьте новый файл исходной программы к вашему проекту.

3. Модифицируйте код в «Lab5_2.c» согласно новой цели. Переменная «counter» больше не нужна, её можно удалить.

4. Вновь скомпилируйте и протестируйте код как это Вы сделали в Lab5_1.

Лабораторная работа 5_3: Цифровой ввод.

Цель: Lab5_3 должна прочитать состояние шестнадцатеричного шифратора и отобразить его на светодиодах LD1 (GPIO9), LD2 (GPIO11), LD3 (GPIO34) и LD4 (GPIO49).

Теперь давайте добавим некоторую цифровую входную функцию к нашему коду. На Периферийной плате исследователя, цифровые линии с GPIO12 по GPIO15 - вводы с 4-битового шестнадцатеричного шифратора (SW2). Это устройство генерирует 4-битовое число между двоичным «0000» и «1111», в зависимости от своего переключателя.

Порядок выполнения

Модифицируйте программу и файл проекта

1. Откройте исходную программу «Lab5_1.c» из проекта «Lab5» в C:\DSP2833x_V4\Labs\Lab5 и сохраните этот файл как «Lab5_3.c».

2. Исключите файл «Lab5_2.c» из build. Правое нажатие кнопкой мыши на Lab5_2.c и в окне проекта выбор Exclude File(s) from Build.

3. Модифицируйте Lab5_3.c. Удалите переменную"counter". Добавьте функции вызова в «InitSystem()» и «Gpio_select()». Бесконечный while(1)-цикл модификации не требует. Просто текущая величина с ввода GPIO12 (бит 0 шифратора) копируется на вывод GPIO9 (LED1) и так далее.

4. Как насчет сторожевого таймера? Мы обслуживали сторожевой таймер в «delay_function()» - было бы неразумно удалить этот вызов функции из нашего управляющего цикла!

5. Скомпилируйте, загрузите и протестируйте программу как Вы сделали в предшествующих упражнениях.

Когда код работает, поворачивайте ключ шестнадцатеричного шифратора. Каждый поворот по часовой стрелке должен увеличивать двоичный код на четырех светодиодах, поворот против часовой стрелки должен уменьшать код.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]