РадиоКот :: Начинающим программистам микроконтроллеров PIC

Содержание

Обучение : Программирование на Си для PIC

Я ни раз задавал сам себе вопрос, с какого бы языка начинать изучение. Твёрдо отвечаю – Си, т.к. в ассме много рутины и условностей, что лишает творчества. Постоянно надо проверять и перепроверять себя, а не забыл ли ты то или иное действие. В ассме есть свои неоспоримые преимущества, но о них потом, т.к. это почувствовать можно только на практике. C языком определились. Реально Си учить не надо. Я вам так скажу – мой Си это условно десять пазлов и море логики, которые я комбинирую. Можно ничего не знать, важно понимать механизм, т.е. что на что влияет и к чему приводит. Это как игра в тетрис в котором нужно лишь крутить фигуры и плотнее их ставить. Если вы играли в тетрис (не уверен что вы знаете эту игру), то вы легко поймете что такое Си.

Далее о макете (макетной плате). И на эту тему мне задавали вопрос. И пришел к выводу, что человеку, который не первый день в электронике делать какую-то плату или платку с кнопками и светодиодами не интересно. Школьнику мигалка, пищалка и кнопка будут интересны. Но не взрослому человеку. Тем более всё это можно сделать в Протеусе. Протеус изучается за 30 мин. Тогда вы меня спрашиваете, а что же сделать? Сделать практическое устройство по которому у вас будет цель – цель доделать это устройство до конца. Это самый главный психологический стимул.

Из каких компонентов должно быть устройство? Несколько кнопок (хоть десяток), семисегментные индикаторы 2-5 разрядов, микроконтроллер PIC16F628A (или без А) (на этом микроконтроллере можно много фантазировать), ну и оставить 1-2-3 свободные линии, чтобы что-то внешнее подключить или управлять. У меня всё начинается с идеи и вопроса что собрать и подключить к МК, и сразу думаю, а как это будет подключаться к МК и может ли работать такое подключение. Ну и собственно процесс рисования печатной платы идет в параллели. Необходимо  знать и учитывать при рисовании, что не все ножки одинаково работают. И именно это важное начальное условие расписывается в самоучителе с самого начала.

В связи с этим ваша задача сейчас по моему самоучителю разобраться с выводами (ножками), как, какие, в какую сторону, при каких условиях работают эти вывода. При всей простоте задачи вы столкнетесь с массой других несложных вещей, которые нужно изучить.

Что в итоге вы получите?
1) Понимание как, что и с чем соединять.
2) Как управляются эти соединения на элементарном уровне.
3) Начнете привыкать к интерфейсу среды разработки.
4) Начнете изучать структуру текста программы.
5) Начнете понимать механизм работы программы.

Важное условие – вдумчиво читать подряд. Вдумчиво и подряд. Возможно перечитывать.
Мир вам.

Введение. Взаимосвязь Си и Ассемблера. Как учить Си?

Как работает МК. Программа в МК. Области памяти в МК.

Байты и биты.

МК и текст программы. Типы данных. Переменные и константы.

Как и какие микроконтроллеры будем программировать?

Установка MPLAB 8.30 и интеграция PICC Compiler 9.50.

Создание проекта с помощью волшебника (wizard)

Программа №1. «Рыба».

Физиололгия работы программы в МК.

Как работают функции. Комментарии.

Программа №2. «Продолжение рыбы». Именование портов и линий

Регистры портов. Определение направлений работы линий.

Ифы, форы, вайлы или основы интеллекта. Истина не ложь

if-else (если-иначе)

for (в течение)

while (пока)

do-while (делать пока)

switch-case-break (выбрать набор и выйти)

return (возврат)

Избыточный займ и переполнение

Составление проекта из нескольких файлов исходников

Массивы.

Динамическая индикация. Прерывания. Структуры

 

О сайте.
Электронные устройства и модели,
обучение и консультация,
документация и средства разработки.
Принимаем на реализацию проекты,
услуги, идеи. Возмездная помощь.

Здесь может быть
ваша реклама

Понравилась конструкция,
но не можете собрать?

Обращайтесь, мы удовлетворим
ваши запросы и пожелания!
Напишите нам письмо.

Типа юмор:
Я точно знаю, что такое одиночество: это когда 24 февраля видишь мужика, покупающего себе пену для бритья.

 

Обучение : Программирование на Си для PIC

Я ни раз задавал сам себе вопрос, с какого бы языка начинать изучение. Твёрдо отвечаю – Си, т.к. в ассме много рутины и условностей, что лишает творчества. Постоянно надо проверять и перепроверять себя, а не забыл ли ты то или иное действие. В ассме есть свои неоспоримые преимущества, но о них потом, т.к. это почувствовать можно только на практике. C языком определились. Реально Си учить не надо. Я вам так скажу – мой Си это условно десять пазлов и море логики, которые я комбинирую. Можно ничего не знать, важно понимать механизм, т.е. что на что влияет и к чему приводит. Это как игра в тетрис в котором нужно лишь крутить фигуры и плотнее их ставить. Если вы играли в тетрис (не уверен что вы знаете эту игру), то вы легко поймете что такое Си.

Далее о макете (макетной плате). И на эту тему мне задавали вопрос. И пришел к выводу, что человеку, который не первый день в электронике делать какую-то плату или платку с кнопками и светодиодами не интересно. Школьнику мигалка, пищалка и кнопка будут интересны. Но не взрослому человеку. Тем более всё это можно сделать в Протеусе. Протеус изучается за 30 мин. Тогда вы меня спрашиваете, а что же сделать? Сделать практическое устройство по которому у вас будет цель – цель доделать это устройство до конца. Это самый главный психологический стимул.

Из каких компонентов должно быть устройство? Несколько кнопок (хоть десяток), семисегментные индикаторы 2-5 разрядов, микроконтроллер PIC16F628A (или без А) (на этом микроконтроллере можно много фантазировать), ну и оставить 1-2-3 свободные линии, чтобы что-то внешнее подключить или управлять. У меня всё начинается с идеи и вопроса что собрать и подключить к МК, и сразу думаю, а как это будет подключаться к МК и может ли работать такое подключение. Ну и собственно процесс рисования печатной платы идет в параллели. Необходимо  знать и учитывать при рисовании, что не все ножки одинаково работают. И именно это важное начальное условие расписывается в самоучителе с самого начала.

В связи с этим ваша задача сейчас по моему самоучителю разобраться с выводами (ножками), как, какие, в какую сторону, при каких условиях работают эти вывода. При всей простоте задачи вы столкнетесь с массой других несложных вещей, которые нужно изучить.

Что в итоге вы получите?
1) Понимание как, что и с чем соединять.
2) Как управляются эти соединения на элементарном уровне.
3) Начнете привыкать к интерфейсу среды разработки.
4) Начнете изучать структуру текста программы.
5) Начнете понимать механизм работы программы.

Важное условие – вдумчиво читать подряд. Вдумчиво и подряд. Возможно перечитывать.
Мир вам.

Введение. Взаимосвязь Си и Ассемблера. Как учить Си?

Как работает МК.

PicHobby.lg.ua

Программа в МК. Области памяти в МК.

Байты и биты.

МК и текст программы. Типы данных. Переменные и константы.

Как и какие микроконтроллеры будем программировать?

Установка MPLAB 8.30 и интеграция PICC Compiler 9.50.

Создание проекта с помощью волшебника (wizard)

Программа №1. «Рыба».

Физиололгия работы программы в МК.

Как работают функции. Комментарии.

Программа №2. «Продолжение рыбы». Именование портов и линий

Регистры портов. Определение направлений работы линий.

Ифы, форы, вайлы или основы интеллекта. Истина не ложь

if-else (если-иначе)

for (в течение)

while (пока)

do-while (делать пока)

switch-case-break (выбрать набор и выйти)

return (возврат)

Избыточный займ и переполнение

Составление проекта из нескольких файлов исходников

Массивы.

Динамическая индикация. Прерывания. Структуры

 

Языки программирования микроконтроллеров

Микроконтроллеры / Для начинающих /

Был период, когда я вообще ничего не знал о микроконтроллерах.

Был период, когда я думал, что программы для микроконтроллеров создаются точно также, как и для компьютеров.

Был период, когда я думал, что программировать микроконтроллеры можно только на ассемблере.

Как видите, я довольно долго заблуждался. Да и хрен бы с ним и со мной. Но ведь это происходит почти со всем новичками!

Поэтому я решил рассказать о том, какие языки программирования микроконтроллеров существуют.

Итак, вот список (не полный) языков программирования микроконтроллеров:

  1. Ассемблер
  2. С
  3. С++
  4. PL/M
  5. Форт
  6. Бэйсик
  7. Паскаль
  8. Python

Однако наиболее распространённые языки — это Ассемблер и С. Вот о них мы немного и поговорим.

Как вы понимаете, языки бывают низкого уровня, и высокого уровня. В нашем случае язык низкого уровня — это ассемблер, а высокого — язык С.

Программирование PIC на С (CCS PIC-C Compiler)

В чём их преимущества и недостатки?

Совместимость и переносимость кода

У каждого микроконтроллера свой набор команд и свой язык ассемблера. Это проблема. Потому что:

  1. При переходе на другую модель микроконтроллера вам придётся по новой изучать набор команд и язык.
  2. Если вы захотите перенести готовую программу на другую модель микроконтроллера, то вам придётся её (программу) переписывать заново.

Однако, эти проблемы возникают только в том случае, если вы используете ассемблер. Если же ваша программа на языке высокого уровня, то про эти проблемы можно забыть (хоть и не полностью).

Быстродействие

А вот тут Ассемблер выигрывает, потому что даже очень хорошо написанная программа на языке высокого уровня в большинстве случаев будет проигрывать по быстродействию программе на ассемблере.

Правда, современные микроконтроллеры довольно быстрые, поэтому это преимущество не всегда имеет значение.

Время на разработку

Здесь ассемблер снова проигрывает. Потому что создавать программы на языке высокого уровня намного быстрее и проще.

Средства разработки

Почти все современные средства разработки поддерживают языки ассемблера и С. Но вот такие языки как Бэйсик или Паскаль обычно в стандартных средствах разработки отсутствуют. Поэтому, если вы хотите создавать программы именно на этих языках, то вам придётся воспользоваться инструментами сторонних разработчиков. Разумеется, без каких-либо гарантий, что они правильно будут транслировать исходники в машинные коды.

Профессионалы и любители

Если вы профессиональный программист, то вам, скорее всего, приходится иметь дело с разными моделями микроконтроллеров, и у вас очень мало времени на разработку. Поэтому профессионалы, как правило, создают программы на языках высокого уровня.

Если же вы любитель (или начинающий), то вы, скорее всего, экспериментируете с одной-двумя моделями микроконтроллеров, и время для вас не имеет значения. Поэтому любителям достаточно изучить один язык ассемблера и набор команд для одного вида микроконтроллеров.

Обучение и понимание работы программы

Здесь я ставлю на первое место ассемблер. Потому что программа на ассемблере более прозрачна, вы однозначно и чётко видите, что она делает, какие флаги устанавливает, какие регистры использует и т.п.

И, несмотря на то, что ассемблер более сложный язык, чем С, а тем более Паскаль или Бэйсик, начинать я советую именно с ассемблера.

Микроконтроллеры для ЧАЙНИКОВ

Бесплатная рассылка о микроконтроллерах. Рассылка содержит как бесплатную информацию для начинающих, так и ссылки на платные продукты (книги, видеокурсы и др.) для тех, кто захочет вникнуть в тему более глубоко. Подробнее…

Интегрированная среда разработки программ для микроконтроллеров фирмы Microchip

Отладочная среда MPLAB предназначена для создания и отладки программ для PIC контроллеров фирмы MICROCHIP.

Программирование микроконтроллеров PIC. Часть 1. Необходимые инструменты и программы. Основы MPLAB

Она включает в себя компилятор с асемблера, текстовый редактор, программный симулятор и средства работы над проектами. Кроме того, она позволяет использовать компилятор с языка Си.

MPLAB работает под управлением Windows 95/98/2000/NT и позволяет:

  • Создавать, компилировать и компоновать исходный код программ
  • Отлаживать программы во встроенном симуляторе или внутрисхемном эмуляторе реального времени MPLAB-ICE
  • Измерять временные интервалы
  • Просматривать значения переменных

MPLAB состоит из следующих основных модулей:

  • MPLAB Project Manager — Средства работы на проектами
  • MPLAB-SIM Software Simulator — Симулятор программ
  • MPLAB Editor — Полноценный текстовый редактор
  • MPASM Universal Macro Assembler — Компилятор с ассемблера, компоновщик

Встроенный программный симулятор позволяет просматривать содержимое памяти данных и программ. Симулятор работает в режиме пошагового выполнения и позволяет выполнять трассировку программ в различных режимах.

Отладочная среда MPLAB легко осваивается и включает встроенную систему помощи.

  34886 Kb Отладочная среда MPLAB IDE V7.40
  25606 Kb Отладочная среда MPLAB IDE V7.00
 
 

     Как использовать компилятор Си компании Microchip  
MPLAB C18 для микроконтроллеров семейства PIC18Fxxxx
в интегрированной среде разработки MPLAB.

     Пошаговая инструкция с картинками — где скачать, как настроить проект, скомпилировать первую простейшую программу с симуляцией.

 

  Для микроконтроллеров семейств PIC10, PIC12, PIC16, PIC18, PIC24, dsPIC30, dsPIC33
и PIC32 все действия похожи — только компилятор нужно скачать соответствующий.

  Для микроконтроллеров PIC10, PIC12 и PIC16  в пакете MPLAB поставляется великолепный компилятор CCS — в нём есть готовые библиотеки-драйверы для массы самых популярных у радиолюбителей микросхем и отличные примеры программирования PIC.

 

1) Скачайте компилятор MPLAB® C Compiler for PIC18 MCUs  — студенческую версию — Student Edition. Он полностью функционален 60 дней, затем появится ограничение на размер кода. Ограничение можно обойти установив компилятор на виртуальный ПК созданный программами VirtualBox или VirtualPC. Установите компилятор в папку C:\MCC18  
Сделайте резервную копию папок —  C:\MCC18\example   C:\MCC18\h  C:\MCC18\lib

Скачайте документацию:
MPLAB C18 C Compiler Getting Started — быстрый старт
MPLAB IDE Current Release Notes — описание версии
MPLAB C18 C Compiler User’s Guide — руководство по компилятору
PIC18F Development Tools Product Overview — обзор инструментов
MPASM™/MPLINK™ PICmicro® Quick Chart — таблица по ассемблеру и линкеру
MPASM/MPLINK User’s Guide — руководство по ассемблеру и линкеру 
MPLAB C18 Libraries Documentation — описание библиотек компилятора (в них реализована поддержка переферии МК — PWM, SPI, I2C, UART, USART, работа со строками и математика)

2) Скачайте MPLAB и установите в папку по-умолчанию.
Скачайте MPLAB IDE User’s Guide — руководство.

 

Как создать новый проект.

3)Запустите MPLAB и затем "мастер проекта"

 

 

На появившейся заставке мастера нажмите "далее" и в следующем
диалоге выберите модель МК который хотите использовать

 

Жмите "Далее" и во втором шаге укажите компилятор C18

Если компилятора не окажется в списке то найдите его в ручную и укажите.

 

 

Жмите "Далее"и в следующем шаге-окне нажмите "Browse" и создайте папку
для проекта — например такую :    

 

Откройте созданную папку и дайте название проекту и "Сохранить"

 

         Система команд микроконтроллеров PIC18 на русском

 

Должно получится вот так

Жмите "Далее".

 


Electronic Banner Exchange (ElBE)

 

В этом окне можно было бы вставить файлы в проект, например файлы с исходными
текстами программы или библиотеки — но у нас их нет, потому просто жмите "Далее"

 

Работа мастера завершена — вот отчет


 

Нажмите "Готово".

Вот что теперь в папке проекта

 

 

Как создать файл с исходным текстом программы на Си .

4)В MPLAB создайте новый файл — меню "File" > "New" и
сохраните его "File" > "Saveas" под именем   main.c

 

Теперь нужно набрать в этом окне текст первой программы

#include <stdio.h> // библиотека ввод-вывод

#pragma config WDT = OFF // выкл. сторожевой таймер 

void main (void)
{ // напечатать:  Hello, mcc18.narod.ru !
printf ("Hello, mcc18.narod.ru !\n");

while (1);// бесконечный цикл
}

или скопировать и вставить в окно. Должно получиться вот так :

Кликните "дискетку" чтобы сохранить текст в файле.

 

 

Теперь нужно добавить main.c в проект.

 

Вот так

 

 

Компиляция и симуляция-отладка.

5)Нужно выбрать инструмент в котором будет происходить проверка работы программы — это может быть реальное устройство с выбранным МК подключенное через интерфейс типа ICD2 к ПК , может быть супер симулятор PROTEUS — он позволяет симулировать работу не только МК PIC но целого электронного устройства с несколькими МК и даже разных производителей в одной схеме.

Самоучитель по программированию PIC контроллеров для начинающих Часть 1

Мы будем использовать симулятор MPLAB — выберите его

 

Симулятор нужно настроить  — меню: "Debugger" > "Settings"

Здесь указывается частота тактирования микроконтроллера — 20 МГц в нашем примере.

Перейдите на закладку "Uart1 IO" и сделайте такие установки

Выход "Output" мы направим в "Window" — т.е. на экран, а можно было сохранять в файл. Если указать "Input File"то при симуляции его содержимое будет отправляться в UART МК. Нажмите "Применить" и "ОК".

 

6)  Выполните компиляцию проекта

 

В результате должно появится 2 новых окна

Закройте окно c018i.c

Самое важное сейчас — это сообщение об успешной компиляции "BUILD SUCCEEDED".

В окно "Output" выводятся все сообщения о ходе работа инструментов пакета MPLAB- вы видите сейчас в нём подробности процесса компиляции.  Если бы при компиляции возникли ошибки или предупреждения то они тоже выводились бы в это окно. 

Уменьшите окно вывода и разместите его удобно на экране, затем переключитесь на закладку "SIM Uart1" — сюда будет выводится информация из UART  PIC18F452при симуляции.

А в папке проекта появились новые файлы :

main.hex  — это файл "прошивка" для загрузки в реальный МК

main.cof  — это файл с информацией для отладки в симуляторахпо исходному
тексту программы на Си, например в PROTEUS- это очень удобно.

 

        Переводы документации на PIC и статьи на русском

 

Виртуальный микроконтроллер  PIC18F452  с нашей первой программой, откомпилированной и зашитой в него, готов начать работать.  

7) Щелкните два раза мышкой на сером фоне, чуть левее строки 

while (1);// бесконечный цикл

Появится красный кружок — это "ТОЧКА ОСТАНОВА" ( BreakPoint ) — перед выполнением строки кода перед которой стоит "ТО" симулятор остановится и будет ждать вашей команды.

8) Включи
те секундомер — меню "Debugger" > "StopWatch" — он позволяет точно измерять временные промежутки при симуляции. 

9) Симуляцию запустите кнопкой "Пуск" — голубой треугольник в панели управления

 

Программа начнет выполняться и остановится на точке останова.
Приветствие появилось в окне вывода 

Секундомер показывает что с запуска МК прошло 836,8 мкС это 4184 машинных цикла для микроконтроллеров PIC18- у них один машинный цикл это 4 периода тактового сигнала.

 

10) Нажмите еще раз кнопку "Пуск" — цикл   while (1);   будет выполнен еще раз и в окне секундомера появится число 4186 — значит на выполнение цикла тратится 2 машинных цикла PIC18F452 или 8 периодов частоты 20 МГц.  

 

Подробней о симуляции в MPLAB написано там 

Книги на русском языке найдететам 

 

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

Как сделать простейший программатор для PIC18 и как его запрограммировать
вы можете найти в низустранички для начинающих электронщиков.

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *