Адаптер для прошивки микроконтроллеров MICROCHIP PIC
Программирование микроконтроллеров PIC, MICROCHIP PIC, адаптер для микроконтроллеров, программатор микроконтроллеров и памяти EEPROM, PIC16F628, PIC16F84, PIC12F675, PIC18F2550, PIC18F4558 и другие контроллеры Microchip. Программатор PicKit2 PicKit3
Популярные среди радиолюбителей микроконтроллеры Microchip Pic выпускаются в разных корпусах и с разным количеством выводов. Есть, к примеру, совсем маленькие PIC12F675 в 8-выводном корпусе, PIC16F628 в 16 — выводном DIP корпусе, или например PIC18F4550 в корпусе DIP-40 с сорока выводами. Конечно, все эти микроконтроллеры выпускаются и в SMD вариантах, но здесь речь пойдет именно о чипах в DIP корпусах. Такие чипы более удобны для начинающих радиолюбителей. Их можно устанавливать в панельки в наших самодельных устройствах. Это позволяет быстро заменять контроллер для программирования его отдельно от платы устройства и для экспериментов.
Все микроконтроллеры Microchip могут быть запрограммированы непосредственно в схеме готового устройства. Это называется внутрисхемное программирование, in-system programming ISP или ICSP. Это очень удобно, но возможно только если при изготовлении устройства вы предусмотрели на его плате отдельный разъем для прошивки контроллера. Это несколько усложняет схему и печатную плату устройства. Если выводы контроллера, которые задействованы при его прошивке используются в вашей схеме для других целей, то придется предусмотреть их дополнительную развязку от схемы в режиме программирования. Также во многих проектах, которые мы повторяем, скачивая их в интернете, не предусмотрен разъем ICSP. В этом случае нам придется запрограммировать контроллер отдельно, и только потом устанавливать на печатную плату устройства.
Популярные программаторы от Microchip PicKit2, PicKit3, PocKit4 и их клоны рассчитаны именно на внутрисхемное программирование контроллеров. Конечно с их помощью нетрудно прошить отдельный контроллер, но придется подключить его проводками к разъёму программатора. Такое «клубковое» подключение неудобно, особенно если вы часто занимаетесь прошивкой контроллеров. Лучше сделать универсальную плату — адаптер с панелькой, куда мы устанавливаем наш микроконтроллер и подключаем плату к разъему программатора.
Cейчас китайцы освоили производство таких плат, и если вы не хотите делать адаптер самостоятельно, то можно заказать его в китае:
Китайские платы имеют несколько перемычек, которыми вы должны выставить тип микроконтроллера. Плата — адаптер, которая описывается в этой статье не имеет никаких перемычек и на ней ничего не требуется переключать. Можно просто установить контроллер и сразу его прошивать. Думаю китайцы скоро освоят переходники по схеме с нашего сайта 😉
Это принципиальная схема адаптера. Как видим, здесь только 40-пиновая панель с нулевым усилием (ZIF-панель) пять резисторов и штырьки разъема ICSP для подключения к программатору. Если у вас нет ZIF панельки, можно установить цанговую 40-пиновую панель или в крайнем случаю обычную, но срок службы ее ограничен.
Печатная плата разработана в программе DipTrace. Это отличный CAD для создания печатных плат. Есть бесплатная версия для проектов с числом выводов не более 300 и максимум двух сигнальных слоев, чего более чем достаточно для многих любительских проектов и изучения программы.
Печатная плата адаптера. Вид со стороны деталей
Печатная плата адаптера, вид со стороны дорожек
Микроконтроллеры с разным количеством выводов должны устанавливаться в этот адаптер по- разному. Схемы установки контроллеров в различных корпусах приведены ниже:
Установка в панель микроконтроллеров в корпусах DIP-40, DIP-28 и DIP-18. Например, микросхему PIC16F628A (корпус DIP-18) устанавливаем так, чтобы первый пин микросхемы соответствовал второму пину панельки.
Установка в панель микроконтроллеров в корпусах DIP-8 и микросхем «микрочиповской» памяти EEPROM
Панельку с нулевым усилием можно недорого заказать на Алиэкспресс:
Скачать проект печатной платы (схема, печатная плата и схема установки микроконтроллеров)
помогите прошить PIC-контроллер!!! | Rmmedia.
rue-stet
balanced
- #1
Будьте любезны, подскажите, как поступить//
нужно прошить PIC-контроллер в количестве 2 шт.
имеется код к ним в форматах .asm и .hex
некоторое время назад приобрел программатор PIC k150 (хотя, внутри его же софтины определяется, как 149)
дрова под семерку скачались при подключении, вроде все должно быть..
включаю софтину, а мне говорит, что траблы с COM-портом (не работает, не определяется и т.п.. причем даже при отключенном программаторе (а он подключается по USB))
в чем может быть проблемка? вероятно выставлен приоритет COM-порта в самой софтине.
Последнее редактирование:
3axap
Active Member
-
- #2
Желательно комп постарше, и операционку тоже. Там какие то траблы с ком портом на последних материнках, что то по питанию, но это я говорю в общем, что вспомнил, сын занимался прошивкой таких штук, так он пробовал разные компы с ХР, и с разными материнками, не везде работало, не везде работало стабильно, не до конца шилось и т. п. Может мои советы поверхностны и в корне неправильны. Но вспомнил, что было такое.
А вообще это нцжно всякие форумы типа SATinfo и т.п. — — по спутниковой тематике, там народ эти контроллеры в хвост и гриву, там наверняка подскажут.
e-stet
balanced
- #3
спасибо за наводочку!
про нестыковку с win 7 тоже слышал краем уха
как раз на компе постарше стоит ХР, сегодня же испробую!
Последнее редактирование:
e-stet
balanced
- #4
сделал c ноутбука ASUS, из под win7 x64
решение трабла тут. .
http://hobbytronix.blogspot.ru/2012/07/working-with-pic-programmer-k150_22.html
e-stet
balanced
- #5
и еще вопрос..
различные коды — это для прошивки разными прогами на выбор?
Последнее редактирование:
e-stet
balanced
- #6
формат .asm — это интерпретация шестнадцатеричного кода .hex на языке более высокого уровня (ассемблера)
т.е нужен исключительно для визуализации проделанной работы
Захар, благодарю за участие =)
Последнее редактирование:
3axap
Active Member
- #7
Отсутствовал, но вижу — все позитивно. Рад за Вас. Сын уже предлагал пики прошивать — но я понимаю, что тут дело принципа, все сделать самому.
Успехов и удачи!
ivin
New Member
- #8
ребята первые опыты программирования PIC на К150, тока купил. Порт определился, в программе выставил, указал программатор(К150), вставляю ранее запрограммированный PIC 16F628A, его не читает, на него не пишет и пр. выдает ошибки. Правильно вставил чип? Отступил одну позицию, фото не качественное матрица у фотика забарахлила. Новичок на форуме, хотя «пень» уже старый.
IMG_0157. jpg
396,7 KB Просмотры: 4
DeVolf
New Member
- #9
Чип то правильно стоит, не знаю как у вас, но у меня софтина ругается на сам программатор. В интернте ходят слухи, что нужно прошить сам программатор. Но для этого надо еще один PICовский. Кто может помочь в Киеве?
юрий11
New Member
- #10
Всем здравствуйте! Совсем недавно решил увлечься микроконтроллерами. Наставников нет, а самому, как оказалось, довольно тяжко двигаться… собрал схему, сердцем которой является pic12f675. Файл прошивки прилагался автором схемы. Заказал программатор к150 . Все подготовил, подключил программатор к юсб, в диспетчере устройств задал как я понял эмуляцию соm порта, дал ему номер 2. В софте программатора прописал соответствующий порт и выбрал модель программатора. Вставил чип во в13_й пин, прочитал его. Все как положено: везде 3FFF, в последней ячейке-константа. Переписал её загрузил файл прошивки, вбил родную константу. Нажимаю «прошить» а он, подлец, выдает ошибку! Как только не бился с ним! Подскажите, кто-нибудь, в чем проблема?
Войдите или зарегистрируйтесь для ответа.
Поделиться:Facebook Twitter Reddit Pinterest Tumblr WhatsApp Электронная почта Ссылка
Запись во флэш-память на 16-разрядном микроконтроллере PIC®
Запись во флэш-память на 16-битном микроконтроллере PIC®
Панели флэш-памятина 16-разрядных микроконтроллерах PIC ® (MCU) разделены на страницы. Каждая страница состоит из ряда строк. Каждая строка имеет набор 24-битных программных слов. Размеры страниц и строк различаются в зависимости от MCU. Обратитесь к техническому описанию, чтобы определить размер страницы и строки для используемого микроконтроллера PIC.
Детали реализации страниц и строк флэш-памяти невидимы для прикладной программы. Строки и страницы не влияют на управление программой или на то, где компоновщик размещает программные объекты. Страницы и строки учитываются только тогда, когда приложение выполняет запись во флэш-память во время выполнения.
Запись во флэш-память состоит из загрузки данных для записи в удерживающую защелку (или серию защелок) с использованием инструкций Table Write. Адрес флэш-памяти для записи загружается в адресный регистр NVM. Как только данные и адрес загружены, определенная последовательность операций с регистрами инициирует процесс записи. В процессе записи данные передаются из защелок во флэш-память. В процессе записи MCU останавливается, возобновляя работу после завершения операции записи
Все 16-разрядные микроконтроллеры PIC позволяют прикладной программе записывать отдельные слова флэш-памяти. Используя этот метод адресованной записи по словам, 24-битные данные загружаются в защелку записи с помощью пары инструкций записи таблицы (TBLWTH и TBLWTL). После загрузки защелки приложения загружают адрес назначения в адресные регистры NVM. После загрузки обоих наборов регистров приложение устанавливает биты управления, а затем выполняет последовательность записи в регистре NVMKEY. Последовательность записи приводит к тому, что данные в защелках записываются по адресу флэш-памяти, указанному в адресных регистрах NVM.
Некоторые устройства позволяют запрограммировать сразу весь ряд. Чтобы запрограммировать всю строку, приложение загружает серию регистров-защелок с повторяющимися инструкциями записи таблицы. Затем приложения загружают первый адрес строки для записи в адресные регистры NVM. После загрузки обоих наборов регистров приложение выполняет последовательность записи. При программировании строк вся строка записывается во флэш-память одновременно.
Инструкции
Сборка Прочтите инструкции | ||
---|---|---|
ТБЛРДЛ | Table_Read_Low | Считывает младшие 16 бит 24-битного слова флэш-памяти. Адрес для чтения определяется регистром TBLPAG и рабочим регистром, переданным этой инструкции. |
ТБЛРДХ | Table_Read_High | Считывает старшие 8 бит 24-битного слова флэш-памяти. Адрес для чтения определяется регистром TBLPAG и рабочим регистром, переданным этой инструкции. |
Инструкции по записи сборки | ||
---|---|---|
ТБЛВТЛ | Table_Write_Low | Загружает 16-битные данные в защелку. Адрес защелки данных для записи определяется регистром страницы таблицы TBLPAG и рабочим регистром. Защелка будет записана во флэш-память при запуске последовательности программирования |
ТБВР | Table_Write_High | Загружает 8-битные данные в защелку. Адрес защелки данных для записи определяется регистром TBLPAG и рабочим регистром. Защелка будет записана во флэш-память при запуске последовательности программирования. |
Макросы языка C | |
---|---|
Макро | Описание |
__builtin_tblpage | Возвращает номер страницы адреса памяти, полученного в качестве параметра. Для табличных инструкций возвращаемое значение помещается в TBLPAG | .
__builtin_tbloffset | Возвращает «смещение» от адреса базовой страницы для области памяти, адрес которой передается в качестве параметра. Возвращаемое значение этой функции передается в качестве параметра в инструкции чтения и записи таблицы 9.0027 |
__builtin_write_NVM | Выполняет последовательность программирования на NVMKEY, затем немедленно устанавливает WR. __builtin_NVM вызывает запись содержимого защелок (защелок) данных во флэш-память. Этот макрос НЕ отключает прерывания. |
__builtin_disi | Отключает прерывания для заданного количества инструкций. Этот макрос обычно вызывается непосредственно перед __builtin_write_NVM | .
__builtin_tblrdh | Возвращает старшие 8 бит адреса памяти, указанного TBLPAG, и параметр смещения. (Вызывает инструкцию TBLRDH) |
__builtin_tblrdl | Возвращает младшие 16 бит адреса памяти, указанного TBLPAG, и параметр смещения. (Вызывает инструкцию TBLRDL) |
__builtin_tblwrth | Записывает 8 бит данных в удерживающую защелку, которая будет запрограммирована на мигание при запуске последовательности программы. Эта функция получает два параметра: записываемое значение и смещение страницы. Эта функция определяет защелку, которую нужно запрограммировать, используя содержимое TBLPAG и параметр смещения. (Вызывает инструкцию TBLWRTH) |
__builtin_tblwrtl | Записывает 16 бит данных в удерживающую защелку, которая будет запрограммирована на вспышку при запуске последовательности программы. Эта функция получает два параметра: записываемое значение и смещение страницы. Эта функция определяет защелку, которую нужно запрограммировать, используя содержимое TBLPAG и параметр смещения. (Вызывает инструкцию TBLWRTL) |
Регистры
TBLPAG Регистр страницы таблицы — TBLPAG используется инструкциями чтения и записи таблицы. Этот регистр определяет старшие 8 бит адреса, к которым должна обращаться табличная инструкция. Младшие 16 бит адреса передаются инструкции как значение в рабочем регистре. Когда должна быть выполнена инструкция чтения таблицы, этот регистр содержит адрес страницы слова, которое нужно прочитать. Когда должна быть выполнена инструкция записи таблицы, в TBLPAG следует загрузить базовый адрес защелки (защелок) (#FA00 на многих 16-битный PIC ® MCU .)
NVMADR/NVMADDRU Адресные регистры NVM. Содержит адрес слова флэш-памяти (или адрес строки), который будет записан при выполнении последовательности программы. После загрузки удерживающих защелок приложение устанавливает адрес назначения в NVMADR/NVMADRU, прежде чем инициировать последовательность записи. Последовательность записи приводит к копированию данных из защелок в ячейку флэш-памяти, указанную NVMADR/NVMADRU.
Регистр управления энергонезависимой памятью NVMCON — регистр, с помощью которого приложение выбирает функцию, которая будет выполняться при выполнении последовательности программы. Опции в этом регистре включают «Стереть страницу», «Записать слово» и «Записать строку». NVMCON также содержит бит, который необходимо записать для запуска процесса записи (WR).
NVMKEY KeyRegister энергонезависимой памяти — чтобы уменьшить возможность изменения флэш-памяти ложной записью в NVMCON WR нельзя установить, если в NVMKEY не записана определенная последовательность значений данных. Эту последовательность обычно называют программной последовательностью. Как только последовательность выполнена, WR становится «доступным для записи» в течение 2 командных циклов.
Программная последовательность для 16-разрядного микроконтроллера PIC ® (MCU) выполняется путем последовательной записи определенных значений в NVMKEY. Запись 0x55, за которой сразу следует 0xAA, разблокирует WR на два цикла инструкций. Если WR устанавливается в течение двух командных циклов последовательности программирования, MCU выполнит процесс самозаписи флэш-памяти.
Прерывания должны быть отключены во время выполнения последовательности программы записи, чтобы предотвратить обслуживание прерывания между двумя инструкциями записи.
Последовательность разблокировки может быть записана на C, если компилятор размещает две инструкции записи в последовательном порядке. Компилятор MPLAB ® XC16 предоставляет встроенную функцию записи NVM для выполнения этой последовательности программ. После выполнения последовательности программы встроенная запись NVM устанавливает WR, который инициирует запись во флэш-память.
Использование компилятора MPLAB
® XC16 CИспользование языка ассемблера
Справочное руководство по 16-разрядному микроконтроллеру PIC ® рекомендует, чтобы строка или слово во флэш-памяти программ не программировались дважды перед тем, как быть стертыми. Учитывая этот мандат на стирание перед программированием, обычно используется следующий поток приложений:
1
Скопируйте страницу для обновления в память данных
- Загрузите базовый адрес страницы флэш-памяти в TBLPAG.
- С помощью последовательных инструкций TBLRDH и TBLRDL скопируйте содержимое страницы флэш-памяти в ОЗУ данных. Следует соблюдать осторожность при копировании 24-битной флэш-памяти в 16-битную память данных. Одно слово флэш-памяти требует двух инструкций чтения (TBLRDH и TBLRDL). Эти две инструкции чтения вернут в общей сложности 32 бита данных.
Пример чтения страницы флэш-памяти
2
Обновление страницы в памяти данных
Страницы могут быть стерты только целиком. Это означает, что обновление даже одного слова флэш-памяти требует, чтобы вся страница была считана в оперативную память (ОЗУ), стерта во флэш-памяти, а затем перепрограммирована. В отличие от большинства реализаций электрически стираемой программируемой постоянной памяти (EEPROM), слова флэш-памяти не могут обновляться по отдельности.
3
Стереть страницу во флэш-памяти
- Загрузить базовый адрес стираемой страницы в адресные регистры NVM NVMADR и NVMADDRU. Базовый адрес — это модуль размера страницы. Для MCU с размером страницы 1024 младшие 10 бит адреса для всех адресов страницы будут равны «0». Убедитесь, что значение, помещенное в NVMADR, имеет правильный базовый адрес, маскируя соответствующее количество младших битов.
- Установите биты в NVMCON, чтобы разрешить запись и стирание страницы. MCU в этом примере требует значение 0x4003 для установки WREN и удаления страницы. Проверьте таблицу данных для установки битов в NVMCON используемого MCU.
- Отключить прерывания на время последовательности записи.
- Выполнить последовательность программы.
- Убедитесь, что WR установлен в течение двух командных циклов после завершения последовательности программирования. __builtin_write_NVM выдает последовательность программы, затем устанавливает WR.
4
Запрограммируйте новые данные во флэш-память
Чтобы записать флэш-память, вы должны сначала обратиться к техническому описанию используемой части, чтобы определить базовый адрес защелок записи. Эта информация обычно указывается в разделе карты памяти, а не в разделе флэш-памяти таблицы данных. В этом примере 0xFA000 — это базовый адрес защелок записи.
Запись строки флэш-данных
- Установите TBLPAG с битами <11:8> базового адреса защелок записи.
- Использование нескольких инструкций TBLWRTH и TBLWRTL перемещает данные из оперативной памяти в защелки данных.
- Загрузите в NVMADR и NVNADDRU базовый адрес строки флэш-памяти, в которую будет производиться запись.
- Установите разрешение записи (WREN) и биты, необходимые для записи строки в NVMCON.
- Выполнить последовательность программы.
- Установите WR в течение двух циклов после завершения последовательности программы.
Вернуться к началу
Как написать программу для прошивки микроконтроллеров PIC?
спросил
Изменено 11 лет, 6 месяцев назад
Просмотрено 4к раз
Я работаю над проектом, в котором мне нужно написать графический интерфейс с использованием С# для прошивки PIC 18f4550.
Я умею программировать прошивку с помощью c. Но это требует от меня более глубокого понимания механизма перепрошивки. Как мне подойти к этой проблеме? Есть ли какие-либо ресурсы, которые я могу использовать для начала?
Нужно ли мне создавать драйвер (ПК) для связи между PIC и ПК? На фото мне нужно изменить загрузчик, я думаю.
Спасибо за помощь.. Большое спасибо..
- микроконтроллер
- рис.
Это зависит от того, какой уровень вы подразумеваете под «прошивкой» PIC-контроллера.
Если у вас есть загрузчик на устройстве PIC, который имеет протокол для приема обновлений встроенного ПО, вам необходимо реализовать ПК на стороне этого протокола, используя любую доступную ссылку. Например, если загрузчик ищет прошивку с использованием протокола RS-232, вам необходимо реализовать серверную часть этого. Это будет зависеть от того, с каким программным обеспечением вы имеете дело в PIC и как PIC подключается к ПК. Если вы можете изменить загрузчик, вы можете реализовать соответствующий протокол на обоих концах для обновления программного обеспечения.
В случае загрузчика вам не понадобится драйвер устройства на стороне ПК, если только вы не имеете дело с каким-то эзотерическим интерфейсом. Я ожидаю, что обновление загрузчика на стороне ПК будет полностью в пользовательском режиме.
Если вы хотите прошить устройство, не беспокоясь о программном обеспечении в PIC, вам необходимо реализовать протоколы в спецификации программирования прошивки. Для этого вам потребуется соответствующее устройство на стороне ПК и программное обеспечение для управления этим устройством.
Поскольку вы используете PIC18F4550 с поддержкой USB, я рекомендую использовать загрузчик HID. В библиотеках приложений Microchip есть рабочие примеры, которые вы можете использовать в качестве основы для пользовательского интерфейса загрузчика встроенного ПО.
Пути к ПО и прошивке ПК в текущей версии (v2011-10-18):
\USB\Device - Bootloaders\HID\ \USB\Device - Bootloaders\HID\Firmware - PIC18 Non-J\
Загрузчик USB HID удобен тем, что позволяет прошивать устройство без специального оборудования, а Windows не требует установки драйверов/инф для HID устройств. Это удобный способ для ваших клиентов обновлять прошивку на месте.
1Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.