Содержание
Интернет-магазин
Отладочная плата Microstick Development Board помогает легко и эффективно разрабатывать устройства с применением 16-и разрядных микроконтроллеров и Цифровых Сигнальных контроллеров Microchip.
Плата Microstick предоставляет вам недорогой путь для начала освоения 16-и разрядных микроконтроллеров. Плата содержит интегрированный отладчик и программатор. Может использоваться автономно или подключаться к плате прототипирования для создания своих устройств. Среда разработки MPLAB IDE поддерживает программирование и отладку Microstick.
С домашней странички Microstick можно скачать простой пример, в котором конфигурируемся микроконтроллер и в цикле, связанным с прерыванием по таймеру Timer1 периодически меняет состояние портов на противоположное. Так как к одному из выводов Microstick подключен светодиод, то мы увидим его мигание.
Далее мы будем модифицировать данный пример для исследования различных возможностей микроконтроллера и его периферии.
Для начала научимся собирать проект и запускать на плате Microstick.
Запускаем проект
Выбираем в качестве отладчика Microstick
Собираем проект
Если нет ошибок, то можно запрограммировать контроллер (Debugger→Program) и запустить программу на выполнение (Run).
Точки останова, наблюдение за переменными и другие функции отладчика аналогичны описанным в "Руководстве пользователя PICkit2"
Контроллеры PIC24 и dsPIC имеют специальный механизм для отслеживания критических ошибок, таких как математические (деление на ноль), ошибки стека, сбой тактового генератора, ошибка выравнивания адреса программ и данных. При возникновении таких исключений (Trap) формируются немаскируемые прерывания с наивысшим приоритетом.
Для исследования различных функций в одном проекте, будем включать или исключать тесты из кода программы с помощью условной компиляции.
Для начала определим тесты:
/* -------------------------------------------------------- Тесты. 1 в определении Теста включает соответствующий тест 0 - выключает -------------------------------------------------------- */ // Проверка ошибки адреса #define ADDRES_ERR 0 // 0 если убрать тест из кода // Проверка деления на 0 #define DIV0_ERR 0 // 0 если убрать тест из кода
Затем создадим код, формирующий те или иные ошибки:
Деление на ноль:
#if (DIV0_ERR) // Проверка деления на 0 unsigned int VarTestA; unsigned int VarTestB; unsigned int VarTestC; VarTestA = 0; VarTestB = 100; VarTestC = VarTestB / VarTestA; // После этого уходим в Trap #endif
Ошибка адреса:
#if (ADDRES_ERR) // Create Address Error Trap unsigned int *addrPtr=(unsigned int *) 0xFFFF; *addrPtr=*addrPtr+1; // После этого уходим в Trap Nop(); Nop(); #endif
Если задаем
#define ADDRES_ERR 1
то в скомпилированный код будет включен соответствующий кусок кода и после запуска программы на выполнение мы попадем на участок обработки соответствующей ошибки.
Естественно что в отлаженной программе такие ошибки не должны возникать ни при каких условиях, но в реальности, из-за помех и др. непредсказуемых ситуаций, существует ненулевая вероятность возникновения той или иной ошибки. Встроенные механизмы отлова таких ситуаций и правильная их обработка могут помочь избежать непредвиденных последствий.
16-и разрядные контроллеры PIC24 и dsPIC имеют две таблицы векторов прерываний - основную и альтернативную. Две таблицы векторов позволяют за один командный такт поменять логику обработки прерываний с помощью установки всего одного бита. Это обеспечивает удобный способ переключения, например, между основным и служебным кодом (например, реализация бутлоадера, функций самотестирования и т.п.).
Для проверки переключения на альтернативную таблицу установите
#define ALTERNATIVE_VECTORS 1
для включения следующего кода:
#if (ALTERNATIVE_VECTORS) // альтернативная таблица векторов INTCON2bits.ALTIVT = ALTERNATIVE_VECTORS; #endif
Замечание |
---|
Не забывайте описать обработчики разрешенных прерываний для основной таблицы векторов и альтернативной! |
У многих 16-и разрядных контроллеров Microchip есть замечательная возможность - PPS (Peripheral Pin Select) - возможность переназначения функций выводов микроконтроллера (подробнее см. http://gamma.spb.ru/articles.php?i=75)
В качестве примера рассмотрим назначение функции ШИМ на вывод порта RB15 для плавного изменения яркости подключенного к RB15 светодиода платы Microstick.
если включим возможность переключения тактовой частоты
#define SWITCH_CLOCK_TEST 1
и, соответственно, выполним следующий код
#if (SWITCH_CLOCK_TEST) clockSwitch(NOSC_FRCDIV16); // уменьшаем тактовую частоту в 16 раз #endif
то тактовая частота, а соответственно и частота ШИМ-а уменьшится в 16 раз.
Ссылка на описание, учебные примеры и документацию: http://www.microchip.com/microstick
Уроки PIC24 http://piclist.ru/learning_PIC24_1/learning_PIC24_1.html