
- •Регистры лабораторной работы lab 5_1:
- •Установка управляющего цикла
- •Компиляция и загрузка
- •Отладка
- •Включение Watchdog таймера
- •Обслуживание сторожевого таймера
- •Порядок выполнения
- •Лабораторная работа 5_3: Цифровой ввод.
- •Порядок выполнения
- •Лабораторная работа 5_4: цифровой ввод и вывод
- •Лабораторная работа 5_5: Цифровой ввод и вывод, старт/стоп – режим
Обслуживание сторожевого таймера
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. Скомпилируйте, загрузите и протестируйте программу как Вы сделали в предшествующих упражнениях.
Когда код работает, поворачивайте ключ шестнадцатеричного шифратора. Каждый поворот по часовой стрелке должен увеличивать двоичный код на четырех светодиодах, поворот против часовой стрелки должен уменьшать код.