RomeoGolf

Пн 25 Июль 2016

USB-polygon-1: Создание отладочной платы на микроконтроллере

Недавно в очередной раз пришла в голову идея сделать свою отладочную плату на микроконтроллере и поиграться с нею. Однажды (в один из предыдущих разов) я даже делал что-то такое, но получилось плохо и было заброшено. И вот, полный решимости довести дело до более-менее приличного результата, я заново взялся за дело. С точки зрения программирования МК можно было бы раздобыть сразу отладочную плату и возиться с ней, однако, во-первых, хотелось попробовать не только программирование, но и радиоинженерство (пусть и на любительском уровне), во-вторых, так реально дешевле, ибо из деталей мне нужен буквально только контроллер, из обвеса разве что мелочь копеечная типа кнопок.

Стало быть, займусь радиософтолюбительством в учебных целях с выполнением такой последовательности:

  • проектирование простейшей цифровой схемы;
  • создание проекта печатной платы;
  • изготовление печатной платы;
  • монтаж;
  • программирование «встроенной системы»;
  • управление некими устройствами (экраны, etc.) с помощью МК, возможно, под управлением с ПК;
  • получение информации с неких устройств (энкодеры, etc.) с помощью МК;
  • отладка взаимодействия ПК и некоего внешнего устройства на базе МК.

В целом, основные задачи были следующие:

  • освоить новый для меня ассемблер, вспомнить работу с С на МК;
  • отладить работу с экранами мобильников, которых завалялось от старых мобил парочка штук, и хотелось бы применить их в самоделках;
  • освоить работу с энкодером — еще не пробовал это дело;
  • сделать макет устройства, которым можно управлять с ПК и с которого можно передавать данные на ПК;
  • подготовиться к созданию собственных устройств на МК, например, LC-метра.

В долгосрочной перспективе хотелось бы отладить работу с МК с использованием разных операционных систем, то есть, чтобы разработку можно было вести и в Windows, и в Linux, работать с самодельным устройством в них же плюс Android.

Набросок технического задания:

  • устройство (плата) должно содержать микроконтроллер с характеристиками:
    • достаточная распространенность (чтобы иметь легко обнаруживаемую учебную и справочную литературу, примеры кода);
    • наличие бесплатных/свободных средств программирования, отладки для разных ОС;
    • допустимая цена (до 300 р.);
    • корпус, допускающий возможность несложного монтажа в домашних условиях (однозначно не шариковый, желательно выводы с шириной не менее 0,5 мм, в крайнем случае — 0,25 мм);
    • наличие интерфейса USB для совместимости с большинством вычислительных устройств (ПК, телефоны, планшеты, телевизоры, etc.);
    • наличие минимум двух байтовых портов для возможности одновременного ввода и вывода информации простейшими способами (кнопки и светодиоды) а также для подключения дополнительных устройств;
    • желательно наличие аппаратно реализованных интерфейсов обмена информацией помимо USB, например, SPI для экранов мобильников и карт памяти;
    • крайне желательна возможность внутрисхемного программирования по USB, чтобы не заморачиваться с программаторами (во всяком случае, поначалу);
  • устройство должно подключаться по USB, получать питание там же. Собственное питание необязательно, так как в процессе отладки оно все равно постоянно подключено к ПК, а самостоятельной ценности не имеет. Соответственно, потребление должно быть не более 150 мА;
  • устройство должно иметь примитивные средства вывода информации: как минимум, байт, отображаемый на светодиодах;
  • устройство должно иметь примитивные средства ввода информации: как минимум, три кнопки, не пересекающиеся по портам со светодиодными линиями;
  • устройство должно иметь возможность подключения шины данных и питания для дополнительных устройств, например, экранов или энкодера, данных должно быть не менее двух байтов (дешевый китайский ЖК-экран 1602A-1 требует 11 разрядов);
  • устройство должно обеспечивать возможность работы с дополнительными устройствами с питанием как 5 В, так и 3,3 В (экран 1602A-1 - 5 В, экраны мобильников - 3,3 В);
  • устройство должно быть изготовлено по возможности на имеющейся в наличии элементной базе (из чего попало и палок);
  • требования живучести и стойкости к механическим и климатическим воздействиям, надежности, сроку службы, эксплуатации, хранению, удобству технического обслуживания, размеру, массе, корпусу, консервации, упаковке и маркировке не предъявляются.

После некоторого анализа того, что есть под рукой и того, что можно купить, остановился на AT90USB162. Не самый современный контроллер, но неплохой по соотношению цены и возможностей. USB есть, как и возможность программирования по USB без программатора с помощью утилиты FLIP от ATMEL, причем, под Windows и Linux. Встроенный преобразователь питания из +5 В, получаемых по USB, в +3,3 В. AVR, то есть, обширное сообщество, а значит, все вопросы, которые могут появиться поначалу, уже кто-то задавал, и ответы можно найти. Корпус TQFP32, плата легко разведется под лазерный утюг. Нашел на AliExpress за двести рублей без малого. Три порта ввода-вывода, из них два байтовых, один слегка подрезанный. Есть возможность использования UART, SPI, PS/2. Жалко, что нет АЦП, только аналоговый компаратор, ну да ладно, попробуем обойтись.

Еще понадобится горсть кнопок, горсть джамперов (ножек для них и самих перемычек), пара переключателей, горсть светодиодов, кварц и шнурок для USB. Кнопки есть мышиные, светодиоды даже не помню, откуда снял, переключатели от сломанных детских игрушек с электроначинкой, шнурок от дохлой USB-мыши, кварц на 8 МГц (это важно) уже был куплен для какого-то несостоявшегося проектика.

И вот тут бы по-хорошему проанализировать сперва средства разработки и отладки, но я отложу это на попозже. В конце концов, не такая уж дорогая игрушка, чтобы горевать, если что-то пойдет не так. Поэтому начну со схемы, пока развожу ее — глядишь, приедет из Китая контроллер. Спаяю — тогда и начну заниматься отладкой. В любительских целях это допустимо, ящитаю.


Теги: