Tag Archives: PinBoard

Работа с микросхемой FTDI FT2232 в режиме BitBang

Скромная и незаметная
На демоплате Pinboard в качестве интерфейса для связи с компом установлена микросхема USB< ->UART преобразователя от FTDI. В 99% случаев ее используют именно для этого и никак иначе. Нужен один UART ставят — FT232xx, нужно два канала — FT2232xx.
 

Но мало кто обращает внимание на то, что эти микросхемы, фактически, имеют полноценные порты ввода вывода позволяющие рулить ими программно со стороны компа, что позволяет вообще избавиться от микроконтроллера в схеме. Зачем он нужен, если его функции можно повесить на интерфейсную микросхему?
 

(далее…)

Read More »

Pinboard II. Концепция краевого модуля

На Pinboard II есть боковой разъем расширения, вот его распиновка:

Туда можно выткать какую-либо периферию. Например сейчас разрабатывается и скоро пойдет в производство модуль двухканального RS232/RS432 с гальванической развязкой (опционально) каналов. Но речь не о нем, а о общей концепции при создании таких модулей.

Вся соль в том, чтобы сделать модуль самодостаточной единицей. Т.е. на нем должен быть точно такой же разъем под процессорный блок, как на PBII. C точно такой же распайкой на периферию модуля расширения. Тогда у нас получается ситуация, что можно будет отлаживать систему в двух схемах:

  • Полная: Процессорный блок — главная плата — краевой модуль. Допускающая удобную и быструю перешивку проца, связь с компом по интерфейсам, отладку и прочие блага наличия FTDI и всяких примочек демоплаты.
  • Удаленная: Процессорный блок — краевой модуль + внешнее питание с адаптера. Что удобно когда надо закинуть, например, наш блок куда-нибудь в автономное плавание. И дать ему там побыть одному, половить глюки и баги. Причем не занятый краевой разьем модуля расширения может дополняться чем либо еще. Например какими нибудь доп интерфейсами (плата расширения на плату расширения :) ), или как под доп входы-выходы под управление использоваться. Этот режим чем то напоминает концепцию Arduino + Shield где в роли арудины наш процессорный модуль, а в роли шилда краевой модуль расширения. Конечно можно в таком режиме его и на постоянное дежурство куда-либо повесить, но это нерационально.

(далее…)

Read More »

Отладочная плата Pinboard II

Собрав многолетний экспериментаторский опыт, а также два года непрерывной эксплуатации платы Pinboard 1.1, я разработал новую демоплату, куда более совершенную и функциональную — Pinboard II.

Во главу угла была поставлена расширяемость и модульность, а главным принципом ее стал максимум использования каждой детали. Если на плате есть какой-либо узел или элемент, то его он должен использоваться в хвост и в гриву, а не просто выполнять какую-либо определенную функцию. Ведь это же полигон для экспериментов, а инструментарий никогда не бывает слишком обширным. А теперь пункты подробней:

(далее…)

Read More »

Работа с резистивным сенсорным экраном

Хоть резистивный touchscreen и является устаревшим и активно вытесняется емкостными сенсорами, но тем не менее он еще не скоро канет в Лету. Во первых из-за простоты и дешевизны, а во вторых из-за элементарной работы с ним.

Конструктив
Итак, как он устроен. Там все очень и очень просто. Есть две пленки, сделанные из проводящего материала, а между ними гранулы диэлектрика. Когда касаемся пальцем, то продавливаем зазор между пленками и контачим верхнюю на нижнюю. Ну, а определить координаты касания уже дело несложное.

Для этого на каждую пленку нанесено по два электрода. Слева-справа на одной и сверху-снизу на другой. Крест на крест, в общем. Поскольку сопротивление пленки довольно большое, под сотни ом, то образуются как бы два перпендикулярных резистора, висящие друг над другом.
(далее…)

Read More »

Подключение клавиатуры к МК по трем проводам на сдвиговых регистрах. Часть 2. Буквенный ввод как на телефоне

Данная статья является продолжением предыдущей о подключении клавиатуры к МК с помощью трех сигнальных проводов. В этой часте я расскажу вам о том, как увеличить число кнопок на клавиатуре до 16, опишу алгоритм обработки нажатий этих кнопок и то, как ассоциировать с каждой кнопкой свою функцию. Итак, приступим.

Аппаратная часть
Как вы уже догадались, чтобы подключить дополнительные кнопки к блоку клавиатуры, нужно добавить дополнительный сдвиговый регистр, который будет захватывать нажатия других восьми кнопок. Ниже приведена блок схема этой конструкции:

Рассмотрим режим работы, когда при каждом клике ногой CLK происходит сдвиг битов влево по направлению к старшему (S0 поднята, S1 опущена). Взглянем на сдвиговый регистр U1. При каждом дрыге ногой CLK, бит, который находится на выводе Qn, перемещается на вывод Qn+1, тоесть сдвигается в сторону старшего бита (влево). Но так как биту, который находится на ноге Q7 уже некуда сдвигаться, то он по идее должен бы был пропасть. Чтобы этого не произошло, мы посылаем его на следующий сдвиговй регистр U2, подключив Q7 регистра U1 к ноге SR SER регистра U2. Объясню, что же это за нога. В рассматриваемом нами режиме работы сдвигового регистра (S0 поднята, S1 опущена) биты смещаются в cторону старшего, а на место младшего становится бит, который в данный момент находится на ноге SR SER. Так как два наших сдвиговых регистра тактируются от одного источка (микроконтроллера), то бит на ноге Q7 сдвигового регистра U1, при сдвиге не теряется, а перескакивает на сдвиговый регистр U2, где продолжает свой путь в микроконтроллер. (далее…)

Read More »

Подключение клавиатуры к МК по трем проводам на сдвиговых регистрах

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

Суть
Подключение клавиатуры осуществляется по трем сигнальным проводам. Дополнительные элементы: сдвиговые регистры sn74198n и несколько резисторов. Максимальное количество кнопок ограничивается лишь максимально допустимым временем на сканирование клавиатуры. Я использовал в своем проекте 16 кнопок, но путем добавления новых сдвиговых регистров, можно увеличить данное число до необходимого вам значения. Вас будет ограничивать лишь пропорционально возрастающее время сканирования клавиатуры.

Аппаратная часть
Сдвиговые регистры – вещь довольно удобная за счет своей дешевизны и универсальности. Их часто используют для подключения светодиодов, семисегментных индикаторов и т.п. по небольшому количеству выводов микроконтроллера. В нашем случае, будем проделывать почти все тоже самое, но в обратную сторону:будем передавать данные не «из микроконтроллера», а «в него». Для наглядности привожу блок схему работы данного устройства:

  • 1.Блок Клавиатуры
  • 2.Сдвиговый регистр
  • 3.МК

Блок клавиатуры представляет собой набор кнопок, которые одним выводом подключены к земле, а другим подключаются к соответствующему входу сдвигового регистра.
(далее…)

Read More »

AVR. Учебный Курс. Использование AVR TWI для работы с шиной IIC (i2c)

Про шину IIC я писал уже неоднократно. Вначале было описание протокола, потом пример работы в лоб, а недавно камрад Ultrin выложил пример работы с i2c на базе блока USI. Да и в интернете полно статей по использованию этой шины в своих целях. Одно плохо — все они какие то однобокие. В подавляющем большинстве случаев используется конфигурация «Контроллер-Master & EEPROM-Slave». Да еще и на программном мастере. И ни разу я не встречал материала, чтобы кто то сделал Контроллер-Slave или описал многомастерную систему, когда несколько контроллеров сидят на шине и решают арбитражем конфликты передачи. Пустоту пора заполнять, решил я и завязал узелок на память… Да только веревочку пролюбил :)

Обещаного три года ждут, вот я таки пересилил лень, выкроил время и сообразил полноценную библиотеку для работы с аппаратным модулем TWI, встроенным во все контроллеры серии MegaAVR. Давно грозился.

Кошмар на крыльях ночи
Во-первых, я сразу же отказался от концепции тупого последовательного кода. Когда у нас есть некоторая функция SendByte(Address,Byte) которая шлет данные по шине, а потом возвращает 1 или 0 в зависимости от успешности или неуспешности операции. Метод прост, дубов, но медленный. Т.е. пока мы байт не пошлем мы не узнаем ушло ли оно, а значит будем вынуждены тупить и ждать. Да, шина i2c может быть очень быстрой. До 100кбит ЕМНИП, но даже это время, а я все же за высокоскоростное выполнение кода, без тормозных выдержек. Наш выбор — диспетчеризация и работа на прерываниях.

Суть в том, что мы подготавливаем данные которые нужно отослать. Дальше запускаем аппаратуру передачи и возвращаемся к своим делам. А зверский конечный автомат, что висит на прерывании TWI передатчика сам передает данные, отвлекая основную программу только тогда, когда нужен какой-либо экшн (например сунуть очередной байт в буфер передачи). Когда же все будет передано, то он генерит событие, которое оповещает головную программу, что мол задание выполнено.
Как? Ну это уже от конкретной реализации событий программы зависит. Может флажок выставить или байт состояния конечного автомата подправить, а может и задачу на конвейер диспетчера набросить или Event в почтовый ящик задачи скинуть. Если юзается RTOS.
(далее…)

Read More »

Датчик Холла

Есть такой интересный эффект — если через квадратную проводящую пластину гнать постоянный ток, а саму пластину пронизать магнитным полем, чтобы линии индукции проходили через ее сечение, то летящие по пластине электроны отклоняются силой Лоуренса.

А раз так, то с одного края электронов будет больше чем с другой. Возникает разность потенциалов, то есть напряжение. И чем больше ток и сильней поле, тем большая разность будет. Это и есть эффект Холла.

Дальше дело за малым — берем источник стабильного тока, чем стабильней тем лучше, ведь от стабильности зависит точность показаний. Прогоняем постоянный ток по пластине, ловим да усиливаем разность потенциалов до осязаемых величин. В результате получаем отличную вещь — датчик магнитного поля, он же датчик Холла.
(далее…)

Read More »

Отладочная плата PinBoard v1.1

В один прекрасный момент я задумался — а какого черта я трачу столько времени на сооружении разного обвяза при отладке новых модулей и при подготовке экспериментов?

Ведь все можно сделать в единой отладочной плате, чтобы можно было просто соединить нужными перемычками блоки и получить сразу кусок решения. Нужна была демоплата.

Что такое демоплата? Демоплата — это универсальный полигон для экспериментов. Идеальное средство для быстрого старта. На ней смонтирован микроконтроллер, а также вся необходимая обвязка для его работа. Плюс разные полуфабрикаты, позволяющие облегчить эксперименты.

Готовое устройство, где все уже подключено, разведено как надо. Купил — включил — работай. Риск что-либо сжечь в ходе экспериментов снижен максимально. Где нет нужды парить мозг проблемой «чем прошить», «как запустить», «Как правильно все подключить». Первые шаги делаются быстро и легко.
А потом, когда ты уже освоишься с контроллером, то запросто можно посмотреть как сделано на демоплате и перенести это решение в свое устройство.

В принципе, идея не нова — по такому пути идет компания Микроэлектроника с их демоплатой EasyAVR5 (от 7 до 9 тысяч рублей). Плата замечательная, но на мой взгляд дороговата и многие фичи там избыточные и одноразовые. В том смысле, что раз побаловался, изучил и больше они не интересны. А кое чего нет вообще, например возможности по быстрому сварганить аналоговую цепочку или фильтр.

Плюс ко всему, в исходном варианте EasyAVR5 идет голой, только плата с простейшей периферией вроде светодиодов и кнопочек, а LCD дисплеи модули расширения надо покупать отдельно и стоят они тоже негуманно. Основную же стоимость добавляет многослойная плата с кучей джамперов и переключателей, позволяющая витиевато все это коммутировать.

Такой расклад меня не устроил поэтому я посидел несколько дней, поворошил в памяти все основные грабли и неудобства которые мне приходилось часто решать, попытался продумать какие задачи мне еще предстоит расковырять и что для этого неплохо было бы подготовить и получилось вот что:

Концепция была отличной от традиционных отладочных плат. Я не стремился до предела нафаршировать ее разной периферией, но постарался по максимуму облегчить и ускорить подключение к ней чего угодно.

Вот фичи которые мне удалось реализовать: (далее…)

Read More »