Этот и последующие проекты, реализуемые на уроках, будут тестироваться на универсальной модульной плате лаборатории робототехники Учборд-2. Внешний вид платы:
На рисунке подписями обозначены разъемы, которые будут использоваться во всех проектах.
Для упрощения настройки микроконтроллера и уменьшения рутинной работы при создании проектов будут использоваться вспомогательные библиотеки, разработанные в лаборатории робототехники для создания прикладных устройств на базе микроконтроллеров семейства PIC24F/dsPIC33.
Библиотеки доступны для скачивания в разделе Загруки на сайте лаборатории (http://www.robionika.ru/downloads). Для продолжения урока необходимо загрузить все файлы из раздела Урок 2.
После загрузки следует создать каталог в корневом каталоге локального диска (C:\ или D:\) с именем, состоящим из латинских символов, например C:\pic24_lessons
, а затем распаковать скачанные архивы в созданный каталог.
Таким образом после скачивания и распаковки у вас должно получиться следующее дерево каталогов (для упрощения приведены только два уровня вложенности):
C:\pic24_lessons\test_uart\
C:\pic24_lessons\test_uart\build\
C:\pic24_lessons\test_uart\debug\
C:\pic24_lessons\test_uart\dist\
C:\pic24_lessons\test_uart\nbproject\
C:\pic24_lessons\libs\
C:\pic24_lessons\libs\common\
C:\pic24_lessons\libs\include\
C:\pic24_lessons\libs\config\
Теперь запускаем среду разработки MPLAB X IDE и открываем проект test_uart
, пользуясь командой в меню File - Open Project из каталога C:\pic24_lessons\
.
Рассмотрим организацию проекта.
В дереве проекта MPLAB X IDE в подкаталогах Header Files/libs
и Source Files/libs
показаны файлы вспомогательных библиотек, которые располагаются в каталоге libs
.
Так, например, рассматриваемый проект test_uart расположен в каталоге:
C:\pic24_lessons\test_uart
В этом каталоге находятся исходные файлы, метафайлы проекта и результаты построения.
test_uart\build
– промежуточные файлы построения (*.o – объектные);test_uart\debug
– файлы генерируемые средой в процессе отладкиtest_uart\dist
– результаты построения (hex – файлы и др.)test_uart\nbproject
– конфигурация и метаданные проектаMakefile
- сценарий построенияconfig.c
– директивы настройки конфигурационных битов;hw_profile.h
– распиновка, частота тактирования, скорость UART и другие настройки;main.c
– точка входа в программу, обычно основная логика программы;traps.c
– обработчики немаскируемых прерываний (ошибка адреса, математические ошибки, переполнение стека, ошибка источника тактирования, ошибка Direct Memory Access (DMA));xprintfconf.h
– настройки модуля форматного ввода-вывода вспомогательной библиотеки.Для того, чтобы микроконтроллер запустился необходимо чтобы были корректно выставлены биты конфигурации. Перечислим самые важные параметры, которые задаются битами конфигурации:
// FOSCSEL
#pragma config FNOSC = FRC // Выбранный источник тактовой частоты - внутренний FRC
#pragma config IESO = ON // Режим загрузки: старт с FRC, затем переключение на внешний
// FOSC
#pragma config POSCMD = NONE //Внеший тактовый генератор не используется
#pragma config OSCIOFNC = ON //Использовать порт OSC2 как порт ввода-вывода
#pragma config IOL1WAY = OFF //Однократная конфигурация переназначаемых портов (Remappable Pins) выключена
#pragma config FCKSM = CSECME //Разрешить переключение источника тактовой частоты на ходу, включить мониторинг тактовой частоты
// FICD
#pragma config ICS = PGD1 // Программирование и отладка через PGC1/PGD1
#pragma config JTAGEN = OFF // Не использовать JTAG интерфейс
// FWDT
#pragma config WDTPOST = PS32768 // Постделитель сторожевого таймера
#pragma config WDTPRE = PR128 // Предделитель сторожевого таймера
#pragma config WINDIS = OFF // Оконный режим выключен
#pragma config FWDTEN = OFF // Сторожевой таймер выключен (может быть включен программно)
// FPOR
#pragma config FPWRT = PWR1 // Задержка при включении (Без задержки)
#pragma config ALTI2C = OFF // Не использовать альтернативные I2C порты
В нашей конфигурации все защиты отключены. Защиты имеет смысл включать только в коммерческих серийных продуктах.
// FBS
#pragma config BWRP = WRPROTECT_OFF // Boot Segment Write Protect (Boot Segment may be written)
#pragma config BSS = NO_FLASH // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
#pragma config RBS = NO_RAM // Boot Segment RAM Protection (No Boot RAM)
// FSS
#pragma config SWRP = WRPROTECT_OFF // Secure Segment Program Write Protect (Secure segment may be written)
#pragma config SSS = NO_FLASH // Secure Segment Program Flash Code Protection (No Secure Segment)
#pragma config RSS = NO_RAM // Secure Segment Data RAM Protection (No Secure RAM)
// FGS
#pragma config GWRP = OFF // General Code Segment Write Protect (User program memory is not write-protected)
#pragma config GSS = OFF // General Segment Code Protection (User program memory is not code-protected)
Все эти настройки хранятся в файле config.c
, в который также включен заголовочный файл hw_profile.h