Программирование микроконтроллеров PIC16/PIC18 на языке C. Статья вводная

    Доброго тебе времени суток, хороший человек.

    Это вводная статья из небольшого цикла о программировании МК PIC16/18 на языке C.

    Необходимый минимум:
    ПО:
    — MPLAB;
    — собственно компилятор C;
    — Proteus ISIS;
    Железо:
    — отладочная плата;
    — программатор.

    MPLAB — среда разработки от Microchip. Скачать можно на офсайте. Полностью бесплатна.
    Содержит компилятор с языка ассемблера, позволяет провести полный цикл разработки в том числе и прошивку(при наличии соответствующего программатора).
    Большинство компиляторов языка C имеют механизмы встраивания в эту среду.
    Качаем обязательно.

    Компилятор C.
    Здесь уже немного сложнее с выбором.
    Список того, на что я советую обратить внимание:
    — CCS PICC;
    — Micro-C;
    — IAR C;
    — HT-PICC;
    — Microchip C18;



    CCS PICC. Платный. В своем составе содержит неплохую IDE. Возможна интеграция с MPLAB с помощью плагина.
    Существует демо-версия с ограниченичем по размеру кода и отключеннными некоторыми функциями.
    Узнать о нем можно в очень хорошей книге товарища Шпака «Программирование на языке C для AVR и PIC микроконтроллеров».
    Весьма неплох. Используется многими. Информации в сети достаточно. Вакцина существует.

    Micro-C. Платный. От копании mikroElektronika. В своем составе содержит весьма удобную IDE, симулятор и небольшой набор полезных инструментов.
    Широкий ассортимент поддерживаемых устройств.
    Главный плюс для начинающего — огромная библиотека модулей и примеров к ним. По этому параметру аналогов нет.
    Есть документация на русском. Вакцина существует.
    Лучший выбор для начинающего, но не более.

    IAR C. Платный. Очень объемный проект. Поддержка огромного количества устройств и PIC18 в том числе.
    Аналогов по функционалу и возможностям наверное нет.
    Демо-версия существует, с ограничениями естественно.
    Не лучший выбор для новичка. Хорошо подойдет в будущем, если желание работать с МК не пропадет:-)

    HT-PICC. Платный. Поддержка многих устройств. Существуют верссии для Linux и Mac.
    Будет использоваться мною в статьях для программирования PIC16.
    У меня версия — 8.05PL1.

    Microchip C18. Платный. Существует студенческая версия с полным функционалом на 2 месяца.
    Будет использоваться мною в статьях о программировании PIC18.
    У меня версия — 3.33.

    едем дальше.

    Proteus ISIS. одна из составляющих проекта Proteus от Labcent Electronics.
    Симулятор-отладчик. Лучший вариант когда под рукой нет необходимого железа.
    Информации о нем в сети предостаточно.
    Качаем обязательно.
    У меня версия — 7.5_SP3.

    Железо.
    Не буду советовать конкретной отладочной платы или схемы для нее из-за трудностей вопросов купить/спаять/достать для каждого индивидуально.
    Скажу лишь что буду давать примеры для PIC16F628A и PIC18F4550.
    С программатором в принципе тоже самое. Но советую PICkit2.

    Теперь практика.
    Сперва речь буду вести о PIC16.
    Ну и для вводной статьи напишем и запустим простейшую программу

    Скачали MPLAB. У меня версия 8.36.
    Скачали HT-PICC. У меня версия — 8.05PL1.
    Скачали Proteus. У меня версия — 7.5_SP3.
    Все установили — все работает.
    Выполняем все рекомендации по установке.
    Если не работает — решаем проблемы.

    Запускаем MPLAB.
    Идем Project -> Set Language Tool Locations. Ищем в списке HI-TECH PICC Toolsuite.
    Открываем Executables. И указываем для компиляторов и линковщика соответствующий установке путь. Жмем ОК.

    image

    Жмем Project -> Project Wizard. Выбираем PIC16F628A. Выбираем HI-TECH PICC Toolsuite. Выбираем имя нового проекта.
    Получаем пустой проект.
    Жмем File -> New. Сохраняем файл в папке проекта под именем main.c.
    Жмем в менеджере проекта на Source Files -> Add files и добавляем наш main.c

    Пишем код:

    void main(void)
    {
    while(1);
    }


    Жмем F10.
    Должны увидеть сообщение об удачном завершении.

    image

    В корне проекта появится файл с расширением .hex.
    Этим файлом можно прошить МК и посмотреть как он ничего не делает:-)
    В этой я лишь хотел помочь сделать выбор, и настроить ПО для дальнейшей работы.

    В принципе собирался осветить в цикле вопросы об основах C для МК.
    Показать примеры для большинства аппаратных модулей PIC16F628A и PIC18F4550.
    Показать примеры работы PIC18F4550 с USB.
    Рассказать о тонкостях C для подобных устройств.

    Хотелось бы узнать есть ли интерес на Хабре к подобному?
    Поделиться публикацией

    Комментарии 32

      +4
      100% интересно.

      А особенно интересно узнать есть ли еще смысл в прямой работе с PIC-ами или все уже давно перебежали на Arduino?
        0
        Ардуино это игрушка для детей и скучающих сисадминов =)

          0
          Точно! :)
          Например, тут, на Хабре, недавно статья была, как улей автоматизировать подешевле. Вот, кроме «ардуино» слова больше не было, хотя там собирается байта 3-4 раз в 15 минут. Как из пушки стрелять по воробьям :) Для питания предлагалось 16850 Li-ion… Интересно, если на pic сделать, хватит одной батареечки на год? :)
          Я уж не стал писать ничего…
        +3
        Не знаю насчет Arduino, с ним не работал. Но достаточно работал непосредственно с AVR.
        Что лучше? Сказать не могу. Выбор инструментов для разработки, библиотек и открытых проектов велик для обоих, так что все сходится лишь на знании конкретного кристалла и конкретной среды разработки.
          +3
          Ну и конечно же назначения конечного продукта :-)
          Для серьезных и ответственных устройств я бы отдал предпочтение пикам.
          АВР'ы, как по мне, легче в освоении и соответственно больше подходят для любительских разработок.
            0
            А почему? Я так наоборот авркам больше доверяю :) У них правда нет ОТП, это минус.
            0
            отличные начинания, жду продолжения тут И эту статью там же. З.Ы. если что, думаю могу что то подсказать.
              +1
              Хотелось бы увидеть применение, пускай даже самое простое, таких контроллеров. Например, щелканье лампочкой через Интернет ))
                0
                Напишу все что хотел написать на текущий момент, посмотрим на активность и комменты — а там уже посмотрим чем бы практически этот вопрос закрепить:-)
                0
                Обязательно продолжайте!
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Я за продолжение и + практическое применение
                      0
                      Arduino который на AVR спокойно работает с USB как в режиме UART, так и в режиме софтовой эмуляции. Делал управление фотоаппаратом через веб-интерфейс)
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Не все пики сами это могут, как и не все авр'ы сами этого не могут:-)
                            0
                            AVR тоже может, начиная от Tiny2313 на драйвере от Igor или начиная от 4кб ПЗУ на драйвере от OBDEV.

                            Еще есть AVRUSB с аппаратным усб, с ними правда не работал. Так что усб на авр без проблем.
                            • НЛО прилетело и опубликовало эту надпись здесь
                        +2
                        Статья конечно полезна интересующимся микроконтроллерами, но для затравки интереса можно было сразу же пойти чуть дальше чем «Прошить МК и посмотреть как он ничего не делает» :)
                          +1
                          Для вводной статьи было бы здорово написать, хотя бы вкратце, что это за устройства такие и где применяются. Я лично название «МК PIC16/18» вижу впервые.
                            +1
                            Восьмибитные микроконтроллеры общего назначения. Обширно применяются в АСУ и автоэлектронике. Отличаются огромным ассортиментом предложений. Можно подобрать идеально подходящий вариант для большинства запросов. В большинстве своем широкодоступны на территории бывшего союза. По распространенности наверное на втором месте после AVR и активно используются радиолюбителями. В сети большое количество информации и открытых проектов на их базе.
                            0
                            Я использую (неск лет уже) ccs picc (у них неплохой форум) + pickit2

                            Раньше гонял это под виндами (использовал IDE от CCS), но сейчас живу под линуксом
                            и там использую компилятор (от ccs picc) через wine в командной строке + microchip дает к своему
                            pickit2 версию софта для прошивания пиков из линукса (командная строка)

                            Все прекрасно работает.
                              0
                              В Linux отлично работает piklab+HTPICC+ICD2
                              +2
                              «Хотелось бы узнать есть ли интерес на Хабре к подобному? „
                              Однозначно интересно!
                                0
                                кто знает, а почему у GCC нет потдержки пиков?
                                  0
                                  Автор, продолжайте в том же духе, сам сейчас осваиваю AVR'ы но вся тематика МК очень интересна
                                    0
                                    Я как-то уже давно отошел от эмбеддинга, но неужели эти уродцы PIC16/18 всё ещё используются? При том что есть гораздо более прямые архитектуры (AVR, MSP430 и др)
                                      0
                                      Судя по наличию оных у торговцев радиодеталями спрос на них держится. Причем TI явно отстает в этом плане микрочипу.
                                        0
                                        *уступает
                                      0
                                      Рад такой статье! Как раз хотел почитать о программировании PIC и как это будет выглядеть в С и как это будет отличаться от работы с Atmel)
                                        0
                                        Автор, обязательно продолжайте. Как раз мне для учебы актуально.
                                          0
                                          Отлично все! Продолжайте!
                                            0
                                            Аха! конкурирующий лагерь зашевелился… бум наблюдать, всегда любопытно было как пики устроены, но все руки до них не доходили.

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое