Uploaded by Александр Богатирыренко

Программатор для EPROM на Arduino Хабр

advertisement
Все потоки
Разработка
Научпоп
Мегапосты: Админский мегаквест Для Java-чемпиона Ждущего Build-2020
Удалёнка: опыт и лайфхаки
КАК СТАТЬ АВТОРОМ
Администрирование
Дизайн
Менеджмент
Маркетинг
Войти
Регистрация
walhi 4 августа 2019 в 13:46
Программатор для EPROM на Arduino
Разработка под Arduino
Из песочницы
Понадобилось при изучении и ремонте компьютеров, которые старше меня, прошивать ПЗУшки. Тесты
оперативной памяти и периферии проводить. Нормального программатора у меня на тот момент не
было.
Собрать на логике для LPT порта, конечно, можно, но данный вариант был отброшен, так как для
использования пришлось бы включать ещё какого-нибудь старичка. В современных компах все ещё
встречается данный интерфейс (правда не полноценный разъем, а на гребенке) да и купить плату в
PCI слот тоже не проблема, но возникают уже сложности с софтом. Он был написан очень давно, когда
работа с портами ввода/вывода в операционных системах велась иначе. Соответственно, в
современных версиях Windows ПО не будет работать.
Сразу стоит оговориться, что про существование TL866 знаю. И даже в процессе разработки все же его
купил себе, но он не в состоянии прошить микросхемы, которые требуют высокое напряжение
программирования. Максимум 18 вольт (TL866+ или 21 для предыдущей версии).
Реклама
Беглое гугление привело меня к данному репозиторию. Собрав программатор, я смог сдампить пару
интересующих чипов. А вот с прошивкой все оказалось куда сложнее… Софт этого просто не умеет…
Его, конечно, можно обмануть, выставив неправильный чип, но работает это не во всех случаях и явно
не наш метод
Очень сильно огорчил пользовательский интерфейс, который, вместо классического варианта с
предоставлением права выбора порта пользователю, проходился по всем доступным
последовательным интерфейсам. Соответственно, все устройства перезагружаются. Особенно обидно,
наверное, когда у тебя 3D принтер уже часов 10 печатает детальку с флешки, а тут такая подстава...
Мир OpenSource прекрасен тем, что ты можешь взять проект и дописать его под свою задачу. В данном
случае исходных кодов к графическому интерфейсу нет. По крайней мере я их не нашел, хотя можно
было написать разработчику. Стало интересно и появился небольшой повод для изучения Qt. Так что
софт будет кросплатформенный.
Берем за основу схему из предыдущего проекта и дорабатываем устройство до требуемого
функционала. Решил пожертвовать поддержкой EEPROM в софте. Возможно, это не совсем удачное
решение, но для электрически стираемых чипов уже не нужно такое высокое напряжение. При
доработке опирался на самую объемную микросхему (27C512 для DIP28) и убрал всю путаницу
относительно адресных ножек. Весь адрес будет задаваться исключительно при помощи сдвиговых
регистров (74HC595). Это освободит дополнительные ноги самого микроконтроллера, которые
понадобятся для управления подачей напряжения программирования. А все необходимые сигналы
(PRG) можно получить модификацией адреса перед загрузкой в регистры.
Принцип подачи напряжения программирования остался прежним. Изменения только в области
защиты выводов микроконтроллера и сдвиговых регистров. Заменил резисторы (1 КОм) на диоды с
подтяжкой к лог. 0. Это менее агрессивный вариант. Хотя, справедливости ради, и резисторы работают.
ЧИТАЮТ СЕЙЧАС
Главная причина, почему не Linux
29,1k
606
Как украсть Macbook
19,9k
57
Маски сброшены
2,8k
4
Коронавирус: опасная иллюзия
смертности
716k
1539
Коронавирус: мы все умрём?
11,2k
81
По соображениям безопасности
Microsoft выкупила домен corp.com за
неизвестную, но явно крупную сумму
6,7k
3
Все, что вы хотели знать о Microsoft
Мегапост
Изучив документацию на все интересующие чипы, определил, что требуется три точки подачи Vpp:
1. 27C16 на 21 ногу микросхемы (23 ногу DIP28 сокета)
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
2. 27C32 и 27C512 на сигнал #OE (Output Enable)
Электропочта
3. 27C64, 27C128, 27C256 на 1 ногу микросхем
Микросхемы 27C16 и 27C32 от остальных отличаются корпусом, так что им требуется подавать
напряжение питания на 26 ножку сокета. Это адресная нога A13 для более емких собратьев. Тока с
выхода сдвигового регистра должно хватить для работы, но на время загрузки данных его выходы
переходят в Z состояние. Подобный режим допустим, но включение на чтение или запись одной ячейки
вряд ли является нормой. Поэтому под управление питания установлен дополнительный транзистор. И
ещё один потребовался для 27C16, которому на время чтения необходимо подать на вход Vpp 5 вольт.
Можно, конечно, на время чтения выставить напряжение программирования на значения 5 вольт, но
переключаться между 25 и 5 вольтами неудобно.
Если есть свободные ноги АЦП, то почему бы не измерять напряжение программирования? Плата
разведена под Arduino Nano. На нем имеются два дополнительных входа, которые кроме как для АЦП
использовать нельзя. На самом деле это особенность многих микроконтроллеров AVR в корпусе для
поверхностного монтажа. На китайских Arduino UNO частенько есть входы A6 и A7. С учетом того, что
напряжение может быть до 30 вольт (вроде больше всего хотят отечественные РФ5, 25 вольт),
рассчитываем делитель из того, что есть в наличии. Точность в 0.5 вольта для данной задачи вполне
достаточна. Эта функция — защита от дурака, а не вольтметр.
Можно, конечно, было заморочиться и выступать в качестве ШИР (широтно импульсное
регулирование) контроллера, но ножек свободных не осталось. Поэтому на печатной плате есть
посадочное место для преобразователя DC-DC Step Up на чипе MT3608, которые за копейки доступны
на али.
По схеме на этом все.
Алгоритм работы с данными микросхемами очень прост. С ним можно ознакомится в небольшом видео.
Как работают микросхемы EPROM
Схемы и софт доступны в репозитории на GitHub: https://github.com/walhi/arduino_eprom27_programmer.
При сборке можно спокойно менять номиналы резисторов. Правда с делителем потребуется немножко
исправить код скетча.
Программатор EPROM на Arduino
Теги: eprom, arduino, qt, ПЗУ, программатор
Хабы: Разработка под Arduino
54
+40
15,2k
3
Поделиться
Sergey V. Karpesh @walhi
Пользователь
ПОХОЖИЕ ПУБЛИКАЦИИ
15 марта 2020 в 13:15
Flutter + arduino nano 33 BLE sense = очень простой BLE sensor
+26
13,5k
101
11
9 марта 2020 в 16:53
Управление Arduino через интернет с помощью ПК — опыт новичка
+3
9,9k
59
11
27 января 2020 в 14:51
Собираем приложение Qt в WebAssembly в Windows
+13
5k
66
15
ВАКАНСИИ
Разработчик С++/Qt
от 90 000 до 140 000 ₽ • Movicom • Москва
Разработчик под iOS
от 110 000 ₽ • Улыбка радуги • Санкт-Петербург
Программист С++/Qt
от 150 000 ₽ • Zonatelecom • Тула
Разработчик под Android
от 110 000 ₽ • Улыбка радуги • Санкт-Петербург
Разработчик С++/Python
от 80 000 до 130 000 ₽ • NextGIS • Можно удаленно
Больше вакансий на Хабр Карьере
Реклама
Комментарии 3
ЧТО ОБСУЖДАЮТ
mukoladerevlo 4 августа 2019 в 21:23
+3
Интересный опыт, но если хочется чего-то универсального, есть классный программатор Postal3 тоже на avr,
умеет
1. EEPROM
Сейчас
Неделя
Какой скрытый смысл заложили
авторы в SCRUM Guide. Часть 1. Про
процесс
2,4k
2. 3-Wire Serial EEPROM
Вчера
17
Covid-19: зачем мы сидим на
карантине, и ответы на другие
вопросы
3. SPI
4. MSTAR
5. MICRONAS
32,5k
6. KB9012, KB9022
340
Экстренный VPN сервер Openconnect с
двухфакторной авторизацией на
Centos 8
7. Atmel AVR
8. Эмулятор ИК-ДУ
1k
1
9. RF-ID и др
Главная причина, почему не Linux
погуглите, на форуме можно скачать схемы и прошивку. работает на 8.1,10
В свое время выручал не раз, даже fbdimm им препрошивал
u_235
29,1k
5 августа 2019 в 08:09
+2
Рекомендуемый вами программатор работает только с последовательными интерфейсами, а это не то,
что нужно автору.
BSW 5 августа 2019 в 00:50
606
Коронавирус: опасная иллюзия
смертности
716k
1539
+1
Просто обалдеть. А я думал что эти микросхемы давно никто уже не использует.
Свою первую рф2 я зашил ровно 30 лет назад. В 1988 году собрал СПЕЦИАЛИСТ-85, а чуть позже к нему
программатор. Потом были 27с64 для Синклера, 27с512 для АОН-ов и последняя 27с1000 для BIOS-a на TXPro2.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
РЕКОМЕНДУЕМ
САМОЕ ЧИТАЕМОЕ
Сутки
Неделя
Разместить
Месяц
Коронавирус: опасная иллюзия смертности
+20
716k
200
1539
Мегапост
Главная причина, почему не Linux
+44
29,1k
53
606
107
57
Рагнарек админа: как мы справились с
переездом офиса, ничего не сломали,
обновились и обеспечили удаленную
работу
Как украсть Macbook
+102
19,9k
Как SEO-оптимизация и алгоритмы Google уничтожили настоящий интернет
+119
28k
76
154
Мегапост
Ликбез по респираторам. Помогает ли респиратор от заражения вирусом. Обзор 11
респираторов
+21
834k
176
Вы хотели бы сделать Windows
бесплатным? Голосуйте – Microsoft
расскажет!
115
Ваш аккаунт
Разделы
Информация
Услуги
Войти
Публикации
Устройство сайта
Реклама
Регистрация
Новости
Для авторов
Тарифы
Хабы
Для компаний
Контент
Компании
Документы
Семинары
Пользователи
Соглашение
Мегапроекты
Песочница
Конфиденциальность
Если нашли опечатку в посте, выделите ее и нажмите Ctrl+Enter, чтобы сообщить автору.
© 2006 – 2020 «TM»
Настройка языка
О сайте
Служба поддержки
Мобильная версия
Download