Если у вас нет этих программ лучше скачайте именно их. В других всё может кардинально отличатся.
Немного для понимания процесса.
Тут вы не найдёте теоретических сведений о контроллерах и правильном их программировании. Это всего навсего хелловорд в мире контроллеров.
Мы запрограммируем контроллер, который будет мигать диодом по заданной программе.
Как вы видите программировать будем контроллер AtMega8.
Откройте CodeVision и создайте новый проект.
Добавьте к проекту исходный файл Си.
Добавьте в него заголовочные файлы:
#include //Включаем библиотеку для работы с микроконтроллером ATMega8 #include //Включаем библиотеку для организации задержек
Теперь будем заполнять основную функцию:
void main(void) < /// код здесь >
Первые строки программы.
В AtMega8 есть порты B,C и D. Работа с ними аналогична.
Что такое порт? Это нечто вроде коробки выходов. Мы можем программно задавать значения на выходах порта.
int i; // переменная для отсчёта миганий PORTD=0x00; //Выставляем все выходы порта D в 0 DDRD=0xFF; //Делаем порт D выходом
Теперь собственно действия. Будем мигать светодиодом 5 раз с задержкой 100мс, после чего ожидаем секунду (1000мс) и повторяем процесс.
Быстрый старт. Прошивка контроллера Danfoss MCX
while (1) < for(i=0;i<5;i++) < PORTD.0 = 1; // включаем порт 0 delay_ms(100); // ждём PORTD.0 = 0; // выключаем delay_ms(100); /// опять ждём >delay_ms(1000); // ждём секунду >;
Теперь практически всё готово. Идём в меню Project — Build
Ошибок быть не должно.
В папке с проектом теперь появится hex файл. Он то нам и нужен.
Откройте ISIS, соберите схему как на рисунке выше. После чего кликните дважды по контроллеру. Появится окно:
В нём необходимо указать «Program file» — путь к hex.
Теперь всё готово. Можно смело жать «плей» и наслаждаться симуляцией.
Источник: blablacode.ru
Программирование pic микроконтроллеров. USB и CAN
Итак. Конфигурационные биты. или управляющее слово. Здесь мы будем подразумевать, что это одно и то же.
Грубо говоря, это — критические настройки контроллера. Без многих из них, он вообще корректно работать не будет, и это — одна из причин, почему эти настройки нельзя изменять по ходу изменения программы.
Конфигурационные биты задаются в коде с помощью директивы CONFIG
Так же их можно задать непосредственно в среде разработки MPLAB
Если слева сверху убрать галочку биты задаются в коде программы, то вы сможете менять биты прямо в этом окошке. Щелкаете — и справа будет контекстное меню, позволяющее выбрать настройки.
Обратимся к программе, написанной в уроке 2.
Генератор тактовых импульсов
Первая настройка:
CONFIG FOSC=INTOSCIO_EC ; Выбран внутренний генератор
Arduino ЧПУ программы. Grbl controller | UniversalGcodeSender | JCNC
Для того, чтобы наш контроллер работал, ему нужны тактовые импульсы. С поступлением каждого импульса, контроллер совершает одну операцию.
В нашем контроллере есть внутренний генератор импульсов. Сейчас он и выбран
если мы напишем
CONFIG FOSC=HS
то будет выбран внешний высокоскоростной генератор. Его надо подключить между ножками OSC1 и OSC2, что и указано в первом уроке. В случае, если мы используем внутренний генератор, то мы можем использовать ножки OSC1 и OSC2 по своему усмотрению.
Типы генераторов даны в ТО:25
Сигнал сброса
Следующая настройка — сигнал сброса
CONFIG MCLRE=OFF
В случае, если сигнал сброса включен, то контроллер будет работать только в случае положительного потенциала на ножке MCLRE. А в случае, если эта ножка получит отрицательный потенциал, то контроллер перезагрузится — сбросится. Мы эту опцию отключаем. В нашем случае контроллер будет работать сразу после получения питания. а ножку MCLRE мы можем использовать как цифровой вход-выход.
Сторожевой таймер
В нашей настройке сторожевой таймер так же выключен
CONFIG WDT=OFF
Сторожевой таймер — это своеобразная защита от зависания.
Таймер отсчитывает некоторое время, если за определенный промежуток оного, он ни разу не получил от нас сигнал, что все в порядке. таймер перезагружает контроллер. С помощью команды CLRWDT мы обнуляем таймер. и как бы говорим программе, что все в поряде.
Мы пока не будем использовать сторожевой таймер.
Описание таймера: ТО:299
Ну и пока все. Это все настройки, которые использованы в примере в уроке 2. Быть может я добавлю сюда потом еще информацию.
Еще скажу, что настройки, которые вы можете задать. хранятся в файле заголовков. P18F2550.inc например. А так же можете посмотреть в configure->configuration bits.
Удачи
По поводу всех настроек контроллера обращаемся так же к техническому описанию. ТО:288
Конфигурационные биты на Си (MPlABX)
Необходимо их настроить. Для этого идем в Window->PIC memory views->configuration bits
откроется окно, и выставляем там FOSC=INTOSCIO, WDT=OFF, MCLRE=OFF
Щелкаем правой клавишей и Generate Source Code to Output. Эта опция создаст код, необходимый для задачи конфигурационных битов.
Копируем код, создаем файл заголовков config.h и вставляем сгенерированный код в конец файла.
Урок 2. Глава 1 Устройство памяти
В данном тексте приведены ссылки на книги. «название книги»:страница обозначает указатель на определенную страницу книги. «название книги»:Гглава — главу. При этом ТО — сокращение для тех. описания контроллера (Datasheet). Например ТО:15 — 15 страница технического описания. ТО:Г3 — третья глава технического описания |
Устройство памяти контроллера
Контроллер — это лишь устройство, которое шаг за шагом выполняет команды. Команды записаны в памяти контроллера и выполняются по очереди.
Команды записаны в понятном контроллеру машинном языке — столбик 2 следующего листинга. Cправа приведено, как эти команды записываются в ассемблере
Внутри контроллера
Адрес ячейки Содержимое ячейки
0x001 0x0e00
0x002 0x6ee0
0x003 0x6a80
0x004 0x6a92
и так далее.
Второй столбик — это машинный код, в шестнадцатеричной системе счисления.
Это и есть команды, записанные в памяти программы.
Но кроме памяти программы (PROGRAM MEMORY) есть еще память данных.
В памяти данных во-первых хранятся настройки для нашего контроллера. Собственно, это просто переменные, меняя которые вы меняете какие-то установки. И еще в памяти данных мы будем создавать переменные. То есть, если программе что-либо надо запомнить, она записывает это в память данных (DATA MEMORY).
То, где хранятся настройки контроллера называется регистрами специального назначения — SPECIAL FUNCTIONS REGISTERS (SFR), а то, что мы используем, как переменные — регистры общего назначения — GENERAL PURPOSE REGISTERS (GPR).
стоит еще отметить, что память поделена на 15 банков в каждом по 16×16 ячеек . для того, чтобы выбрать другой банк данных есть регистр выбора банка BANK SELECT REGISTER (BSR).
Для многих команд можно использовать адрес напрямую, с помощью регистра BSR или же с помощью access банка. При обращении в access bank, до адрес 0x60 мы попадаем в 1й банк. В остальных адресах мы попадем в банк 15. Регистры специального назначения. Когда мы задаем команду в ассемблере мы можем поднять флаг A (0) или B (1) для указания будем ли мы использовать BSR или же access bank.
Конкретнее смотрите в ТО в главе instruction set.
Стоит вам записать в него 2, вы тут же начинаете использовать второй банк регистров.
Предлагаю вам самим это посмотреть обратитесь к Тех Описанию. ТО:59 и ТО:65
пример выбора блока регистров movlw 0x5 ;записываем 5 сначала в аккумулятор movwf BSR ;из аккумулятора передаем значение в BSR регистр |
Еще есть EEPROM память, которая спользуется для длительного хранения данных. Но об нёй не сейчас.
понедельник, 24 июня 2013 г.
ОГЛАВЛЕНИЕ. Программирование микроконтроллеров pic18f2550 pic18f4550 с нуля. USB интерфейс. CAN и PIC контроллер
Это небольшое руководство ставит своей целью обучить работе с контроллером pic18f4550 и pic18f2550 вплоть до реализации протокола USB и CAN. В уроки входят небольшое объяснение архитектуры и работы на ассемблере и языке C. Учебный пример USB устройства с комментариями. Литературы по поводу азов программирования этих контроллеров достаточно, поэтому основы даны в сжатом виде.
Оглавление:
Работа и отладка в пакете MPLABX ссылка
1. Урок №1. Подготовка инструментов. ссылка
2. Урок №2. Простой код на ассемблере и устройство вкратце. ссылка
2.1 Глава 1. Устройство памяти. ссылка
2.2 Глава 2. Биты конфигурации. ссылка
2.3 Глава 3. Команды ассемблера. ссылка
2.4 Глава 4. Работа со внутренними устройствами контроллера ссылка
3. Урок №3. Использование Bootloader’a ссылка
4. Урок №4. Простой код на C (компилятор XC8) ссылка
5. Урок №5. USB. Сторона контроллера (Компилятор XC8) ссылка
5. Урок №6. USB. Сторона компьютера ссылка
5. Урок №7. CAN интерфейс и контроллер 18f2550 ссылка
Наши друзья:
CDC USB устройство на PIC18F4550 ссылка
Список рекомендованной литературы
1. Документация на контроллеры (техническое описание) pic18f2550 и 18f4550 ссылка Зеркало.
2. Сайт товарища Корабельникова по программированию контроллеров . Зеркало
3. Б.Брей. Применение микроконтроллеров PIC. Зеркало
4. Документация по программатору pickit2 ссылка
Список программного обеспечения
1. Пакет MPLABX ссылка зеркало
2. Компилятор XC8 ссылкан зеркало
3. Microchip Libraries for Applications (MLA) Ссылка зеркало
Устаревшие программы
1. Пакет MPLAB 8.91Зеркало
2. Компилятор pic18С Зеркало
22.09.2015 Добавлен проект бутлоадера для сборки с XC8. Вырезана дебильная подпись об удачной прошивке.
12.01.2015 Переделана статья про CAN для компилятора XC8. Плюс, код стал более аккуратным, и во многом переделан
09.01.2015 Переделана статья USB сторона контроллера под компилятор XC8
28.12.2014 Переделаны статьи с простым кодом на ассемблере и на си под среду MPLABX и компилятор XC8 (для си). Старые статьи сохранены. Ссылки в новых статьях в самом начале. Старые версии уже не поддерживаются, и уже на официальном сайте их нет. Так что в плане переделать статьи для USB и CAN.
И добавить тему по отладке в MPLABX.
пятница, 21 июня 2013 г.
Второй урок. Простой код на ассемблере и устройство вкратце. (устаревшее MPLAB 8.91)
Внимание! статья несколько устарела. Теперь будет рассматриваться работа с более современной средой MPLABX |
В данном тексте приведены ссылки на книги. «название книги»:страница обозначает указатель на определенную страницу книги. «название книги»:Гглава — главу. При этом ТО — сокращение для тех. описания контроллера (Datasheet). Например ТО:15 — 15 страница технического описания. ТО:Г3 — третья глава технического описания |
Пакет MPLAB 8.91. Можно скачать с официального сайта. Новый MPLABX довольно неповоротливый. Можно скачать здесь. Зеркало
Вот и ладушки, если вы читаете второй урок, то наверное, в первом вы смогли подготовить инструменты. Или и так без меня все умеете. Теперь небольшое отступление для начинающих. За более подробной
информацией, обращайтесь к серьезным книгам, особенно к техническому описанию контроллера.
Итак, что такое контроллер, и как он работает?
Конечно же, это просто черный жучек с ножками. За неимением никаких других членов, он общается с окружающим миром исключительно напряжением на ножках. Что в общем и демонстрировалось в программе в первом уроке. Просто с определенной переодичностью контроллер зажигал
светодиодик.
В расcматриваемых нами контроллерах память разделена. Программа записывается в отдельное пространство, именуемое памятью программы (PROGRAM MEMORY). Переменные и настройки хранятся в памяти данных (DATA MEMORY). Причем, ячейки памяти, выделенные для использования как переменные называются регистрами общего назначения (GENERAL PURPOSE REGISTERS или GPR) и настройки находятся в регистрах специального назначения (SPECIAL FUNCTIONS REGISTERS или SFR). Память данных поделена на 15 блоков и блоки меняются регистром BSR (BLOCK SELECT REGISTER).
Так же существует EEPROM memory — это флеш память, используемая для длительного хранения информации.
Подробнее о памяти контроллера смотри главу 1 ссылка.
Код программы
Для начала мы будем писать на ассемблере.
Если вы написали команду на ассемблере, то это будет ровно одна команда, записанная в контроллер.
Таким образом вы будете отлично знать, что ваш контроллер делает и как. А вот если вы пишете на C, то на каждую строчку, написанную вами могут приходиться сотни команд, выполненных контроллером. Знать-то нужно и то и другое, но ассемблер даст нам понимание того, что и как работает в контроллере.
Ладно, начнем.
Открываем MPLAB жмем project->project wizard,
выбираем модель контроллера, и в качестве среды — MPASM Toolsuite
Далее. Щелкаем browse. указываем там папку проекта и имя. Никаких файлов пока что не добавляем. Next и finish.
File->new.
Сохраняем его в папку проекта с расширением asm.
Далее щелкаем правой на папке sources и добавляем его в проект..
Пояснения к коду программы
Начнем потихоньку разбирать что там написано
В самом верху указываем то, какой у нас будет контроллер
#include
Мы их рлдключаем для того. чтобы вместо того, чтобы всегда и везде мы записывали цифрами. мы могли использовать некоторые уже привычные нам обозначения.
напирмер, без подключения заголовков. команда записи в регистр выбора блока (BSR) -строка 16 нашей программы выглядела бы так
MOVWF 0FE0;
так. Еще директива.
list p=18f2550
Она просто говорит
компилятору, какой контроллер будем прошивать.
Дальше уже интереснее. Нам нужно задать управляющее слово. это — настройки контроллера.
Задает их директива CONFIG
По поводу всех настроек контроллера обращаемся так же к техническому описанию. ТО:288
Конфигурационные биты
CONFIG FOSC=INTOSCIO_EC
Эта настройка говорит о том, что мы будем использовать внутренний генератор импульсов. Он — внутри контроллера. Читаем в ТО:25
CONFIG MCLRE = OFF
Здесь мы отключаем сигнал сброса. То есть контроллер будет включаться сразу с подачей на него питания.
CONFIG WDT = OFF
Отключаем сторожевой таймер. Просто. чтобы не «запариваться». Он служит защитой от зависания контроллера. Читаем в ТО:299
Более подробно конфигурационные биты рассмотрены во 2-й главе к этому уроку. ссылка
Тело программы
DELAYCOUNTER EQU 0x00
Эта директива (EQU) ставит в соответствие к DELAYCOUNTER 0x00
То есть мы пишем DELAYCOUNTER, а программа думает «0x00»
Вообще мы будем использовать DELAYCOUNTER как переменную. а 0x00 — просто адрес, где она хранится в общих регистрах.
Кстати. Забыл сказать. 0x00 — это просто число. Так мы записываем числа в 16ричной системе счисления.
то есть 0x6B = 107
Как написать программу для микроконтроллера
Написать программу для микроконтроллера при знании основ языков программирования очень просто. Надо только определиться, какой микроконтроллер вы хотите использовать. Рассмотрим написание программы для PIC16F877, который включает в себя всевозможные технологии и интерфейсы и весьма недурен по рабочим характеристикам.
Статьи по теме:
- Как написать программу для микроконтроллера
- USB-программатор (AVR): описание, назначение
- Как запрограммировать микроконтроллер
Инструкция
Запустите заранее установленную программу MPLAB и выберите пункт в меню Project/project Wizard. Потом откроется окно, где нажмите «Далее». В списке доступных микроконтроллеров выберите PIC16F877 и нажмите «Далее».
В открывшемся окне выберите компилятор, который займется обработкой кода вашей будущей программы. Обязательно выберите пункт HITECH PICC Toolsuite в списке Active Toolsuite. Это компилятор Си языка. Затем задайте имя для проекта (TestPIC) и укажите его директорию. Не пишите русскими буквами, иначе при открытии файлов будут возникать проблемы. Нажмите «Далее», а затем «Готово».
Итак, пустая заготовка проекта готова.
Нажмите File/New. В появившемся окне Untitled выберите File/Save as… Укажите имя TestPIC.c и перейдите в папку с проектом. Поставьте галочку возле Add File to Project. Ниже поместите этот код в открытое окно проекта #include __CONFIG(0x03F72);int i=0;void main(void)< T0IE=0; GIE=0; TRISB=0;PORTB=0;while(1==1)< PORTB++;for(i=0; i
Откройте Configure/Configuration Bits… Тут установите значения опций для проекта: Oscillator – HS (в роли тактового генератора бует кварцевый резонатор), WatchDog Timer – Off (отключение сбрасывания микроконтроллера), Power Up Timer – On (пребывание МК в состоянии сброса), Brown Out Detect – On (сброс при падении питания), Low Voltage Program – Disabled (запрет на использование низковольтного внутрисхемного программирования), Flash Program Write – Enabled (разрешение записи в память программ), Data EE Read Protect – Off (разрешение чтения данных памяти МК), Code Protect – Off (отключение защиты кода МК).
Откомпилируйте код. Для этого нажмите Project/Build All. После окончания компиляции появится окно об успешном завершении. После этого в папке проекта появится файл TestPIC.hex, в котором будет содержаться специальный код. Запишите его в микропроцессор при помощи программатора.
Источник: www.kakprosto.ru