Как сделать Arduino Uno своими руками
В этой статье мы расскажем, как своими руками собрать Arduino на обычной макетной плате.
Для этого нам понадобится микроконтроллер ATmega328 — такой же, как и в оригинальной Arduino Uno.
Распиновка ATmega328
В начале работы с любым микроконтроллером необходимо изучить его распиновку. После этого уже можно приступать к сборке необходимой обвязки. Ниже представлена распиновка микроконтроллера ATmega328.
Сборка Arduino на макетной плате
Необходимые компоненты
Для работы с микроконтроллером понадобятся:
Конденсатор 22 пф
Схема сборки
Соберите на макетной плате компоненты по следующей схеме:
Эксперимент «маячок» из Матрёшки
Добавьте к схеме светодиод на 13 пине. Для этого повторите первый эксперимент из набора Матрёшка Z — маячок.
Обратите внимание, 13 пин Arduino — это не 13-я ножка микроконтроллера. Чтобы найти нужный пин, воспользуйтесь распиновкой ATmega328
Схема эксперимента собрана. Осталось прошить нашу Arduino.
Прошивка ATmega328
У микроконтроллера нет собственного USB-порта. К компьютеру его можно подключить одним из двух способов:
Рассмотрим их подробнее.
Прошивка ATmega328 через USB-UART преобразователь
Для сборки программатора нам понадобится:
Собранная в предыдущем эксперименте схема
Соберите следующую схему
Аппаратная часть готова. Теперь скачайте и установите на компьютер интегрированную среду разработки Arduino IDE и прошейте свой контроллер.
Прошивка ATmega328 через Arduino Uno
Для сборки программатора нам понадобится:
Собранная в предыдущем эксперименте схема
Аккуратно извлеките из платы Arduino Uno микросхему ATMega328P. Не беспокойтесь, вы сможете вставить её обратно позднее.
Соберите следующую схему
Аппаратная часть готова. Теперь скачайте и установите на компьютер интегрированную среду разработки Arduino IDE и прошейте свою плату.
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Noncommercial-Share Alike 4.0 International
Производные работы должны содержать ссылку на http://wiki.amperka.ru, как на первоисточник, непосредственно перед содержимым работы.
Вики работает на суперском движке DokuWiki.
diy/arduino.txt · Последние изменения: 2022/06/23 13:34 — mik
Инструменты страницы
- Показать исходный текст
- История страницы
- Ссылки сюда
- Наверх
Сделаем простой AVR микроконтроллер
Меня часто спрашивают: «Чем отличается микроконтроллер от ПЛИС?» Ну что тут можно ответить? Это как бы разные вещи. Микропроцессор последовательно выполняет команды, описанные в его программе. Работа ПЛИС в конечном счете определяется принципиальной электрической схемой, реализованной внутри чипа. Архитектура микроконтроллера, то есть тип процессора, количество портов ввода вывода, интерфейсы, определяется производителем. Микросхема микроконтроллера изготовлена на заводе и изменить ее нельзя. Можно только написать программу, которую он будет исполнять. ПЛИС — это свобода для творчества. Архитектура реализуемого устройства может быть почти любая, лишь бы поместилась вся логика в чип. В ПЛИС можно, например, попробовать реализовать даже и микроконтроллер! Попробуем?
Один из самых распространенных микроконтроллеров — это 8-ми разрядные RISС процессоры семейства AVR компании Atmel. В этой статье я расскажу как реализовать «почти» совместимый с AVR микроконтроллер внутри нашей ПЛИС на плате Марсоход.
Прежде, чем начинать делать свою реализацию микроконтроллера, конечно, следует изучить внутренности контроллера AVR. Нужно как минимум знать систему команд микропроцессора AVR. На нашем сайте можно скачать его описание:
Система команд микроконтроллера AVR ( 703303 bytes )
Мы не будем ставить себе целью полностью повторить поведение чипа Atmel, мы хотим сделать наш микропроцессор лишь частично совместимым. Полностью повторить можно, но нужна ПЛИС гораздо большего объема. У нас на плате Марсоход стоит CPLD EPM240T100C5, значит у нас есть всего-навсего 240 триггеров и логических элементов.
Кроме триггеров и логики в нашей ПЛИС имеется последовательная флеш память UFM объемом 512 слов по 16 бит. В этой флеш памяти мы будем хранить программу микроконтроллера. Удобно, что слова, хранимые во флеш, имеют разрядность 16. Все команды процессора AVR также шестнадцатиразрядные. Кое-что про UFM мы уже писали на нашем сайте. У нас был проект для ПЛИС платы Марсоход, который выполнял чтение из UFM памяти.
«Оперативной памяти» в нашей ПЛИС нет. Ну значит не будет памяти у нашего микроконтроллера, жаль но это нас не остановит.
У микроконтроллера AVR имеется 32 восьмиразрядных регистра общего назначения. Нижняя группа регистров r0-r15 может быть использована только в командах с операндами-регистрами. Верхняя группа регистров r16-r31 может использоваться в командах и с непосредственными операндами. Поскольку места внутри нашего чипа на плате Марсоход действительно не много, нам придется реализовать только некоторые регистры. Это довольно существенное ограничение, и его нужно будет учитывать при написании программ для нашего микроконтроллера.
Мы реализуем только 7 регистров: r16-r22:
- Первые 4 регистра r16. r19 — это просто регистры.
- Регистр r20 — это тоже обычный регистр, только его биты мы подключим к 8-ми светодиодам платы Марсоход.
- Регистр r21 — это тоже обычный регистр, но его биты мы подключим к выводам управления шаговых двигателей на плате Марсоход.
- Регистр r22 — только для чтения. К нему подключены входы от 4-х кнопочек платы Марсоход.
Схема нашего микроконтроллера создана в среде Altera QuartusII и выглядит вот так (нажмите на картинку, чтобы увеличить):
Наш микроконтроллер работает по простому алгоритму:
- Считывает из флеш памяти UFM очередную команду.
- Декодирует команду и выбирает для нее нужные операнды из регистров или непосредственно из кода команды.
- Выполняет команду в арифметико-логическом устройстве.
- Запоминает результат исполнения команды в регистре приемнике, определяемом командой.
- Переходит к исполнению следующей команды.
У нас сейчас нет цели сделать высокопроизводительный микроконтроллер, мы не будем делать конвейерную обработку данных. Это объясняется тем, что команды из флеш памяти чипа мы можем считывать только в последовательном формате, то есть на чтение одной команды нужно как минимум 16 тактов. Быстрее здесь сделать нельзя (да нам и не нужно сейчас).
Ход выполнения программы может изменяться в зависимости от результата исполнения команд. Специальные команды переходов позволяют переходить к нужной операции в нужных условиях.
Перечислим команды микроконтроллера AVR, которые мы собираемся реализовать:
ADD 0000 11rd dddd rrrr
SUB 0001 10rd dddd rrrr
AND 0010 00rd dddd rrrr
EOR 0010 01rd dddd rrrr
OR 0010 10rd dddd rrrr
MOV 0010 11rd dddd rrrr
CP 0001 01rd dddd rrrr
LSR 1001 010d dddd 0110
SUBI 0101 KKKK dddd KKKK
ANDI 0111 KKKK dddd KKKK
ORI 0110 KKKK dddd KKKK
CPI 0011 KKKK dddd KKKK
LDI 1110 KKKK dddd KKKK
BREQ 1111 00kk kkkk k001
BRNE 1111 01kk kkkk k001
BRCS 1111 00kk kkkk k000
BRCC 1111 01kk kkkk k000
Слева написаны названия команд, а справа — их бинарное представление (кодирование). Так буква «r» обозначает регистр источник, буква «d» — регистр приемник, «K» — это непосредственно операнд.
Конечно — это только малая часть от «настоящей системы команд», но уже и эти команды позволять писать вполне работающие программы.
У нас будет упрощенное АЛУ (Арифметико-Логическое Устройство). Оно реализует только некоторые, наиболее употребительные команды, а так же всего 2 флага для условных переходов: «Z» и «C».
Флаг «Z» устанавливается, если результат АЛУ это ноль. Если результат из АЛУ не нулевой, то флаг «Z» сбрасывается. Флаг «C» устанавливается при возникновении переноса в арифметических операциях ADD и SUB/SUBI или сравнения CP/CPI. Флаги влияют на исполнение команд условных переходов: флаг «Z» влияет на BREQ, BRNE, а флаг «C» влияет на BRCS, BRCC.
Вообще всеь проект мы уже реализовали и его можно взять здесь:
Ядро микропроцессора Atmel AVR ( 109584 bytes )
.
Исходный текст нашего ядра AVR написан на языке Verilog и его можно посмотреть здесь.
Теперь посмотрим, как мы сможем написать программу для нашего микроконтроллера? Для написания программы на языке ассемблер воспользуемся средой разработки компании Atmel AVRStudio4. Эту среду разработки можно скачать прямо с сайта компании Атмел (после регистрации), вот здесь. Или поищите в яндексе — наверняка найдете в свободном доступе.
Создаем проект в AVRStudio4 и пишем простую программу. Программа будет моргать светодиодом на плате Марсоход и опрашивать состояние нажатых кнопочек. Если нажать одну кнопочку, то моргающий светодиод «побежит» в одну сторону, а если нажать другую кнопочку, то светодиод «побежит» в другую сторону. Вот исходный текст на ассемблере для нашего примера:
.include «1200def.inc»
.device AT90S1200
;initial one bit in register
ldi r16,$80
;read port (key status)
mov r17,r22
cpi r17,$0f
;go and blink one LED if no key pressed
breq do_xor
cpi r17,$0e
;go and right shift LEDs if key[0] pressed
breq do_rshift
cpi r17,$0d
;go and left shift LEDs if key[1] pressed
breq do_lshift
;jump to read keys
or r16,r16
brne rd_port
do_rshift:
cpi r16,1
breq set80
lsr r16
mov r20,r16
brne pause
set80:
ldi r16,$80
mov r20,r16
or r16,r16
brne pause
do_lshift:
cpi r16,$80
breq set1
lsl r16
mov r20,r16
brne pause
set1:
ldi r16,$01
mov r20,r16
or r16,r16
brne pause
do_xor:
eor r20,r16
pause:
ldi r18,$10
cycle2:
ldi r19,$FF
cycle1:
or r19,r19
or r19,r19
subi r19,1
brne cycle1
subi r18,1
brne cycle2
or r16,r16
brne rd_port
Видите? Чтение состояния кнопочек — это чтение из регистра r22. Изменение состояния светодиодов — это запись в регистр r20.
Настройте AVRStudio так, что бы выходной формат был «Generic». Это в свойствах проекта, «Assembler Options», настройка «Hex Output Format».
После компиляции программы получается вот такой текстовый файл с кодами программы:
Этот файл нам почти подходит для QuartusII. В нашем проекте для ПЛИС есть файл avr_prog.mif (Memory Initialization File), куда мы и вставляем полученный из AVRStudio код (только нужно добавить точку с запятой в конце каждой строки). Таким образом, после компиляции QuartusII эти коды попадут во флеш UFM нашей ПЛИС.
Теперь можно компилировать и пробовать наш проект в плате Марсоход. Вот видеоролик, демонстрирующий работоспособность нашего процессора:
Все работает так как и задумывалось!
Обратите внимание, что после компиляции, весь проект занимает только 205 логических элемента из 240 имеющихся в нашей ПЛИС. Это значит, что наш микроконтроллер можно и дальше усложнять или добавить какую-то новую логику. Так что проект может быть полезен для создания Ваших устройств.
Arduino своими руками с USB портом
Хочу представить вам свой проект-вариант широко известного контроллера Arduino.
Начну с короткой предыстории. Электроникой и радиотехникой я занимаюсь больше 10 лет. А вот интерес к микроконтроллерам появился не так давно. Изучал язык С, программировал микроконтроллеры от фирмы Atmel, успех был переменчивым. И как-то, изучая просторы интернета на тему программирования микроконтроллеров, попал на сайт www.arduino.ru. Их контроллеры мне понравились, захотелось такой себе. Поскольку паяльник «в руках держать умею», покупать контроллер отказался и начал искать в интернете информацию по самостоятельному его изготовлению, но ничего подходящего не нашел. Вариант платы, которую собирают на страницах http://robocraft.ru/blog/arduino/19.html сайта, мне не подходит, да и не сильно нравится. Хотелось с USB разъемом. Скачал файлы схем оригинальных версий контроллера Arduino, даташит на микросхему FT232R, распечатал статью «Ардуино хоум мэйд» (ссылка выше) и думал как это все соединить, чтобы получилось то, что я хотел найти. И получилась вот такая схема: Используемые в схеме детали:
Резисторы я использовал SMD типоразмером 0805:
— R1, R2, R4, R7 – от 300 Ом до 1 кОм (какие найдете);
— R3 – 10 кОм;
— R5, R6 – 1 кОм. Конденсаторы:
— С2, С3, С5, С13, С8, С10, С11 – SMD (0805) номиналом 0,1 мкф;
— электролиты С1, С4, С9, С12 – я использовал по 22 мкф*50 В, мне они подошли по высоте. Номинал не особо важен, не ниже 10 мкф на напряжение не ниже 10 В, кроме С9, его напряжение должно быть больше не 20 % напряжения питания внешнего источника;
— С6, С7 – керамика по 22 пф. Светодиоды любые (форма, габариты, цвет) на ток 15-20 мА. Диод D5 – 1N4007 тоже в SMD корпусе.
Кварц – 16 МГц. Микросхемы:
— DA1 – L7805 в корпусе ТО220;
— DD1 – FT232RL (хорошая микра, но в большем корпусе не выпускают);
— DD2 – сам наш микроконтроллер, я использовал ATmega168, можно ATmega8, думаю, что и ATmega328 тоже подойдет, главное загрузить соответствующий загрузчик (bootloader). По итоговой стоимости точно сказать не могу (SMD компоненты не покупались, нашлись в коробочках электронщика-радиолюбителя). А затраты были следующие (г. Ростов-на-Дону): FT232RL – 200 р., ATmega168 – 220 р., L7805 – 15 р., разъемы, предохранитель, гребенки, панелька, кнопка – около 100 р.
При подключении собранного устройства к компьютеру определится новое устройство, нужно установить драйвер, указав путь к директории «FTDI USB Drivers» (в скаченной программе Arduino IDE). С печатной платой (ПП) были некоторые проблемы, но мне помогла картинка ПП в статье. Все распиновки и расстояния разъемов совпадают с оригинальной платой ардуино, можно будет подсоединять различные arduino-совместимые платы расширения. Назначение этого контроллера может быть самое различное – от «учебника» по программированию до создания серьезных охранных систем. Информации по его применению в интернете очень много.
Работает контроллер просто. На компьютер устанавливается программа Arduino IDE, скаченная бесплатно с официального сайта www.arduino.cc. В ней Вы пишите свою программу (скетч) для исполнения контроллером. Потом, нажимая кнопку в среде Arduino IDE «загрузить», компьютер компилирует Вашу программу в язык понятный микроконтроллеру и через виртуальный com порт, созданный микросхемой FT232R, передает ее микроконтроллеру. После загрузки программы, она начинает сразу исполняться, если не отключено питание контроллера. Также микросхема FT232R имеет выходной сигнал для автоматического перезапуска микроконтроллера, необходимого при загрузке скетча. Плата контроллера может питаться как от usb, так и от внешнего источника питания (8-25 В) для чего установлен микросхемный стабилизатор L7805. Присутствует на плате предохранитель 500 мА по +5 В от usb, чтобы не повредить usb порт при неполадках в плате контроллера. С помощью разъема ICSP можно программировать микроконтроллер внешним программатором. Кнопка, установленная на плате, сбрасывает работу микроконтроллера, и он начинает исполнение загруженной программы заново. Диод D5 защищает микроконтроллер от переполюсовки питания. Фото готового контроллера:
Расположение некоторых деталей на фото платы не совпадает с файлом ПП, по причине совершенствования на момент создания статьи. Файл ПП в программе Sprint-Layout 5.0 прилагается. Правильно собранный и прошитый контроллер начинает работать сразу. Отмечу – что после первой (и возможно последующей) загрузки бутлоадера, начинает моргать с небольшой частотой светодиод D3. Прошить бутлоадер готового устройства несложно. Самая сложность заключается в наличие программатора. Поскольку я имел опыт программировать микроконтроллеры, то у меня уже был собран программатор Prottoss AVR910. Лошадка рабочая, автору 5 из 5! Далее подключаем программатор к плате ардуино, открываем программу для программирования микроконтроллеров AVR (я использовал CodeVisionAVR), открываем окно прошивки микроконтроллера, нажимаем load flash, находим наш (для ATmega168) файл прошивки в скаченном дистрибутиве «…arduino-1.0.1\hardware\arduino\bootloaders\atmega\ ATmegaBOOT_168_diecimila.hex. Далее необходимо выставить lock и fuse биты так, как показано на рисунке:
Узнать фьюз- и лок-биты для своего микроконтроллера можно посмотреть в файле: «…arduino-1.0.1\hardware\arduino\boards.txt», использовав калькулятор фьюзов для AVR (можно легко найти в интернете).
Если же у Вас нет программатора, но есть программатор у друга, соседа. то есть другой, более быстрый и полезный способ прошить загрузчик. Для этого нужно собрать программатор по этой схеме. Схема рабочая и проверенная мной. Простота этого метода заключается в том, что не нужно искать прошивку микроконтроллера, выставлять фьюз и лок-биты. При подключении этого программатора к компьютеру с установленными драйверами и подключенным программируемым МК, Вы, выбрав в программе Arduino IDE порт, на котором «сидит» программатор и свою прошиваемую плату и подключенный программатор, просто нажимаете на кнопку во вкладке сервис «прошить загрузчик» и радуетесь. Если же у Вас присутствует проблема «яйца и курицы», то я посоветую собрать вот этот программатор (сам его не собирал, но думаю вешь хорошая). Или погуглить интернет на тему AVRISP-mkII. Еще вложу архив с информацией по этому программатору с файлами и описанием. Про альтернативный метод прошивки бутлоадера можно почитать здесь.
Теперь (с устанвленными драйверами на компьютере, открываете программу Arduino IDE, во вкладке «Сервис» наводим курсор на вкладку «плата» и выбираем свое устройство (в моем варианте это – Arduino Diecimila or Duemilanove w/ ATmega168). Далее, там же, выбираем порт к которому подключен контроллер (можно посмотреть в диспетчере устройств компьютера). Реализуем свои мысли в скетче и радуемся работе контроллера! Все возникшие вопросы присылайте в личку.
Плату контроллера разработал и успешно использует ростовский радиолюбитель Ананьев Валерий. Логин на сайте: kaznachej
Список радиоэлементов
Прикрепленные файлы:
- diy_arduino.rar (2357 Кб)
Теги:
Ананьев В.
Опубликована: 2012 г.
0
0
Вознаградить Я собрал 0 0
Оценить статью
- Техническая грамотность
Оценить Сбросить
Средний балл статьи: 0 Проголосовало: 0 чел.
Комментарии (27)
| Я собрал ( 0 ) | Подписаться
Для добавления Вашей сборки необходима регистрация
0
Игорь 04.01.2013 09:59 #
Я в своей «деревне» смог найти только FT232BM, она в другом корпусе. В рунете прочитал, что она старее чем RL и требует большей обвязки. Вы не сталкивались с этой микросхемой? Насколько сильно изменится схема?
0
Павел 04.01.2013 14:29 #
Игорь на каждую микру есть свой даташит. Всегда начинайте с него. Вот конкретно ваш случай: http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232BM.pdf страница 14
0
Саша 13.02.2013 08:05 #
Не могу найти кварц на 16 МГц, есть 15.8 и 16.4. Будет ли схема работать?
0
Валерий 16.02.2013 23:03 #
Работать будет, вот как — это вопрос. Если будете требовать от контроллера точности в работе, то ожидания не оправдаются
0
Сергей 14.03.2013 12:18 #
Собрал данную плату, только вот вместо меги 168 есть атмега8, правда пришлось доработать печатку добавить Х3 четыре контакта для FT232. Подключил к компу, комп увидел сразу, нашел и установил дрова, чему я был удивлен, т.к. с первого раза заработало. Попытался загрузить boot loader светодиод горел во время загрузки, в конце написано ок (это из разряда — делаю то не зная что). Ну а сам вопрос такой: можно ли в данной версии использовать 8мегу? Или же надо 168 и выше
0
валерий 03.04.2014 22:09 #
Можно ставить мегу 88 и мегу 328 без проблем.
0
kamaz6141 19.03.2013 12:15 #
F1 — это предохранитель? Какие параметры? И тоже интересует можно ли использовать мегу8? Т.к. завалялось.
0
morokoriss 25.05.2013 10:59 #
F1 — предохранитель, ну какие параметры, ну обычно 500 мА, самое большое для USB я встречал 1 ампер. Ставьте 1,6 и не парьтесь. Только на 5 вольт его еще поискать нужно, в смд много где встречаются. Мега 8 конечно будет работать, только у неё памяти меньше и загрузчик соответственно другой будет.
0
morokoriss 25.05.2013 11:05 #
А прошить это дело лучше 5 проводками. Ибо это нужно сделать всего один раз, а то незнающие из-за этого будут париться ещё и по поводу Prottoss AVR910. А страшные рассказы про якобы сгоревшие LPT порты не более чем миф. Сколько не пытался, так и не смог его угробить, главное сначала коммутировать LPT, а только потом подавать питание и всё будет ровно. Отключать в обратной последовательности.
0
серёга 22.08.2013 21:50 #
atmega328 тоже пойдёт?
0
aspire89 25.08.2013 15:09 #
Собрал схему, контроллер поставил уже с прошитым загрузчиком из рабочей ардуины, в IDE выбрал соответствующую плату и порт.
При загрузке любого кода получаю ошибку:
Using Port : \\.\COM15
Using Programmer : arduino
Overriding Baud Rate : 57600
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude done. Thank you.
Пробовал закоротить rx-tx, то все что отправляю приходит обратно. В чем может быть проблема?
0
alexandr 11.09.2013 10:04 #
Я такую проблему победил установкой старой версии драйверов для FT232RL из дистрибутива Arduino 1.0.4. Последняя версия с сайта FTDI ни как не хотела работать. При закорачивании Tx и Rx ответ то не приходил, то другие символы
0
Николай 30.09.2013 12:11 #
После прошивки FT232RL программами FT_PROG, Terminal — перестал опознаваться Windows. Собрано только подключение к USB. Это восстановить возможно?
0
Алексей 10.01.2014 12:19 #
А можете сказать какой предохранитель использовался? И что подразумевается под словом гребёнки и панелька?
0
kaznachej 18.02.2014 10:14 #
В этом варианте (начальном) стоит обычный выводной плавкий предохранитель на 0,5 А. Впоследствии был впаян самовосстанавливающийся предоханитель того же номинала.
0
Алексей 13.01.2014 10:30 #
Вот FT232R — стоит около 500 руб, а ATmega168 — 300 руб, + все пассивные компоненты, в итоге получится дороже чем готовая Ардуина. Но ради того, чтобы поиграть — можно попробовать.
0
валерий 03.04.2014 22:19 #
Это где вы такие цены взяли? В чип нн, мега168-120р. фт232-140р. И это ещё не самые низкие цены.
0
Алексей 23.06.2014 22:19 #
Это на дальнем востоке! Можете подсказать, пожалуйста, можно ли вместо smd кондёров использовать керамические? Такой же ёмкости
0
first-leon 24.08.2014 11:44 #
Arduino nano можно купить за 140 рублей например на AliExpress
А в ручном режиме имеет смысл собрать переходник с Arduino Nano на Arduino Uno.
С правилами публикации комментариев ознакомлен, но будет очень обидно, если человек в попытках сэкономить, потратить время на самостоятельную сборку, а потом выяснится, что он переплатил, причем многократно.
Да и время затраченное на сборку и отладку может быть потрачено на проектирование и сборку конечного продукта. Не ради ардуино люди собирают ардуино, а ради конечного проекта, где ардуино всего лишь очередной компонент.
0
cariad 07.09.2014 12:57 #
А какие были внесены изменения в ПП? Спаял по приложенной ПП. В итоге загрузчик через программатор прошился (D3 моргает). А при загрузке любого скетча ошибка avrdude: stk500_getsync(): not in sync: resp=0x00
При закорачивании TX-RX с МК ответа нет, без МК все норм возвращается.
0
Максим 07.02.2015 12:28 #
Ку, не подскажете, что за компонент находится под гребенкой Х1 (выделен оранжевым прямоугольником, без маркировки) на схеме печатной платы?
У меня уже даже мысль появилась, может быть, это еще одно возможное место установки конденсатора С8?
0
Lictor 21.03.2015 15:00 #
Я связался с автором статьи, если кому интересно, то неизвестная деталь кондер на 0.1 мкФ. Схему собрал, все отлично работает.
0
Игорь 18.02.2016 21:45 #
R1, R2, R4, R7 – от 300 Ом до 1 кОм (какие найдете);
Все таки по теории лучше ставить меньше 300 Ом.
0
Дмитрий 19.03.2016 09:05 #
Почему это? Вам нужно чтобы светодиоды жгли глаза?
0
Артём 13.02.2018 10:46 #
А зеркалить изображение разводки нужно? При распечатке на принтере
0
Анатолий 25.06.2018 18:35 #
Не робит, все прозвонил, перепаял, перепрошил, При загрузки скетч пишет, что ошибка загрузки на плату и при подкл к пк мигает светодиод r2
0
Максим 26.07.2020 23:41 #
Автор, спасибо за схему. Начал собирать, но заметил что плата в зеркальном изображении. Прошу в статье упомянуть, что плату зеркалить при изготовлении не требуется. Наталкивает на отзеркаливание надпись «STORONA_DETALEJ». Возможно из-за этого у многих не получается повторить.
Как сделать свой микроконтроллер?
Давно хотел сделать свой микроконтроллер. Но не знаю как и с чего начать. Искал в интернете, но ничего не нашёл. Если кто знает что, помогите. Я изучаю arduino. Уже собирал несколько схем. Подключал различные модули и т. д.
Отслеживать
10.5k 7 7 золотых знаков 25 25 серебряных знаков 41 41 бронзовый знак
задан 24 июл 2017 в 20:14
244 2 2 серебряных знака 12 12 бронзовых знаков
Для начала бы стоило выучить основы схемотехники. Может попробовать создать что-то на основе существующих микроконтроллеров, а не с нуля бросаться в огонь.
24 июл 2017 в 20:18
Я изучаю arduino. Уже собирал несколько схем. Подключал различные модули и т. д
24 июл 2017 в 20:21
Модули вы используете с библиотеками? А смотрели исходники библиотек? Там все намного сложнее, чем вам кажется. Особенно наладить работу всех компонентов вместе. Как минимум еще своя среда нужна будет, не говоря про микроконтроллер.
24 июл 2017 в 22:02
29 июл 2017 в 10:07
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Сделать собственный микроконтроллер не так сложно, как кажется. Но для отладки точно потребуется осциллограф.
Возьмите плату ПЛИС, например, производства Terasic, и изучайте Verilog и VHDL.
Возможно, Вам будет небезынтересно ознакомиться с моими собственными статьями по этой теме.
Отслеживать
ответ дан 25 июл 2017 в 0:15
Vanyamba Electronics Vanyamba Electronics
2,693 13 13 золотых знаков 19 19 серебряных знаков 26 26 бронзовых знаков
Именно микроконтроллер у вас навряд ли получится сделать, так как МК — это процессор + периферия. А что бы сделать процессор очень рекомендую почитать Харрис и Харрис «Цифровая схемотехника и архитектура компьютера». Есть в свободном доступе, например, http://easyelectronics.ru/files/Book/digital-design-and-computer-architecture-russian-translation.pdf Книга отличная! Все дается с азов, а заканчивается она разработкой процессора с набором команд MIPS.
Отслеживать
ответ дан 1 авг 2017 в 8:11
11 2 2 бронзовых знака
В чём сложность добавления пары GPIO? Вот уже и с периферией, 299 регистр добавил — и вот уже SPI почти готов!
1 авг 2017 в 21:02
Надо взять ассемблер AVR и реализовать все команды в виде машины состояний, а также регистры, указатель стека, память, регистры ввода-вывода (в адресах памяти), контроллер прерываний и переферию (в начале можно без этого).
Для написания и тестирования не нужны даже платы, вся отладка должна идти на симуляторе (ModelSim, QuestaSim), только так можно выявить и исправить все ошибки.
Писать нужно синтезируемые конструкции, т.е. прогонять проект через синтизатор. Тестирование должно заключаться в том, чтобы программа откомпилированная под AVR работала точно также как на микроконтроллере. HDL позволяет её загрузить из файла в память процессора.
Даже самый простой стандартный микроконтроллер займет достаточно много времени для реализации. Но можно следать и свое ALU на минимальное количество команд, тогда придется написать не большой свой компилятор для своего ассемблера или генератор команд в тестбенче.