Начинающим программистам микроконтроллеров pic

Осваиваем простейший микроконтроллер PIC. Часть 1

Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: PIC16F628A.

Первым делом необходимо скачать документацию по выбранному микроконтроллеру. Достаточно зайти на сайт производителя и скачать Datasheet.

На первых страницах перечислены основные характеристики МК (русское описание).

Основные моменты, которые нам понадобятся:

  • микроконтроллер содержит внутренний генератор на 4 MHz, так же можно подключить внешний кварц частотой до 20 MHz
  • 16 ног микроконтроллера можно использовать как цифровые входывыходы
  • есть 2 аналоговых компаратора
  • 3 таймера
  • CCP модуль
  • USART модуль
  • 128 байт энергонезависимой памяти EEPROM

Схема расположения выводов:Vdd — питание. Vss — земля. Это минимум, необходимый для работы МК.Остаются доступными 16 ног МК. Не сложно посчитать, что использование каждой ноги каким-либо модулем уменьшает максимальное число используемых цифровых портов.

Компилятор

Как я уже писал в предыдущих статьях, самым простым и легким я посчитал компилятор JAL с IDE JALEdit.

Качаем JALPack, устанавливаем.

В этом паке содержаться все необходимые библиотеки, а так же примеры их использования. Запускаем JALEdit. Открываем пример програмы для нашего микроконтроллера: 16f628a_blink.jal, дабы не портить исходник, сразу сохраняем ее в новый файл, к примеру, 16f628a_test.jal.

Весь код можно разделить на 4 блока:

  • выбор МК и его конфигурация
  • объявление переменных, процедур, функций
  • выполнение настроек и расчетов до основного цикла
  • бесконечный цикл основных действий МК

Нажав F9 (или соответсвующую кнопку) программа скомпилируется в готовую прошивку, при этом будет видно сколько ресурсов МК будет задействовано: Если прочитать комментарии, то станет ясно, что данная программа рассчитана на использование внешнего кварца 20MHz. Так как у нас его пока нет, разберемся с конфигурацией и перепишем программу на использование внутреннего генератора.

Конфигурация

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

  • OSC — конфигурация источника тактирования может принимать 8 различных значений, 4 из которых нам могут понадобиться
    1. INTOSC_NOCLKOUT — внутренний генератор (4M Hz)
    2. HS — внешний высокочастотный кварц (8-20 MHz)
    3. XT = внешний кварц (200 kHz — 4 MHz)
    4. LP — внешний низкочастотный кварц (до 200 kHz)
  • WDT — сторожевой таймер. Основная работа этого таймера в том, что бы перезагрузить микроконтроллер когда он дотикает до конца. Что бы перезагрузки не происходило, его нужно своевременно обнулять.Таким образом при сбое счетчик таймера перестанет обнуляться, что приведет к сбросу МК. Иногда бывает удобно, но в данный момент нам это не потребуется.
  • PWRTE — очередной таймер.При активации он будет сбрасывать МК до тех пор, пока питание не поднимется до нужного уровня.
  • BROWNOUT — сброс МК при падении питания ниже нормы.
  • MCLR — активация возможности внешнего сброса МК. При включении функции МК будет в постоянном резете до тех пор, пока на ноге MCLR (pin 4) не будет положительного напряжения. Для сброса МК достаточно установить кнопку, замыкающую pin 4 на землю.
  • LVP — активация возможности программирования при низком напряжении. При активации один цифровой вход переключится в режим LVP (pin 10). Если подать 5В на эту ногу, то МК перейдет в режим программирования. Для нормальной работы МК требуется держать на этой ноге 0В (подсоединить к земле).Мы будем использовать программатор, использующий повышенное напряжение, потому LVP активировать не требуется.
  • CPD — защита EEPROM от считывания программатором.
  • CP — защита FLASH (прошивки) от считывания программатором.

Изменим конфигурацию под себя:

Моргаем светодиодом по нажатию кнопки

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

Цифровой выход

Выберем еще неиспользуемую ногу МК. Возьмем, к примеру, RB5(pin 11). Данная нога не имеет дополнительных функций, потому она нам более нигде не понадобится. В режиме цифрового выхода МК может притягивать к ноге либо питание, либо землю. Подключать нагрузку можно как к плюсу, так и к минусу.

Разница будет лишь в том, когда и в какую сторону потечет ток.В первом случае ток потечет от МК при установке единицы, а во втором — к МК при установке нуля. Дабы светодиод зажигался от логической единицы, остановимся на первом варианте.

Для ограничения тока через ногу (максимально допустимо 25 мА на цифровой вход или 200 мА на все порты) установлен токоограничительный резистор. По простейшей формуле высчитываем минимальное значение в 125 Ом. Но так как предел нам не нужен, возьмем резистор в 500 Ом (а точнее ближайший подходящий).

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

Цифровой вход

Возьмем вторую неиспользуемую нигде ногу — RB4 (pin 10, указанная в распиновке функция PGM отностися к LVP, который мы отключили). В режиме цифрового входа микроконтроллер может считывать два состояния: наличие или отсутствие напряжения.

Значит нам необходимо подключить кнопку так, что бы в одном состоянии на ногу шел плюс, а во втором состоянии — к ноге подключалась земля.В данном варианте резистор используется в качестве подтяжки (Pull-up). Обычно для подтяжки применяют резистор номиналом 10 кОм.

Можно подключать не только кнопку, главное помнить о ограничении тока через МК.

Кнопка сброса

Пока не забыли, что мы активировали внешний сброс, добавим аналогичную кнопку на ногу MCLR (pin 4).После нажатия такой кнопки МК начнет выполнение программы с нуля.

Прошивка

Присваиваем нашему светодиоду и кнопке переменные:
Теперь присваивая переменной led значения 1 или 0 (on или off, true или false, другие алиасы..

) мы будем подтягивать к нужной ноге МК или плюс, или минус, тем самым зажигая и гася светодиод, а при чтении переменной button мы будем получать 1 если кнопка не нажата и 0 если кнопка нажата.

Теперь напишем необходимые нам действия в бесконечном цикле (эти действия будут выполняться постоянно. При отсутствии бесконечного цикла МК зависнет): Задержка считается просто: частота генератора у нас 4MHz. Рабочая частота в 4 раза меньше: 1 MHz. Или 1 такт = 1 мкс. 500.

000 мкс = 0,5 с. Компилируем прошивку: Теперь нам необходимо записать эту прошивку в МК, собрать устройство согласно схеме и проверить, что у нас все получилось как надо.

Программатор

Все таже схема:Смотрим на распиновку:

  • PGD — pin 13
  • PGC — pin 12
  • MCLR(Vpp) — pin 4
  • Vdd — pin 14
  • Vss — pin 5

Паяем…

Подключаем к компьютеру.

Качаем и запускаем WinPic800.

Идем в Settings->Hardware, выбираем JDM и номер порта, на котором висит программатор

https://www.youtube.com/watch?v=Ut9j4JINpSw

Нажимаем Hardware Test, затем Detect Device

Открываем нашу прошивку pic628a_test.hex

На вкладке Setting можно проверить, что конфигурационные биты выставлены верно, при желании тут же их можно изменить

Program All, затем Verify All

Если ошибок не возникло, продолжаем паять.

Результат

Финальная схема:Кнопку на MCLR паять можно по желанию, но подтяжка обязательна.Результат работы можно увидеть на видео.Итак, у нас получилось самое простое устройство на микроконтроллере: мигалка светодиодом.

Теперь нам необходимо научиться пользоваться всей оставшейся периферией, но об этом в следущей статье.

Источник: https://habr.com/post/97795/

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

Автор: Корабельников Е.А.

Название: Самоучитель по программированию PIC контроллеров для начинающих Часть 1
Издательство: Интернет
Год: 2008
Формат: pdf
Размер: 5,7 Мб Руководство по конструированию устройств на микроконтроллерах + приложение.

Общие замечания по стратегии “въезда”. “Самоучитель…” составлен таким образом, что, в случаях наличия каких-то неясностей, возникающих после прочтения предыдущих разделов, в последующих разделах, они постепенно проясняются за счет дополнительной информации, предоставляемой по мере “подворачивания” многочисленных поводов.

На первичной стадии “въезда”, главное – понять смысл, а все остальное к нему, со временем, приложится.

Оглавление
Введение 1. Готовим инструменты 2. Что такое микроконтроллер и как он работает 3. Система команд PIC16F84A 4. Что такое программа и правила ее составления. Пример создания программы автоколебательного мультивибратора. Директивы. 5. Интегрированная среда проектирования MPLAB IDE и работа в ней 6. Что дальше? 7. Пример создания программы (начало) 8.

Пример создания программы (продолжение) 9. Работа в симуляторе. Отладка программы 10. Как отследить выполнение программы 11. Прерывания. Стек. Пример разработки программы с уходом в прерывания 12. Организация вычисляемого перехода. Работа с EEPROM памятью данных 13. Флаги. Работа с флагами. Как работает цифровой компаратор. Перенос и заем 14.

Пример задействования флага С в трехбайтном суммирующем устройстве. Циклический сдвиг. Операция умножения 15. Введение в принцип построения подпрограммы динамической индикации. Косвенная адресация 16. Преобразование двоичных чисел в двоично-десятичные. Окончательное формирование текста подпрограммы динамической индикации 17. Принцип счета. Работа с таймером TMR0.

Принцип установки групп команд счета в текст программы Заключение

Дополнительная информация

      Количество страниц: 287.

Приложения    1.   Приложение 1:  Программаторы  PonyProg  и  IcProg105                                              2  2.   Приложение 2:  Область оперативной памяти  PIC16F84A  3.   Приложение 3:  Состав регистров специального назначения  PIC16F84A  4.   Приложение 4:  Регистр  OPTION_REG  5.   Приложение 5:  Регистр  STATUS  6.

   Приложение 6:  Регистр  INTCON  7.   Приложение 7:  Регистр  EECON1  8.   Приложение 8:  Биты  конфигурации  9.   Приложение 9:  Таблица  представления  чисел 10.  Приложение 10:  Таблица  команд  ассемблера  (вариант с ошибками №1) 11.  Приложение 11:  Таблица  команд  ассемблера  (вариант с ошибками №2) 12.

  Приложение 12:  Таблица  команд  ассемблера  (вариант без ошибок)  

     Количество  страниц:  68.

Читайте также:  Arduino своими руками с usb портом

Источник: http://radio-hobby.org/modules/news/article.php?storyid=440

Программирование микроконтроллеров для начинающих

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

Введение в микроконтроллеры

Это миниатюрные компьютеры, все составляющие которых (процессор, ОЗУ, ПЗУ) располагаются на одном кристалле. От микропроцессоров их отличает наличие таймеров, контроллеров, компараторов и других периферийных устройств. В настоящее время микроконтроллеры используются при производстве:

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

Управление осуществляется при помощи специальных программ.

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

  • встраиваемые;
  • 8-, 16- и 32-разрядные;
  • цифровые сигнальные процессоры.

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

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

Цифровые сигнальные процессоры способны обрабатывать в реальном времени большие потоки данных. Однако их стоимость намного выше.

Количество используемых кодов операций может быть неодинаковым. Поэтому применяются системы команд RISC и CISC. Первая считается сокращенной и выполняется за один такт генератора. Это позволяет упростить аппаратную реализацию ЦП, повысить производительность микросхемы. CISC — сложная система, способная значительно увеличить эффективность устройства.

Изучить программирование микроконтроллеров для начинающих невозможно без понимания алгоритмов. На ЦП микросхемы команды подаются в определенном порядке. Причем их структура должна восприниматься процессором однозначно.

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

Для этого используют внешние сигналы либо встроенные периферийные устройства.

Семейства микроконтроллеров

Чаще всего встречаются микроконтроллеры следующих семейств:

  • MSP430 (TI);
  • ARM (ARM Limited);
  • MCS 51 (INTEL);
  • STMB (STMicroelectronics);
  • PIC (Microchip);
  • AVR (Atmel);
  • RL78 (Renesas Electronics).

Одной из наиболее популярных в электронной промышленности является продукция компании Atmel, построенная на базе RISC-ядра. Первые микросхемы, разработанные в 1995 году, относятся к группе Classic. Изучать программирование микроконтроллеров AVR для начинающих желательно на более современных моделях:

  • Mega — семейство мощных микросхем с развитой архитектурой.
  • Tiny — недорогие изделия, имеющие восемь выводов.

Необходимо помнить, что совместимость систем команд сохраняется лишь при переносе программы с малопроизводительного МК на более мощный.

Изделия компании «Атмел» просты и понятны. Однако для использования всего функционала придется разработать программное обеспечение.

Приступать к программированию микроконтроллеров AVR для начинающих рекомендуется с загрузки специализированной среды Atmel Studio. Актуальная версия предоставляется официальным сайтом производителя на бесплатной основе.

Для разработки ПО в этой среде дополнительные программные компоненты не требуются.

Комплекс «Атмел Студио» включает огромное количество примеров готовых проектов. Это поможет новичку быстрее освоить базовые возможности и начать создавать собственные программы. В нем также имеются модули для компиляции и окончательной отладки кода. Параллельно с его освоением нужно изучать языки программирования. Без них разработать программное обеспечение невозможно.

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

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

Низкоуровневый Ассемблер в последнее время сдает позиции. Он использует прямые инструкции, обращенные непосредственно к чипу. Поэтому от программиста требуется безукоризненное знание системных команд процессора. Написание ПО на Ассемблере занимает значительное время. Главным преимуществом языка является высокая скорость исполнения готовой программы.

На самом деле, можно использовать практически любые языки программирования микроконтроллеров. Но популярнее всех С/С++. Это язык высокого уровня, позволяющий работать с максимальным комфортом. Более того, в разработке архитектуры AVR принимали участие создатели Си. Поэтому микросхемы производства «Атмел» адаптированы именно к этому языку.

С/С++ — это гармоничное сочетание низкоуровневых и высокоуровневых возможностей. Поэтому в код можно внедрить вставки на Ассемблере. Готовый программный продукт легко читается и модифицируется.

Скорость разработки достаточно высокая. При этом доскональное изучение архитектуры МК и системы команд ЦП не требуется.

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

Нужно отметить, что выбор оптимального языка программирования зависит также от аппаратного обеспечения. При малом количестве оперативной памяти использовать высокоуровневый Си нецелесообразно.

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

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

Микроконтроллеры PIC

Первые микроконтроллеры PIC появились во второй половине прошлого века. Быстрые 8-разрядные микросхемы компании Microchip мгновенно завоевали популярность. Двухшинная гарвардская архитектура обеспечивает беспрецедентную скорость. Ее разрабатывали на основе набора регистров, для которого характерно разделение шин.

Выбирая язык программирования микроконтроллеров PIC, необходимо учитывать, что в основе микросхем семейства лежит уникальная конструкция RISC-процессора. Симметричная система команд позволяет произвольно выбирать метод адресации, выполнять операции в любом регистре. На данный момент компания «Микрочип» выпускает 5 разновидностей МК, которые совместимы по программному коду:

  1. PIC18CXXX (75 команд, встроенный аппаратный стек);
  2. PIC17CXXX (58 команд 16-разрядного формата);
  3. PIC16CXXX (35 команд, большой набор периферийных устройств);
  4. PIC16C5X (33 команды 12-разрядного формата, корпуса с 18–28 выводами);
  5. PIC12CXXX (версии с 35 и 33 командами, интегрированный генератор).

В большинстве случаев МК PIC имеют однократно программируемую память. Встречаются более дорогие модели с Flash или ультрафиолетовым стиранием. Ассортимент из 500 наименований позволяет подобрать изделие для любой задачи. Сейчас производитель концентрирует усилия на развитии 32-разрядных версий с увеличенным объемом памяти.

Языки программирования микроконтроллеров PIC — это Ассемблер и Си. Для кодирования подходят любые интегрированные среды разработки (IDE). Программировать с их помощью очень удобно.

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

Ее созданием занималась компания Microchip.

Перед началом работы в MPLAB советуем каждый раз заводить отдельную папку. Это нужно, чтобы не запутаться в файлах проектов. Интерфейс программы интуитивно понятный, и трудностей с ним возникнуть не должно. Для отладки используются фирменные отладчики Pickit, ICD, REAL ICE, IC PROG. В них имеется возможность просмотра содержимого памяти, установки контрольных точек.

Больше интересного ↓

Источник: https://ArduinoPlus.ru/programmirovanie-mikrokontrollerov-dlya-nachinayuschih/

Прошивка PIC микроконтроллеров с “нуля”

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

а прошивать то чем??? И тут перед радиолюбителем, начинающим осваивать микроконтроллеры, встает вопрос – выбор программатора! Хотелось бы найти оптимальный вариант, по показателю универсальность — простота схемы — надёжность.

«Фирменные» программаторы и их аналоги были сразу исключены в связи с довольно сложной схемой, включающей в себя те же микроконтроллеры, которые необходимо программировать. То есть получается «замкнутый круг»: что бы изготовить программатор, необходим программатор. Вот и начались поиски и эксперименты! В начале выбор пал на PIC JDM.

Работает данный программатор от com порта и питается от туда же. Был опробован данный вариант, уверенно запрограммировал 4 из 10 контроллеров, при питании отдельном ситуация улучшилась, но не на много, на некоторых компьютерах он вообще отказался что либо делать да и защиты от «дурака» в нем не предусмотрено. Далее был изучен программатор Pony-Prog.

В принципе, почти тоже самое что и JDM.Программатор «Pony-prog», представляет очень простую схему, с питанием от ком-порта компьютера, в связи с чем, на форумах, в Интернете, очень часто появляются вопросы по сбоям при программировании того, или иного микроконтроллера. В результате, выбор был остановлен на модели «Extra-PIC».

Посмотрел схему – очень просто, грамотно! На входе стоит MAX 232 преобразующая сигналы последовательного порта RS-232 в сигналы, пригодные для использования в цифровых схемах с уровнями ТТЛ или КМОП, не перегружает по току COM-порт компьютера, так как использует стандарт эксплуатации RS232, не представляет опасности для COM-порта.

Вот первый плюс! Работоспособен с любыми COM-портами, как стандартными (±12v; ±10v) так и с нестандартными COM-портами некоторых моделей современных ноутбуков, имеющих пониженные напряжения сигнальных линий, вплоть до ±5v – еще плюс! Поддерживается распространёнными программами IC-PROG, PonyProg, WinPic 800 (WinPic800) и другими – третий плюс! И питается это все от своего собственного источника питания! Было решено – надо собирать! Так в журнале Радио 2007 №8 был найден доработанный вариант этого программатора. Он позволял программировать микроконтроллеры в двух режимах. Известны два способа перевода микроконтроллеров PICmicro в режим программирования: 1.При включённом напряжении питания Vcc поднять напряжение Vpp (на выводе -MCLR) от нуля до 12В 2.При выключенном напряжении Vcc поднять напряжение Vpp от нуля до 12В, затем включить напряжение Vcc

Первый режим — в основном для приборов ранних разработок, он накладывает ограничения на конфигурацию вывода -MCLR, который в этом случае может служить только входом сигнала начальной установки, а во многих микроконтроллерах предусмотрена возможность превратить этот вывод в обычную линию одного из портов. Это еще один плюс данного программатора. Схема его приведена ниже:

Крупнее Все было собрано на макетке и опробовано. Все прекрасно и устойчиво работает, глюков замечено небыло! Была отрисована печатка для этого программатора.

depositfiles.com/files/mk49uejin

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

Читайте также:  Запоминающие устройства

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

Сперва наперво устанавливаем программу IC-prog, которую можно скачать на сайте разработчика www.ic-prog.com, Распакуйте программу в отдельный каталог.

В образовавшемся каталое должны находиться три файла:

icprog.exe — файл оболочки программатора. icprog.sys — драйвер, необходимый для работы под Windows NT, 2000, XP. Этот файл всегда должен находиться в каталоге программы. icprog.chm — файл помощи (Help file). Установили, теперь надо бы ее настроить. Для этого: 1.(Только для Windows XP): Правой кнопкой щёлкните на файле icprog.exe. «Свойства» >> вкладка «Совместимость» >> Установите «галочку» на «Запустить программу в режиме совместимости с:» >>выберите «Windows 2000». 2.Запустите файл icprog.exe. Выберите «Settings» >> «Options» >> вкладку «Language» >> установите язык «Russian» и нажмите «Ok». Согласитесь с утверждением «You need to restart IC-Prog now» (нажмите «Ok»). Оболочка программатора перезапустится. Настройки” >> «Программатор1.Проверьте установки, выберите используемый вами COM-порт, нажмите „Ok“. 2.Далее, „Настройки“ >> „Опции“ >> выберите вкладку „Общие“ >> установите „галочку“ на пункте „Вкл. NT/2000/XP драйвер“ >> Нажмите „Ok“ >> если драйвер до этого не был устновлен на вашей системе, в появившемся окне „Confirm“ нажмите „Ok“. Драйвер установится, и оболочка программатора перезапустится. Примечание: Для очень „быстрых“ компьютеров возможно потребуется увеличить параметр „Задержка Ввода/Вывода“. Увеличение этого параметра увеличивает надёжность программирования, однако, увеличивается и время, затрачиваемое на программирование микросхемы. 3.»Настройки” >> «Опции» >> выберите вкладку «I2C» >> установите «галочки» на пунктах: «Включить MCLR как VCC» и «Включить запись блоками». Нажмите «Ok». 4.«Настройки» >> «Опции» >> выберите вкладку «Программирование» >> снимите «галочку» с пункта: «Проверка после программирования» и установите «галочку» на пункте «Проверка при программировании». Нажмите «Ok». Вот и настроили! Теперь бы нам протестировать программатор в месте с IC-prog. И тут все просто: Далее, в программе IC-PROG, в меню, запустите: Настройки >> Тест ПрограмматораПеред выполнением каждого пункта методики тестирвания, не забывайте устанавливать все «поля» в исходное положение (все «галочки» сняты), как показано на рисунке выше. 1.Установите «галочку» в поле «Вкл. Выход Данных», при этом, в поле «Вход Данных» должна появляться «галочка», а на контакте (DATA) разъёма X2, должен установиться уровень лог. «1» (не менее +3,0 вольт). Теперь, замкните между собой контакт (DATA) и контакт (GND) разъёма X2, при этом, отметка в поле «Вход Данных» должна пропадать, пока контакты замкнуты. 2.При установке «галочки» в поле «Вкл. Тактирования», на контакте (CLOCK) разъёма X2, должен устанавливаться уровень лог. «1». (не менее +3,0 вольт). 3.При установке «галочки» в поле «Вкл. Сброс (MCLR)», на контакте (VPP) разъёма X3, должен устанавливаться уровень +13,0… +14,0 вольт, и светиться светодиод D4 (обычно красного цвета).Если переключатель режимов поставить в положение 1 то будет светится светодиод HL3

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

Тестирование канала данных программатора EXTRAPIC: 1. 13 вывод микросхемы DA1: напряжение от -5 до -12 вольт. При установке «галочки»: от +5 до +12 вольт. 2. 12 вывод микросхемы Da1: напряжение +5 вольт. При установке «галочки»: 0 вольт. 3. 6 вывод микросхемы DD1: напряжение 0 вольт.

При установке «галочки»: +5 вольт. 3. 1 и 2 вывод микросхемы DD1: напряжение 0 вольт. При установке «галочки»: +5 вольт. 4. 3 вывод микросхемы DD1: напряжение +5 вольт. При установке «галочки»: 0 вольт. 5. 14 вывод микросхемы DA1: напряжение от -5 до -12 вольт.

При установке «галочки»: от +5 до +12 вольт. Если все тестирование прошло успешно, то программатор готов к эксплуатации.

Для подключения микроконтроллера к программатору можно использовать подходящие панельки или же сделать адаптер на основе ZIF панельки (с нулевым усилием прижатия), например как здесь radiokot.ru/circuit/digital/pcmod/18/.

Теперь несколько слов про ICSP — Внутрисхемное программирование PIC-контроллеров. При использовании ICSP на плате устройства следует предусмотреть возможность подключения программатора. При программировании с использованием ICSP к программатору должны быть подключены 5 сигнальных линий: 1. GND (VSS) — общий провод. 2. VDD (VCC) — плюс напряжение питания 3.

MCLR' (VPP)- вход сброса микроконтроллера / вход напряжения программирования 4. RB7 (DATA) — двунаправленная шина данных в режиме программирования 5. RB6 (CLOCK) Вход синхронизации в режиме программирования Остальные выводы микроконтроллера не используются в режиме внутрисхемного программирования.

Вариант подключения ICSP к микроконтроллеру PIC16F84 в корпусе DIP18:1.Линия MCLR' развязывается от схемы устройства перемычкой J2, которая в режиме внутрисхемного программирования (ICSP) размыкается, передавая вывод MCLR в монопольное управление программатору. 2.Линия VDD в режиме программирования ICSP отключается от схемы устройства перемычкой J1.

Это необходимо для исключения потребления тока от линии VDD схемой устройства. 3.Линия RB7 (двунаправленная шина данных в режиме программирования) изолируется по току от схемы устройства резистором R1 номиналом не менее 1 кОм. В связи с этим максимальный втекающий/стекающий ток, обеспечиваемый этой линией будет ограничен резистором R1.

При необходимости обеспечить максимальный ток, резистор R1 необходимо заменить (как в случае c VDD) перемычкой. 4.Линия RB6 (Вход синхронизации PIC в режиме программирования) так же как и RB7 изолируется по току от схемы устройства резистором R2, номиналом не менее 1 кОм.

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

Расположение выводов ICSP у PIC-контроллеров:
Эта схема только для справки, выводы программирования лучше уточнить из даташита на микроконтроллер.
Теперь рассмотрим прошивку микроконтроллера в программе IC-prog. Будем рассматривать на примере конструкции вот от сюда rgb73.mylivepage.

ru/wiki/1952/579 Вот схема устройства
вот прошивка Прошиваем контроллер PIC12F629. Данный микроконтроллер для своей работы использует константу osccal — представляет собой 16-ти ричное значение калибровки внутреннего генератора МК, с помощью которого МК отчитывает время при выполнении своих программ, которая записана в последней ячейке данных пика.

Подключаем данный микроконтроллер к программатору. Ниже на сриншоте красными цифрами показана последовательность действий в программе IC-prog.1. Выбрать тип микроконтроллера 2. Нажать кнопку «Читать микросхему»

В окне «Программный код» в самой последней ячейке будет наша константа для данного контроллера. Для каждого контроллера константа своя!Не сотрите ее, запишите на бумажку и наклейте ее на микросхему!

Идем далее3. Нажимаем кнопку «Открыть файл…», выбираем нашу прошивку. В окне программного кода появится код прошивки. 4. Спускаемся к концу кода, на последней ячейке жмем правой клавишей мыши и выбираем в меню «править область», в поле «Шестнадцатеричные» вводим значение константы, которую записали, нажимаем «ОК». 5.

Нажимаем «программировать микросхему». Пойдет процесс программирования, если все прошло успешно, то программа выведет соответствующее уведомление. Вытаскиваем микросхему из программатора и вставляем в собранный макет. Включаем питание. Нажимаем кнопку пуск.Ура работает! Вот видео работы мигалки

video.mail.

ru/mail/vanek_rabota/_myvideo/1.html

С этим разобрались. А вот что делать если у нас есть файл исходного кода на ассемблере asm, а нам нужен файл прошивки hex? Тут необходим компилятор. и он есть — это Mplab, в этой программе можно как писать прошивки так и компилировать. Вот окно компилятораУстанавливаем Mplab Находим в установленной Mplab программу MPASMWIN.

exe, обычно находится в папке — Microchip — MPASM Suite — MPASMWIN.exe Запускаем ее. В окне (4) Browse находим наш исходник (1) .asm, в окне (5) Processor выбираем наш микроконтроллер, нажимаем Assemble и в той же папке где вы указали исходник появится ваша прошивка .

HEX Вот и все готово!

Надеюсь эта статья поможет начинающим в освоении PIC контроллеров! Удачи!

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

Источник: http://electronics-lab.ru/blog/mcu/13.html

Первый урок. Подготовка инструментов

Тут будет опубликовано несколько уроков по программированию pic18f контроллеров. Начнем с самого начала для самых чайников. Пишу я эти уроки, потому что было очень проблематично найти материал для начинающих. Очень многое устарело, или просто не описано.Первый урок. Подготовка инструментов.

Внимание! Понятие “земля” для нас – это всего лишь общий провод, подключенный к +0 V (отрицательный провод USB, например). Не надо вкапывать металлическую пластину на метр в землю

В данном тексте приведены ссылки на книги. “название книги”:страница обозначает указатель на определенную страницу книги. “название книги”:Гглава – главу. При этом ТО – сокращение для тех. описания контроллера (Datasheet). Например ТО:15 – 15 страница технического описания. ТО:Г3 – третья глава технического описания

Мы не будем здесь ничего объяснять. Только готовим все инструменты и контроллеры для работы.

Весь теоретический материал – в следующих уроках. Если вы совсем ничего не знаете про контроллеры, советовал бы вам прочитать что-либо из следующего. Для удобства буду дублировать ссылки из моего личного архива.

Вот сайт, на котором товарищ Корабельников прячет свои учебники по микроконтроллерам для новичков.

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

Я начинал с книжки “Микроконтроллеры – это же просто!”. Но это по другому семейству контроллеров.

Или же Б.Брей. Применение микроконтроллеров PIC. Зеркало

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

И качаем документацию на семейство контроллеров pic18f2550 с официального сайта. И на программатор. Зеркало Программатор

Читайте также:  Конструкция и характеристики динамических громкоговорителей (динамиков)

Этот блог посвящен программированию микроконтроллер семейства pic 18F. Все примеры будут рассматриваться на контроллерах pic 18f4550 и pic 18f2550. На данном этапе примеры на ассемблере компилируются под виндой и линуксом. А на Си – только под виндой. Что необходимо для начала? естественно, сам микроконтроллер.

Как вы увидите ниже, если вы купите контроллер другого типа, то не будет особых проблем запустить программу на нем. Но это, к сожалению требует некоторых умственных усилий, и поэтому если вы раньше не имели дела с подобной техникой, то наверное стоит использовать указанное ниже. Итак: 1. Контроллер PIC18f2550 или PIC18f4550. 2.

Программатор для этого типа контроллеров: у меня – PICkit2. он шьет тучу разных PIC чипов. Более новые версии наверное еще лучше. 3.Потом нам необходима плата, на которой мы будем собирать схемы.

Я советую что-то такое. Паять в большинстве случаев не надо. Купите еще наборчик перемычек для нее.

Ну если вы решите паять, то в этом конечно ничего плохого нет.

4. Набор радиодеталей для схемы, которая находится ниже.

5. Пакет MPLABX. Ранее в блоге рассматривался MPLAB 8.91. В соответствующих разделах будут указаны ссылки на статьи со старой средой. Скачать же MPLABX можно здесь зеркало6. Компилятор PIC18 Зеркало

Если вы используете linux, то вам понадобится что-то типа pk2cmd и gputils.

Ну и конечно, скорее всего вам понадобятся такие вещи, как плоскогубчики, ножичек, изоленточка, паяльничек, и.т.д…

Питание мы будем брать от USB порта компьютера.

Схема подключения для контроллера pic18f2550:

Скажу еще, что это не просто откуда-то скачанные чертежи. Это все работает у меня на макете.

Ниже – схема для контроллера pic18F4550

В принципе, нет никаких особых требований для сбора этой схемы. Кварц желательно должен быть как можно ближе к контактам. И вообще, надо бы аккуратно собрать линию его подключения. Лично я припаял кварц вообще к сокету, в который вставляется контроллер. Но навряд ли это необходимо.

Итак, собрали?

Теперь надо будет его прошить и проверить. 

Я использовал pickit2.

Вот распиновка контроллеров из официальной документации:

И вот распиновка программатора pickit2. 

Подключаем пины программатора к соответствующим пинам на контроллере и прошиваем следующими файлами:

Естественно, на контроллер напряжение подавать не надо, втыкаем программатор в USB

Пример для pickit2.

запускаем.

Возможно, что сначала контроллер или программатор неопределен. щелкаем Tools->check communication. проверяем, правильно ли мы все подключили. Пока не появятся такие сообщения:

Рядом с device должна быть написана модель вашего контроллера, а 

Pickit found and connected.

щелкаем file->import hex выбираем hex file, и молимся об удачной прошивке.

Прошили.

это простая программа для проверки, работает ли ваша схема. Она мигает светодиодиком на порту RA2.

Поэтому чтобы проверить работу вашего микроконтроллера, подключите +светодиода на ножку RA2 микроконтроллера, и минус через резистор 1КОм на землю. А то чего доброго – сгорит светодиод. При подключении питания, он должен мигать.

Если ничего не работает, попробуйте эту прошивку

Тут используется внутренний генератор импульсов. То есть, если второй пример работает, а первый нет, то у вас какая-либо проблема с кварцем.

Работает? поздравляю с первой программой.

Источник: http://jasuramme.blogspot.com/2013/06/pic18f-1.html

Программирование pic контроллеров

   Недавно решил собрать устройство на микроконтроллере фирмы PIC, но по не известным причинам у меня отказал программатор Extra-PIC. Скорее всего, сгорела микросхема МАХ232, такое уже было один раз. Недолго думая, нашел в Интернете простенькую схему программатора, заточенного под IC-Prog и работающую через СОМ порт.

   Плату необходимо отзеркалить при печати. Иначе панельки придется паять со стороны дорожек. 

   Далее просверлил отверстия и начал паять детали. Самой большой проблемой были стабилитроны. Стабилитроны стал искать на плате от ЭЛТ-монитора. Подписаны на плате они как ZD (Zener Diode). Естественно маркировка у них непонятная и неизвестно где и как искать. Чтобы определить, на сколько вольт стабилитрон можно собрать простую схемку.

   Вольтметр достаточно точно покажет, на сколько вольт стабилитрон. Таким нехитрым способом нашел приблизительные по номиналу стабилитроны. Вместо 5,6В установил 6,2В, вместо 12,6В поставил 2 стабилитрона последовательно 6,2+6,2=12,4В

   Транзистор можно поставить КТ315. У себя поставил С945. Диоды тоже любые, я выпаял все 3 шт. из диодного моста той-же платы от монитора. Номинал конденсаторов также не критичен, но их поставил по номиналу.    Немного про красные пятачкИ у панелек. Эти ноги вообще не паяются у панелек. Полностью готовый девайс выглядит так: 

   Панельки решил не все паять, т.к. мне нужно было прошить только PIC16F628А. После того как спаял нужно настроить программу. Прошивать мы будем IC-Prog. Скачиваем программу, распаковываем из архива,

Если вы пользуетесь Windows NT, 2000 или XP, то правой кнопкой щёлкните на файле icprog.exe. “Свойства” >> вкладка “Совместимость” >> Установите “галочку” на “Запустить программу в режиме совместимости с:” >>

выберите “Windows 2000”.

Запускаем программу. Если она уже на русском – ничего не нужно, переходите к шагу .

   Если программа на английском, то жмите “Settings” >> “Options” >> вкладку “Language” >> установите язык “Russian” и нажмите “Ok”.

Согласитесь с утверждением “You need to restart IC-Prog now” (нажмите “Ok”). Оболочка программатора перезапустится.

Теперь нужно настроить программатор. Кликайте “Настройки” >> “Программатор”. Проверьте установки, выберите используемый вами COM-порт, нажмите “Ok”.

   Для очень “быстрых” компьютеров возможно потребуется увеличить параметр “Задержка Ввода/Вывода”. Увеличение этого параметра увеличивает надёжность программирования, однако, увеличивается и время, затрачиваемое на программирование микросхемы.

Только для пользователей Windows NT, 2000 или XP. Нажмите “Настройки” >> “Опции” >> выберите вкладку “Общие” >> установите “галочку” на пункте “Вкл. NT/2000/XP драйвер” >> Нажмите “Ok” >> если драйвер до этого не был устновлен на вашей системе, в появившемся окне “Confirm” нажмите “Ok” . Драйвер установится, и оболочка программатора перезапустится.

Нажмите снова “Настройки” >> “Опции” >> выберите вкладку “I2C” >> установите “галочки” на пунктах: “Включить MCLR как VCC” и “Включить запись блоками”. Нажмите “Ok”.

“Настройки” >> “Опции” >> выберите вкладку “Программирование” >> снимите “галочку” с пункта: “Проверка после программирования” и установите “галочку” на пункте “Проверка при программировании”. Нажмите “Ok”.

Источник: http://radioskot.ru/publ/mk/programmirovanie_pic_kontrollerov/9-1-0-622

RadioLaba.ru — программирование микроконтроллеров PIC

Радиомодули HC-12 построены на трансивере Si4463, и микроконтроллере серии STM8S, трансивер (приемопередатчик) обеспечивает двунаправленную радиосвязь, а микроконтроллер образует прозрачный интерфейс передачи данных, что позволяет с помощью двух модулей организовать беспроводной UART интерфейс. Максимальная заявленная дальность связи может достигать 1,8 км на открытой местности.Читать далее »

LCD 1602 является широко распространенным и популярным дисплеем среди радиолюбителей, кроме этого, аналогичные дисплеи встраиваются в различные устройства серийного производства.

Дисплей построен на базе контроллера HD44780 и его аналогах, широкая известность связана с его давним появлением на рынке, во времена стремительного развития электроники.

В этой статье я расскажу про сопряжение интерфейса I2C и LCD 1602, с помощью микросхемы расширителя портов PCF8574.Читать далее »

Интерфейс I2C является широко распространенным и популярным стандартом передачи данных между устройствами. Данный интерфейс поддерживают множество различных датчиков и микросхем, наиболее известные это микросхемы EEPROM памяти серии 24cXX.

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

Читать далее »

В этой статье я расскажу про вывод символов на светодиодную панель, собранную из нескольких матриц на основе драйвера MAX7219.

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

Драйверы при этом соединяются каскадно, при загрузке данные смещаются от одного драйвера к другому.Читать далее »

Микросхема DS3231 представляет собой высокоточные часы реального времени RTC, которая обладает встроенным кварцевым генератором с температурной компенсацией, благодаря чему уход времени составляет всего ±2 минуты за год. Дополнительно реализована функция будильника, также имеется выход прерываний. Часы можно приобрести в виде готового модуля под Arduino с элементами обвязки и отсеком для батареи.Читать далее »

Акселерометр представляет собой датчик, измеряющий проекции ускорения на три пространственные оси.

Учитывая величину ускорения свободного падения (g) и данные измерения по трем осям, можно определить ориентацию акселерометра в пространстве.

Для этих целей его и используют, например, в мобильных телефонах для поворота изображения на экране, а также в играх. В этой статье я рассмотрю модуль с акселерометром ADXL345 позиционирующийся под платформу Arduino.Читать далее »

LCD Nokia 5110 представляет собой монохромный графический дисплей с разрешением 48×84 пикселей, который можно использовать для отображения различной информации в устройствах на микроконтроллерах.

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

Дополнительно на плате установлены светодиоды подсветки, синего цвета свечения.Читать далее »

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

Пределы измеряемого давления составляют 300…1100 мбар, или 225…825 мм рт. ст.

Датчик продается в виде модуля GY-68 под Arduino, представляет собой миниатюрную плату на которой установлен стабилизатор напряжения 3,3 В, обвязка и непосредственно сам датчик.Читать далее »

Источник: http://radiolaba.ru/

Ссылка на основную публикацию