Миниатюрные PIC контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «прием – обработка – передача данных» и несложных регуляторов систем автоматического управления.
Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.
Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.
• Характеристики миниатюрного PIC контроллера PIC12F629
• Интегрированная среда разработки MPLAB IDE
• Подключение Matlab/Simulink к MPLAB
• Подключение программатора PIC-KIT3
Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].
• Архитектура: RISC
• Напряжение питания VDD: от 2,0В до 5,5В (< 6,5В)
• Потребление:
— <1,0 мА @ 5,5В, 4МГц
— 20 мкА (тип) @ 32 кГц, 2,0В
— <1,0 мкА (тип) в режиме SLEEP@2,0В
• Рассеиваемая мощность: 0,8Вт
• Многофункциональные каналы ввода/вывода: 6/5
• Максимальный выходной ток портов GPIO: 125мА
• Ток через программируемые внутренние подтягивающие резисторы портов: ≥50 (250) ≤400 мкА @ 5,0В
• Разрядность контроллера: 8
• Тактовая частота от внешнего генератора: 20 МГц
Длительность машинного цикла: 200 нс
• Тактовая частота от внутреннего RC генератора: 4 МГц ±1%
Длительность машинного цикла: 1мкс
• FLASH память программ: 1К
Число циклов стирание/запись: ≥1000
• ОЗУ память данных: 64
• EEPROM память данных: 128
Число циклов стирание/запись: ≥10K (-40оС ≤TA≤ +125 оС)
• Аппаратные регистры специального назначения: 16
• Список команд: 35 инструкций, все команды выполняются за один машинный цикл,
кроме команд перехода, выполняемых за 2 цикла
• Аппаратный стек: 8 уровней• Таймер/счетчик ТМR0: 8-разрядный с предделителем
• Таймер/счетчик ТМR1: 16-разрядный с предделителем
• Сброс по включению питания (POR)
• Таймер сброса (PWRTтаймер ожидания запуска генератора (OST
• Сброс по снижению напряжения питания (BOD)
• Сторожевой таймер WDT
• Мультиплексируемый вывод -MCLR
• Система прерываний по изменению уровня сигнала на входах
• Индивидуально программируемые для каждого входа подтягивающие резисторы
• Программируемая защита входа
• Режим пониженного энергопотребления SLEEP
• Выбор режима работы тактового генератора
• Внутрисхемное программирование ICSP с использованием двух выводов
• Четыре пользовательские ID ячейки
Загрузка MPLAB IDE
Бесплатные версии MPLAB (включая MPLAB 8.92) хранятся на сайте компании Microchip в разделе «DOWNLOAD ARCHIVE».
Создание проекта
Пример создания проекта программ PIC контроллера в среде MPLAB включает следующие шаги [2].
1. Вызов менеджера проекта.
5. Подключение файлов к проекту в окне Project Wizard → Step Four можно не выполнять. Это можно сделать позднее, внутри активного проекта. Клавиша Next открывает следующее окно.
6. Завершение создания проекта (клавиша Finish).
В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на Рис. 1.
Рис. 1. Интерфейс среды MPLAB v8.92 и шаблон проекта.
Создание файла программы
Программу можно создать при помощи любого текстового редактора. В MPLAB имеется встроенный редактор, который обеспечивает ряд преимуществ, например, оперативный лексический анализ исходного текста, в результате которого в тексте цветом выделяются зарезервированные слова, константы, комментарии, имена, определенные пользователем.
Создание программы в MPLAB можно выполнить в следующей последовательности.
1. Открыть редактор программ: меню → File → New. Изначально программе присвоено имя Untitled.
2. Набрать или скопировать программу, например, на ассемблере.
3. Сохранить программу под другим именем (меню → File → Save As), например, FirstPrMPLAB.asm.
Рис. 2. Пример простейшей программы (на ассемблере) вывода сигналов через порты контроллера GP0, GP1, GP2, GP4, GP5 на максимальной частоте.
Запись ‘1’ в разряде регистра TRISIO переводит соответствующий выходной буфер в 3-е состояние, в этом случае порт GP может работать только на вход. Установка нуля в TRISIO настраивает работу порта GP на выход.
Примечание. По спецификации PIC12F629 порт GP3 микроконтроллера работает только на вход (соответствующий бит регистра TRISIO не сбрасывается – всегда находится в ‘1’).
Регистры TRISIO и GPIO находятся в разных банках области памяти. Переключение банков выполняется 5-м битом регистра STATUS.
Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.
В программе (Рис. 2) используются следующие обозначения.
Директива LIST — назначение типа контроллера
Директива __CONFIG — установка значений битов конфигурации контроллера
Директива equ — присвоение числового значения
Директива org 0 — начало выполнения программы с адреса 0
Команда bsf — устанавливает бит указанного регистра в 1
Команда bсf — сбрасывает бит указанного регистра в 0
Команда movlw — записывает константу в регистр W
Команда movwf — копирует содержимое регистра W в указанный регистр
Команда goto — обеспечивает переход без условия на строку с меткой
Директива end — конец программы
Непосредственно или через окно MPLAB: меню → Configure → Configuration Bits:
Где:
Бит 2-0 — FOSC2:FOSC0. Выбор тактового генератора
111 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как CLKOUT
110 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как ввод/вывод
101 — Внутренний RC генератор 4МГц. GP5 работает как ввод/вывод. GP4 — как CLKOUT
100 — Внутренний RC генератор 4МГц. GP5 и GP4 работают как ввод/вывод
011 — EC генератор. GP4 работает как ввод/вывод. GP5 — как CLKIN
010 — HC генератор. Резонатор подключается к GP4 и GP5
001 — XT генератор. Резонатор подключается к GP4 и GP5000 — LP генератор. Резонатор подключается к GP4 и GP5 Бит 3 — WDTE: настройка сторожевого таймера (Watchdog Timer)
1 — WDTE включен
0 — WDTE выключенСторожевой таймер предохраняет микроконтроллер от зависания – перезапускает программу через определенный интервал времени если таймер не был сброшен. Период таймера устанавливается в регистре OPTION_REG. Обнуление сторожевого таймера вызывается командой CLRWDT.
Бит 4 — PWRTE: Разрешение работы таймера включения питания:
1 — PWRT выключен
0 — PWRT включенТаймер задерживает микроконтроллер в состоянии сброса при подаче питания VDD.
Бит 5 — MCLR: Выбор режима работы вывода GP3/-MCLR
1 — работает как -MCLR
0 — работает как порт ввода-вывода GP3Бит 6 — BODEN: Разрешение сброса по снижению напряжения питания (как правило < 2.0В)
1 — разрешен сброс BOR
0 — запрещен сброс BOR автоматически включается таймерПри разрешении сброса BOR автоматически включается таймер PWRT
Бит 7 — .CP: Бит защиты памяти программ от чтения программатором
1 Защита выключена
0 Защита включенаПри выключения защиты вся память программ стирается
Бит 8 — .CPD: Бит защиты EPROM памяти данных
1 Защита выключена
0 Защита включенаПосле выключения защиты вся информация будет стерта
Бит 11-9 — Не используются: Читается как ‘1’.
Бит 13-12 — BG1:BG0. Биты калибровки сброса по снижению питания
00 — нижний предел калибровки
11 — верхний предел калибровки
Пример добавления программы к проекту показан на (Рис. 3).
Сохранить материалы проекта можно командой: меню → File → Save Workspace.
После запуска отладчика в окне Output (Рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Команды отладчика (Рис. 5) после запуска становятся активными.
Команды отладчика:
• Run — Непрерывное выполнение программы до точки останова (Breakpoint) если таковая установлена.
• Halt — Остановка программы на текущем шаге выполнения.
• Animate — Анимация непрерывного выполнения программы.
• Step Into — Выполнение по шагам (вызовы Call выполняются за один шаг).
• Step Over — Выполнение по шагам включая команды вызовов Call.
• Reset — Начальная установка программы. Переход указателя на первую команду.
• Breakpoints — Отображение списка точек останова. Обработка списка.
При выполнении программы по шагам текущий шаг выделяется стрелкой (Рис. 6). Непрерывное выполнение программы останавливается командой Halt или достижением программой точки останова. Точка останова устанавливается/снимается в строке программы двойным щелчком.
Пример программы на ассемблере, которая с максимальной скоростью меняет состояние портов контроллера показан на Рис. 6 (справа). Программа передаёт в регистр портов GPIO данные b’10101010’ и b’01010101’. Поскольку в регистре GPIO передачу данных в порты контроллера выполняют не все разряды, а только 0,1,2,4 и 5, то состояние регистра GPIO (Рис. 6, слева) отличается значениями: b’00100010’ и b’00010101’.
Рис. 6. Состояние регистров специального назначения контроллера на момент выполнения программы (слева) и выполняемая по шагам программа (справа).
В процессе отладки можно наблюдать за состоянием регистров, переменных, памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы, содержимое регистров, памяти, изменять значения переменных. После изменения кода необходимо перекомпилировать программу. Изменение содержимого регистров, памяти и значения переменных (окна раздела View: Special Function Register, File Register, EEPROM, Watch) не требует перекомпиляции.
Входные сигналы портов модели микроконтоллера можно задать в разделе Debugger → Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.
Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере, так, например, отладчик программы (Рис. 6) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются — находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1 (см. Рис. 7).
Осциллограммы контроллера, выполняющего циклы программы Рис. 6 (Metka… goto Metka) показаны на Рис. 7.
Рис. 7. Осциллограммы выхода GP0 (слева) и GP1 (справа) микроконтроллера PIC12F629, работающего от внутреннего 4МГц RC генератора. Программа (Рис. 6) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5.3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4.6В, измеренное программатором питание контроллера 4.75В.
Примечание. В контроллер PIC12F629 записана заводская калибровочная константа настройки частоты внутреннего тактового генератора. При необходимости её можно прочитать и восстановить средствами MPLAB с использованием программатора.
Команды для работы с программатором и изменения его настроек находятся в меню MPLAB Programmer. Тип программатора в MPLAB выбирается в разделе: меню → Programmer → Select Programmer.
Прошивка микроконтроллера через программатор запускается командой: меню → Programmer → Program. Сообщение об успешной прошивке показано на Рис. 9.
Примечание: Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает желтый светодиод.
Пример Simulink программы PIC контроллера показан на Рис. 10.
Взаимодействие средств разработки и компиляции программ для PIC контроллеров в Simulink показано на Рис. 11 [6].
Для построения среды разработки необходимы следующие компоненты Matlab:
• Simulink
• Real-Time Workshop Embedded Coder
• Real-Time Workshop
И Cи компилятор компании Microchip:
• C30 для контроллеров PIC24, dsPIC30 и PIC33
• или C32 для контроллеров серии PIC32
Для скачивания библиотеки необходимо зарегистрироваться. Программы поддерживают работу 100 микроконтроллеров из серий PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Бесплатные версии работают с Simulink моделями PIC контроллеров имеющих до 7 портов ввода-вывода.
Для установки dsPIC Toolbox — библиотеки блоков PIC контроллеров для Matlab/Simulink необходимо [4]:
• Скачать dsPIC Toolbox для требуемой версии Matlab.
• Распаковать zip файл в папке, в которой будут установлены Simulink блоки.
• Запустить Matlab.
• Настроить текущий каталог Matlab на папку с распакованным файлом.
• Открыть и запустить файл install_dsPIC_R2012a.m, например, кнопкой меню или клавишей клавиатуры.
Библиотеки dsPIC и примеры Simulink моделей устанавливаются в текущую папку Matlab (Рис. 12). Установленные блоки для моделирования PIC контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (Рис. 13).
Для совместной компиляции Simulink модели средствами Matlab и MPLAB необходимо прописать в переменной окружения path Matlab с высшим приоритетом путь к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:
>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path)
Примечание. Работа выполнена с версией v3.25 компилятора С30 для PIC24/dsPIC. Проверка показала, что следующая версия v3.30 не поддерживает совместную компиляцию моделей Matlab R2012a (dsPIC Toolbox) без ошибок.
Установочный exe файл создаёт в разделе c:\Program Files (x86)\Microchip\ новый каталог mplabc30 с файлами:
Последовательность Simulink программирования для PIC контроллеров
1. Создайте рабочий каталог и скопируйте в него *.mdl примеры из раздела example (см. Рис. 12).
2. Загрузите Matlab. Настройте его на рабочий каталог.
3. Включите в переменную окружения path Matlab с высшим приоритетом путь к MPLAB — каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:
>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path)
>>rmpath(' c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\')
Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.
5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters <Ctrl+E>. В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.
6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.
В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).
Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:
Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.
1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.
5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:
со скриптами модели на языке Си.
6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).
Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).
Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.
Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3].
Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:
Желтый — Красный — Состояние программатора
Вкл — Выкл — Подключен к USB линии
Вкл — Вкл — Взаимодействие с MPLAB
Мигает — Включен постоянно — Прошивка микроконтроллера
При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.
Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use
Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.
Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.
Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].
Its a project to program a DSPIC33EV256gm106, with another identical DSPIC. One master (DSPIC A) and a Slave (DSPIC B)
DSPIC ( A) , send the instruction to the DSPIC B to read a sensor using a ADC port (Analog value), and send the data to the DSPIC A. The communication must be SPI between DSPIC´s.
According to the value of the sensor (0-5V), the DSPIC A must modulate a PWM. Where 0V is 0% and 5V is 100% of the Duty Cycle.
The DSPIC A, also must send the sensor received data to the UART to see the data at the PC (serial comm).
Навыки: Микроконтроллер, Электроника, Программирование на С
Показать больше: simple file read program, read program, file read program, read program list file, serial data read program, read program output vba, place text file read program, spi communication program, serial communication interface program, spi dma program, read program written, simple image read program, program serial communication watcom, usb data read program, serial communication program rs232, write a program that computes and prints the value of k where k is approximated by the series, dbfl have acted as consulting engineers on the belmayne development in dublin’s north fringe since its conception in 2000, mpumi’s consultant business use electronic manceting to advertise its products, what’s the best program to create a logo
( 1 отзыв ) Mex, MexicoID проекта: #23249264
В среду железячников я попал в 2006 году на 4-м курсе учёбы в университете, когда пошёл на производственную практику в научно-технический центр, где, собственно, и работаю по сей день. В то время в нашей компании мейнстримом было использование Keil uVision2 для МК на базе C51 и ARM. Однако мне подсовывали простые задачи под PIC, вроде контроля и управления одним сигналом (кнопка вкл-выкл), и моей первой средой разработки были блокноты — бумажный и компьютерный, плюс книжки бумажные по PIC. Выглядела моя среда разработки примерно так:
Для компиляции файлов мне выдали экзешник компилятора и bat-файл, который использовался мной совершенно бездумно — даже не знаю, что за компилятор там был. В общем, суровые были времена…
Потом был MPASM, но он убогий и мне про него почти нечего вспоминать. По-моему, под него я также писал в блокноте программки.
В её состав входят:
Набор плюшек почти такой же как в MBLAB IDE, но всё же побогаче:
Так или иначе, сделав очередной проект в MikroC, я благополучно забыл про PIC’и и думал, что уже никогда к ним не вернусь.
Задачи были нетривиальные — реализация загрузчика для внутрисхемного обновления ПО, работа в режиме жёсткого реального времени, работа с АЦП, внешними ЦАП, линиями управления, несколькими таймерами-компараторами.
Кстати, немного отвлекаясь от темы: только на этом проекте я в полной мере понял, что такое банки памяти в PIC, как они работают и какие ограничения накладывают на разработку ПО. К примеру, все банки у МК по 256 байт. И хоть убейся, но для PIC нельзя создать структуру, превыщающую по объёму эти 256 байт — ограничение всплыло наружу при реализации протокола обмена, ну да ладно, проехали…
К этому времени Keil uVision3 мне уже изрядно поднадоел, поскольку сложность проектов росла и мне не хватало имевшегося в Keil функционала. Где-то с 2011 года я освоил Eclipse, GCC, синтаксис makefile — и все свои проекты начал вести с использованием этих инструментов. К тому же, у меня уже был опыт применения связки Eclipse + SDCC для реализации проекта под C51 МК. После появления Keil uVision4 я его установил, протестировал пол-часика и снёс, ибо по удобству программирования он всё равно сильно отстаёт от Eclipse.
Главной проблемой чистого Eclipse для разработки на C/C++ под МК является сложность вхождения в него железячных программистов, замена привычных инструментов, работающих после установки в 1-2 клика, на какие-то плагины, требующие настройки, или, что ещё хуже, на вручную написанные makefile — всё это требует значительных первоначальных усилий по чтению и изучению документации, поиску помощи и пособий для начинающих в интернете. Говорю как человек, имеющий опыт по переводу команды программистов-железячников на Eclipse.
Коли прочитали эту статью — дайте знать, я хоть узнаю, как у нас читают профильные хабы на Хабрахабре
Также пришлось сделать ряд дополнительных телодвижений по настройке проектов под PIC — по умолчанию Eclipse понимает синтаксис GCC. Различные макросы и директивы, встроенные в другие компиляторы (будь то СС18 или SDCC), приходится разделять на этапе компиляции и на этапе индексации проекта. Чтобы при навигации в коде редактор не выдавал ложных ошибок на неизвестные директивы, к исходникам проекта подключается файл eclipse-syntax.h:
#ifndef ECLIPSE_SYNTAX_H_
#define ECLIPSE_SYNTAX_H_
// keyword SDCC defined when compiling with SDCC compiler
#ifndef SDCC
#ifdef __SDCC_PIC18F4680
#error "SDCC not found, project compile will be with errors!"
#endif
// file not parsed through makefile - just for proper eclipse syntax
#ifndef __CC18__
#error "__CC18__ not found, use `-D__CC18__` in makefile for proper CC18 compilation!"
#define near
#define far
#define rom
#define ram
#define _asm
#define _endasm
#define Nop()
#define ClrWdt()
#define Sleep()
#define Reset()
#define clrwdt
#define nop
#define __code
#define __data
#define __xdata
#define __sfr
#define __sbit
#define __naked
#define __wparam
#define __bit char
#define __at(num)
#else // __CC18__ defined - compile stage!
#endif // __CC18__
#define __inline
#define __asm
#define __endasm
#define __interrupt(x)
#define INTERRUPT(x)
#define USING(x)
#define CRITICAL
#define CRITICAL_START
#define CRITICAL_END
#define _REENTRANT
#else // if SDCC defined
#define INTERRUPT(x) __shadowregs __interrupt (x)
//#define USING(x) __using (x)
#define USING(x)
#define CRITICAL __critical
#define CRITICAL_START __critical {
#define CRITICAL_END }
#endif // SDCC defined
#endif /* ECLIPSE_SYNTAX_H_ */
###########################################################
# project-specific compile options
###########################################################
# Project definitions
CHIP = 18F4680
DEFINES := -DPIC$(CHIP)
#DEFINES += -D__SDCC_PIC$(CHIP) # use SDCC compiler
DEFINES += -D__CC18__ # use MPLAB CC18 compiler
#DEFINES += -DOPTIMIZE_BITFIELD_POINTER_GET # SDCC memory optimize for bitfield structures
###########################################################
# common part for all sdcc-based projects
###########################################################
SDCC_BASE = c:/DevTools/SDCC
CC = "$(SDCC_BASE)/bin/sdcc.exe"
LD = "$(SDCC_BASE)/bin/sdcc.exe"
ELF2HEX = "$(SDCC_BASE)/bin/packihx.exe"
HEX2BIN = "$(SDCC_BASE)/bin/makebin.exe"
###########################################################
# common part for all MPLAB MCC18-based projects
###########################################################
MPLAB_BASE = c:/DevTools/CC18
CC_MPLAB = "$(MPLAB_BASE)/bin/mcc18.exe"
AS_MPLAB = $(MPLAB_BASE)/mpasm/mpasmwin.exe
LD_MPLAB = $(MPLAB_BASE)/bin/mplink.exe
###########################################################
# GPUtils used with SDCC for linking project
###########################################################
GPUTILS_BASE = c:/DevTools/GNUPICutils
GPASM = "$(GPUTILS_BASE)/bin/gpasm.exe"
GPDASM = "$(GPUTILS_BASE)/bin/gpdasm.exe"
GPLINK = "$(GPUTILS_BASE)/bin/gplink.exe"
###########################################################
# C preprocessor flags for MPLAB MCC18 compiler
###########################################################
#optimization parameters (default = full optimization)
OPT_ENABLE_ALL := -O+ # Enable all optimizations (default)
OPT_DEBUG :=-Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
OPT :=$(OPT_ENABLE_ALL)
#OPT :=$(OPT_DEBUG)
CFLAGS_MPLAB := -p $(CHIP)
CFLAGS_MPLAB += -I $(MPLAB_INC_DIR)
CFLAGS_MPLAB += -nw=2066 # suppress Warning [2066] type qualifier mismatch in assignment
CFLAGS_MPLAB += -ml # Large memory model
CFLAGS_MPLAB += -ls # large stack (can span multiple banks)
#CFLAGS_MPLAB += -scs # Enable default static locals
#CFLAGS_MPLAB += -sco # Enable default overlay locals (statically allocate activation records). Ignored if set --extended
CFLAGS_MPLAB += --extended # generate extended mode code
COMPILE_MPLAB_STRING=$(CC_MPLAB) $(CFLAGS_MPLAB) $< -fo=$@ $(DEFINES) $(OPT)
AFLAGS_MPLAB := /y
AFLAGS_MPLAB += /rDEC # set default radix HEX/DEC/OCT
AFLAGS_MPLAB += /l- # disable listing file
#AFLAGS_MPLAB += /l$(OBJDIR_MPLAB) # enable listing file
AFLAGS_MPLAB += /o # specify path for object files
#AFLAGS_MPLAB += /o$(OBJDIR_MPLAB) # specify path for object files
#AFLAGS_MPLAB += /q # enable quiet mode
AFLAGS_MPLAB += /d__LARGE__ # define symbol
AFLAGS_MPLAB += /p$(CHIP) # set processor type
#ASSEMBLE_MPLAB_STRING=$(AS_MPLAB) $(AFLAGS_MPLAB) %<
# used linker script
LDFLAGS_MPLAB := $(CHIP)_g.lkr
# objects to compile
LDFLAGS_MPLAB += $(OBJS_MPLAB)
LDFLAGS_MPLAB += $(MPLAB_LIBS)
# specify chip for proper linking
LDFLAGS_MPLAB += /p$(CHIP)
# verbose mode operation
#LDFLAGS_MPLAB += /v
# generate report file for stack analysis
LDFLAGS_MPLAB += /g
# generate .LST file and no .COD file
LDFLAGS_MPLAB += /i
# do not invoke MP2COD (no .COD or .LST file)
LDFLAGS_MPLAB += /w
# link MPLAB libs
LDFLAGS_MPLAB += /l $(MPLAB_LIB_DIR)
# generate MAP file
LDFLAGS_MPLAB += /m $(EXEDIR)/$(PROJECT_NAME)_mplab.map
# set output file
LDFLAGS_MPLAB += /o $(EXEDIR)/$(PROJECT_NAME)_mplab.hex
###########################################################
# C preprocessor flags for SDCC v.3.3.0 compiler
###########################################################
# ----- processor selection -----
CFLAGS := -m$(ARCH)
CFLAGS += -p$(CHIP)
# ----- preprocessor options -----
CFLAGS += $(INCS)
CFLAGS += $(DEFINES)
# ----- verbose & dependancy generate -----
# CFLAGS += -M # generate dependencies
# CFLAGS += -E #
# CFLAGS += -C # dont discard comments
CFLAGS += -c # dont link file (i.e. have multiple source files)
CFLAGS += $(DEBUG)
# ----- common settings -----
#CFLAGS += --nostdinc # This will prevent the compiler from passing on the
# default include path to the preprocessor.
#CFLAGS += --nostdlib # This will prevent the compiler from passing on the
# default library path to the linker.
#CFLAGS += --less-pedantic # Disable some of the more pedantic warnings.
CFLAGS += --stack-auto # All functions in the source file will be compiled as reentrant.
# It automatically implies --int-long-reent and --float-reent.
CFLAGS += --int-long-reent # Integer (16 bit) and long (32 bit) libraries have been compiled as reentrant.
CFLAGS += --float-reent # Floating point library is compiled as reentrant.
#CFLAGS += --no-peep
#CFLAGS += --funsigned-char # The default signedness for every type will be unsigned.
#CFLAGS += --cyclomatic # This option will cause the compiler to generate an information
# message for each function in the source file. The message contains
# the number of edges and nodes the compiler detected in the
# control flow graph of the function, and most importantly
# the cyclomatic complexity.
# ----- optimization options -----
#CFLAGS += --nogcse # Will not do global subexpression elimination, this option may be used
# when the compiler creates undesirably large stack/data spaces to store
# compiler temporaries.
#CFLAGS += --noinvariant # Will not do loop invariant optimizations.
#CFLAGS += --noinduction # Will not do loop induction optimizations.
#CFLAGS += --nojtbound # Will not generate boundary condition check when switch statements
# are implemented using jumptables.
#CFLAGS += --noloopreverse # Will not do loop reversal optimization.
#CFLAGS += --nolabelopt # Will not optimize labels (makes the dumpfiles more readable).
CFLAGS += --nooverlay # The compiler will not overlay parameters and local variables of any function.
CFLAGS += --peep-asm # Pass the inline assembler code through the peep hole optimizer.
#CFLAGS += --opt-code-speed # Optimize for code speed rather than size
#CFLAGS += --opt-code-size # Optimize for code size rather than speed
CFLAGS += --fomit-frame-pointer # Frame pointer will be omitted when the function uses
# no local variables.
CFLAGS += --use-non-free # Search / include non-free licensed libraries and header files
# ----- special options for pic16 port of SDCC -----
CFLAGS += --pstack-model=large # use stack model 'small' (default) or 'large'
# don't use extended instruction set - SDCCman, $4.6.20.1 Known Bugs
#CFLAGS += -y --extended # enable Extended Instruction Set/Literal Offset Addressing mode
#CFLAGS += --pno-banksel # do not generate BANKSEL assembler directives
CFLAGS += --obanksel=2 # set banksel optimization level (default=0 no)
CFLAGS += --denable-peeps # explicit enable of peepholes
CFLAGS += --no-optimize-goto # do NOT use (conditional) BRA instead of GOTO
CFLAGS += --optimize-cmp # try to optimize some compares
CFLAGS += --optimize-df # thoroughly analyze data flow (memory and time intensive!)
#CFLAGS += --preplace-udata-with=udata_shr # Place udata variables at another section: udata_acs, udata_ovr, udata_shr
#CFLAGS += --ivt-loc= # Set address of interrupt vector table.
#CFLAGS += --nodefaultlibs # do not link default libraries when linking
#CFLAGS += --use-crt= # use <crt-o> run-time initialization module
#CFLAGS += --no-crt # do not link any default run-time initialization module
#CFLAGS += --mplab-comp # enable compatibility mode for MPLAB utilities (MPASM/MPLINK)
#CFLAGS += --asm= # Use alternative assembler
#CFLAGS += --link= # Use alternative linker
CFLAGS += --debug-xtra # show more debug info in assembly output
CFLAGS += --debug-ralloc # dump register allocator debug file *.d
CFLAGS += --pcode-verbose # dump pcode related info
CFLAGS += --calltree # dump call tree in .calltree file
#CFLAGS += --gstack # trace stack pointer push/pop to overflow
###########################################################
# linker flags
###########################################################
#gputils (GNU PIC Utils) used to link objects and libs.
GPLINK_FLAGS = -c -m -w -r -I $(LIBDIR) -s $(GPUTILS_BASE)/lkr/$(CHIP)_g.lkr
#SDCC linker not used
#LDFLAGS := -m$(ARCH)
#LDFLAGS += $(DEBUG)
#LDFLAGS += --profile
#LDFLAGS += --code-size $(FLASH_SIZE) # Code Segment size
#LDFLAGS += --code-loc $(FLASH_LOC) # The start location of the code location, default value is 0
#LDFLAGS += --iram-size $(IRAM_SIZE) # Internal Ram size
#LDFLAGS += --xram-loc $(XRAM_LOC) # The start location of the external ram, default value is 0
#LDFLAGS += --xram-size $(XRAM_SIZE) # External Ram size
#LDFLAGS += --stack-loc $(STACK_LOC) # By default the stack is placed after the data segment.
# Using this option the stack can be placed anywhere in the
# internal memory space of the 8051.
##############################################################################
# MPLAB CC18 compiler - linker
$(HEX_MPLAB): $(OBJS_MPLAB) Makefile
@echo "--- CC18 Linking objects to $(HEX_MPLAB) ..."
@$(LD_MPLAB) $(LDFLAGS_MPLAB)
##############################################################################
# SDCC compiler - linker
$(HEX): $(OBJS) Makefile
@echo "--- SDCC Linking objects to $(HEX) ..."
$(GPLINK) $(GPLINK_FLAGS) -o $(HEX) $(OBJS) $(LIBS)
$(GPDASM) -p$(CHIP) $(HEX) > $(DASM)
Собирая воедино все средства разработки, вот список компиляторов, которыми я пользуюсь в связке с Eclipse и получаю от этого истинное удовольствие при программировании:
Надеюсь, прочитав мою историю, кто-то решится наконец для себя сойти со старых IDE и освоить новые.
Дерзайте!
A MPASM/microchip Assembly Language guru is required for this conversion project. Development in Mikro PASCAL has caused the generated program to be too large for the DSPIC33F chip. This chip is used in our existing platform with tens of thousands of boards already in use around the world that use this chip. There is approximately 21000 lines of code that need to be converted to assembly language and highly optimized to be super efficient in program memory and RAM to run on the current hardware. Circuit diagrams provided along with 3 sets of electronics for development and testing purposes. 50% of the payment will be on final completion. Inability for the system to fit on the DPIC33F is a project failure so only freelancers that are have a proven record with assembly language on this platform should bid for this project. Project is to be completed in a maximum of 4 months.
Supplied files includes User Guide including screens snaps, Code of the a windows based simulator in Delphi XE5 pascal that is a working demonstration of the system and the algorithms. Mikro Pascal code that has the exact RF and IR communication protocols to be used. Note that there is very little requirement to create program logic. This is 95%+ a conversion job.
Навыки: Ассемблирование
Показать больше: windows guru, testing guru, testing algorithms, rf freelancers, logic guru, job boards freelancers, job boards for freelancers, guru world, guru testing, guru for freelancers, guru electronics, freelancers job boards, freelancers boards, freelancers around the world, electronics hardware freelancers, communication guru, algorithms freelancers, project assembler dspic, conversion access flex project, assembler dspic
( 66 отзыв(-а, -ов) ) Brisbane, AustraliaID проекта: #9281824
8051 Платы: 8051 Совет по развитию | 8051 Учебный комплект | 8051 Совет проекта
Платы PIC: Плата разработки PIC16F877A | Плата PIC Advanced Development
Платы AVR: Совет по развитию AVR
Платы ARM: Стартовый комплект LPC2148 | Совет по развитию ARM | Совет по развитию ARM9
Платы PSOC: Pioneer Kit | Совет по развитию PsOC
ПлатыFPGA: Стартовый комплект FPGA | Совет по развитию FPGA | Универсальная плата разработки FPGA
Платы с плавающей запятой DSP: Совет по развитию TMS320F2812 | TMS320C6745 Комплект обучающего DSP | Совет по развитию
TMS320F28335Платы с фиксированной точкой DSP: TMS320C5505 Development Board
Платы MSP430: Панель запуска MSP430 | Совет по развитию MSP430
Платы Arduino: Arduino UNO | Базовый комплект Arduino | Netduino | Arduino Due | Ардуино ADK
Raspberry PI: Raspberry Pi 3 | Аксессуары Rapserry Pi
Платы беспроводной связи: GSM-модем | Доска Zigbee | WiFI Board | Плата Bluetooth
Платы проводной связи: интерфейс SPI-Ethernet
Носимые технологии: Neurosky Mindwave Mobile: стартовый комплект Brainwave
Дополнительные платы: плата GPS
Модули: модули GSM | Модули GPS | Модули Bluetooth | Модули WIFI | Радиочастотные модули
Датчики: Распознавание речи HM2007 | Распознавание жестов | Мозговой компьютерный интерфейс | Brainsense
Программаторы и эмуляторы: USB-кабель для загрузки платформы Xilinx | Программатор JTAG FPGA
Робототехника: робот-следящий за линией | Робот, управляемый жестами | Роботизированная рука | Робот
под управлением AndroidМоторные приводы: Моторный привод PMSM | Моторный привод BLDC | Трехфазный асинхронный двигатель | Моторный привод SRM | Привод шагового двигателя
Двигатели: Двигатель PMSM | Двигатель BLDC | Серводвигатель | Трехфазный асинхронный двигатель |
Мини-проекты ECE: 8051 проект | ARM Проекты | Проекты FPGA | Проекты СБИС | Проекты VHDL | Проекты робототехники
EEE Мини-проекты: электрические проекты | Simulink Проекты
DIP Projects: проекты по обработке изображений | Проекты по обработке видео
Микроконтроллеры IC’S: P89V51RD2 | AT89S51 | LPC2148 | LPC2929
Устройства отображения: Семисегментный — общий анод | Семисегментный общий катод | 2.5-дюймовый TFT | 3,5-дюймовый TFT | Семисегментный дисплей | Светодиод
Разъемы: USB Mini-B SMD Connector | DB9 ВНУТРЕННИЙ КАБЕЛЬНЫЙ РАЗЪЕМ
,Переключить навигацию
Переключить навигацию
1 DsPIC HOW-TO GUIDE Создание и отладка проекта в MPLAB
2 Краткое содержание 1. Введение в инструменты разработки MPLAB Приступая к работе Создание проекта Запуск MPLAB Создание файла проекта Выбор языковых инструментов Присвоение имени проекту Добавление файлов в создание проекта код тестирования проекта с помощью симулятора. Начало работы с MPLAB SIM. Запуск примеров программ MPLAB SIM… 37
3 5.1. LED_delay: Ваша первая программа dspic на C Редактирование файла проекта Mplab LED_delay.C Компиляция и компоновка LED_delay Тестирование LED_delay … 40
4 1. Введение в MPLAB MPLAB X IDE — это новый графический интегрированный набор инструментов отладки для всех микросхем Microchip. больше, чем битовые, 16-битные и 32-битные микроконтроллеры, контроллеры цифровых сигналов и устройства памяти. Он включает в себя многофункциональный редактор, отладчик на уровне исходного кода, менеджера проекта, программный симулятор и поддерживает популярные аппаратные средства Microchip, такие как внутрисхемный отладчик MPLAB ICD 3, PICkit 3 и программатор MPLAB PM3.MPLAB IDE — это программа для операционной системы Windows (ОС), которая запускается на ПК для разработки приложений для микроконтроллеров Microchip и контроллеров цифровых сигналов. Она называется интегрированной средой разработки или IDE, потому что она предоставляет единую интегрированную «среду» для разработки кода для встроенных микроконтроллеров. Опытные разработчики встроенных систем могут сразу перейти к компонентам MPLAB IDE.
5 Конвертер Object-HEX создает файлы Intel HEX из абсолютных объектных модулей.2. Инструменты разработки Инструменты разработки Mplab для dspic предлагают множество функций и преимуществ, которые помогут вам быстро и успешно разрабатывать встроенные приложения. Они просты в использовании и гарантированно помогут вам в достижении ваших дизайнерских целей. Среда разработки MPLAB и отладчик являются центральной частью инструментов разработки Microchip dspic. MPLAB предлагает режим сборки и режим отладки. В режиме сборки MPLAB вы поддерживаете файлы проекта и генерируете приложение. MPLAB использует инструменты разработки C30 или dspic ASM.В режиме отладки MPLAB вы проверяете свою программу с помощью мощного ЦП и симулятора периферийных устройств, который соединяет отладчик с целевой системой.
6 ICD2 позволяет вам также загружать ваше приложение во Flash ROM вашей целевой системы. 3. Начало работы MPLAB IDE сочетает в себе управление проектами, средства создания, редактирование исходного кода, отладку программ и полное моделирование в одной мощной среде. Платформа разработки MPLAB проста в использовании и помогает быстро создавать работающие встроенные программы.Редактор и отладчик MPLAB интегрированы в одно приложение, которое обеспечивает бесшовную встроенную среду разработки проекта. Используйте MPLAB для создания исходных файлов и организации их в проект, определяющий ваше целевое приложение. MPLAB автоматически компилирует, собирает и связывает ваше встроенное приложение и обеспечивает единую точку фокусировки для ваших усилий по разработке.
7 Когда вы используете MPLAB, цикл разработки проекта примерно такой же, как и для любого другого проекта разработки программного обеспечения.Создайте проект, выберите целевой чип из базы данных устройства и настройте параметры инструмента. Создавайте исходные файлы на C или сборке. Создайте свое приложение с менеджером проекта. Исправьте ошибки в исходных файлах. Протестируйте связанное приложение. Отлаживайте исполняемую логику, наблюдая за выполнением программы с помощью встроенного симулятора или в реальном времени с помощью внутрисхемных эмуляторов или внутрисхемных отладчиков. Выполните измерения времени с помощью симулятора или эмулятора. Просмотр переменных в окнах просмотра. Программируйте прошивки в устройства с помощью программаторов устройств.
8 3.1. Создание проекта MPLAB включает менеджера проектов, который упрощает разработку приложений для микроконтроллера на базе dspic. Для создания нового проекта вам необходимо выполнить следующие шаги: Запустите MPLAB и выберите набор инструментов. Создайте файл проекта и выберите ЦП из базы данных устройства. Создайте новый исходный файл и добавьте этот исходный файл в проект. Добавьте и настройте код запуска для dspic. Установите параметры инструмента для целевого оборудования.Скомпилируйте проект и создайте файл HEX для программирования Flash. Запустить MPLAB MPLAB — это стандартное приложение Windows, запускаемое щелчком по значку программы.
9
10 Создание файла проекта
11 1 Чтобы создать новый файл проекта, выберите в меню MPLAB Project Project Wizard. Это открывает стандартный диалог Windows, который запрашивает у вас имя нового файла проекта.Теперь мы можем нажать кнопку «Далее», а затем выбрать отображение окон с помощью раскрывающейся кнопки в параметрах устройства, как показано ниже. Затем мы можем выбрать устройство. Устройства
12 Выбор языковых инструментов На втором этапе мастера проекта настраиваются языковые инструменты, которые используются в этом проекте. В верхнем раскрывающемся списке выберите набор инструментов Microchip C30. Затем вы должны увидеть, что C30, MPLINK и MPLIB появятся в поле «Содержимое набора инструментов». Вы можете щелкнуть по каждому, чтобы увидеть его местоположение.Если вы установили MPLAB IDE в каталог по умолчанию, исполняемый файл компилятора C30 будет: C: \ Program Files \ Microchip \ MPLAB C30 \ bin \ pic30-gcc.exe. Исполняемый файл компоновщика MPLINK будет: C: \ Program Files \ Microchip \ MPLAB C30 \ bin \ pic30-ld.exe И исполняемый файл библиотекаря MPLIB будет: C: \ Program Files \ Microchip \ MPLAB C30 \ bin \ pic30-ar.exe Если они не отображаются правильно, используйте кнопку обзора, чтобы установить их в соответствующие файлы в подпапках MPLAB IDE.
13 Когда вы закончите, нажмите «Далее»> «Присвоение имени проекту». Третий шаг мастера позволяет присвоить проекту имя и поместить его в папку.Этот примерный проект будет называться Mplab. Используя кнопку «Обзор», поместите проект в папку с именем Mplab. Щелкните Далее>.
14 Добавление файлов в проект Четвертый шаг мастера проектов позволяет выбрать файл для проекта. Исходный файл еще не выбран, поэтому мы будем использовать файл шаблона MPLAB IDE. Файлы шаблонов — это простые файлы, которые можно использовать для запуска проекта. В них есть основные разделы для любого исходного файла и информация, которая поможет вам написать и организовать свой код.
15 Эти файлы находятся в папке MPLAB IDE, которая по умолчанию находится в папке Program Files на ПК. Для каждого устройства Microchip PIC micro и dspic существует один файл шаблона. Выберите файл с именем led_delay.c. Если MPLAB IDE установлена в папку по умолчанию, полный путь к файлу будет следующим: C: \ Documents and Settings \ Administrator \ Desktop \ Mplab \ led_delay.c
16 Нажмите «Добавить >>, чтобы переместить имя файла в папку. правая панель и имя файла, чтобы этот файл можно было скопировать в каталог нашего проекта.Убедитесь, что ваше диалоговое окно выглядит так, как показано на рисунке выше, при этом оба флажка установлены, затем нажмите «Далее»>, чтобы завершить работу мастера проектов. Последний экран Мастера проектов — это сводка, показывающая выбранное устройство, набор инструментов и имя нового файла проекта.
17 После нажатия кнопки «Готово» просмотрите окно проекта на рабочем столе MPLAB IDE. Если окно проекта не открыто, выберите «Просмотр»> «Проект».Примечание: файлы можно добавлять, а проекты сохранять, используя правую кнопку мыши в окне проекта. В случае ошибки файлы
18 можно удалить вручную, выбрав их и используя меню, щелкнув правой кнопкой мыши. Создание проекта Из меню «Проект» мы можем собрать и связать текущие файлы. В них еще нет нашего кода, но это гарантирует, что проект настроен правильно.
19 Чтобы построить проект, выберите один из следующих вариантов: Project> Build All. Щелкните правой кнопкой мыши имя проекта в окне проекта и выберите Build All. Щелкните значок Build All на панели инструментов Project. Однако наведите указатель мыши на значки, чтобы увидеть всплывающий текст того, что они представляют. Окно вывода показывает результат процесса сборки. Ни на одном шаге не должно быть ошибок.
20 Примечание. Если они не собираются и не связываются успешно, проверьте следующие элементы, а затем снова соберите проект: Проверьте написание и формат кода, введенного в окне редактора.Убедитесь, что новые переменные и регистры специальных функций, TRISC и PORTC, указаны в верхнем регистре. Если ассемблер сообщил об ошибках в окне вывода, дважды щелкните ошибку, и MPLAB IDE откроет соответствующую строку в исходном коде с зеленой стрелкой в левом поле окна исходного кода. Убедитесь, что используются правильный компилятор (компилятор Microchip C30) и компоновщик для микроустройств PIC. Выберите Project> Set Language Tool Locations. Щелкните поля с плюсом, чтобы развернуть набор инструментов Microchip C30 и его исполняемые файлы.Щелкните Компилятор Microchip C30 (pic30-gcc.exe) и просмотрите их расположение на дисплее. Если расположение правильное, нажмите Отмена. Если это не так, измените его и нажмите OK. Пути поиска по умолчанию могут быть пустыми.
21 После успешной сборки будет загружен выходной файл, созданный языковым инструментом. Этот файл содержит объектный код, который может быть запрограммирован в микроконтроллер PIC, и отладочную информацию, чтобы исходный код можно было отлаживать, а исходные переменные можно было просматривать символически в окнах просмотра. Тестирование кода с помощью симулятора. Для тестирования кода, программного обеспечения или оборудования. необходим для выполнения микрокоманд PIC.Инструмент выполнения отладки — это аппаратный или программный инструмент, который используется для проверки кода при выполнении программы (в данном случае led_delay.c). Аппаратные средства, такие как MPLAB ICE или MPLAB ICD 2, могут выполнять код на реальных устройствах. Если оборудование недоступно, для тестирования кода можно использовать симулятор MPLAB. В этом уроке мы можем использовать симулятор MPLAB SIM. Симулятор — это программа, которая запускается на ПК и имитирует инструкции микроконтроллера PIC.
22 Он не работает в реальном времени, поскольку программа симулятора зависит от скорости ПК, сложности кода, накладных расходов операционной системы и количества других выполняемых задач.Однако симулятор точно измеряет время, которое потребовалось бы для выполнения кода, если бы он работал в реальном времени в приложении. Примечание. Другие инструменты выполнения отладки включают MPLAB ICE 2000, MPLAB ICE 4000 и MPLAB ICD 2. Это дополнительные аппаратные инструменты для тестирования кода на плате ПК приложения. Большинство операций отладки MPLAB IDE такие же, как и в симуляторе, но, в отличие от симулятора, эти инструменты позволяют целевому микроконтроллеру PIC работать на полной скорости в реальном целевом приложении.Строка состояния в нижней части окна MPLAB IDE должна измениться на MPLAB SIM. Дополнительные пункты меню теперь должны появиться в меню отладчика. Дополнительные значки панели инструментов должны появиться на панели инструментов отладки.
23 4. Начало работы с MPLAB SIM MPLAB SIM — это один из механизмов отладки, который можно использовать с MPLAB. Другие механизмы отладки — это аппаратные устройства, а MPLAB SIM — это программа, которая работает на вашем ПК. MPLAB SIM предоставляет многие из тех же функций, что и внутрисхемные эмуляторы и внутрисхемные отладчики.Разница в том, что как внутрисхемные эмуляторы, так и внутрисхемные отладчики позволяют запускать код на реальном кристалле, а также позволяют аппаратному обеспечению целевого приложения работать во время отладки. MPLAB SIM имеет функции для моделирования взаимодействия оборудования с другими сигналами и устройствами, и, поскольку он работает как программное обеспечение на ПК, он имеет полную информацию о внутреннем состоянии моделируемого чипа по каждой инструкции. Это немного отличается от аппаратных отладчиков, потому что, хотя они запускают код на полной скорости, они обычно не могут контролировать все регистры и всю память в реальном времени.
24 И MPLAB SIM, и аппаратные отладчики могут выполнять традиционные функции отладчиков, но из-за их различий они могут иметь собственные уникальные особенности. В этой презентации будут описаны функции и особенности MPLAB SIM. Отладчик является частью MPLAB IDE, и независимо от того, используете ли вы MPLAB SIM, MPLAB ICE или MPLAB ICD 2, большинство операций точно такие же. Это позволяет вам разрабатывать код с помощью симулятора, а затем, когда ваше оборудование будет готово, вы можете использовать аппаратный отладчик для дальнейшего тестирования вашего кода на практике без необходимости изучать, как использовать новый инструмент.Кнопки панели инструментов меню отладчика Горячая клавиша Запуск F9 Остановить F5 Анимация Шаг с переходом F7 Шаг за F8 Выход из сброса F6
25 Это основные функции отладки: Сброс целевого объекта, чтобы перезапустить приложение. Выполните код, чтобы можно было протестировать программу и убедиться, что она работает должным образом. Остановка кода в точках останова Во время остановки в точках останова исследуйте и изменяйте память и переменные для анализа и отладки кода приложения. Пошаговое выполнение кода, чтобы внимательно изучить, как он выполняется.Это позволяет инженеру выполнять код по одной инструкции (или одному оператору C) за раз, отслеживая затронутые переменные, регистры и флаги. Одиночный пошаговый режим по существу увеличивает масштаб кода, чтобы гарантировать правильную работу в сложных и критических участках с диапазонами значений переменных и в различных условиях тестирования. Большинство отладчиков также имеют дополнительные функции, помогающие анализировать и отлаживать приложение.
26 Некоторые из них перечислены здесь: Контрольные точки группируют и отслеживают выбранные переменные и ячейки памяти в удобном, настраиваемом считывании.Буферы трассировки фиксируют потоки выполняемых инструкций и раскрывают содержимое изменяющихся значений регистров. Секундомер может отсчитывать время участка кода. Подпрограммы могут быть оптимизированы, а критическая синхронизация кода может быть точно измерена и отрегулирована. Сложные точки останова предлагают метод для установки точек останова или для сбора данных в буфере трассировки на основе нескольких условий. Простые точки останова позволяют устанавливать точки останова в исходном коде или в любом месте программной памяти. Сложные точки останова позволяют получить точку останова при таком условии, как: после выполнения основной процедуры, называемой Refresh Display, затем
27 ждать выполнения подпрограммы Read Temp.Затем прервите работу, если переменная с именем Temperature больше 20. Можно создать сложные события для подсчета событий, так что подпрограмма должна быть выполнена, например, 15 раз, прежде чем она начнет искать значение на выводе или в регистре. , Этот вид точки останова позволяет описать состояние, при котором код работает неправильно, остановиться в точке останова или отследить код при возникновении этого условия. Обычно это более быстрый способ поиска ошибок, чем просто установка простых точек останова и пошаговое выполнение кода.MPLAB SIM — это симулятор, и в результате он обладает определенными характеристиками, которые делают его уникальным механизмом отладки. Таким образом, скорость моделирования определяется тем, как быстро работает ваш компьютер, сложностью текущего моделирования и количеством других задач, выполняемых на вашем компьютере.
28 В настоящее время максимальная скорость MPLAB SIM составляет порядка 10 MIPS, или 10 миллионов инструкций в секунду. Это будет зависеть от того, сколько других вещей выполняется вашим компьютером, от кода, который запускает симулятор, и от других задач, которые симулятор выполняет.Симулятор имитирует работу центрального процессора и его внутренних регистров, памяти и многих периферийных устройств. Чтобы протестировать приложение на симуляторе, сигналы стимула можно подавать на контакты и регистры. Для оценки производительности симулятор может записывать изменения регистров в файлы для дальнейшего анализа. Запуск MPLAB SIM. Выберите симулятор в качестве инструмента выполнения отладки. Это делается в раскрывающемся меню «Отладчик»> «Выбрать инструмент».
29 MPLAB SIM выбирается в качестве механизма отладки в меню «Отладчик».Обратите внимание на другие функции в меню отладки, такие как Run, Step и Breakpoints. После выбора механизма отладки к панели инструментов добавляются некоторые новые значки для запуска, остановки, пошагового выполнения и сброса целевого объекта. В строке состояния теперь отображается дополнительная информация. MPLAB SIM отображается как текущий механизм отладки.
30 Отображается смоделированный процессор, в данном случае dspic30f4011, затем счетчики программ, регистр W, текущее состояние внутренних флагов ЦП и текущий выбранный банк регистров файла.
31 Значки панели инструментов, меню или горячие клавиши, перечисленные в меню, могут использоваться для выполнения функций отладки. Обратите внимание, что некоторые из них немного сложнее, например Reset, который на самом деле имеет четыре типа действий сброса. Как только MPLAB SIM устанавливается в качестве механизма отладки, всякий раз, когда создается проект, он автоматически загружается в программную память симулятора для запуска и тестирования.
32 Одно окно отладки — это окно исходного кода.На самом деле это окно редактора, и точки останова можно установить, щелкнув строку правой кнопкой мыши. Пошаговое выполнение с окном исходного кода в фокусе будет выполнять пошаговый переход по строкам исходного кода C. Поскольку вы находитесь в редакторе, изменения можно вносить быстро, а проект можно перестроить.
33 Окно памяти программ показывает машинный код, который будет выполняться симулятором.Пошаговое выполнение с этим окном в фокусе позволит вам выполнить каждую машинную инструкцию. Другое окно, называемое окном Disassembly Listing, показывает исходный код высокого уровня, перемежающийся с машинным кодом, сгенерированным каждым оператором C.
34 Вы также можете открыть окно просмотра и перетащить в них переменные из вашей программы, чтобы увидеть их содержимое. Чтобы увидеть, работает ли код должным образом, отправляя увеличивающиеся значения из PORTC, наблюдайте за значениями, отправляемыми в PORTC.Ниже представлены пункты меню правой кнопки мыши в окне «Разборка».
35 Установить или удалить точку останова на текущей выбранной строке. Включить / отключить точку останова на выбранной в данный момент строке. Запустите программу в текущее положение курсора. S e t P C a t C u r s o r Установите счетчик программ (ПК) в положение курсора. Копировать выделенный текст в буфер обмена. Выделите текст, (1) щелкнув и перетащив указатель мыши на текст или (2) щелкнув в начале текста и удерживая нажатой клавишу Shift в конце текста.Выделите весь текст в окне. Выход в файл. Выберите View> Watch, чтобы открыть пустое окно Watch.
36 В верхней части окна просмотра есть два раскрывающихся элемента. Тот, что слева, помечен как «Добавить SFR», может использоваться для добавления в часы специального функционального регистра PORTC. Выберите PORTC из списка и нажмите «Добавить SFR», чтобы добавить его в окно. Во время отладки доступны другие окна для просмотра, регистрации памяти, памяти стека и энергонезависимой памяти данных.
37 5. Примеры программ Примеры программ готовы к запуску. Вы можете использовать примеры программ, чтобы узнать, как пользоваться нашими инструментами. Кроме того, вы можете скопировать код из примеров MPLAB для собственного использования. Примеры программ находятся в … \ microchip \ examples (для набора инструментов Microchip C30), \ Microchip \ C30 \ Examples (для компилятора C) и \ Microchip \ ASM \ Examples (для ассемблера). Каждая программа-пример хранится в отдельной папке вместе с файлами проекта, которые помогут вам быстро создать и оценить каждую программу-пример LED_delay: ваша первая программа на C dspic В Mplab мы можем сгенерировать простую программу на C с именем LED_delay с помощью редактора Mplab Editor.
38 Программа LED_delay ничего не делает, только повышая и понижая уровень линии ввода / вывода в течение определенного периода времени. Эта программа имеет единственный исходный файл LED_delay.C. Это небольшое приложение поможет вам подтвердить, что вы можете компилировать, связывать и отлаживать приложение. Вы можете выполнять эти операции из Mplab для Windows, используя предоставленный файл проекта. Единственное используемое периферийное устройство на кристалле — это линия портов ввода / вывода. На самом деле вам не нужен целевой ЦП, потому что Mplab позволяет моделировать оборудование, необходимое для этой программы. Файл проекта Mplab В Mplab приложения хранятся в файле проекта.Для LED_delay.c создан файл проекта. Чтобы загрузить этот проект, выберите «Открыть проект» в меню «Проект» и откройте Mplab.mcp из конкретной папки, если мы уже создали файл проекта. В противном случае вы должны создать файл проекта (см. Главу «Начало работы»).
39 5.3. Редактирование LED_delay.C Теперь вы можете редактировать LED_delay.C. Дважды щелкните LED_delay.C на странице «Файлы» в рабочей области проекта.µvision загружает и отображает содержимое LED_delay.C в окне редактора. Компиляция и связывание LED_delay Когда вы будете готовы скомпилировать и связать свой проект, используйте команду Build Target из меню Project.
40 Mplab начинает переводить и связывать исходные файлы и создает модуль абсолютных объектов, который вы можете загрузить в отладчик Mplab для тестирования. Статус процесса сборки указан на странице «Сборка» окна вывода. Тестирование LED_delay После того, как программа LED_delay скомпилирована и связана, вы можете протестировать ее с помощью отладчика Mplab SIM.В Mplab используйте команду «Выполнить» из меню или панели инструментов «Отладка». Mplab инициализирует отладчик и запускает выполнение программы до основной функции.
41 Кнопки панели инструментов меню отладчика Запуск по горячей клавише F9 Остановить F5 Анимация Шаг с переходом в F7 Шаг за F8 Выход из сброса F6 Во время отладки Mplab покажет следующий вывод:
42 Регистры PORTB включают HIGH в определенный период, PORTB регистрирует включение LOW в определенный период,
43 Понравилось ли вам чтение? Pantech Solutions создает информационные технические документы, подобные этой, каждый месяц.И наш веб-сайт — это богатый и надежный ресурс, которым пользуется активное онлайн-сообщество, состоящее из более чем 100 000 членов из организаций всех форм и размеров.
44 Что мы продаем? Наша продукция включает различные платы для разработки микроконтроллеров, платы DSP, платы FPGA / CPLD, комплекты связи, силовую электронику, базовую электронику, робототехнику, датчики, электронные компоненты и многое другое. Наша цель — сделать поиск необходимых деталей и информации более простым и доступным, чтобы вы могли создавать отличные проекты и обучаться от базовых до новейших технологий.
.