Краткий курс - Самоучитель - AVR - быстрый старт с нуля


Страница  9
 

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


Учебный курс Самоучитель PIC10  PIC12  PIC16 
PIC18  PIC24  dsPIC30  dsPIC33
PIC32  

Если вы хотите использовать очень популярные среди электронщиков любителей МК - PIC'и - то рекомендую вам набор ресурсов внизу страничек avr123.nm.ru   и   proavr.narod.ru/01.htm  

Там есть переводы всей фирменной документации по PIС.

Страницы курса :   заглавная    1   2   3   4   5   6   7   8   9

 

Скачать весь курс по AVR одним архивом на заглавной странице курса.

Скачать FAQ AVR PIC - сборник вопросов и ответов   (есть в архиве)

Скачать книги по AVR и электронике   там Библиотека книг. 

Начните с книги  Шпака !

 

ПОДАРОК !  от производителя PIC ов, более 900 примеров применения
с теорией схемами и кодом программ:

All PIC Application Notes  ( апликухи ! ) 


Peter Anderson's PIC Page  - супер!   не только о ПИКах но и по связи ПК с внешним миром.


THE PIC COURSE  
без комментариев! из названия все понятно... и просто, с картинками

Rentron.com - много готовых заготовок-кубиков из которых можно сложить свое устройство!      


ПЕРЕВОД он-лайн       www.Translate.ru     <-  ИСПОЛЬЗУЙТЕ !


FAQ PIC - лучшие сборник ответов на вопросы по
микроконтроллерам PIC на русском и на английском
внизу этой странички.

ПО для разработки программ для PIC
 

CCS - наверно самый удобный для начинающих компилятор Си для PIC
В
установку входит МАССА примеров применения PIC и мастре кода и настройки PIC.  Один компилятор для всех семейств PIC ! В библиотеке по ссылке выше скачайте пожалуйста книгу по компилятору CCS - автор ШПАК - "Программирование на языке С для AVR и PIC микроконтроллеров".

 

MCC18 - Компилятор Си от MicroChip - бесплатен 60 дней - считают одним из лучших для PIC по качеству кода !   И документация великолепная. 

 

Программатор и отладчик для всех PIC на USB  PicKit2  недорогая копия фирменного. Он же логический анализатор и адаптер USB UART - великолепный инструмент ! Сам является отладочной платой для PIC благодаря прошитому загрузчику.

К каждому программатору супер DVD в подарок !  Программаторы собраны аккуратно и протестированы. На прилагаемом DVD диске есть всё, что нужно электронщику и микроконтроллерщику.

 

 

Среда разработки и симулятор
для всех PIC - MPLAB IDE

 

Реклама недорогих радиодеталей почтой:

 

Обязательно используйте:

PROTEUS - Отличный симулятор огромного числа микроконтроллеров PIC и других семейств, симулятор электроники. В нем есть и ассемблер для  PIC.



HT-PICC - Компилятор Си (отличный !) для PIC и классная инструкция. Он устанавливается при установке среды MPLAB IDE

 

Статьи по микроконтроллерам PIC

Схемы и прошивки - программатор для микроконтроллера PIC

 

MPLAB-ICD2 дебагер (внутрисхемный отладчика и программатор PIC контроллеров серий PIC12F, PIC16F, PIC18F и dsPIC30F) компании Microchip.com

MPLAB-ICD2 - все просто и работает:
http://de7bugger.narod.ru/

Более "полный" вариант:
http://www.5v.ru/extrapic.htm


Простой программатор для PIC
http://pic16f84.narod.ru/progr.htm

Универсальный программатор почти ВСЕГО ! что нужно:
http://se-ed.net/mpu51/eprom/eprom.html

и на сайте ic-prog можно подобрать для себя вариант программатора:
http://www.ic-prog.com/index1.htm

ICD2 - USB дебаггер-программатор PIC
 туточки

 

 

Ниже есть материалы семинаров по PIC ! 

 

Применение модуля  CPP  PWM  PIC  захвата, сравнения, ШИМ - Измерение временных интервалов, длины импульсов, генерация ШИМ и ЦАП, измерение оборотов и скорости.

Сафронов А.В. Приемы и трюки использования встроенного компаратора

Сафронов А.В. Управление сетевым питанием с помощью PIC10F204 и симистора

Афанасьев И.С. Советы по уменьшению энергопотребления микроконтроллеров

Афанасьев И.С. Обзор технологии микропотребления NanoWatt

Афанасьев И.С. Улучшенная система команд PIC18

Афанасьев И.С. Практическое использование интерфейса USB в контроллерах PIC18F (с примерами программ)
 

(2184 Kb)

Борисов. А. Портирование приложений с семейства PIC18 на PIC24F

(209 Kb)

(106 Kb)

(310 Kb)

Смирнов И. MPLAB IDE. Интерфейс управления и мониторинга данных (DMCI)

PDFБорисов А.   ICD-2 для продвинутых пользователей  (805 Kb)

 

 

 

 

Статья Аннотация
Портирование приложений с PIC18 на PIC24F. 1. 7. Тактовый генератор

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 8. Режимы пониженного энергопотребления

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 9. Сторожевой таймер

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 10. Встроенные функции энергопотребления

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Data Monitor and Control Interface (DMCI) - интерфейс управления и мониторинга данных
Алексей Сафронов
 
DMCI (Data Monitor and Control Interface) – интерфейс управления и мониторинга данных – интегрированный с MPLAB IDE-проектами интерфейс, позволяющий динамически задавать значения переменных с помощью имеющихся средств управления, и отображать результаты работы с помощью графических средств.
EGG - новое расширенное ядро PIC18 микроконтроллеров Microchip
Илья Афанасьев
 
Компания Microchip Technology Inc. на протяжении нескольких лет с успехом производит мощные FLASH микроконтроллеры семейства PIC18 с тактовой частотой до 40МГц, аппаратным умножителем 8*8 за один такт и широким набором периферийных модулей: многоканальный 10-и разрядный АЦП, ШИМ, интерфейсы I2C, SPI, USART, LIN, CAN2.0B. Система команд микроконтроллеров PIC18 изначально разрабатывалась для эффективного использования с языка высокого уровня Си. Однако, проанализировав современные требования и оптимальное взаимодействие с компиляторами, компания Microchip модернизировала ядро PIC18, и теперь новые микроконтроллеры имеют усовершенствованное ядро EGG (Extended Gold Gate)
Управление сетевым питанием с помощью PIC10F204 и симистора
Алексей Сафронов
В этой статье рассматривается вариант замены механического термостата на электронный регулятор на микроконтроллере PIC10F204, новинке от Microchip® в 6-выводном корпусе SOT-23. Управление током через нагревательный элемент осуществляется с помощью симистора, основы управления которым также рассмотрены в статье
Компилятор MPLAB® C30 и библиотеки функций для периферийных устройств dsPIC30F от компании Microchip.

 
Компилятор MPLAB C30 – полнофункциональный ANSI C компилятор для семейства микроконтроллеров dsPIC30F. MPLAB C30 полностью совместим со средой разработки MPLAB IDE, в которой поддерживаются отладка по исходному коду на внутрисхемном эмуляторе ICE, внутрисхемная отладка с помощью MPLAB ICD2 и программная симуляция MPLAB Simulator.
Использование микроконтроллеров Microchip в задачах воспроизведения звука
Алексей Сафронов
Для решения задач записи, воспроизведения и передачи голоса чаще всего необходимо увеличение производительности основного процессора или использование процессоров обработки сигналов. Это ведет к увеличению стоимости системы и ее размера. Но для получения системы обработки голоса со средним качеством и небольшой полосой пропускания возможно использовать 8-ми разрядные микроконтроллеры
Обзор технологии микропотребления NanoWatt

 
 
Контроллеры цифровой обработки сигналов dsPIC30F

 
Компания Microchip с 2004 года начала выпуск нового семейства 16-ти разрядных Flash микроконтроллеров с поддержкой команд цифровой обработки сигналов dsPIC30F. Высокое быстродействие в 30 MIPS (миллионов операций в секунду) и эффективная система команд позволяет использовать контроллеры в сложных системах реального времени.
Большие возможности маленького контроллера

 
В статье рассмотренны приемы и трюки которые могут быть применены для уменьшения цены и размеров изделия
Применение модуля захвата, сравнения, ШИМ в контроллерах Microchip. Часть 1
Илья Афанасьев
Фирма Microchip продолжает разработку и производство передовых продуктов, предоставляющих пользователю большую функциональность гибкость и надежность. Микроконтроллеры PICmicro® используются во многих приборах повседневного спроса – от стиральных машин и автомобильной техники до медицинских приборов. Модуль сравнения, захвата и ШИМ (ССР), который присутствует во многих микроконтроллерах Microchip, используется в основном для измерения и формирования импульсных сигналов. Эта статья описывает основные принципы использования этого модуля в каждом режиме, а также «нестандартные» варианты использования применительно к решению практических задач
Приемы и трюки использования встроенного компаратора в контроллерах Microchip
Алексей Сафронов
Микроконтроллеры Microchip используются во многих устройствах, начиная от пожарных датчиков и заканчивая промышленной и автомобильной электроникой. Контроллеры PIC12F и PIC16F, имеющие встроенный аналоговый компаратор, сочетают в себе производительное RISC-ядро, Flash память программ и возможность обработки аналоговых сигналов. Приемы и трюки, рассмотренные ниже, помогут полностью использовать потенциал компараторов, как дискретных, так и встроенных в микроконтроллеры Microchip PIC
Практическое использование интерфейса USB в контроллерах PIC18F
Илья Афанасьев
 
Цикл статей призван показать, что каждый может провести быстрый "апгрейд" своего устройства с привычного RS-232 на USB или создать новое устройство с USB интерфейсом. Статья расширяется по мере подготовки материала. Доступны примеры программ и исходные коды.
Советы по уменьшению энергопотребления NanoWatt контроллеров

 
С статье рассмотрены важные моменты для разработки микропотребляющих устройств
Применение модуля захвата, сравнения, ШИМ в контроллерах Microchip. Часть 2
Илья Афанасьев
В предыдущей части были рассмотрены особенности применения модуля захвата, сравнения и ШИМ (Capture/Compare/PWM – ССР) компании Microchip Technology Inc – ведущего производителя 8-и разрядных микроконтроллеров. Мы продолжаем рассматривать возможные примеры использования модуля CCP в микроконтроллерах PICmicro® применительно к решению практических задач
Радиоприемник rfRXD0х20 и передатчик с микроконтроллером rfPIC12F675 от Microchip

 
Компания Microchip расширяет линейку компонентов для беспроводной связи устройств в радиочастотном диапазоне. Разработчики охранных систем и удаленных датчиков, систем наблюдения и телеметрии получают в свое распоряжение FLASH микроконтроллер встроенным УКВ радиопередатчиком, а также супергетеродинный приемник
Новые микроконтроллеры Microchip PIC18F2x5x/4x5x с контроллером USB2.0
Алексей Сафронов
 
Компания Microchip представляет новинку в семействе микроконтроллеров PIC18F – микроконтроллер с поддержкой универсальной последовательной шины (USB). Контроллеры новой серии сочетают в себе производительность RISC ядра, Flash память программ, режимы экономии энергопотребления, и, наконец, коммуникационное ядро USB2.0 с низкой ценой и высокой надежностью
PIC16 с технологией микропотребления NanoWatt

 
Добавлены все новые режимы энергосбережения, и при этом цена микроконтроллеров даже несколько снизилась по сравнению со старыми моделями PIC16
FLASH-контроллеры PIC18F с технологией микропотребления nanoWatt.

 
Микроконтроллеры первых поколений вполне обходились режимом 'sleep', в котором работа микроконтроллера приостанавливалась, а потребление резко уменьшалось. Но скоро этого стало недостаточно, что привело к появлению новой технологии NanoWatt от Microchip, позволяющей более гибко и экономно расходовать энергию батарей
Рекомендации по повышению устойчивости к взлому охранных систем на базе технологии KeeLoq.
Описаны основные методы повышения устойчивости охранных систем к "интеллектуальным грабберам", работающих по принципу подмены кода.
Портирование приложений с PIC18 на PIC24F. Введение

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. Архитектура ядра

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 2. Система команд

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 3. Память программ.

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 4. Память данных.

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 5. Сброс и старт.

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с PIC18 на PIC24F. 1. 6. Контроллер прерываний.

 
Портирование приложений с семейства PIC18 на семейство PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.1. Порты ввода/вывода общего назначения

 
Портирование приложений с семейства PIC18 на PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.2. Таймеры

 
Портирование приложений с семейства PIC18 на PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.3. Модули сравнения, захвата, ШИМ

 
Портирование приложений с семейства PIC18 на PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.4. Модуль SPI

 
Портирование приложений с семейства PIC18 на PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.5. Модуль I2C

 
Портирование приложений с семейства PIC18 на PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.6. Модуль UART

 
Портирование приложений с семейства PIC18 на PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.7. 10-и битный АЦП

 
Портирование приложений с семейства PIC18 на PIC24F
Портирование приложений с семейства PIC18 на PIC24F. 2.8. Компаратор и модуль опорного напряжения

 
Портирование приложений с семейства PIC18 на PIC24F
Стек протоколов TCP/IP. Поддержка ENC28J60
Алексей Сафронов
Сетевые технологии, появившиеся с широким распространением персональных компьютеров, прочно укрепились во многих областях применений. Причем во многих случаях разработчики отказываются от применения дорогих и избыточных персональных компьютеров, переложив выполняемые задачи на микроконтроллеры. Именно для организации таких систем Microchip выпустил новую микросхему – Ethernet-контроллер ENC28J60
Стек протоколов MiWi™ для беспроводных сетей. Трансивер MRF24J40
Алексей Сафронов
С появлением дешевых интегральных трансиверов и микроконтроллеров с низким энергопотребление у многих разработчиков встал вопрос о реализации простых беспроводных сетей для портативных устройств с батарейным питанием. Такие сети актуальны во всех направлениях электроники: системы безопасности, «умный дом», телеметрия и сбор данных, промышленная автоматизация и т.д.
Графический интерфейс пользователя
Илья Афанасьев
Графический интерфейс пользователя (Graphical User Interface, GUI) это система средств для взаимодействия пользователя с устройством, основанная на представлении всех доступных пользователю системных объектов и функций в виде графических компонентов экрана (окон, кнопок, полос прокрутки и т. п.). При работе с GUI пользователь имеет произвольный доступ (с помощью клавиатуры или устройств координатного ввода, например, touch-screen) ко всем видимым экранным объектам.
Супервизоры и детекторы напряжения Microchip
Иван Смирнов
В статье рассматриваются вопросы применения внешних супервизорвизоров при разработке микропроцессорных систем, а также особенности микро потребляющих схем сброса компании Microchip
Микропотребляющая аналоговая и интерфейсная продукция Microchip
Иван Смирнов
Новинки аналоговой и интерфейсной продукции
Технология Peripheral Pin Select в 16-разрядных микроконтроллерах PIC24
Александр Борисов
Часто разработчики малогабаритных электронных устройств сталкиваются с проблемой выбора микроконтроллера под свою задачу. С одной стороны, критичен размер корпуса контроллера, с другой – требуется наличие большого числа различных интерфейсов. Современные микроконтроллеры с корпусами 18-28 выводов, как правило, имеют большое количество встроенных периферийных модулей, однако малое количество выводов может ограничить одновременное использование требуемой периферии
Системы беспроводного доступа PKE на основе PIC16F639
Алексей Сафронов
Пассивные транспондеры, использующие двунаправленную беспроводную связь с базовой станцией в режиме hands-free, быстро нашли широкое применение в автоматизированных дистанционных системах идентификации и контроля доступа, и являются общей опцией на новых моделях автомобилей. Вместо нажатия кнопки брелка для блокировки или разблокировки дверей автомобиля, теперь возможно получить доступ к автомобилю просто имея при себе соответствующий транспондер. Такие системы получили название Hands-free Passive Keyless Entry (PKE)
Внутрисхемный USB программатор-отладчик PICkit2
Илья Афанасьев
 
Для начала освоения и практического применения микроконтроллеров разработчику необходим дешевый и доступный инструментарий. Интернет наводнен различными схемами простых программаторов и каждый «совершенствует» их под то, что есть под рукой и выкладывает на всеобщее обозрение новый клон «универсального программатора» который точно работает, например, с контроллером PIC16F84, но желающие могут проверить работу со всеми остальными контроллерами. Поэтому наиболее частые вопросы на всевозможных форумах посвященных электронике звучат примерно так: «Помогите разобраться со схемой программатора взятой с сайта www…. !!! Вчера отлично работал с контроллером ууу, а сегодня с xxx отказывается работать!!! В чем причина???». Или «перепробовал mmm схем программаторов, ни один не работает! Дайте ссылку на проверенный программатор!!!»

 

Еще ниже статьи, схемотехника и материалы
по PIC для новичков !

 

 


Назад        Дальше... 

будет вам и дальше, с течением времени...

Ося Бендер (про задаток).  

 

 

НИЖЕ  ЕСТЬ  ОЧЕНЬ  ИНТЕРЕСНОЕ !

Хотите весь курс одним файлом? - качайте ! 

 

Если курс помог вам напишите, мне будет приятно!

 



 

          

 

 

 

 

Компания Microchip Technology Inc. на протяжении нескольких лет с успехом производит мощные FLASH  микроконтроллеры семейства PIC18 с тактовой частотой до 40МГц, аппаратным умножителем 8*8 за один такт и широким набором периферийных модулей: многоканальный 10-и разрядный АЦП, ШИМ, интерфейсы I2C, SPI, USART, LIN, CAN2.0B.

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

изначально разрабатывалась для эффективного использования с языками высокого уровня Си. Однако, проанализировав современные требования и оптимальное взаимодействие с компиляторами, компания Microchip  модернизировала ядро PIC18, и теперь новые микроконтроллеры имеют усовершенствованное ядро EGG (Extended Gold Gate).

Новые контроллеры поддерживают все 75 стандартные команды ядра PIC18, добавлена индексная адресация в стандартных командах для оптимизации реализации рекурсивных функций и работы с программным стеком а также добавлены 8 новых команд.

Стандартное ядро PIC18 добавляет много расширенных возможностей по сравнению с младшим семейством микроконтроллеров PICmicro (PIC12, PIC16), в то же время обеспечивая легкость перехода снизу вверх. Большинство команд занимают одно программное слово (16 бит) за исключением четырех команд которые требуют два слова программной памяти.

Каждая однословная команда делится на код операции (opcode), который определяется типом инструкции и один или несколько операндов, которые определяют действие команды.

Система команд сгруппирована в четыре основные категории:

  • байт-ориентированные команды;
  • бит-ориентированные команды;
  • команды работающие с константами;
  • управляющие команды.

Расширение системы команд

Дополнительно к стандартным 75-ти инструкциям ядра PIC18 новые микроконтроллеры поддерживают команды расширяющие функциональность ядра. Дополнительные восемь инструкций пополняют операции с косвенной и индексной адресацией, в новом ядре также реализована индексная адресация со смещением для многих стандартных инструкций ядра PIC18. Расширение системы команд по умолчанию запрещено. Для разрешения работы расширенных команд служит специальный бит XINST в битах конфигурации микроконтроллера. Таким образом, реализуется полная программная совместимость со стандартным ядром, если пользователь использует новые микроконтроллеры со старым программным обеспечением.

Расширенные команды можно классифицировать как команды с константами, которые работают с регистрами общего назначения или используются для индексной адресации. Список новых инструкций приведен в табл.1. Две из инструкций ADDFSR и SUBFSR имеют специальное расширение для работы с регистром косвенной адресации FSR2. Эти команды (ADDULNK и SUBLNK) позволяют производить автоматический выход из подпрограммы (return) после выполнения. Расширенные инструкции предназначены для улучшения оптимизации и возможности создания реентерабельного кода (т.е. построения рекурсивных алгоритмов или использования программного стека) на языках высокого уровня, например на Си. Наряду с прочим, расширение системы команд позволяет пользователю работать с языками высокого уровня для эффективного выполнения таких операций над данными как:
 

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

Таблица 1. Список новых инструкций ядра PIC18

Команда Описание действия
ADDFSR f, k Добавить константу к регистру указателя адреса FSR(f).
ADDULNK k Добавить константу к регистру указателя адреса FSR2 и выйти
CALLW Вызов функции по значению WREG
MOVSF zs, fd Копирование содержимого (FSR2 + zs) в регистр fd
MOVSS zs, zd Копирование (FSR2 + zs) в (FSR2 + zd)
PUSHL k Сохранение значения k в FSR2, декремент FSR2
SUBFSR f, k Вычитание константы из FSR(f)
SUBULNK k Вычитание константы из FSR2 и выход

Пример 1:

Команда: CALLW

Действие: (PC + 2) > TOS, (W) > PCL, (PCLATH) > PCH, (PCLATU) > PCU

Адрес возврата (PC + 2) помещается в стек возврата.

Содержимое рабочего регистра W записывается в программный счетчик PCL а содержимое PCLATH и PCLATU переписываются в PCH и PCU.

Пример использования (вызов функции по указателю):
movff  HIGH ptr, PCLATH; загрузка адреса указателя
movf   LOW ptr, w
callw               ; вызов подпрограммы по указателю

Синтаксис расширенных команд

Большинство расширенных команд использует индексные параметры, используя один из регистров FSR (регистр указателя адреса при косвенной адресации) и некоторого смещения, чтобы определить регистр адресата или источник. Когда аргумент для команды служит частью индексной адресации он помещается в квадратные скобки " [ ] ". Это сделано чтобы указать, что параметр используется как индекс или сдвиг. Если индекс или значение смещения не заключены в скобки, то ассемблер MPASMTM укажет на ошибку. Когда разрешен расширенный набор команд, скобки также используются, чтобы указать индексные параметры в байт-ориентированных и бит-ориентированных командах.
 

Пример 2:
 

Команда: MOVSF [Zs], fd

Действие: ((FSR2) + Zs) > fd

Содержимое регистра, на который указывает (FSR2 + Zs) пересылается в fd.

Пример использования:
MOVSF [offset], REG2

Пример 3:
 

Команда: MOVSS [Zs], [Zd]

Действие: ((FSR2) + Zs) > ((FSR2) + Zd)

Содержимое регистра, на который указывает (FSR2 + Zs) пересылается в (FSR2 + Zd).

Пример использования:
MOVSS [offset1], [offset1]

Бит-ориентированные и байт-ориентированные команды в режиме индексной адресации со смещением.

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

Если расширенный набор запрещен, то адрес ‘f' в команде указывает на буквальное местоположение в памяти в зависимости от значение параметра ‘а': при ‘а' = 0 в Access Bank или, при ‘а' = 1 в GPR банке (адрес которого определен в BSR).

Если же расширенный набор команд разрешен, то адрес либо интерпретируется как в стандартном режиме работы ядра PIC18 либо как смещение от значения указателя в FSR2. Если нужно указать значение смещения, то это смешение должно быть обрамлено квадратными скобками ‘[ ]', при этом значение смещения должно лежать в диапазоне от 0 до 95 (5Fh). Практически это означает, что все команды, которые используют бит признака доступа к оперативной памяти Access Bank или BSR как параметр - то есть все байт- и бит-ориентированные команды, или почти половина основных команд PIC18 может вести себя по-другому в ядре PIC18 с расширенным набором команд. Использование скобок указывает к компилятору, что значение должно интерпретироваться как индекс или смещение. Исключение скобок или использование значение смещения больше чем 5Fh в пределах скобок произведет ошибку в ассемблере MPASM. Пример 4 а) и б) иллюстрирует использование одной и той же команды для разных случаев адресации.

Когда содержание FSR2 указывает на адрес 0х00, то границы оперативной памяти по существу повторно отображены к их первоначальным значениям. Это может быть полезно в создании кода совместимого с обычным ядром PIC18.

Если в режиме индексной адресации со смещением индексный параметр заключен в скобки, то параметр доступа к оперативной памяти ‘a' никогда не указывается и будет автоматически принят как ‘0'. Это отличие от стандартной операции, когда ‘a' указывает на целевой адрес. Объявление бита доступа оперативной памяти в этом режиме также приведет к сообщению об ошибке в ассемблере MPASM. Параметр адресата, ‘d', функционирует в новом ядре как и прежде.

В последних версиях языка ассемблера MPASM поддержка расширенного набора команд должна быть указана явно. Это делается либо с опцией в командной строке /y, или с директивой PE в листинге исходного года. В компиляторе MPLAB-C18 нужно указывать директиву -extended и подключать соответствующий командный файл линкера, например 18f4620_e.lkr.

Пример 4: иллюстрация работы одной и той же команды для разных режимов адресации. Режим расширенного ядра разрешен.
 

Команда      ADDWF f {,d {,a}}

а) использование адресации со смещением addwf [k],d

Действие: (W) + ((FSR2) + k) > dest

Содержимое рабочего регистра W добавляется к содержимому регистра на который указывает со смещением ‘k' указатель адреса FSR2. Если ‘d' равно ‘0', результат сохраняется в W, если ‘d' равно ‘1' то результат сохраняется в регистре (FSR2 + k).

б) стандартная команда addwf REG1,d,a

Действие: (W) + (REG1) > dest

Содержимое рабочего регистра W добавляется к содержимому регистра REG1. Если ‘d' равно ‘0', результат сохраняется в W. Если ‘d' равно ‘1', результат сохраняется в REG1. Параметр ‘a' указывает на в Access Bank (а = 0) или на GPR банки (а = 1).

Оптимизация кода при использовании языка высокого уровня

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

Рассмотрим некоторые примеры оптимизации кода и быстродействия при использовании языка высокого уровня Си.

Пример 5: Присвоение значения элементу массива, mass[2] = 5.
 

При реализации на стандартном ядре PIC18, данная команда занимает 10 байт памяти программ и выполняется за 5 машинных цикла:
MOVLW  0x05
MOVWF  PRODL, 0
MOVLW  0x02
MOVFF  PRODL, PLUSW2

Расширенное ядро требует всего 4 байта программной памяти и выполняется за 2 машинных цикла:
MOVLW 0x05
MOVWF [0x02], 0

Пример 6: Присвоение элементу массива значения другого элемента, mass[2] = mass[5].
 

Стандартное ядро PIC18: 12 байт памяти программ:
movlw  offset(0х05)
movf   PLUSW2,0,0
movwf  INDF1,0
movlw  offset(0х02)
movff  INDF1,PLUSW2

Расширенное ядро: 4 байта программной памяти
movss  [0х05],[0х02]

Пример 7: Вызов функции по указателю: fn[ptr]();
 

Стандартное ядро: 18 байта программной памяти, выполняется за 9 машинных цикла:
bra    PC+12
movff  ptr + 2,PCLATU
movff  ptr + 1,PCLATH
movlb  ptr
movf   ptr,0,1
movwf  PCL,0
rcall  PC-10

Расширенное ядро: 14 байта программной памяти, выполняется за 6 машинных цикла:
movff  ptr + 2,PCLATU
movff  ptr + 1,PCLATH
movlb  ptr
movf   ptr,0,1
callw

Особенности микроконтроллеров с расширенным ядром PIC18.

Компания Microchip Technology Inc. готовит к выпуску целое семейство микроконтроллеров с расширенным ядром PIC18 (см. табл.2). Все микроконтроллеры выполнены по NanoWatt технологии, а значит, имеют встроенный тактовый генератор с возможностью программного выбора частоты от 32КГц до 8МГц; имеют возможность отключения тактирования ядра для сохранения энергии; возможность переключения «на лету» источника тактовой частоты между основным генератором (до 40МГц), дополнительным генератором подключаемого к Timer 1 и внутренним RC-генератором. В NanoWatt микроконтроллерах имеется возможность контролирования работоспособности основного кварцевого генератора и в случае отказа кварца - переключиться на внутренний генератор. Эта особенность может пригодиться для повышения надежности важных и необслуживаемых систем.

Все новые микроконтроллеры поддерживают внутрисхемную отладку с помощью отладчика-программатора ICD-2. Для новых  контроллеров поддерживаются 3 точки останова, просмотр и модификация содержимого ОЗУ, возможность запуска программы в реальном времени и в пошаговом режиме.

Среди новых микроконтроллеров есть  микросхемы со встроенной поддержкой протоколов USB 2.0 (full-speed), CAN 2.0B, во всех контроллерах есть поддержка интерфейса I2C, SPI и расширенный интерфейс USART (EUSART) с возможностью автоподстройки скорости, выхода из режима SLEEP при наличии активности на шине.

 

 

 

Atmel AVR BASIC Compiler (BASCOM)  
BSCAVR
Atmel AVR BASIC Compiler (BASCOM)

 

БЭЙСИК  для  AVR  !!!

BASCOM-AVR©   is an Integrated Development Environment that includes a BASIC Compiler for the Atmel AVR microcontroller family, Editor, AVR Simulator and In-System Programming support for a range of 3rd party hardware. It is designed to run on W95/W98/NT/W2000 and XP.

 Bascom AVR IDE

 

 

Download a Demo version of the BASCOM AVR BASIC Compiler.(5.49MB)


Примеры для AVR на BASCOM



BASCOM-AVR Key Benefits

  • Structured BASIC with labels.
  • Structured programming with IF-THEN-ELSE-END IF, DO-LOOP, WHILE-WEND, SELECT- CASE.
  • Fast machine code instead of interpreted code.
  • Variables and labels can be as long as 32 characters.
  • Bit, Byte, Integer, Word, Long, Single and String variables.
  • Large set of Trig Floating point functions. Date & Time calculation functions.
  • Compiled programs work with all AVR microprocessors that have internal memory.
  • Statements are highly compatible with Microsoft’s VB/QB.
  • Special commands for LCD-displays , I2C chips and 1WIRE chips, PC keyboad, matrix keyboad, RC5 reception, software UART, SPI , graphical LCD, send IR RC5, RC6 or Sony code. TCP/IP with W3100A chip.
  • Local variables, user functions, library support.
  • Integrated terminal emulator with download option.
  • Integrated simulator for testing.
  • Integrated ISP programmer (application note AVR910.ASM).
  • Integrated support for STK200 and STK300 AVR starter kit programmers. Many other programmers supported via the Universal Interface.
  • Editor with statement highlighting.
  • Context sensitive help.
  • DEMO version compiles 2KB of code. Well suited for the AT90S2313.
  • Special tcp/ip library, AT mouse simulator, AT keyboard simulator available as add-ons.

The following statements are supported (actually there are many more look in the helpfile):

Decision and Structures

IF, THEN, ELSE, ELSEIF, END IF, DO, LOOP, WHILE, WEND, UNTIL, EXIT DO, EXIT WHILE, FOR, NEXT, TO, STEP, EXIT FOR, ON .. GOTO/GOSUB, SELECT, CASE.

Input and Output

PRINT, INPUT, INKEY, PRINT, INPUTHEX, LCD, UPPERLINE, LOWERLINE,DISPLAY ON/OFF, CURSOR ON/OFF/BLINK/NOBLINK, HOME, LOCATE, SHIFTLCD LEFT/RIGHT, SHIFTCURSOR LEFT/RIGHT, CLS, DEFLCDCHAR, WAITKEY, INPUTBIN, PRINTBIN, OPEN, CLOSE, DEBOUNCE, SHIFTIN, SHIFTOUT, GETATKBD, SPC, SERIN, SEROUT

Numeric Functions

AND, OR, XOR, INC, DEC, MOD, NOT, ABS, BCD, LOG, EXP, SQR, SIN,COS,TAN,ATN, ATN2, ASIN, ACOS, FIX, ROUND, MOD, SGN, POWER, RAD2DEG, DEG2RAD, LOG10, TANH, SINH, COSH.

 

I2C Interface

I2CSTART, I2CSTOP, I2CWBYTE, I2CRBYTE, I2CSEND and I2CRECEIVE.

1WIRE Interface

1WWRITE, 1WREAD, 1WRESET, 1WIRECOUNT, 1WSEARCHFIRST, 1WSEARCHNEXT.

SPI Interface

SPIINIT, SPIIN, SPIOUT, SPIMOVE.

 

Atmel AVR Interrupt Programming

ON INT0/INT1/TIMER0/TIMER1/SERIAL, RETURN, ENABLE, DISABLE, COUNTERx, CAPTUREx, INTERRUPTS, CONFIG, START, LOAD.

Bit Manipulation

SET, RESET, ROTATE, SHIFT, BITWAIT, TOGGLE.

Variables

DIM, BIT , BYTE , INTEGER , WORD, LONG, SINGLE, STRING , DEFBIT, DEFBYTE, DEFINT, DEFWORD.

Miscellaneous

REM, ' , SWAP, END, STOP, CONST, DELAY, WAIT, WAITMS, GOTO, GOSUB, POWERDOWN, IDLE, DECLARE, CALL, SUB, END SUB, MAKEDEC, MAKEBCD, INP,OUT, ALIAS, DIM , ERASE, DATA, READ, RESTORE, INCR, DECR, PEEK, POKE, CPEEK, FUNCTION, READMAGCARD, BIN2GREY, GREY2BIN, CRC8, CRC16, CHECKSUM.

Compiler Directives

$INCLUDE, $BAUD and $CRYSTAL, $SERIALINPUT, $SERIALOUTPUT, $RAMSIZE, $RAMSTART, $DEFAULT XRAM, $ASM-$END ASM, $LCD, $EXTERNAL, $LIB.

String manipulation

STRING, SPACE, LEFT, RIGHT, MID, VAL, HEXVAL, LEN, STR, HEX, LTRIM, RTRIM, TRIM, LCASE, UCASE, FORMAT, FUSING, INSTR.

..... and many other functions, statements and directives.

To built a program takes just a few steps :

  • Write the program in BASIC
  • Compile it to fast machine binary code
  • Test the result with the integrated simulator.
  • Program the Atmel AVR micro with one of the supported programmers. (Programming hardware must be purchased separately).

Integrated Editor

The program can be written in a comfortable MDI color coded editor. Besides the normal editing features, the editor supports Undo, Redo, Bookmarks and block indention.

Integrated Atmel AVR Simulator

The simulator lets you test your program before writing it to the AVR microcontroller. You can watch variables, step through the program one line at a time, run to a specific line, or alter variables. To watch a variable's value you simply point the mouse cursor over it.

A powerful feature is the built-in hardware simulator, to simulate an LCD display and the ports. The LCD simulator can also simulate custom build LCD characters.

Download a demo version of the BASCOM AVR BASIC Compiler.(5.49MB)

 

 

 

 



80x86
8051->
ARM->
Atmel AVR->
Freescale->
Fujitsu
Intel 8XC196
Maxim->
Microchip PIC->
National Semiconductor
Renesas->
Sensory
ST Microelectronics->
Texas Instruments->
Toshiba
Xemics
Zilog
Accessories->
Books->
EEPROM/EPROM
Embedded Ethernet
Embedded Software->
Generic Pin Converters
Peripheral Blocks
Pick & Place Tools
Programmable Logic (PLD)
ROM Emulators
Test & Measurement
Tutorial CD-ROMs
Universal Programmers->

 

Emulator Selection Guides
Intro to Embedded Tools
Embedded News Digest
Shipping & Returns
Warranty & Liability
Privacy Notice
Conditions of Use
Contact Us


 

 

Atmel AVR C-Compiler (Imagecraft) $199.00
Atmel AVR USB ISP Programmer with JTAG adapter $149.00
Atmel AVR Board: RS232, RS485, 4x MOSFET, 4x Opto In, A/D $184.00
AVR ATmega 10Mbps Ethernet & Web Server Starter Kit $156.00
AVR ATmega 10Mbps Ethernet Board $120.00
AVR ATmega 100Mbps Ethernet & Web Server Kit $195.00
AVR ATmega 100Mbps Ethernet Board $164.00
Atmel AVR JTAG In-Circuit Debugger & Programmer $47.00
Atmel AVR STK500 Compatible Programmer, parallel port $19.00
AVR I/O Board, 4x Relay, 4x Opto Inputs, RS232, ISP $31.00
Prototype Board for 40-pin AVR, with ICSP Connector $17.00
Prototype Board for 40-pin AVR, with USB, JTAG and ICSP $30.00
Atmel AVR Development Kit, STK200 board with AVR JTAG ICE $119.00
Atmel ATmega Development Kit, STK300 board with AVR JTAG ICE $129.00
Atmel AVR C-Compiler (Imagecraft) Upgrade $0.00
E-Blocks Atmel AVR Multiprogrammer, RS232 $123.00
Atmel AVR JTAG In-Circuit Debugger & Programmer, USB $54.00

 

 

 


Документация и Статьи
по микроконтроллерам PIC
на русском языке


USB - интерфейс USB в микроконтроллерах PicMicro
(206 Kb)  -  Универсальная последовательная шина USB в микроконтроллерах PIC16C745/765
(162 Kb)  -  Программное обеспечение для работы с шиной USB в микроконтроллерах PIC16C745/765

KeeLoq - технология "прыгающего" кода
(216 Kb)  -  Микросхемы KeeLoq с технологией "прыгающего кода"

ADC - работа с модулем АЦП
(161 Kb)  -  Рекомендации по работе с АЦП в микроконтроллерах PIC16C7X
(291 Kb)  -  Использование 8 – разрядного АЦП в микроконтроллерах PIC16C7X

I2C - последовательный интерфейс i2c
(192 Kb)  -  Программная реализация I2C интерфейса (режим ведущего)
(283 Kb)  -  Краткий обзор интерфейса I2C

SOFT - описание программного обеспечения
(921 Kb)  -  Руководство пользователя MPASM
(2,838 Kb)  -  Руководство пользователя MPLAB IDE

CAN - модуль CAN интерфейса в микроконтроллерах PicMicro
(741 Kb)  -  Модуль CAN в микроконтроллерах PIC18CXX8
(258 Kb)  -  Введение в CAN 2.0B интерфейс

AN - примеры применения микроконтроллеров PicMicro
(348 Kb)  -  Применение микроконтроллеров PICmicro для подключения к Интернет по протоколу PPP

Reference Manual - Справочник по среднему семейству микроконтроллеров PICmicro
(248 Kb)  -  Раздел 1. Общие сведения
(386 Kb)  -  Раздел 2. Тактовый генератор
(353 Kb)  -  Раздел 3. Сброс
(299 Kb)  -  Раздел 4. Архитектура
(200 Kb)  -  Раздел 5. ЦПУ и АЛУ
(332 Kb)  -  Раздел 6. Организация памяти
(154 Kb)  -  Раздел 7. EEPROM память данных
(265 Kb)  -  Раздел 8. Прерывания
(460 Kb)  -  Раздел 9. Порты ввода/вывода
(183 Kb)  -  Раздел 10. Ведомый параллельный порт
(303 Kb)  -  Раздел 11. Таймер TMR0
(233 Kb)  -  Раздел 12. Таймер TMR1
(147 Kb)  -  Раздел 13. Таймер TMR2
(297 Kb)  -  Раздел 14. Модуль CCP
(622 Kb)  -  Раздел 15. Модуль SSP
(437 Kb)  -  Раздел 16. Основной модуль SSP (BSSP)
(1,456 Kb)  -  Раздел 17. Модуль MSSP
(536 Kb)  -  Раздел 18. Модуль USART
(185 Kb)  -  Раздел 19. Источник опорного напряжения
(300 Kb)  -  Раздел 20. Модуль компараторов
(350 Kb)  -  Раздел 21. Модуль 8 - разрядного АЦП
(351 Kb)  -  Раздел 22. Основной модуль 8 - разрядного АЦП
(379 Kb)  -  Раздел 23. Модуль 10 - разрядного АЦП
(301 Kb)  -  Раздел 24. Модуль интегрирующего АЦП
(593 Kb)  -  Раздел 25. Модуль LCD
(228 Kb)  -  Раздел 26. Сторожевой таймер WDT и режим энергосбережения SLEEP
(169 Kb)  -  Раздел 27. Биты конфигурации
(258 Kb)  -  Раздел 28. Последовательный внутрисхемный интерфейс программирования (ICSP)
(318 Kb)  -  Раздел 29. Система команд
(604 Kb)  -  Раздел 30. Электрические характеристики
(849 Kb)  -  Раздел 31. Характеристики микроконтроллеров
(241 Kb)  -  Раздел 32. Поддержка разработчиков
(384 Kb)  -  Раздел 33. Приложения
(179 Kb)  -  Раздел 34. Глоссарий

PIC - полные переводы даташитов на некоторые серии микроконтроллеров
(1,634 Kb)  -  PIC12C5XX
(2,707 Kb)  -  PIC16F62X
(3,837 Kb)  -  PIC16F87X
(13,060 Kb)  -  Справочник по всем микроконтроллерам PIC16
(1,916 Kb)  -  PIC12F6XX
(3,030 Kb)  -  PIC18Fxx2

PIC17/PIC18 - Описание некоторых периферийных модулей микроконтроллеров PICmicro старшего семейства
(271 Kb)  -  Модуль 10 – разрядного АЦП в микроконтроллерах PIC17C7XX
(246 Kb)  -  Модуль 10 – разрядного АЦП в микроконтроллерах PIC18CXX2
(283 Kb)  -  Универсальный синхронно-асинхронный приемопередатчик USART в микроконтроллерах PIC17C4X
(334 Kb)  -  TMR0, TMR1, TMR2, TMR3, ШИМы и регистры захвата в микроконтроллерах PIC17C4X
(352 Kb)  -  Расширенный модуль ECCP (Захват/Сравнение/ШИМ) в микроконтроллерах PIC18FXX8

Migration - Рекомендации по переходу на новые микроконтроллеры
(126 Kb)  -  Переход с микроконтроллеров PIC16F62X на PIC16F627A/ PIC16F628A/ PIC16F648A

 

Презентации с семинаров Microchip Worldwide Masters.

Начинающим работать с PIC и инструментами MPLAB.

11002

Getting Started with PIC® MCU Mid-Range

Microchip Worldwide Masters 2007

11002

Презентация посвящена началу работы с контроллерами семейства PIC12/PIC16 midrange. Рассмотрена архитектура, система инструкций, распределение памяти, некоторые периферийные модули. В архиве так же лежат исходники лабораторной работы с решениями (ассемблер).



 

11004

Getting Started with the 16-bit Architecture, Instruction Set and Assembly Programming

Microchip Worldwide Masters 2007

11004

Начало работы с 16-битными контроллерами и DSC Microchip. Рассмотрена архитектура, система памяти, набор инструкций (в том числе методы адресации), система прерываний, методы доступа к программной памяти. В архиве так же находятся исходники лабораторных работ с решениями (ассемблер).



 

11016

Debugging Techniques and Using Stimulus within the MPLAB® Simulators

Microchip Worldwide Masters 2007

11016

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



 

11024

Introduction to Embedded Programming Using C

Microchip Worldwide Masters 2007

11024

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



 

1205

Getting Started with PIC18 Architecture, Instruction Set and Assembly Programming

Microchip Worldwide Masters 2008

1205

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



 

1206

Getting started with 16-bit devices : Standard Peripherals Configuration and C30 Programming Techniques

Microchip Worldwide Masters 2008

1206

Начало работы с 16-битными микроконтроллерами Microchip. Большое внимание уделено процессу запуска живого железа, конфигурации контроллера, отладочным средствам, среде разработки MPLAB и особенностям компилятора Microchip C30. Более половины презентации посвящено обзору и запуску стандартной периферии: UART, SPI, АЦП. В архиве дополнительно лабораторные работы с пошаговым руководством.



 

1213

Getting Started with Microchip Tools

Microchip Worldwide Masters 2008

1213

Презентация посвящена обзору средств разработки Microchip, в основном среде MPLAB IDE. На реальном примере рассказывается как создать проект, описывается редактор среды, симулятор, работа с отладчиками и программаторами. В состав архива входят исходники проекта на ассемблере.



 

1215

MPLAB® Simulator Fundamentals

Microchip Worldwide Masters 2008

1215

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



 

1222

Using the CCS C Compiler for Rapid Development of Microcontroller Applications

Microchip Worldwide Masters 2008

1222

Обзор компилятора CCS и среды разработки CCS IDE. Рассмотрены расширения и ограничения компилятора от ANSI С, встроенный функции и библиотеки, отладочные средства, входящие в состав среды. В архиве - исходники лабораторных работ.



 

1226 / 1227

Introduction to Firmware Design (part 1)
Introduction to Firmware Design (part 2)

Microchip Worldwide Masters 2008

1226 1227

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

 

 

 

ключевые слова: программирование микроконтроллеров, как написать программу для микроконтроллера, обучение программированию микроконтроллеров, микроконтроллеры atmega128, как запрограммировать микроконтроллер, как прошить микроконтроллер, отладка программы для AVR, моделирование работы электронных схем, электронные проекты, хобби, язык си для микроконтроллеров, язык программирования си
AT76C712 , AT76C713 , AT90CAN128 , AT90CAN128 Automotive , AT90CAN32 , AT90CAN64 , AT90PWM2 , AT90PWM3 , AT90S1200 , AT90S2313 , AT90S2323 , AT90S2343 , AT90S4433 , AT90S8515 , AT90S8535 , ATmega128 , ATmega1280 , ATmega1281 , ATmega16 , ATmega161 , ATmega162 , ATmega163 , ATmega164 , ATmega165 , ATmega168 , ATmega168 Automotive , ATmega169 , ATmega2560 , ATmega2561 , ATmega32 , ATmega323 , ATmega324 , ATmega325 , ATmega3250 , ATmega329 , ATmega3290 , ATmega406 , ATmega48 , ATmega48 Automotive , ATmega64 , ATmega640 , ATmega644 , ATmega645 , ATmega6450 , ATmega649 , ATmega6490 , ATmega8 , ATmega8515 , ATmega8535 , ATmega88 , ATmega88 Automotive , ATtiny11 , ATtiny12 , ATtiny13 , ATtiny15L , ATtiny2313 , ATtiny25 , ATtiny26 , ATtiny28L , ATtiny45 , ATtiny85

 

СХЕМОТЕХНИКА на МИКРОКОНТРОЛЛЕРАХ  PIC

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

КРАТКОЕ СОДЕРЖАНИЕ

    Клавиатура  
Сопряжение матрицы клавиатуры с микроконтроллером. Несколько вариантов.
   Светодиоды
Подключение светодиодов с использованием минимального количества портов микроконтроллера.
   Интерфейсы
Сопряжение устройств или частей устройства с помощью последовательных интерфейсов.
   Управление нагрузкой 220В 
Управление нагрузкой 220В переменного напряжения с использованием симисторов.
 

  КЛАВИАТУРА.

Общий случай. Можно использовать стандартную матрицу кнопок. Их количество определяется числом строк и столбцов линий сканирования.

Для этой схемы выводы Тn программируется как выходы, а Kn как входы. При сканировании на одну из линий Т поочередно подается лог "0" и проверяется состояние линий К. Если одна из линий К имеет уровень лог "0", то соответствующая кнопка считается замкнутой. Диоды VDn защищают сканирующие выходы от пробоя при нажатых нескольких кнопках, резисторы Rn подтягивают  входы. Иногда, для предотвращения ложных срабатываний, имеется смысл устанавливать конденсаторы Cn. Если имеется возможность подключить ко входам портов внутренние подтягивающие резисторы, то внешние резисторы (R1, R2) можно исключить.

При использовании "резиновой" клавиатуры с микроконтроллером, на диодах, защищающих сканирующие выходы, падает 0,7 вольт. Нажатая клавиша тоже имеет некоторое сопротивление. В результате, иногда, на входах не хватает напряжения для "распознавания" лог "0". В таком случае вместо диодов можно поставить резисторы 150 - 200 Ом.

Вариант 1. Вот еще пример подключения клавиатуры с использованием меньшего числа портов микроконтроллера. Для стандартного включения матрицы 4*3 понадобится 7 портов, а в этом примере, за счет более сложной программной обработки понадобится всего 4. При опросе поочередно на одной из четырех линий устанавливают лог "0", а другие программируют как входы. При этом, они обязательно должны быть подтянуты к высокому уровню. В этом примере подтяжка осуществляется внутренними резисторами. По состоянию входов вычисляется нажатая кнопка.  

В схеме используются стандартные диоды (например импортные 1N4148). Автор программы предупреждает, что возможно наличие ошибок, но при трансляции в MPLAB все проходит гладко. Код был написан для микроконтроллера 16F84, но при желании может быть легко перенесен на другой тип. 

Загрузить код программы обработки клавиатуры под 16F84. Размер примерно 5 Кбайт.
 


СВЕТОДИОДЫ.

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

Портов 2 3 4 5 6 7 8
Св.диодов 2 6 12 20 30 42 56

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

Сопротивления в цепях порядка 200-300 Ом. 

 

УПРАВЛЕНИЕ НАГРУЗКОЙ 220В

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

Пример схемной реализации представлен на рисунке ниже. На выводе ZERO микроконтроллера присутствует лог "1", когда в сети 220В положительная полуволна и лог "0", когда отрицательная. На резисторе R1 падает лишнее напряжение, а внутренние диоды микроконтроллера защищают кристалл от пробоя высоким напряжением. Для передачи в нагрузку максимальной мощности нужно выдавать импульс управления (вывод SIM) сразу после того, как на выводе ZERO изменится уровень сигнала. Для уменьшения мощности в нагрузке управляющий импульс надо задерживать на необходимое время, но не более 10 мсек (одна полуволна), иначе начнется следующая полуволна.

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

В принципе, из схемы можно исключить транзистор. Но для обеспечения необходимого тока открывания симистора (около 100 мА для данного типа) необходимо объединить несколько портов микроконтроллера, так как один порт обеспечивает только 20 мА. Выводы микроконтроллера, в этом случае, нужно будет подключить непосредственно к положительному выводу конденсатора С1. Также, нужно изменить полярность управляющих импульсов на противоположную.

 

СОВЕТЫ  ПО ПРОГРАММИРОВАНИЮ
И СХЕМОТЕХНИКЕ микроконтроллеров PIC


PIC FAQ
 

    В чем отличие новых версий кристаллов PICmicro (с буквами A, B, C) от аналогичных с другой буквой или вообще без буквы?

    Можно ли «прошивать» новые версии PICmicro (A, B, C) программатором, поддерживающим только ранние версии кристаллов?

    Чем отличаются микроконтроллеры «С» от «LC» («F» от «LF»)?

    Можно ли стереть «бит защиты»?

    Каково количество циклов перезаписи для JW/FLASH-кристаллов?

    Какие программаторы следует использовать для программирования микроконтроллеров Microchip?

    Каким образом можно быстро написать и отладить программу для PICmicro?

    Я слышал, что Microchip предоставляет разработчиком образцы своих изделий. Как их можно заказать?

    Как эмулировать внешние сигналы при отладке программ в MPLAB?

    Как определить один бит для обращения и модификации  в тексте исходного файла?

    Как можно питать устройство на PICах от сети ~220 вольт без понижающего трансформатора?

    Почему происходят сбои информации в EEPROM и как от них избавиться?

    Как получить напряжение отрицательной полярности?

     Как сделать сенсорную кнопку в устройстве на PICе?

     Как сделать простой цифро-аналоговый преобразователь (ЦАП, DAC)?

     Как упростить работу с отладочным кристаллом и продлить срок службы?

     Можно ли согласовать разные логические уровни?

     Как использовать калибровочную константу?

     


    Отличие новых версий

В связи с переходом на субмикронные технологии уменьшаются размеры кристаллов, повышается процент выхода годных, эффективность производства и, следовательно, снижается цена продукции. Новые версии PICmicro будут постепенно вытеснять предшествующие ценой при сохранении полной pin-to-pin и программной совместимости. Общие рекомендации таковы: для кристаллов, выполненных по субмикронной технологии, уменьшились емкости аналоговых входов. Поэтому, возможно, потребуется соответственно увеличить емкость блокировочных конденсаторов при кварцевом резонаторе с 20 до 50 пФ. Для новых кристаллов, имеющих в своем составе АЦП, желательна минимизация времени преобразования и установка конденсатора 100 пФ и более на каждый аналоговый вход. И последнее: необходимо помнить, что во всех последних версиях кристаллов максимальное рабочее напряжение составляет 5,5 В вместо 6 В. Подробное описание отличий кристаллов при переходе с одной модификации на другую можно найти на сайте www.microchip.com или на компакт-диске в разделе Literature>Migration documents. Этот раздел постоянно обновляется.


    Можно ли «прошивать» новые версии PICmicro (A, B, C) программатором, поддерживающим только ранние версии кристаллов?

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


    Чем отличаются микроконтроллеры «С» от «LC» («F» от «LF»)?

Напряжениями питания и максимальными тактовыми частотами. Кристаллы с индексом «С» рассчитаны на напряжение 4,5…5,5 В, «LC» — 2,.5…5,5 В. Для FLASH-кристаллов: «F» — 4,5…5,5 В, «LF» — 2,0…5,5 В. Эти значения могут отличаться от приведенных здесь, поэтому всегда необходимо сверяться с документацией для каждого конкретного случая, исходя из необходимой тактовой частоты.


    Можно ли стереть «бит защиты»?

Нет. Поэтому установка бита защиты в отладочном кристалле JW лишает его возможности быть перепрограммированным и превращает в однократный. Это не относится к FLASH-кристаллам (буква «F» в названии микросхемы). У них можно стереть бит защиты, но при этом автоматически стирается вся программная память.


    Каково количество циклов перезаписи для JW/FLASH-кристаллов?

Обычно JW-кристалл (стираемый ультрафиолетом) выдерживает более 100 циклов стирания/записи. Причиной раннего выхода из строя часто является перегрев кристалла при стирании, завышенное (или имеющее «всплески») напряжение программирования или другие неисправности программатора. К концу срока службы время стирания увеличивается с 20…30 минут до 40 минут и более, но снижается минимальное рабочее напряжение. Испортить микросхему сколь угодно долгой экспозицией под ультрафиолетом невозможно. Электрически стираемые FLASH-кристаллы выдерживают не менее 1000 циклов перезаписи программной памяти и не менее 1 000 000 циклов для EEPROM данных при неограниченных количествах чтений. Для FLASH-кристаллов серии PIC16F73/74/76/77 количество перезаписей программной памяти — около 100.


    Какие программаторы следует использовать для программирования микроконтроллеров Microchip?

В первую очередь, это программаторы от Microchip для разработчиков — PICSTART Plus (около 200 $) и для производства — PROMATE II (около 750 $). Оба они поддерживают все микроконтроллеры Microchip, причем PROMATE II также может программировать микросхемы памяти и кодеры/декодеры KeeLoq. Для них регулярно обновляется программное обеспечение для поддержки появляющихся новых микросхем. Кроме того, существует огромное количество программаторов отечественного и зарубежного производства, работающих с микроконтроллерами PICmicro. Предостережение: все новые микроконтроллеры очень требовательны к режимам программирования, поэтому использование дешевых программаторов неизвестных фирм может значительно снизить ресурс микросхем и даже привести к выходу их из строя. Для увеличения срока службы микросхем в готовых изделиях рекомендуется использовать программаторы, соответствующие классификации Microchip, как промышленные и обеспечивающие возможность подстройки (изменения) напряжений питания и записи.


    Каким образом можно быстро написать и отладить программу для PICmicro?

Фирма Microchip предлагает бесплатную программную среду для написания и отладки программ — MPLAB-IDE. В комплект входит программа-оболочка, текстовый редактор, ассемблер-компилятор и программный отладчик. Так же поддерживается подключение компиляторов Си производства Microchip и других фирм, поддерживаются программаторы PICSTART Plus и PROMATE II, отладчик MPLABICD и внутрисхемные эмуляторы. Эту программу можно найти на сайте www.microchip.com или на компакт-диске. Также существуют альтернативные компиляторы отечественных и зарубежных фирм. Для микроконтроллеров большого объема удобно писать программы на языке Си. Демо-версии доступны бесплатно на сайте www.microchip.com или компакт-диске. Большую часть (3/4) работы по отладке удается выполнить в программном симуляторе пакета MPLAB. Особое внимание следует уделить правильности слова конфигурации, инициализации регистров и оценке времени выполнения программы на критических участках. Несколько рекомендаций для аппаратной отладки:  Обратите внимание на качество и температурный диапазон кварцевого резонатора, скорости нарастания напряжения питания и сброса. На начальных стадиях отладки рекомендуется применение супервизора питания. Wathdog-таймер лучше включать в конце отладки. Для ускорения отладки рекомендуем вместо JW-кристаллов использовать FLASH-кристаллы. Так же рекомендуем ознакомится с документом TB033 на сайте или компакт-диске в разделе Application Notes, в котором подробно описано о приемах написания и отладки программ для семейства PIC16CXXX при помощи кристалла PIC16F877. Для отладки семейства PIC17CXXX рекомендуется использовать внешнюю FLASH- программную память. Программа в ней может быть легко обновлена любым программатором либо перезагружена через RS232 самим микроконтроллером. Готовые программные и схемные решения можно найти в разделе Application Notes на www.microchip.com или на компакт-диске. Если вы решили использовать JW-кристалл с УФ-стиранием, приобретать следует модель с максимальным объемом программной памяти. Нет необходимости каждый раз стирать кристалл, поскольку реальная программа обычно многократно помещается в его объеме. Дописывайте новые версии программы в старшие адреса, до заполнения ПЗУ. Команды перехода к новой версии записываются друг за другом, начиная с адреса сброса. Предыдущие команды замещаются командой NOP. Таким образом, вы сможете ускорить работу, стирая JW лишь изредка. Очень удобно проводить внутрисхемную отладку с помощью 28/40-pin кристаллов семейства PIC16F87X и недорогого внутрисхемного отладчика-эмулятора MPLAB-ICD (около 175 $).


    Я слышал, что Microchip предоставляет разработчиком бесплатные образцы FREE SAMPLE своих изделий. Как их можно заказать?

Для того чтобы получить образцы, Вы должны сделать заказ, в котором ОБЯЗАТЕЛЬНО следует указать:

1. Название фирмы, адрес, телефон, E-mail, ФИО контактного лица.

2. Название проекта и краткое его описание (в нескольких предложениях).

3. Какой кристалл необходим, его точная маркировка с учетом типа корпуса, рабочих частот и напряжений.

4. Потенциальное количество в год (месяц).

5. Планируемые сроки начала производства.

6. Планируемые сроки начала разработки и дата, к которой нужны образцы.


   Как эмулировать внешние сигналы при отладке программ в MPLAB ?  ( В СОВРЕМЕННОМ MPLAB ЕСТЬ БОЛЕЕ ПРОДВИНУТЫЕ СРЕДСТВА ! )

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

В первом случае выберите меню Debug, а в нем пункт Simulator stimuls и Asynchronius stimuls. Появится окно с 12-тью кнопками для изменения состояния. Выберите любую кнопку и щелкните по ней правой кнопкой мыши, выберите Assign pin., чтобы назначить нужный вам разряд нужного порта двойным щелчком левой кнопки в открывшемся меню. Затем опять щелкните правой кнопкой, чтобы выбрать действие: Pulse - изменить состояние на противоположное и опять вернуть в прежнее,  Low - установить в низкое состояние, High - установить в высокое состояние, Toggle - изменить на противоположное. Нажав в нужное время соответствующую кнопку, вы измените состояние выбранного разряда порта.

Так выглядит окно  для изменения состояния разрядов портов. В частности левая верхняя кнопка запрограммирована для изменения 0 разряда порта RB в низкое состояние.

 

Во втором случае можно задать периодический сигнал. Откройте пункт меню Debug, а в нем пункт Simulator stimuls и Clock stimuls. В открывшемся окне выберите разряд порта и задайте длительности высокого и низкого  состояний в циклах микроконтроллера (один цикл - 4 тактовых импульса Fosc). Затем нажмите кнопку ADD. Выберите появившуюся строку с параметрами и нажмите APPLY. MPLAB поменяет значение в заданное время не зависимо от того в каком режиме вы отлаживаете: в пошаговом или непрерывном.

И еще, можно заранее описать форму входного сигнала в специальном файле и подключить его, выбрав в меню Debug>Simulator Stimuls>Pin Stimuls>Enable... Откроется окно для вызова Вашего файла с расширением .sti.
Создать текстовый файл можно таким образом: выбрать в меню File>New и, в появившемся окне файла, описать входные сигналы. После создания файла сохраните его в папке Вашего проекта, задав ему имя, что-то типа  <my prog>.sti. Вот пример файла описывающего некоторые входные сигналы для двух входов RB0 и RB1:

CYCLE  RB1 RB0
20     0   0
41     1   0    ; установить в лог. "1" бит 1 порта PORTB
52     0   1    ; сбросить бит 1 порта PORTB и установить в лог. "1" бит 0 
55     1   1
60     0   0
65     1   0 
76     0   1    ; и так далее....

Первая строка файла должна обязательно начинаться со слова CYCLE или STEP. Подробнее об этом можно прочитать, вызвав Help MPLAB.


   Как определить один бит для обращения и модификации в тексте исходного файла?

При написании исходного текста программы на ассемблере в командах, оперирующих отдельными битами (bcf, bsf, btfsc, btfss и др.) приходится указывать не только имя регистра или переменной, но и, через запятую, номер бита, например: btfsc PORTA, 3 или btfsc PORTA,Snd (определив заранее как: Snd equ 3).

Однако, написание таких команд можно упростить, воспользовавшись директивой ассемблера замены текстовой последовательности #DEFINE. Вот пример ее использования:

; определение переменных, констант, регистров
PortSnd    equ 0x05        ; определим порт вывода звука
 #define Snd PortSnd, 3    ; определим Snd как третий бит PortSnd

; непосредственно текст программы
        bsf Snd            ; установим 3-й бит PortSnd в лог. "1"
        movlw 0xF0         ; одна из многих команд
        bcf Snd            ; а теперь сбросим 3-й бит PortSnd

Синтаксис этой директивы: #define <name> [<string>]
Везде, где в тексте программы встретится надпись <name>, она будет заменена на <string>. Применение этой директивы без <string>,  определит <name> для внутреннего использования при проверке директивой #IFDEF. Надо заметить, что просмотр в окне Watch Window, определенной таким образом переменной невозможен. В окне придется указывать имя регистра и номер бита.
И последнее, директива #DEFINE может начинаться с любой позиции в строке, кроме первой. Все, что начинается с первой позиции воспринимается при компилировании как метка. Если это команда, то выдается предупреждающее сообщение: найдена команда в первой позиции строки.


   Как можно питать устройство на PICах от сети ~220 вольт без понижающего трансформатора?

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

Резистор R2 должен быть рассчитан на рассеиваемую мощность не менее 0,5 Вт, R3 может быть любой. Конденсатор C1 обязательно должен быть рассчитан на напряжение не менее 250 В. Выходное напряжение определяется стабилитроном VS1. Диод VD1 средней мощности можно заменить, например, на 1N4007 (распространенный импортный аналог).

 
ВНИМАНИЕ: приведенная схема имеет гальваническую связь с сетью ~220 В, поэтому при наладке и установке устройства соблюдайте правила электробезопасности.

 


   Почему происходят сбои информации в EEPROM и как от них избавиться?

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

Если выключение питания происходит в моменты обращения к EEPROM, как внутренней (в микросхемах 16F84), так и внешней (типа 24CXX и т. п.) с шиной управления I2C,  то тоже существует вероятность нарушения хранимой информации.  Сбои могут происходить при проникновении импульсных помех через питающие цепи в процессе работы. Могу предложить несколько способов увеличения надежности сохранности данных: программный и схемотехнические.

 

Реклама недорогих радиодеталей почтой:

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

- При схемотехническом способе решения проблемы можно добавить несколько элементов, как показано синим цветом на рисунке ниже, для контроля момента выключения или аварии напряжения питания для того, чтобы не производить чтение или запись в EEPROM. В принципе схемотехническое решение может быть любым, выполненным как по приведенной схеме, так и с использованием специализированных микросхем мониторов напряжения или другим способом.   
Элементы нужно подобрать таким образом, чтобы при уменьшении питающего напряжения ниже порогового уровня на выводе PORTn микроконтроллера появлялся лог "0". А в подпрограммах обращения к EEPROM прежде чем начать цикл записи или чтения опрашивать этот вывод.

Еще одно возможное решение этой проблемы, предложенное Ждановым Михаилом из Великого Новгорода, практически полностью исключает сбои. Это решение основано на дешевой микросхеме LP2951. Сигнал сброса поступает на PIC когда напряжение питания достигнет 5,7 вольта, а также и при выключении (задаётся диодом). Конденсатор на VCC PICа поддерживает питание некоторое время, срезая переходные процессы.

Для надежного сброса микроконтроллера можно использовать схему на м/с DS1233 фирмы Dallas, приведенную ниже. Она надежно отслеживает питание, и запускает микроконтроллер PIC через 0,1 сек после установки номинального. Чтобы помехи по питанию не вызывали ложные сбросы  м/с DS1233 включается через цепочку R1C1C2.

Для уменьшения влияния внешних воздействий желательно неиспользуемые выводы микроконтроллера программировать как входы и подключать к шине питания или земли (это уменьшает и энергопотребление за счет отсутствия случайных переключений входных ключей портов). Еще можно оставить неиспользуемые выводы свободными, но при этом запрограммировать их как выходы. А при разводке печатной платы желательно разместить фильтрующий керамический конденсатор, емкостью 0,01-0,1 мкф, между выводами питания микроконтроллера. Обычно эти выводы расположены напротив друг друга. Цепи генератора тактовых импульсов (кварцевый резонатор, RC цепочка) и цепи сброса микроконтроллера лучше делать как можно короче. Вокруг печатной платы по периметру желательно провести шину земли. При такой конфигурации ни включение/выключение рядом силовых приборов, ни подключение осциллографа не вызовет ложных срабатываний или пересбросов процессора.
При разводке печатной платы следует учитывать некоторые моменты. Во-первых, входные сигналы следует вести "к" микроконтроллеру, а не "сквозь" него. Не доводя сигнал до ножки желательно поставить небольшой керамический фильтрующий конденсатор, чтобы короткая импульсная помеха уходила в землю. Затем, для ограничения тока можно поставить сопротивление. Во-вторых, не плохо обвести "землю" вокруг микроконтроллера.


    Как получить напряжение отрицательной полярности?

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

Вот еще одна схема получения напряжения отрицательной полярности, предложенная Георгием. Она проще, в ней отсутствует индуктивность. Выходное напряжение составляет примерно -3,5 Вольт при использовании кремниевых диодов. Данную схему можно применять там, где не требуется стабилизированное напряжение, например, для питания некоторых операционных усилителей или компараторов, или для подачи напряжения регулирования контрастности ЖКИ модулей. Иногда это требуется в моделях ЖКИ, рассчитанных на работу при отрицательных температурах. 

К содержанию


   Как сделать сенсорную кнопку в устройстве на PICе?

Можно заменить в устройствах на PIC микроконтроллерах механическую кнопку на емкостную сенсорную. Схема подключения на рисунки ниже:

ВАРИАНТ 1: сенсорная площадка - любая металлическая пластина небольших размеров (1-2 кв. см.). Идея заключается в том, что при прикосновении к датчику увеличивается суммарная емкость и изменяется время заряда конденсатора C1. Это видно из представленных диаграмм:

 

При программировании можно поступить таким образом: при включении устройства запрограммировать верхний по схеме вывод как выход и установить его в лог. "0", а нижний как вход. Через небольшую задержку установить на выводе, запрограммированном как выход лог. "1" и запустить таймер. Когда лог. "1" появится на нижнем выводе, запомнить показание таймера. Это будет константа для свободного сенсора. При опросе в процессе работы программы поступать таким же образом и сравнивать полученное значение с запомненным. Если полученное значение превышает константу, то считать, что есть прикосновение к датчику. Разница задержек установления лог. "1" на входе между свободным сенсором и нажатым составляет примерно 1-2 мкс.

ВАРИАНТ 2: схема работает аналогичным образом, только вместо двух портов используется один, который переключается с вывода на ввод. С состоянии ожидания вывод порта запрограммирован как выход и установлен в лог. "0". Конденсатор С2 разряжен. Конденсатор С1 служит для развязки потенциала тела человека и потенциала вывода микроконтроллера. При опросе вывод PICа переключается на ввод и измеряется время появления лог. "1" на этом выводе. Временная диаграмма соответствует той, что описывает в верхней схеме (вариант 1) вывод вход. После этого сравнивается измеренная величина и константа, запомненная и измеренная при инициализации (включении устройства) как в первом случае. Успеха!


   Как сделать простой цифро-аналоговый преобразователь (ЦАП, DAC)?  Быстрый резисторный ЦАП

 

Если большая точность ЦАП не требуется, то можно обойтись более дешевым способом, без использования специализированных дополнительных микросхем микросхем. Приведем способ 8-ми битного ЦАП с использованием матрицы резисторов R-2R. К недостаткам можно отнести то, что для реализации требуется 8 выводов МК. Ошибка составляет 1 младший разряд. Желательно на выходе поставить буфер-повторитель на ОУ


   Есть PIC(+5В) и есть 561ИД1(Дешифратор +12В). Как согласовать логические уровни?
Не сгорит ли PIC если попытаться подтянуть выходные линии PIC до 12В через резисторы?

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

В некоторых контроллерах есть порт (например в 16F84 это RA4), выполненный по схеме "открытый сток". Его можно подтянуть до 12В, но такой порт только один.


  Нужно запрограммировать контроллер 12С508 некой программой и при этом использовать внутренний генератор. Загвоздка в константе калибровки. Порывшись в интернете и найдя там примеры программ окончательно запутался. В одном месте сказано, что это выполняется командой MOVWF OSCCAL, а в описании 12СХХХ вообще сказано MOVLW XX где ХХ - значение калибровки. Помогите пожалуйста прояснить ситуацию.

Советую использовать флэш версию pic12F508 - она многократно программируемая !

При использовании внутреннего RC генератора необходимо использовать калибровочную константу для получения более точного значения частоты. Поэтому константа для каждого кристалла разная и записана на заводе в последней ячейке памяти: для 12C508 в ячейке 0x1FF, для 12C509 в 0x3FF. Но записана там не сама константа, а команда, заносящая эту константу во временный регистр WREG - MOVLW XX (где ХХ - калибровочная константа). При конфигурации с внутренним RC генератором выполнение программы начинается не с 0-го адреса, а с последнего, тоесть с этой самой команды, а только потом переходит на 0-ой. И вот, чтобы занести эту константу в нужный регистр OSCCAL, сама программа должна начинаться (по адресу 000) с команды MOVWF OSCCAL, которая переносит содержимое регистра WREG (калибровочную константу) в регистр OSCCAL. Конечно не принципиально, чтобы первой командой была именно MOVWF OSCCAL, это может быть и команда перехода, но только не команда, модифицирующая регистр WREG. Но такая команда обязательно должна быть.

При программировании однократных кристаллов в последнюю ячейку не должно ничего записываться, чтобы не нарушить команду и константу. При использовании отладочных кристаллов (с ультрафиолетовым стиранием) обязательно надо прочитать содержимое памяти и записать где-нибудь (лучше на самом корпусе) калибровочную константу. Потому, что при стирании сотрется и сама константа тоже. И в программе для отладочного кристалла должна быть записана команда MOVLW XX в последней ячейке. Например, так:
    ORG 0x1FF   ; это для 508, для 509 будет 0x3FF
    MOVLW XX    ; где ХХ - и есть прочитанная константа

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

 

 

PIC Simulator IDE - среда разработки ПО и симуляции работы МК PIC от OshonSoft 

По моему маленькое чудо, шедевр!  Почти как VMLAB + имеет встроенный Basic компилятор! PIC Basic Compiler   Программировать можно на Бэйсике, на ассемблере или брать готовый .hex файл прошивки для симуляции или дизассемблирования. Оригинальное графическое решение среды симуляции популярных компонентов - четыре 7-ми сегментных индикатора, светодиоды, ЖКИ 16х2, ПК терминал, UART и много другое.  Генератор сигналов и 4-х канальный логический анализатор. 

Вот зацените скриншот

Есть версии IDE для  AVR, Zilog и 8085. 

 

 

 

FAQ PIC - два сборника ответов на частые вопросы по PIC12 PIC16 PIC18 

Вот один и вот второй    читайте, используйте !

 

 

 

 

PIC Projects based on flash pic microcontrollers.

Проекты на микроконтроллерах PIC

These pic projects use Flash based microcontrollers
so you can re-program them in circuit using
ICSP.

 
"The best free projects - full schematics and descriptions"
 


Only one word for this snake robot - Wow!


You can re-program most PIC Flash microcontrollers up to 100,000 times!

 
So if you re-programmed a part 10 times a day it would take you 27 years before it wore out!
Note: Some older devices only re-program 1000 times e.g. 16F84.

 
So don't worry about re-programming you can re-program them as much as you want to.

Projects on this site mainly

use the following devices:

 PIC12F675 (8pin).
 PIC16F88 (18 pin).
 PIC16F877A (40/28pin).

 
You can use an ICSP programmer in circuit to test your projects out.
And once set up you don't need to remove the programmer during testing.

So it's easy to change the code and you don't need to fiddle about transferring microcontrollers from sockets to project board.

Note: You have to design the circuit to operate with the ICSP port but its not difficult.

Individual pic projects jump table

Note: All of these projects can be retargetted to another device - all you need to do is ensure there is enough memory (compile and check used memory). Also look at the requirements on the project page to make sure that the device has the required hardware module (if any is specified) and enough pins.

 

  ICSP PIC Parallel Port Programmer.   16F877A : Frequency Counter (LCD).
  16F88 : Ultrasonic Range Finder.   16F877A : Frequency counter (7Seg).
  16F877A : LCD and keypad (one port!).   16F877A : LCD Volt meter (simple).
  16F877A : RGB LED Driver.   16F88 : LED DOT Matrix Display.
  16F877A : Serial LCD.   16F88 : Universal Infrared Receiver.
  16F88 : Binary clock.   16F88 : Real Time Clock (RTC) DS1307.
  12F675 : Tutorial.   12F675 : LM35DZ Temperature sensing.
  12F675 : Servo motor driver.   12F675 : RS232 Transmission.
  12F675 : Servo controller (Soft USART)   12F675 : LM35DZ Temperature log EEPROM.

 

All you need to program the microcontroller in each of the following projects is a pic programmer that has an ICSP connector. You can find a programmer project below.

Note that most of the pic projects are retargetable to different devices - some are not as they use a lot of pins to drive displays. But in general you can change to a different device. You could also run using a different display e.g. for the frequency counters you could use an RS232 output which would let it operate from a 12F675 (8 pin device).


Projects

PIC Parallel Port Programmer
 

A Parallel port pic programmer based on AN589 with an ICSP connector that you can use to program virtually any PIC micro since they all use the same ICSP connections.  This project does not use a PIC micro - it needs a 74HC244 and some standard transistors.

Note: This programmer is a modified AN589 and lets you use it at the end of a 6ft parallel cable.  The mod for this is simply a standard resistor and capacitor which makes a transmission line terminator.  When I first built it I had not used the terminator and got random results - very frustrating - the mod is simple and useful - there are also other useful and simple mods in the project.

50MHz LCD frequency counter

A frequency counter using PIC TIMER 1 and a standard HD44780 LCD.

 

Target 16F877A
Retargetable Yes: Needs Timer 1.
 

50MHz 7 segment frequency counter

A frequency counter using PIC TIMER 1 and a real display that you can see!. It uses 8 seven segment displays e.g. 50,000,000 is fully displayed.

 

Target 16F877A
Retargetable Yes: Needs Timer 1.
 

0-5V LCD volt meter.

This is a simple project showing how to use the analogue inputs of the PIC with full register usage code.

 

Target 16F877A
Retargetable Yes: Needs Analogue module.
 

 

Ultrasonic range finding project.

This project uses the CCP module to measure the ultrasonic echo time for calculating the object's distance. It also uses standard transistor components for transmission and reception. Range is 5cm to 3m.

 

Target 16F88
Retargetable Yes: needs CCP module.
 

A Real Time Clock (DS1307) using I2C.



This project uses a 16F88 as the master I2C controller and for this chip the I2C control has to be written in software. Unlike the 16F877A the 16F88 only has a full implementation of the slave mode. The software I2C routines can be used with any PIC micro. This project results in the standard 4 digit seven segment display desk clock.

 

Target 16F88
Retargetable Yes: Any PIC Micros.
 


LCD and Keypad using one 8 bit port (no glue logic)

Direct jump to locked page (needs unlock code)

 
This project saves you port pins by combining an LCD and Keypad onto one 8 bit port. The LCD is fully readable and writable and the key pad has 12 fully readable keys.

 

PIC Projects Target 16F877A
Retargetable Yes: Any PIC Micros. (Any micro that can set pin directions).
 

To unlock this page please visit my E-Zine subscription page here. Note that the project and E-Zine are free.
 

Driving an RGB LED.

Project uses interrupts to generate a software PWM and uses Timer 0 as a heartbeat timer.

 

IC Projects Target 16F877A
Retargetable Yes: Any PIC Micros with at least 3 pins!
 

Driving an LED dot matrix.

This project shows how to drive an 8x8 dot matrix led display. Note that you can drive a 5x7 display with the same circuity - just needs the character set adjusted.

 

PIC Projects Target 16F88
Retargetable Yes: Any PIC Micros.
 

Serial LCD module

This project creates a serial port driven LCD display module.  All commands are in ASCII so you can test out the project by driving it directly from a PC serial port.  The project relies on the built in USART but you could create a software UART (receiver part) and drive it in the same way. 

There are no 'odd' commands e.g. to clear the display you would type #C or #c and to write text to the display you just type text!  Setting an x or y position is also easy e.g. #X10  sets the cursor to x position 10.

 

PIC Projects Target 16F877A
Retargetable Yes: Any PIC Micros with a built in USART.
 

Universal Infrared Receiver (UIR)

With this project you can use a PIC micro to read any infrared remote control, TV, DVD,Video, satellite etc.  With it you can control your PC e.g. start programs, move the mouse, turn the Windows volume up and down etc.

 

PIC Projects Target 16F88
Retargetable Yes: Any PIC Micros with a built in USART.
 

12F675 : Tutorial

The start of a tutorial on the 12F675.

 

PIC Projects Target 12F675
 

12F675 : RS232 Serial transmitter

Software implementation of RS232 transmit for 12F675.

 

PIC Projects Target 12F675
Retargetable Yes: Any PIC Microcontroller
 

12F675 : Serial Temperature Logger

Temperature logging to serial port using 12F675.
 

 

PIC Projects Target 12F675
Retargetable Yes: Any PIC with analogue input port.
 

12F675 : EEPROM Temperature logger

Similar to the above project but stores data in the internal EEPROM that can be read out later via the serial port.

 

PIC Projects Target 12F675
Retargetable Yes: Any PIC with analogue input port
 

12F675 : Servo motor driver

This project uses Timer 0 to generate the timing interval ~20ms.  Each Timer 0 interrupt calls a pulse generation function that sets the position of the servo (1ms-2ms).

 

PIC Projects Target 12F675
Retargetable Yes: Any PIC Micro
 

12F675 : Servo motor - serial control

This project uses Timer 0 to generate the timing interval ~20ms as above but is now controlled from a Soft Serial USART.

 

PIC Projects Target 12F675
Retargetable Yes: Any PIC Micro
 

Binary Clock

This project uses a 16F88 and an LED matrix to display a binary clock with 6 digits of 4 binary bits each  

It also teaches reading binary 0-9.  

It uses a Timer 0 interrupt to generate timing pulses for the clock so you can use it with virtually any other PIC device.
 
PIC Projects Target 16F88
Retargetable Yes: Any PIC Micro with enough pins.

 

 

Программировать PIC (т.е. прошивать, заливать в МК то, что вы наваяете) можно вот этим (я его использую и для i2c приборов): JDM PIC Programmer - там схема, рисунок платы (не забудьте, на плате есть 2 перемычки! - но они плохо видны). и его фотки.

Софт для прошивания PIC рекомендую Ic-prog.com и WinPIC800 - я их использовал успешно, значит проверено !

 

 

Schematic drawing software

I use ProSchematic ( schematic drawing software ) for all diagrams and schematics on this site (except those bits of data sheets on some pages).

 
Download FREE Trial here Advantages of ProSchematic are:
* Unlimited pins.
* Unlimited library parts.
* Unlimited schematic page size.
* Graphic diagram drawing layers.
* Unlimited netlisting for pcb creation.
* Low cost.
* Easy to use.
CLICK image for larger view

pic programmer

As you can see there are three control panels as well as the menu and main schematic screen.
 

Common actions (large buttons)

proschematic main buttons

The top panel contains large buttons which display the most used controls (below this are smaller buttons for less frequently used operations e.g. text size, color control etc).

Note: You can access all the tools using the buttons or hotkeys e.g. Alt-w Wire tool, Alt-s Select tool and you can see each hot key by opening the Tools menu.

Draw a schematic using four main buttons.

All you need are:
 
  • Library part selector/manager. (The 3-books symbol).
  • Select tool. (The arrow).
  • Wire draw tool. (The line with 'wire' text).
  • No-connection - at a pin. (The X ).
I have highlighted above the four tool buttons (in the above list) that you need to start drawing a schematic - You can use all the others as you progress through drawing your schematic (and as you need them when the drawing becomes more complex).

Initiallly though these four are enough to draw schematics.  
 
  1. Select a part using the library part selector..
  2. Place the part (click left).
  3. Stop part placement (click right or hot escape key).
  4. Use the wire draw tool to draw wires between pins.
  5. Use the no-connection to set pins as unconnected.
  6. Use the select tool to move parts or wires around the schematic.
Then check the schematic using the netlist tool in the process panel - although it does netlisting it also checks the schematic for errors e.g. unconnected pins or duplicate parts etc.  

Note: 'no-connects' tell the netlister accept a pin that has no wire connection - just a useful way of ensuring that you think about every pin in the design as you have to put the 'nc' in manually.
 

Schematic drawing software  : Proceses

On the top left is a process panel that gives easy access to the main processes that you need in drawing a schemaitc progressing from design to the final netlist.

These include pin review, netlisting and BOM output (Bill Of Materials).
 

Schematic drawing software  : Attributes

Beneath that is the attribute panel that shows all the data for the currently selected part - this can include your own data e.g. manufacturer data etc.

Attributes are pieces of data associated with a part - some are internal data such as the part information (for a multi part symbol) but you can add your own data such as Manufacturer, cost - any data you like.  

Note: The BOM
(Bill Of Materials - shopping list!) generator is customizable so you can output this data to a spreadsheet.
 

Schematic drawing software  : Libary

The library has many different parts pre-made but if a part does not exist then its easy to create a new one as the library editor uses the same interface as the schematic tool - except for one control - the pin control.

All you do is start the library editor and fill in a few bits of information (e.g. symbol name, symbol prefix, number of parts in the symbol etc. then on to the library editor.  Just draw your symbol and add pins to it with the pin tool then click OK - and add to the library - and  its done ready for use.
 

Schematic drawing software : PCB
 

As well as checking the schematic the netlist tool generates the netlist which you can output in Tango format so you can import that into a PCB tool.
 

Schematic drawing software : Layers

An unusual feature of this tool is that it has layers and these allow you to create complex diagrams that have detailed backgrounds.  This type of feature is more usually found on graphics programs.  

Note that as well as adding backgrounds to a complete image you can add colored backgrounds to individual schematic blocks e.g. for an IC part (this background can be grouped with the part to keep background and part together).

Here's an example of a diagram created with the layer functionality:

layer functions of proschematic


The solderless bread board is on layer 6 while everyting else is on layer 1 so you can move all items on layer 1 without selecting anything on layer 6. It's just as if there was a fixed image in the background.





Download schematic drawing software FREE Trial here
 

 

 

 

 

Digital I/O expansion.

 

SPI, I2C, Dallas 1 wire

The three other interfaces are more complicated but still very useful for digital I/O expansion.  To use them you have to choose devices that use the same interface protocol (that you generate from the microcontroller).

Note: There are many device to choose from for each type of protocol e.g. digital pot, ADC, EEPROM etc.  

I2C and SPI are supported by newer PIC chips so they can run quite fast using the internal module (SSP or MSSP) whereas the Dallas 1 wire system is encoded in software.  

The best thing about the Dallas 1 wire system is that you can used it over long distances whereas the other two are intended for use within a unit (I2C) or on the same board (SPI).

Note: If you need to add a keypad or LCD you could use I2C (using a PIC chip e.g. 16F88) on a separate board.

 

If you have run out of digital I/O pins because you are updating an older design or there simply are not enough pins to add the functions you need then the way to increase I/O is to use a serial interface.

There are several serial interfaces to choose from:

I2C (2 wires).
SPI (3-4 wires).
Dallas 1 wire (1 wire).
Johnson counter (2 wire).
Discrete Serial to parallel (3 wires, 6 for RX & TX).
RS232 (1-2 wires).

Note: Number of wires excludes ground.

Each has its own advantages and disadvantages:

RS232

Using an RS232 interface or a software encoded UART is the most unusual method but it gives a robust communication method and if you transmit data in one direction it only needs 1 wire (but you need a UART to receive either a discrete UART or a microcontroller with built in UART).

Johnson counter

The Johnson counter 4017 (74HC4017) is a useful little chip that turns on each output after each clock edge but it is limited to 10 outputs.

Serial to parallel (& vice versa)

This method uses discrete chips 74HC595 (serial in and 8 bit parallel out) and 75HC165 (8 bit parallel in and serial out) and these can be daisy changed indefinitely.  The only problem is that you need 6 pins to use both at the same time. (you may be able to multiplex the clock and latch pins to share between them saving 2 pins).

 

 

 

Product / AVR 8-Bit RISC / Datasheets

 
Все кроконтроллеры AVR 8-Bit RISC - Datasheets - Даташиты

 Automotive AVR     megaAVR
 AVR Z-Link     Smart Battery AVR
 CAN AVR     tinyAVR
 LCD AVR     USB AVR
 Lighting AVR    
      right arrow View Mature Devices - устаревшие AVR )

 

 

Простейшие программаторы для PIC

Я не проверял их работу ! Я проверял простенький JDM - смотрите на стр. 6

А вот PicKit2 действительно "зе бест" !

Программатор для микроконтроллеров PIC для COM порта. Две похожие схемы. Переключатели сдвоенные - "программирование"/"работа". Это позволяет не отсоединять программатор между прошивками при отладке устройства.

Я думаю, что в системе обозначений MicroChip.com это сигналы:

Vdd это питание программируемого МК - часто 5 вольт

CLK это такт - PB6 / PGC

SDA это данные - PB7 / PGD

PRG это Vpp / MCLR - напряжение программирования.

GND это "общий" или "земля".

 

 

 

 

 

 

 

Сайт управляется системой uCoz