Осваиваем простейший микроконтроллер PIC. Часть 1 / Хабр
Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: PIC16F628A.Первым делом необходимо скачать документацию по выбранному микроконтроллеру. Достаточно зайти на сайт производителя и скачать Datasheet.
На первых страницах перечислены основные характеристики МК (русское описание).
Основные моменты, которые нам понадобятся:
- микроконтроллер содержит внутренний генератор на 4 MHz, так же можно подключить внешний кварц частотой до 20 MHz
- 16 ног микроконтроллера можно использовать как цифровые входы\выходы
- есть 2 аналоговых компаратора
- 3 таймера
- CCP модуль
- USART модуль
- 128 байт энергонезависимой памяти EEPROM
Схема расположения выводов:
Vdd — питание.
Vss — земля.
Это минимум, необходимый для работы МК.
Остаются доступными 16 ног МК. Не сложно посчитать, что использование каждой ноги каким-либо модулем уменьшает максимальное число используемых цифровых портов.
Компилятор
Как я уже писал в предыдущих статьях, самым простым и легким я посчитал компилятор JAL с IDE JALEdit.
Качаем JALPack, устанавливаем.
В этом паке содержаться все необходимые библиотеки, а так же примеры их использования.
Запускаем JALEdit. Открываем пример програмы для нашего микроконтроллера: 16f628a_blink.jal, дабы не портить исходник, сразу сохраняем ее в новый файл, к примеру, 16f628a_test.jal.
Весь код можно разделить на 4 блока:
- выбор МК и его конфигурация
include 16f628a -- подключение библиотеки нашего МК
--
-- This program assumes a 20 MHz resonator or crystal
-- is connected to pins OSC1 and OSC2.
pragma target clock 20_000_000 -- oscillator frequency
-- configuration memory settings (fuses)
pragma target OSC HS -- HS crystal or resonator
pragma target WDT disabled -- no watchdog
pragma target LVP disabled -- no Low Voltage Programming
pragma target MCLR external -- reset externally
--
- объявление переменных, процедур, функций
alias led is pin_A0
pin_A0_direction = output
- выполнение настроек и расчетов до основного цикла
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
- бесконечный цикл основных действий МК
forever loop
led = on
_usec_delay(250000)
led = off
_usec_delay(250000)
end loop
Нажав F9 (или соответсвующую кнопку) программа скомпилируется в готовую прошивку, при этом будет видно сколько ресурсов МК будет задействовано:
Code :58/2048 Data:4/208 Hardware Stack: 0/8 Software Stack :80
Если прочитать комментарии, то станет ясно, что данная программа рассчитана на использование внешнего кварца 20MHz.
Так как у нас его пока нет, разберемся с конфигурацией и перепишем программу на использование внутреннего генератора.
Конфигурация
В разных микрокотнролерах существуют различные наборы конфигурационных битов. Узнать о назначении каждого бита можно в даташите (стр. 97).
В подключенной библиотеке каждому биту и каждому его значению присвоена читабельная переменная, остается только выбрать необходимые нам параметры.
-- Symbolic Fuse definitions
-- -------------------------
--
-- addr 0x2007
--
pragma fuse_def OSC 0x13 { -- oscillator
RC_CLKOUT = 0x13 -- rc: clkout on ra6/osc2/clkout, rc on ra7/osc1/clkin
RC_NOCLKOUT = 0x12 -- rc: i/o on ra6/osc2/clkout, rc on ra7/osc1/clkin
INTOSC_CLKOUT = 0x11 -- intosc: clkout on ra6/osc2/clkout, i/o on ra7/osc1/clkin
INTOSC_NOCLKOUT = 0x10 -- intosc: i/o on ra6/osc2/clkout, i/o on ra7/osc1/clkin
EC_NOCLKOUT = 0x3 -- ec
HS = 0x2 -- hs
XT = 0x1 -- xt
LP = 0x0 -- lp
}
pragma fuse_def WDT 0x4 { -- watchdog timer
ENABLED = 0x4 -- on
DISABLED = 0x0 -- off
}
pragma fuse_def PWRTE 0x8 { -- power up timer
DISABLED = 0x8 -- disabled
ENABLED = 0x0 -- enabled
}
pragma fuse_def MCLR 0x20 { -- master clear enable
EXTERNAL = 0x20 -- enabled
INTERNAL = 0x0 -- disabled
}
pragma fuse_def BROWNOUT 0x40 { -- brown out detect
ENABLED = 0x40 -- enabled
DISABLED = 0x0 -- disabled
}
pragma fuse_def LVP 0x80 { -- low voltage program
ENABLED = 0x80 -- enabled
DISABLED = 0x0 -- disabled
}
pragma fuse_def CPD 0x100 { -- data ee read protect
DISABLED = 0x100 -- disabled
ENABLED = 0x0 -- enabled
}
pragma fuse_def CP 0x2000 { -- code protect
DISABLED = 0x2000 -- off
ENABLED = 0x0 -- on
}
- OSC — конфигурация источника тактирования
может принимать 8 различных значений, 4 из которых нам могут понадобиться
- INTOSC_NOCLKOUT — внутренний генератор (4M Hz)
- HS — внешний высокочастотный кварц (8-20 MHz)
- XT = внешний кварц (200 kHz — 4 MHz)
- LP — внешний низкочастотный кварц (до 200 kHz)
- WDT — сторожевой таймер.
Основная работа этого таймера в том, что бы перезагрузить микроконтроллер когда он дотикает до конца.
Что бы перезагрузки не происходило, его нужно своевременно обнулять.
Таким образом при сбое счетчик таймера перестанет обнуляться, что приведет к сбросу МК. Иногда бывает удобно, но в данный момент нам это не потребуется. - PWRTE — очередной таймер.
При активации он будет сбрасывать МК до тех пор, пока питание не поднимется до нужного уровня. - BROWNOUT — сброс МК при падении питания ниже нормы.
- MCLR — активация возможности внешнего сброса МК.
При включении функции МК будет в постоянном резете до тех пор, пока на ноге MCLR (pin 4) не будет положительного напряжения.
Для сброса МК достаточно установить кнопку, замыкающую pin 4 на землю.
- LVP — активация возможности программирования при низком напряжении.
При активации один цифровой вход переключится в режим LVP (pin 10). Если подать 5В на эту ногу, то МК перейдет в режим программирования. Для нормальной работы МК требуется держать на этой ноге 0В (подсоединить к земле). - CPD — защита EEPROM от считывания программатором.
- CP — защита FLASH (прошивки) от считывания программатором.
Изменим конфигурацию под себя:
pragma target clock 4_000_000 -- указываем рабочую частоту, необходимо для некоторых функций расчета времени
-- конфигурация микроконтроллера
pragma target OSC INTOSC_NOCLKOUT -- используем внутренний генератор
pragma target WDT disabled -- сторожевой таймер отключен
pragma target PWRTE disabled -- таймер питания отключен
pragma target MCLR external -- внешний сброс активен
pragma target BROWNOUT disabled -- сбос при падении питания отключен
pragma target LVP disabled -- программирование низким напряжением отключено
pragma target CPD disabled -- защита EEPROM отключена
pragma target CP disabled -- защита кода отключена
Моргаем светодиодом по нажатию кнопки
Модифицируем программу так, что бы светодиод моргал только тогда, когда зажата кнопка.
Решив данную задачу мы научимся работать с цифровыми портами как в режиме входа, так и в режиме выхода.
Цифровой выход
В режиме цифрового выхода МК может притягивать к ноге либо питание, либо землю.
Подключать нагрузку можно как к плюсу, так и к минусу. Разница будет лишь в том, когда и в какую сторону потечет ток.
В первом случае ток потечет от МК при установке единицы, а во втором — к МК при установке нуля.
Дабы светодиод зажигался от логической единицы, остановимся на первом варианте.
Для ограничения тока через ногу (максимально допустимо 25 мА на цифровой вход или 200 мА на все порты) установлен токоограничительный резистор. По простейшей формуле высчитываем минимальное значение в 125 Ом. Но так как предел нам не нужен, возьмем резистор в 500 Ом (а точнее ближайший подходящий).
Для подключения более мощной нагрузки можно использовать транзисторы в различных вариантах.
Цифровой вход
Возьмем вторую неиспользуемую нигде ногу — RB4 (pin 10, указанная в распиновке функция PGM отностися к LVP, который мы отключили).
В режиме цифрового входа микроконтроллер может считывать два состояния: наличие или отсутствие напряжения. Значит нам необходимо подключить кнопку так, что бы в одном состоянии на ногу шел плюс, а во втором состоянии — к ноге подключалась земля.
В данном варианте резистор используется в качестве подтяжки (Pull-up). Обычно для подтяжки применяют резистор номиналом 10 кОм.
Впрочем, подтягивающий резистор не всегда необходим. Все ноги PORTB (RB0-RB7) имеют внутреннюю подтяжку, подключаемую программно. Но использование внешней подтяжки куда надежнее.
Можно подключать не только кнопку, главное помнить о ограничении тока через МК.
Кнопка сброса
Пока не забыли, что мы активировали внешний сброс, добавим аналогичную кнопку на ногу MCLR (pin 4).
После нажатия такой кнопки МК начнет выполнение программы с нуля.
Прошивка
Присваиваем нашему светодиоду и кнопке переменные:
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
alias button is pin_B4 -- кнопка подключена к RB4
pin_B4_direction = input -- настраиваем RB4 как вход
led = off -- выключаем светодиод
Теперь присваивая переменной led значения 1 или 0 (on или off, true или false, другие алиасы..) мы будем подтягивать к нужной ноге МК или плюс, или минус, тем самым зажигая и гася светодиод, а при чтении переменной button мы будем получать 1 если кнопка не нажата и 0 если кнопка нажата.
Теперь напишем необходимые нам действия в бесконечном цикле (эти действия будут выполняться постоянно. При отсутствии бесконечного цикла МК зависнет):
forever loop
led = off -- выключаем светодиод
_usec_delay(500000) -- ждем 0,5 сек
if Button == 0 then -- если кнопка нажата, выполняем действия
led = on -- зажигаем светодиод
_usec_delay(500000) -- ждем 0,5 сек
end if
end loop
Задержка считается просто:
частота генератора у нас 4MHz. Рабочая частота в 4 раза меньше: 1 MHz. Или 1 такт = 1 мкс. 500.000 мкс = 0,5 с.
Компилируем прошивку:
Errors :0 Warnings :0
Code :60/2048 Data:4/208 Hardware Stack: 0/8 Software Stack :80
Теперь нам необходимо записать эту прошивку в МК, собрать устройство согласно схеме и проверить, что у нас все получилось как надо.
Программатор
Все таже схема:
Смотрим на распиновку:
- PGD — pin 13
- PGC — pin 12
- MCLR(Vpp) — pin 4
- Vdd — pin 14
- Vss — pin 5
Паяем…
Некачественная пайка — одна из основных проблем неработоспособности устройства.
Не повторяйте мои плохие привычки: не используйте навесной монтаж.
В качестве питания 5В в данном случае использовался хвост от старой PS/2 мыши, вставленный в разъем для мыши.
Подключаем к компьютеру.
Качаем и запускаем WinPic800.
Идем в Settings->Hardware, выбираем JDM и номер порта, на котором висит программатор
Нажимаем Hardware Test, затем Detect Device
Открываем нашу прошивку pic628a_test.hex
На вкладке Setting можно проверить, что конфигурационные биты выставлены верно, при желании тут же их можно изменить
Program All, затем Verify All
Если ошибок не возникло, продолжаем паять.
Результат
Финальная схема:
От программатора нам мешает только высокое напряжение (12в) на MCLR. Дабы не отпаивать весь программатор, можно отпаять только один провод… Или просто не подключать программатор к COM порту. Остальные провода нам мешать не будут (а подключенные питание и земля только упростят пайку).
Кнопку на MCLR паять можно по желанию, но подтяжка обязательна.
При повторном подключении программатора резистор необходимо будет убрать, иначе он подтянет 12в к питанию.
Результат работы можно увидеть на видео.
Итак, у нас получилось самое простое устройство на микроконтроллере: мигалка светодиодом.
Теперь нам необходимо научиться пользоваться всей оставшейся периферией, но об этом в следущей статье.
Обход встроенной защиты PIC-микроконтроллеров / Хабр
В комментариях к недавнему топику о вскрытии процессора была упомянута статья о том, как удалось обойти встроенную защиту от чтения прошивки микроконтроллера (т.н. Fuse-биты). Мне она понравилась, ниже — перевод с некоторыми дополнениями и пояснениями.Взлом МК PIC18F1320
Я подумал, что было бы неплохо попробовать что-нибудь из тех техник взлома микроконтроллеров семейства PIC, о которых я слышал. Обычно PIC-микроконтроллеры имеют некоторое количество так называемых fuse-бит, которые служат для защиты от чтения или модификации каких-то частей памяти. Однако бывают случаи, когда возникает необходимость прочитать содержимое уже запрограммированного и защищенного контроллера (на законных основаниях). Типичный пример — потеря компанией технической документации на устройство, либо увольнение тех людей, которые изначально разрабатывали защищенную прошивку микроконтроллера. Такое так же часто случается, когда компания хочет обновить линейку своих продуктов.
Ну, сами понимаете, есть еще некоторые ситуации, когда такие навыки могут пригодиться.
Я купил четыре PIC18F1320 и начал их мучать. Вот так выглядит PIC18F1320 в первозданном, не раскуроченном виде:
Первое, что предстоит сделать, это внять верхнюю часть корпуса, чтобы стали доступны кремниевые внутренности микроконтроллера. Хотя существует достаточно много любительских способов сделать это, но обычно они основаны на применении азотной или серной кислоты. Во-первых, это, скорее всего, не те вещи, которые вы очень хотите видеть рядом с собой. Во-вторых, их непросто достать, поскольку, например, азотная кислота является одним из компонентов для изготовления взрывчатых веществ. Я решил, что самый простой и надежный способ — отправить микроконтроллеры в лабораторию анализа отказов, такую как MEFAS, и за $50 и 2 дня получить на руки уже «обезглавленные» компоненты. Для этого проекта я удалил компаунд с трех микроконтроллеров. Два из них остались полностью рабочими, а один лишился корпуса полностью, т.е. остался только сам чип. Это было продиктовано конструктивными особенностями моего микроскопа при больших увеличениях.
Недолгое обследование поверхности чипов позволило выявить некоторые характерные участки микроконтроллера, показанные ниже:
Видны (по часовой стрелке): 8 KB flash-памяти, источник опорного напряжения, зарядовый насос для программирования flash/EEPROM памяти, 256 байт EEPROM памяти, втроенные таймеры и цепи тактирования, вычислительное ядро, ПЗУ с микрокодом, массив с fuse-битами, 256 байт ОЗУ, АЦП. (
было бы очень интересно узнать, как он все это определил по внешнему виду
)Одна структура сразу привлекла мое внимание: ряд металлических экранов над транзисторами, которые располагались в правильном порядке, и количество которых совпадало с количеством fuse-бит. Полное перекрытие элементов металлическими экранами на кремниевых кристаллах встречается очень редко, и само собой такие элементы привлекают к себе внимание, т.к. содержат что-то крайне важное.
Немного подумаем об этих металлических экранах. Для чего они нужны? Во-первых, вспомним некоторые интересные факты о технологии flash (этот тип памяти применяется в том числе и в PIC-микроконтроллерах для хранения fuse-бит). Flash-технология подразумевает использование транзисторов с плавающим затвором, очень похожие на те, что применялись в старых микросхемах ПЗУ с ИФ-стиранием (вы же помните 2616-е в керамическом корпусе и с кварцевым стеклом?). И во flash, и в УФ-ППЗУ данные сохраняются путем инжектирования электронов на плавающий затвор при помощи тоннельного эффекта, где эти электроны могут находиться десятилетиями. Дополнительные электроны в плавающем затворе создают заметные изменения в характеристиках транзистора. Разница заключается в том, что во flash-памяти для стирания информации достаточно электрических импульсов, в то время как в УФ-ППЗУ для того чтобы «выгнать» электроны с плавающего затвора необходимы фотоны с высокой энергией. Для этого необходим ультрафиолет с длинной волны примерно 250 нм. Для того, чтобы УФ-излучение не слишком сильно ослабевало, применяются кварцевые стекла (те самые окошечки на старых микросхемах ПЗУ).
Важный вывод, который можно сделать из вышеуказанных фактов: flash память тоже может быть стерта при помощи УФ-излучения, т.к. она имеет практически ту же транзисторную структуру, что и УФ-ППЗУ устройства. Корпус устройств с flash-памятью обычно мешает попаданию ультрафиолета на поверхность кристалла, но так как наш PIC микроконтроллер теперь лишен пластиковой верхушки корпуса, то мы может применить УФ-излучение и посмотреть, что из этого выйдет.
Я провел эксперимент, в котором запрограммировал PIC-контроллер последовательными значениями от 0x00 до 0xFF, и затем проэкспонировал его в моем УФ-ППЗУ стирателе, пока принимал душ и проверял почту.
Когда я извлек контроллер из стирателя, то обнаружил, что flash-память действительно была очищена и вернулась в изначальное состояние (все значения 0xFF), и что защитные fuse-биты так же были деактивированы. Так же следует учитывать, что УФ-излучение действует и на EEPROM-память.
Ясно, что металлические пластины над защитными fuse-битами как раз служат защитой от того, чтобы сбросить их отдельно от flash-памяти программ.
Картинка иллюстрирует проблему (и ее решение), с которой я столкнулся. Для того чтобы стереть информацию на транзисторе flash-памяти, сильное УФ-излучение должно достигать его плавающего затвора. А металлические экраны препятствуют этому, эффективно отражая УФ-лучи.
Однако, благодаря разности между коэффициентами преломления света для оксида и кремния, свет, падая под некоторым углом, будет отражаться от его поверхности. Чтобы получше понять этот эффект можете прыгнуть в бассейн и посмотреть на воду почти на уровне глаз. Вода будет обладать очень хорошей отражательной способностью как раз из-за разницы коэффициентов преломления воды и воздуха. Это называется полное внутреннее отражение.
Это отражение как раз можно использовать, чтобы заставить УФ-излучение отражаться от металлической поверхности экрана и падать обратно на плавающий затвор транзистора. Итак, поворачивая PIC-микроконтроллер внутри ПЗУ-стирателя, я могу направить достаточно света для того чтобы он, отразившись в области транзистора flash-памяти, вызвал его стирание. После нескольких попыток я разработал технологию, которая кажется работает вполне неплохо.
Это фото микроконтроллера внутри ПЗУ-стирателя (синее свечение вокруг контроллера обусловлено работой УФ-лампы). Микроконтроллер закреплен под углом в антистатическом материале.
Но все это не может защитить от стирания нужных данных в той части flash-памяти, где хранится программа микроконтроллера. Для того чтобы предотвратить стирание этих данных используется сплошная маска, которая была очень аккуратно вырезана из изоленты и прикреплена к кристаллу с помощью двух пинцетов, микроскопа и недрогнувшей руки ) Изолента эффективно блокирует прохождение ультрафиолета, тем самым защищая закрытую область памяти от стирания, а так же поглощает отраженный от кремниевой подложки ультрафиолет.
Это фото кристалла с прикрепленной маской над областью flash-памяти.
Используя эту технику я наконец смог сбросить защитные fuse-биты без стирания основной программы микроконтроллера. Этим же способом можно стирать только некоторую часть flash-памяти. Ура!
Замечания
Очевидно, что описанный способ подходит только для тех устройств, которые содержат перепрограммируемые fuse-биты. Если биты защиты программируются лишь однократно (а такое бывает), то такая методика не подходит. В этих устройствах просто пережигаются тонкие проводники на кристалле. Однако мой коллега сказал, что и на этот случай разработаны свои методы борьбы (я думаю, восстанавливают контакт каким-то схожим микрохирургическим образом). Знаю так же, что эта операция стоит ой как недешево.
Так же хочется заметить, что во всенародно любимых микроконтроллерах AVR fuse-биты имеют похожую структуру (точно так же перепрограммируются), что позволяет надеяться, что описанная методика пригодна и для них!
UPD: исправил по возможности огрехи перевода (про ширину запрещенной зоны, магнитную ленту и способ заполнения памяти контроллера).
UPD 2: эта же тема, но для микроконтроллеров AVR, затрагивается здесь и здесь. Вот тут можно заказать чтение прошивки и даже купить спец. приборы.
Оригинал статьи тут.
PIC программатор микроконтроллеров фирмы MicroChip
В настоящее время появилось много принципиальных схем с использованием различных микроконтроллеров, в том числе и микроконтроллеров PIC фирмы MicroChip. Это позволило получить достаточно функциональные устройства, несмотря на их простоту.
Но работа микроконтроллера невозможна без программы управления, которую необходимо записать. В данной статье мы рассмотрим универсальный программатор PIC — EXTRA-PIC позволяющий программировать PIC контроллеры и память EEPROM I2C через COM порт либо через переходник COM-USB.
Список поддерживаемых микросхем, при использовании с программой IC-PROG v1.05D:
PIC-контроллеры фирмы Microchip: PIC12C508, PIC12C508A, PIC12C509, PIC12C509A, PIC12CE518, PIC12CE519, PIC12C671, PIC12C672, PIC12CE673, PIC12CE674, PIC12F629, PIC12F675, PIC16C433, PIC16C61, PIC16C62A, PIC16C62B, PIC16C63, PIC16C63A, PIC16C64A, PIC16C65A, PIC16C65B, PIC16C66, PIC16C67, PIC16C71, PIC16C72, PIC16C72A, PIC16C73A, PIC16C73B, PIC16C74A, PIC16C74B, PIC16C76, PIC16C77, PIC16F72, PIC16F73, PIC16F74, PIC16F76, PIC16F77, PIC16C84, PIC16F83, PIC16F84, PIC16F84A, PIC16F88, PIC16C505*, PIC16C620, PIC16C620A, PIC16C621, PIC16C621A, PIC16C622, PIC16C622A, PIC16CE623, PIC16CE624, PIC16CE625, PIC16F627, PIC16F628, PIC16F628A, PIC16F630*, PIC16F648A, PIC16F676*, PIC16C710, PIC16C711, PIC16C712, PIC16C715, PIC16C716, PIC16C717, PIC16C745, PIC16C765, PIC16C770*, PIC16C771*, PIC16C773, PIC16C774, PIC16C781*, PIC16C782*, PIC16F818, PIC16F819, PIC16F870, PIC16F871, PIC16F872, PIC16F873, PIC16F873A, PIC16F874, PIC16F874A, PIC16F876, PIC16F876A, PIC16F877, PIC16F877A, PIC16C923*, PIC16C924*, PIC18F242, PIC18F248, PIC18F252, PIC18F258, PIC18F442, PIC18F448, PIC18F452, PIC18F458, PIC18F1220, PIC18F1320, PIC18F2320, PIC18F4320, PIC18F4539, PIC18F6620*, PIC18F6720*, PIC18F8620*, PIC18F8720*
Примечание: микроконтроллеры, которые отмечены звездочкой (*) необходимо подключить к программатору через ICSP разъем.
Последовательная память EEPROM I2C (IIC): X24C01, 24C01A, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, AT24C128, M24C128, AT24C256, M24C256, AT24C512.
Непосредственно сама схема программатора EXTRA-PIC:
Программатор PIC микроконтроллеровуниверсальный программатор для PIC…
В качестве источника питания можно использовать стабилизатор напряжения построенный на микросхеме LM317.
Программатор (1,5 MiB, скачано: 11 162)
Программируемый контроллер подключается через разъем X3. Ниже приведена распиновка выводов программирования под разные контроллеры:
А теперь инструкция как запрограммировать микроконтроллер.
В виде примера возьмем микроконтроллер PIC16F876A.
Соберите программатор и подготовьте блок питания с напряжением на выходе не менее 15В
Программа icpr105d (1,6 MiB, скачано: 8 905)
Распакуйте программу в отдельный каталог. В созданном каталоге должны находиться три файла:
icprog.exe — файл оболочки программатора;
icprog.sys — драйвер, необходимый для работы под Windows NT, 2000, XP. Этот файл всегда должен находиться в каталоге программы;
icprog.chm — файл помощи (Help file).
Настройка программы IC-PROG v1.05D.
Для Windows95, 98, ME | Для Windows NT, 2000, XP |
(Только для Windows XP ): Правой кнопкой щёлкните на файле icprog.exe. «Свойства » >> вкладка «Совместимость » >> Установите «галочку» на «Запустить программу в режиме совместимости с: » >> выберите «Windows 2000 «. | |
| |
«Настройки » >> «Программатор «. Проверьте установки, выберите используемый вами COM-порт, нажмите «Ok «. | |
Далее, «Настройки » >> «Опции » >> выберите вкладку «Общие » >> установите «галочку» на пункте «Вкл. NT/2000/XP драйвер » >> Нажмите «Ok » >> если драйвер до этого не был установлен в системе, в появившемся окне «Confirm » нажмите «Ok «. Драйвер установится, и оболочка программатора перезапустится. | |
Примечание: Для очень «быстрых» компьютеров возможно потребуется увеличить параметр «Задержка Ввода/Вывода «. Увеличение этого параметра увеличивает надёжность программирования, однако, увеличивается и время, затрачиваемое на программирование микросхемы. | |
«Настройки » >> «Опции » >> выберите вкладку «I2C » >> установите «галочки» на пунктах:»Включить MCLR как VCC » и «Включить запись блоками «. Нажмите «Ok «. | |
Программа готова к работе. |
Установите микросхему в панель программатора, соблюдая положение ключа.
Подключите шнур удлинителя, включите питание.
Запустите программу IC-PROG.
В выпадающем списке выберите контроллер PIC16F876A.
Если у вас нет файла с прошивкой — подготовьте его:
откройте стандартную программу «Блокнот»;
вставьте в документ текст прошивки;
сохраните под любым именем, например, prohivka.txt (расширение *.txt или *.hex).
Далее в IC-PROG Файл >> Открыть файл (! не путать с Открыть файл данных ) >> найти наш файл с прошивкой (если у нас файл с расширением *.txt , то в типе файлов выберите Any File *.* ). Окошко «Программного кода» должно заполнится информацией.
Нажимаем кнопку «Программировать микросхему» (загорается красный светодиод).
Ожидаем завершения программирования (около 30 сек.).
Для контроля нажимаем «Сравнить микросхему с буфером».
Программатор для PIC-контроллеров — МОПЕДИСТ.ру
Описываемый программатор очень пригодился при программировании контроллеров 12F683 для зажигания. Первоначальная схема мной взята отсюда, но т.к. у меня уже был стабилизированный блок питания 12 вольт от зарядного устройства, а также отсутствовала необходимая для исходной схемы микросхема стабилизатора с управлением 78R12C, то я немного переделал исходную схему.Схема моего программатора:
(На схеме нарисован полевой транзистор IRF4905 и с ним будет прекрасно работать, но я у себя поставил 2SJ598 из-за его меньших размеров)
Соответственно, нарисовал свою печатную плату:
По просьбам трудящихся убрал «лишнее» с платы и добавил этот сокращенный вариант в файл:
Скачать файл с этими печатными платами.
Из схемы тоже убрал лишние панельки.
Самое интересное, что даже урезанной версией можно будет программировать 14-ти ногие микросхемы, т.к. их можно легко воткнуть в 8-ми ногую панельку, а те выводы, которые будут болтаться в воздухе все-равно не используются при программировании.
А так выглядит уже готовый программатор:
Кабель распаян чисто как удлинитель и в качестве провода использован двух-метровый 10-ти жильный шлейф, из которых 9 идут на контакты, а десятая жилка соединяет корпуса разъемов. Автор программатора заострял внимание, что надо корпуса соединить между собой и подключить этот же контакт на общий провод схемы.
А вот мини-версия программатора:
Схема с блоком питания(добавлен стабилизатор L7812):
Стабилизатор на плате разместился без переразводки. Просто разрезал дорожку 12 вольт, которая идет к стоку полевика и выводы удачно припаялись к дорожкам. Также спаял вместе корпуса VR1 и добавленного VR3.
При создании самого программатора ничего интересного, т.е. просто собрал по схеме, а вот о переделке блока питания для него чуть подробнее.
Кинулся, а дома ни каких подходящих блоков питания на 12 вольт не нашлось, но зато в наличии куча зарядок от всяких девайсов. Разобрал несколько зарядок и самой подходящей показалась от Нокии AC-8E. Схемы в интернет не нашлось, но особо это не расстроило. Принцип работы у всех почти одинаков, т.е. надо было просто поиграть обратной связью. В данном случае за стабилизацию отвечает стабилитрон на 5,6 вольта. Попробовал просто поменять на 12 вольтовый, получилась фигня. Где-то видимо есть еще контроль от перегрузки и напряжение выше 8-ми вольт не выдается. Ладно, тогда пойдем другим путем — просто домотаем трансформатор.
Плата с выпаянным трансформатором:
Разобрал трансформатор. Кстати, разбирается он, как и в энергосберегающих лампочках, при помощи нагрева паяльником сердечника. В трансформаторе обнаружились две вторичные обмотки по 6 витков в один слой(первичную не трогал). Провод оказался по меди диаметром 0,5 мм, но покрыт какой-то толстой оболочкой, т.е. толщиной 0,7 мм.
Смотал эти витки и намотал в два слоя тоже две обмотки новым проводом 0,5 мм по 13 витков. Собрал, склеил суперклеем. Сначала поставил стабилитрон на 12 вольт, но на выходе оказалось 13,75 вольт, видимо, из-за необходимого напряжения для открытия оптрона+ напряжение стабилитрона. Тогда поменял стабилитрон на 13 вольтовый и на выходе стало почти 15 вольт и при таком раскладе ток до 200 mA держит спокойно. Осталось только для получения 12 вольт прямо на программаторе поставить L7812. Попробовал прошить микросхемы — работает отлично.
Для работы с программатором использую beta версию WinPICPgm Programmer, у которого есть некоторая особенность, что он иногда «не видит» программатор. Чтобы он его «увидел», необходимо зайти в Hardware->Hardware Selection/Configuration и выбрать JDM Programmer и нажать OK. Бывает, что уже стоит JDM Programmer при включении программы, но программатор не определяется. В этом случае опять зайти в меню выбора программатора и выбрать Autodetect Programmer и нажать OK, после чего зайти туда же еще раз и выбрать JDM Programmer. В том же меню надо установить инверсию сигналов Clock, Data in и Data out.
ЗЫ. Вопрос о переделке зарядок на другие напряжения встречается в интернет очень часто, но решений как правило предлагают очень мало, т.к. без схемы в основном разводят руками. Так что вот одно из решений без схемы. 🙂
Watcher | Глобальный веб-сайт Sky-Watcher
Программа Windows: загрузчик микропрограмм контроллера двигателя, версия 1.74
Это приложение используется для обновления прошивки контроллера мотора крепления Skywatcher GO-TO, с ручным управлением SynScan, запрограммированным с помощью прошивки SynScan Relay, USB-ключом SynScan или ручным контроллером SynScan, работающим в режиме PC-Direct.
Скачать Размер: 1056 КБ | 23-08-2019 | Контроллеры двигателейПрограмма для Windows: Загрузчик микропрограмм контроллера двигателя — WiFi, версия 1.74
Это приложение используется для обновления микропрограммы контроллера мотора держателя телескопа Skywatcher, который имеет встроенный модуль Wi-Fi или внешний Wi-Fi-ключ SynScan.
Скачать Размер: 926 КБ | 23-08-2019 | Контроллеры двигателей Прошивка: универсальный драйвер шагового двигателя со встроенным USB-портом, версия 3.07
Эта прошивка предназначена для байонетов EQ6-R, AZ-EQ6 и EQ8-R / EQ8-RH, которые имеют встроенный порт USB типа B.
Скачать 31-10-2019 | Контроллеры двигателей Прошивка: универсальный драйвер двигателя постоянного тока со встроенным Wi-Fi, версия 3.22
Прошивка контроллера мотора для креплений AZ-GTi, AZ-GTe, Dob GOTO (с Wi-Fi) и Star Discovery (с Wi-Fi).
Скачать Размер: 38 КБ | 09-08-2020 | Контроллеры двигателей Прошивка: универсальный драйвер двигателя постоянного тока со встроенным Wi-Fi, версия 3.20
Прошивка контроллера мотора для креплений AZ-GTi, AZ-GTe, Dob GOTO (с Wi-Fi) и Star Discovery (с Wi-Fi).
Скачать Размер: 30 КБ | 30-08-2019 | Контроллеры двигателей Прошивка: крепление AZGTi, правая рука, двойной режим AZ / EQ, версия 3.22
Эта прошивка предназначена для установки телескопа с правой стороны крепления AZ-GTi (или AZ-GTe), когда телескоп направлен вперед. Предупреждение: обратите внимание, что байонет AZ-GTi (или Az-GTe) не предназначен для астрофотографии. В этой версии прошивки мы включаем опцию управления монтировкой в экваториальном режиме для опытных клиентов, которые хотят изучить весь потенциал креплений AZ-GTi (или AZ-GTe) и повеселиться. Производительность астрофотографии не гарантируется, и средний покупатель может столкнуться с проблемами при получении ожидаемого результата.
Скачать Размер: 38 КБ | 09-08-2020 | Контроллеры двигателей Прошивка: крепление AZGTi, правая рука, двойной режим AZ / EQ, версия 3.20
Эта прошивка предназначена для установки телескопа с правой стороны крепления AZ-GTi (или AZ-GTe), когда телескоп направлен вперед. Предупреждение: обратите внимание, что байонет AZ-GTi (или Az-GTe) не предназначен для астрофотографии. В этой версии прошивки мы включаем опцию управления монтировкой в экваториальном режиме для опытных клиентов, которые хотят изучить весь потенциал креплений AZ-GTi (или AZ-GTe) и повеселиться.Производительность астрофотографии не гарантируется, и средний покупатель может столкнуться с проблемами при получении ожидаемого результата.
Скачать Размер: 30 КБ | 30-08-2019 | Контроллеры двигателейПрошивка: Skyliner Series Dobsonian GO-TO Mounts, версия 2.09
Для креплений Добсона GOTO от 8 до 16 дюймов. Поддержка отключения дополнительных энкодеров.
Скачать Размер: 5 КБ | 25-06-2018 | Контроллеры двигателейПрошивка: AZ-EQ5 Mount, версия 3.01
ВЫШЕЛ 2015.8,10
Скачать Размер: 17 КБ | 21-02-2018 | Контроллеры двигателейПрошивка: EQ8 Mount, версия 2.11
Для крепления EQ8 без встроенного порта USB типа B.
Скачать Размер: 10 КБ | 18-10-2019 | Контроллеры двигателейПрошивка: AZ-EQ6 и EQ6-R Mount, версия 2.11
Для креплений AZ-EQ6 и EQ6-R без встроенного порта USB типа B.
Скачать Размер: 10 КБ | 18-10-2019 | Контроллеры двигателейПрошивка: ALLVIEW Mount, версия 2.14
Это обновление микропрограммы контроллера мотора (версия 2.14) для крепления AllView. Программа загрузчика прошивки и инструкция по обновлению прошивки включены.
Скачать Размер: 343 КБ | 21-02-2018 | Контроллеры двигателейПрошивка: EQ3 / EQ5 GO-TO Mounts, версия 2.04
Для креплений EQ3, EQ5 Pro GOTO.
Скачать Размер: 5 КБ | 06-11-2018 | & nbs.FUSION Pro Controller (выпуск 2019)
** ЭТО ОБНОВЛЕНИЕ ТОЛЬКО ДЛЯ КОНТРОЛЛЕРОВ FUSION PRO! **
Выполните следующие шаги, чтобы обновить прошивку на контроллере FUSION Pro
Шаг первый. Загрузка и установка прошивки для ПК с Windows
- Нажмите здесь, чтобы загрузить программу обновления прошивки для Windows 10
- Запустите Fusion_Pro_Update_v124_PC.exe и следуйте инструкциям ниже
- Подключите контроллер Fusion к любому открытому USB-порту на вашем ПК.
- Если вы впервые подключаете контроллер к компьютеру, вы можете получить уведомление о настройке устройства Windows — это нормально. Дайте устройству завершить процесс автоматической настройки, прежде чем переходить к следующему шагу.
- Если вы получили указанное ниже уведомление, нажмите «Подробнее», затем нажмите «Все равно выполнить».
4.Появится следующее окно программы обновления. Нажмите «Обновить», чтобы начать процесс обновления
5. По завершении вы увидите уведомление «Обновление успешно», чтобы предупредить вас об успешном обновлении прошивки.
6. Теперь вы можете перейти к шагу 2, чтобы выполнить необходимую последовательность калибровки.
- Если обновление не удалось, отключите контроллер и повторите шаги 3-5 выше
Шаг 2.Калибровка контроллера
После успешного обновления прошивки контроллера требуется калибровка для обеспечения оптимальной точности и быстродействия. ВНИМАТЕЛЬНО просмотрите и следуйте приведенной ниже последовательности:
1) Отсоедините USB-кабель от ПК с Windows (оставьте кабель подключенным к контроллеру FUSION Pro)
2) Убедитесь, что оба триггерных фиксатора установлены в положение T3.
3) Одновременно нажмите и удерживайте кнопки Nexus, Меню и Просмотр.Удерживая три кнопки нажатыми, снова подключите USB-кабель к USB-порту ПК с Windows
.4) После подключения светодиод под кнопкой Nexus будет быстро мигать, показывая, что контроллер успешно перешел в режим калибровки. Теперь вы можете отпустить три кнопки
5) Поверните оба аналоговых джойстика по часовой стрелке на три (3) полных оборота
6) Нажмите оба триггера одновременно на максимальное расстояние и отпустите три (3) раза
7) Нажмите одновременно кнопки «D-PAD Down» и «Y», чтобы сохранить настройки и выйти из режима калибровки.
8) Калибровка завершена
а.Если калибровка не удалась, повторите шаги 1-7 выше
.Если какой-либо из описанных выше шагов не увенчался успехом после нескольких попыток, откройте заявку в службу поддержки здесь.
.NACON GAMING MyNACON | Поддержка, Загрузки, FAQ, Справочная форма | НАКОН ©
Упаковка
Arcade Stick и официальная гарнитура PS4 V3
DAIJA Arcade Stick + коммуникатор моногарнитура
Контроллер PS4 и комплект гарнитуры RIG
Комплект гарнитуры RPC3 и RIG500PROHS
Комплект гарнитуры RUPC и RIG500PROHS
КОНТРОЛЛЕРЫ
Выберите контроллер, для которого вам нужна помощь.
МЫШЕЙ
Выберите мышь, для которой требуется помощь.
GM-110
GM-300
КЛАВИАТУРЫ
Выберите клавиатуру, для которой требуется помощь.
CL-700OM
CL-750OM
АУДИО
Выберите аудиопродукт, по которому вам требуется помощь.
GA-200
GH-300SR
УСТАНОВКА 800HS
RIG500PROHS NACON ИЗДАНИЕ
ИГРОВЫЕ КРЕСЛА
ИГРОВОЙ СТУЛ CH-300
ИГРОВОЙ СТУЛ CH-350
АКСЕССУАРЫ
Выберите аксессуар, для которого вам нужна помощь.
КОНТРОЛЛЕР РЕВОЛЮЦИИ КОРПУСА EVA
ММ-400
.Обновление прошивки контроллера
Пожалуйста, выберите ваше местоположение
Таиланд
Австралия
Österreich
Бельгия
Канада
Канада — Français
中国
Česká republika
Дания
Deutschland
Франция
Гонконг
Исландия
Индия
Ирландия
Италия
日本
Корея
Латвия
Lietuva
Lëtzebuerg
Малайзия
Мальта
Мексика
Nederland
Новая Зеландия
Norge
Польша
Португалия
Россия
Саудовская Аравия
Сингапур
Юго-Восточная Азия
España
Suisse
Суоми
Sverige
台灣
Украина
объединенное Королевство
Соединенные Штаты
Việt Nam
المملكة العربية السعودية (арабский)
.