Skip to main content

Первые шаги с PIC24/dsPIC33F. Урок 2. Проект обмена данными через UART
30 Окт 2017

Этот и последующие проекты, реализуемые на уроках, будут тестироваться на универсальной модульной плате лаборатории робототехники Учборд-2. Внешний вид платы:

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

  1. ICSP – разъем внутрисхемного программирования, служит для подключения программатора или отладчика (Pickit 2, Pickit 3).
  2. DC 12 V – разъем питания платы, для нормального функционирования следует подать 12 В постоянного напряжения.
  3. UART – разъем для обмена информацией с микроконтроллером, через переходник USB-to-UART подключается к USB порту рабочего компьютера.

Для упрощения настройки микроконтроллера и уменьшения рутинной работы при создании проектов будут использоваться вспомогательные библиотеки, разработанные в лаборатории робототехники для создания прикладных устройств на базе микроконтроллеров семейства 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

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

  1. Генерируемые и поддерживаемые средой разработки:
    • test_uart\build – промежуточные файлы построения (*.o – объектные);
    • test_uart\debug – файлы генерируемые средой в процессе отладки
    • test_uart\dist – результаты построения (hex – файлы и др.)
    • test_uart\nbproject – конфигурация и метаданные проекта
    • Makefile- сценарий построения
  2. Создаваемые и поддерживаемые разработчиком:
    • config.c – директивы настройки конфигурационных битов;
    • hw_profile.h – распиновка, частота тактирования, скорость UART и другие настройки;
    • main.c – точка входа в программу, обычно основная логика программы;
    • traps.c – обработчики немаскируемых прерываний (ошибка адреса, математические ошибки, переполнение стека, ошибка источника тактирования, ошибка Direct Memory Access (DMA));
    • xprintfconf.h – настройки модуля форматного ввода-вывода вспомогательной библиотеки.

Для того, чтобы микроконтроллер запустился необходимо чтобы были корректно выставлены биты конфигурации. Перечислим самые важные параметры, которые задаются битами конфигурации:

  1. Источник тактирования или тактовый генератор.
  2. // 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 //Разрешить переключение источника тактовой частоты на ходу, включить мониторинг тактовой частоты
  3. Порты программирования.
  4. // FICD
    #pragma config ICS = PGD1 // Программирование и отладка через PGC1/PGD1
    #pragma config JTAGEN = OFF // Не использовать JTAG интерфейс
  5. Режим работы сторожевого (WatchDog) таймера.
  6. // FWDT
    #pragma config WDTPOST = PS32768 // Постделитель сторожевого таймера
    #pragma config WDTPRE = PR128 // Предделитель сторожевого таймера
    #pragma config WINDIS = OFF // Оконный режим выключен
    #pragma config FWDTEN = OFF // Сторожевой таймер выключен (может быть включен программно)
  7. Задержка при включении (FPWRT).
  8. // FPOR
    #pragma config FPWRT = PWR1 // Задержка при включении (Без задержки)
    #pragma config ALTI2C = OFF // Не использовать альтернативные I2C порты
  9. Защита памяти программ, данных, загрузочного сегмента.
  10. В нашей конфигурации все защиты отключены. Защиты имеет смысл включать только в коммерческих серийных продуктах.

    // 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