Пульт дистанционного управления для фотоаппаратов Canon и Nikon
Автор Maksoff
Опубликовано 08 июня 2010
Рубрики: Готовые устройства
Метки: AVR, Интерфейс, Корпус
Сильмаллирион
Случилось так, что примерно в одно и то же время у одних знакомых появился фотоаппарат Nikon, у другой знакомой - Canon, а в интернете я наткнулся на замечательную статью про пульт ДУ к ним.
Паять я люблю, а ещё больше я люблю делать подарки людям, а что может быть лучше действительно полезного подарка?
Но, поскольку с PIC-ами я не дружу, то пульт я переделал под маленькую tiny2313, благо их везде навалом, и они весьма недорогие. Плюс, хотелось поставить рекорд скорости по сборке устройства.
Братство Кольца
Немного теории, найденной на просторах интернета:
для фотоаппаратов марки Canon собирается пульт RC-1 (RC-5 это такой же пульт, только без “моментального спуска”)
-Несущая частота 33 кГц:
-команда “Спуск”: посылка 480 мкс, пауза 7324 мкс, посылка 480 мкс
-команда “Спуск с 2 сек. задержкой”: посылка 480 мкс, пауза 5371 мкс, посылка 480 мксВажно!
Не у всех фотоаппаратов Canon есть ИК приёмник (обычно расположен на ручке, под спусковой кнопкой). Смотрите инструкцию к своему фотоаппарату!
Nikon выбрал себе алгоритм похитрее, но всё равно мы и его скопируем:
-Несущая частота 40 кГц:
-команда “Спуск”: посылка 2250 мкс, пауза 27600 мкс, посылка 650 мкс, пауза 1375 мкс, посылка 575 мкс, пауза 3350 мкс, посылка 650 мкс. Потом пауза в 63 мс (милли- не микро-!!!) и повтор всей последовательности еще один раз
AVR. Учебный Курс. Отладка программ. Часть 2
Автор DI HALT
Опубликовано 20 Апр 2010
Рубрики: AVR. Учебный курс
Метки: Интерфейс, Отладка
Метод 2. Моргалки (Работа портами Ввода-вывода)
Трассировка и аналитика это все замечательно, но когда мы начинаем отлаживать что то внешнее, то тут трассировка нам поможет мало. Т.к. глючить может не внутри, а снаружи.
Либо у нас будет не глюк, а банальное непонимание ситуации. Фразу из даташита, например, неправильно перевел или глаз замылился. Что то забыл или не туда припаял. Да мало ли как можно накосячить.
В общем, правильный алгоритм может работать из-за кривой аппаратной реализации. А чтобы понять где косяк надо проследить и знать как это работает внутри. В общем, заглянуть в код программы.
Причем нам не обязательно точно следить за тем, что там происходит покомандно — это мы или трейсом или туплением отладим. Интересней знать куда ушла прога.
Самым простым методом тут будет отладочный вывод. Все просто — мы берем и определяем один из выводов под отладку. Причем даже если у нас какая-нибудь крошечная тинька и все выводы расписаны буквально по нескольку раз, то все равно можно найти один лишний вывод — достаточно закомментить код который его использует, но в данный момент его правильность нас не интересует.
А у вывода может быть три состояния - Hi, Lo и Hi-Z. Так что рекомендую скреативить такой вот пробничек:
Тогда если у нас Hi-Z то будут тускленько гореть оба диода. Ну, а на соответствующий уровень свой диод в гордом одиночестве.
А в код пихаем дебажные секции вида:
1 2 3 | ;Set Hi SBI DEBUGDDR,DEBUG SBI DEBUGPORT,DEBUG |
1 2 3 | ;Set Lo SBI DEBUGDDR,DEBUG CBI DEBUGPORT,DEBUG |
1 2 3 | ;Set Hi-Z CBI DEBUGDDR,DEBUG CBI DEBUGPORT,DEBUG |
Можно их в макросы завернуть. Удобней будет.
По состоянию дебаг вывода мы можем увидеть в каком месте программа прошла. А комбинируя нашу троичную систему получим целых 9 возможных комбинаций на 2 вывода.
Однако если у нас надо отследить последовательность, то мы можем и не успеть разглядеть переимгивание светиков. Но никто не мешает воткнуть в код после смены состояния дебагвывода тупую задержку вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | PUSHF ; Макрос сохранения флагов PUSH R16 PUSH R17 PUSH R18 LDI R16,255 ; Грузим три байта LDI R17,255 ; Нашей выдержки LDI R18,255 Dloop: SUBI R16,1 ; Вычитаем 1 SBCI R17,0 ; Вычитаем только С SBCI R18,0 ; Вычитаем только С BRCC DLoop ; Если нет переноса - переход POP R18 POP R17 POP R16 POPF ; Макрос восстановления флагов |
Оформляется как прерывание для того, чтобы иметь минимальное влияние на код. Можно тоже оформить в виде макроса и втыкать его одной строчкой. Запрет прерываний опционально.
Либо вставлять затуп:
1 | RJMP PC |
Контроллер на этой команде встанет и дальше никуда не пойдет (правда если включен вачдог, то он ребутнется по вачдогу).
А можно же сразу после задержки перевести отладочный вывод в режим входа PullUp и просить кнопку пробника. Если нажата, можно идти дальше. Можно и без задержки, сделать, но надо смотреть, чтобы дребезг не помешал.
1 2 3 4 5 6 | ;STOP DB_BTN CBI DEBUGDDR,DEBUG SBI DEBUGPORT,DEBUG SBIC DEBUGPIN,DEBUG RJMP PC-1 |
Можно просто наставить таких кнопочных чекпоинтов. И пускать программу по ним своей могучей волевой рукой. А пока программа тупит на задержках или ожиданиях кнопок, можно спокойно замерить напряжения/пощупать лог уровни, состояние других выводов, да просто подумать.
Разумеется, если в схеме уже присутствуют светодиоды и кнопки, то и пробник тут не нужен - обойдемся имеющимися средствами — переназначив их на время отладки конкретного участка.
Правда в случаях отладки асинхронных устройств, работающих на четких временных выдержках данная затея может не прокатить, но для них есть другие варианты, о них позже.
Терминальные программы
Автор DI HALT
Опубликовано 27 Сен 2009
Рубрики: Софт
Метки: RS232, Интерфейс, Терминал
Практически постоянно приходится смотреть что шлет контроллер или заслать в него какой нибудь байтик. Это нужно для отладки, иногда для настройки. Порой для управления. Кому как, я так для отладки использую. Без толкового инструмента тут никак, поэтому я давно уже присмотрел себе парочку прикольных программок.
Первой хотел бы упомянуть Terminal v1.9b by Bray. На мой взгляд — гениальная программа! Более удобного интерфейса для работы я не встречал. Судите сами — все под рукой!
![]() |
Для настроек скорости работы, номера порта, параметров передачи и прочих сиюминутных потребностей не надо даже по менюшкам лазать — все прям сразу же. Также можно в один тык выдать инфу в разных системах счисления, что порой бывает очень удобно. Я бы сказал жизненно необходимо.
В один клик доступна таблица ASCII, а среди особых фишек которую я очень люблю — возможность выдать поток данных в виде графика от 0 до 255.
А еще можно писать скрипты на паскалеподобном языке, делающие с входящими-исходящими данными всякие непотребности.
В общем, рулез!
Из минусов можно только отметить некоторую тормознутость при выводе в Hex кодах, но это мелочи. Еще автор похоже забил на эту разработку, так что новых версий я не видел уже много лет. Найти эту дивную программу можно много где, в том числе и у меня:
Скачать программу Bray Terminal v1.9
Вторая программа это COM Port Toolkit от Михаила Голикова. Ей я пользуюсь гораздо реже, но она умеет весьма нужную штуку — возможность перехватывать обмен данными между софтом и физическим COM портом. Это чертовски выручило меня когда я ломал защиту PLC, а также помогло отреверсить обмен между программой настройки модулей HM-TR433. В общем, редко, но метко.
![]() |
Программка эта довольно проста в обращении, имеет три режима работы:
- Терминал
Может выдавать логи обмена данных улетевших к нами от нас. Слать из файла. Обрабатывать пересылаемое макросами (что может быть очень крутым подспорьем, но мне пока не пригождалось). Терминал как терминал, ничего особенного. - Прослушка
Это фишка уже поинтересней. Позволяет воткнуть комп в разрез между принимающим и передающим девайсом и прослушать передачу данных кто кому и что передал. Также ведутся логи с указанием времени передачи посылки. - Захват
Вот за эту фичу я и люблю эту программу — возможность снифферить обмен между софтом и портом. Редкая фича. Из бесплатных программ я нигде такого не встречал, а у программ вроде Advanced Serial Port Monitor или Free Serial Port Monitor эта фича доступна только в платной версии, тут же ее можно заюзать даже в демо версии.
Также можно писать скрипты на этот раз уже на Си подобном языке. Мне это больше нравится, т.к. я его лучше знаю.
Недостатков пожалуй три:
- Невозможность разделить в режиме “Захват” входящие и исходящие данные на два разных окна.
- Отстуствие русской документации, хотя бы по тому же скриптописанию.
- Шароварность. Впрочем, я бы не назвал это недостатком. Автор, я думаю, не святым духом питается.
Демка проработала 30 дней, потом захотела денег. Но свою работу по облегчению разбора протокола обмена PLC она выполнила.
Поначалу была мысль вспомнить шальное детство, сдуть пыль с родимого SoftICE и похачить защиту, но потом вспомнил что шашек такой формы не брал в руки уже лет 5, как минимум. Да и цена программы оказалась смешной - всего 10 баксов для русскоязычных пользователей.
Так что проще было ее зарегистрировать. Тем более штука нужная и уже неоднократно себя окупившая.
Внутрисхемная отладка AVR через JTAG ICE
Автор DI HALT
Опубликовано 28 июля 2009
Рубрики: AVR. Учебный курс, Готовые устройства
Метки: AVR, JTAG, Интерфейс, Отладка
Одним из самых мощных отладочных инструментов в микроконтроллерной среде является JTAG - внутрисхемный отладчик.
Суть тут в чем — через JTAG адаптер микроконтроллер подключается напрямую к среде программирвания и отладки, например к AVR Studio. После чего микроконтроллер полностью подчиняется студии и дальше шагу не может ступить без ее разрешения. Доступна становится пошаговое выполнение кода, просмотр/изменение всех регистров, работа со всей периферией и все это в реальном микроконтроллере, а не в программной эмуляции. Можно ставить точки останова (breakpoints) на разные события — для ICE1 три штуки. В общем, сказка, а не инструмент.
К сожалению в AVR микроконтроллерах JTAG доступен далеко не везде, как правило контроллеры с числом ног меньше 40 и обьемом памяти меньше 16КБ такого удовольствия лишены (там, правда, часто бывает debugWire, но на коленке сделать его адаптер еще никому не удалось, а фирменный JTAG ICEII или AVRDragon стоят довольно больших денег). А поскольку у меня в ходу в основном Tiny2313, Mega8, Mega8535 и прочая мелочевка, то мне JTAG что собаке пятая нога — не поддерживается он в этих МК.
Тем не менее, поддашвись многочисленным просьбам, я сварганил этот агрегат и сейчас покажу вам как им пользоваться. Читать полностью
Преобразователь USB-UART на FTDI FT232RL
Автор DI HALT
Опубликовано 03 июля 2009
Рубрики: Готовые устройства, Начинающим
Метки: RS232, USB, Интерфейс, Модуль
Хоть у меня и есть COM порты в компе, но последнее время мне их стало нехватать. Поэтому решил прикупить себе микросхемку конвертер и собрать переходник с USB на UART.
![]() |
Фотодачик. Часть 2. Модуляция.
Автор DI HALT
Опубликовано 17 мая 2009
Рубрики: Начинающим
Метки: TSOP, АРУ, Генератор, Интерфейс, Фотодиод, Фототранзистор
О простейших фотодетекторах я уже писал, но их применение для передачи информации или сигналов на расстояние весьма ограничено.
Предположим нам надо поймать световой сигнал, причем в любых условиях. И неважно будет это в полной темноте или с яркой внешней засветкой поймать и все тут. Но возникает проблема — как определить когда у нас есть сигнал, а когда фотодетектор засветило помехой?
Очевидный ответ — сравнение двух состояний. Когда полезный сигнал есть, и когда его нет. Для того, чтобы знать что полезный сигнал есть у него должен быть какой нибудь признак, например частота. Читать полностью
Интерфейсная шина IIC (I2C)
Автор DI HALT
Опубликовано 16 Апр 2009
Рубрики: Начинающим
Метки: i2c, IIC, Интерфейс, Протокол
![]() |
Один из моих самых любимых интерфейсов. Разработан в компании Philips и право на его использование стоит денег, но все на это дружно положили и пользуют в свое удовольствие, называя только по другому. В Atmel его зовут TWI, но от этого ничего не меняется :) Обычно при разборе IIC во всех книгах ограничиваются примером с EEPROM на этом и ограничиваются. Да еще юзают софтверный Master. Не дождетесь, у меня будет подробный разбор работы этой шины как в режиме Master так и Slave, да еще на аппаратных блоках с полным выполнением всей структуры конечного автомата протокола. Но об этом после, а сейчас основы.
Физический уровень.
Данные передаются по двум проводам — провод данных и провод тактов. Есть ведущий(master) и ведомый (slave), такты генерирует master, ведомый лишь поддакивает при приеме байта. Всего на одной двупроводной шине может быть до 127 устройств. Схема подключения — монтажное И
Читать полностью
Управление семисегментными индикаторами по одному проводу
Автор DI HALT
Опубликовано 26 марта 2009
Рубрики: Начинающим
Метки: Интерфейс, Конденсатор, Регистр, Фильтры
Часто бывает ситуация, когда надо выполнить простую задачу с которой справится даже грошовый контроллер вроде ATTiny12, но вот незадача - нужна индикация, а под какой нибудь семисегментный индикатор придется убить дофига выводов, а их всего восемь, из которых два питание, а один Reset. Можно, конечно, взять просто МК потолще, но мне больше по душе разные схемотехнические извраты. Вот и тут камрад Kalobyte подкинул ссылку на прикольную схему управления тройным (а в перспективе хоть десятерным) семисегментным индикатором по одному проводу.
Индикатор зажигается посредством сдвигового регистра 74HC164, всего таких регистров можно навесить очень много, просто соединив по цепи несколько регистров. Если отбросить RESET, то для проталкивания данных в регистр нужны две линии - Data и Clock. Путем небольшого изврата можно эти две линии обьединить в одну.
Читать полностью
Сдвиговый регистр
Автор DI HALT
Опубликовано 13 марта 2009
Рубрики: Начинающим
Метки: Интерфейс, Цифра
Иногда требуется ОЧЕНЬ много выходных портов. Особенно если хотим сделать что нибудь на светодиодах. Гирлянду какую-нибудь навороченную. Что делать? Брать под это дело ATMega128 с ее полусотней выводов? Избыточно — для ламеров. Ставить i2с расширитель портов? Дорого. Для мажоров. Тут на помощь из вековых глубин выплывает старая добрая дискретная логика. На этот раз нас выручит грошовый сдвиговый регистр. Возьму, для примера, 74HC164 он же, для любителей совковых трешевых микросхем в неубиваемом каменном корпусе, наш КM555ИР8.
![]() |
У него есть 8 выходов и четыре входа. R-сброс, С-тактовый, А1 и А2 вход. На самом деле, внутри они заведены через логический элемент 2И-НЕ и идут на D триггеры. D — это такой тип триггера, который по тактовому импульсу схватывает и отправляет на выход то, что у него на входе. Как видишь, тут они цепью стоят ,передавая бит от одного к другому и нет принципиальной разницы сколько их тут будет, восемь штук или восемь миллиардов. Но чем больше, тем дольше по этой эстафете гнать данные до конца. Поэтому мы смело можем эти регистры соединять последовательно. Читать полностью
Модуль Ethernet-RS232 WIZ100SR
Автор DI HALT
Опубликовано 28 Фев 2009
Рубрики: Готовые устройства
Метки: Ehternet, LAN, RS232, UART, Интерфейс, Модуль
Как то раз мне потребовалось устройство способное соединяться с удаленным сервером и пересылать байты. Конечно, для этих целей можно использовать компьютер, но это громоздко и неудобно, да и надежность такой системы оставляет желать лучшего - слишком сложное устройство. Другое дело микроконтроллер, например Microchip PIC, MSC-51 или Atmel AVR - простой, надежный, потребляет минимум энергии и способен надежно выполнить узкий круг поставленных задач. Например, мониторинг сигнализации через Internet или Ethernet сеть. Всё бы хорошо, но тут появляется очередная проблема - протокол TCP/IP. Реализовать на AVR или PIC стек протоколов TCP/IP задача выполнимая, но требует времени, а время, как известно, деньги. Надо было срочно и с минимальным геморроем. И вот тут мне на помощь пришел интерфейсный модуль Ethernet - RS232.
Задача стандартная, поэтому предложений на рынке готовых модулей предостаточно, однако не стоит торопиться. Тут есть ряд тонкостей, связанных с особенностями работы данных устройств. Например, подавляющее большинство модулей может работать исключительно в роли сервера, которому требуется выделенный IP адрес. Устройство-клиент работает только с специализированным софтом, как правило под Windows, и открывает виртуальный COM порт который соединяется с удаленной системой (UART - Ethernet модуль) и обеспечивает обмен данными. Не самый удобный вариант. Для моей задачи данная конструкция была совершенно непригодна. Поэтому я начал искать дальше, вскоре был обнаружен замечательный модуль EG-SR-7100, а потом и его более новая модификация WIZ100SR. Почитал характеристики — оно! Все для решения моей задачи! Читать полностью
Радиомодуль HopeRF HM-TR433
Автор DI HALT
Опубликовано 20 Фев 2009
Рубрики: Начинающим
Метки: HopeRF, RS232, UART, Интерфейс, Модуль, Радиопередача
Прикупил я себе парочку модулей HM-TR433. Так, помучить. Стоит такая радость на данный момент порядка 800рублей. Это трансивер, то есть он может как принимать, так и передавать. Мало того, тут стоит управляющий контроллер, который сам кодирует информацию, загоняет ее в радио канал и декодирует пойманное. То есть, по сути, мы получаем удлинитель UART и всякие проблемы вроде шума после пропадания несущей, какие были в связке HM-T433/HM-R433 нас уже не волнуют. Один минус - канал полудуплексный, то есть синхронный прием и передача невозможны, только по очереди. Но это не велика проблема — зачастую полудуплекса хватает за глаза.
![]() |
Существует две модификации этого модуля. Одна имеет окончание TTL другая RS232. Разница лишь в уровнях и в том, что в первую китайцы забыли впаять MAX232 и обвязку из конденсаторов, зато поставили перемычки. Так что имея прямые руки и нужный инструмент можно из TTL сделать RS232 и наоборот. Впрочем, по цене они копейка в копейку идут. Читать полностью
Радиомодули HopeRF HM-R433 и HM-T433. Тест на дальность
Автор DI HALT
Опубликовано 07 Ноя 2008
Рубрики: Начинающим
Метки: RS232, UART, Интерфейс, Модуль, Радиопередача
Итак, что из себя представляла установка:
Блок А:
- Передатчик: HM-T433
- Приемник: HM-R433
- Антенна передатчика: Кусок провода МГТФ длинной 17см (1/4 от длины волны 433Мгц сигнала) загнутый абы как.
- Антенна приемника: та же херня.
- Расположение модулей: параллельно друг другу, на расстоянии 2см, усики антенн разбросаны в разные стороны, на манер тараканьих.
- Расположение блока: 5 этаж, на столе. У северной стены.
- Питание: 5 вольт.
- Скорость передачи: 4800 бод.
- Длина пакета данных: 10 байт.
- Передатчик: HM-T433
- Приемник: HM-R433
- Антенна передатчика: Кусок провода МГТФ длинной 17см (1/4 от длины волны 433Мгц сигнала) загнутый абы как.
- Антенна приемника: та же херня.
- Расположение модулей: параллельно друг другу, на расстоянии 2см, усики антенн разбросаны в разные стороны, на манер тараканьих.
- Расположение блока: У меня в руках, на земле. С южной стороны дома (смотри схему)
- Питание: 5 вольт.
- Скорость передачи: 4800 бод.
- Длина пакета данных: 10 байт.
Блок Б дает десятибайтный пакет блоку А, тот, убедившись, что пакет принят без искажений, шлет подтверждение обратно на блок Б, те же десять байт. Блок Б, получив подтверждение зажигает зеленый диод. Передача идет с обрывом несущей. Т.е. после отправки пакета передатчик вырубается полностью.
Радиомодули HopeRF HM-R433 и HM-T433. Проблемы и решения
Автор DI HALT
Опубликовано 04 Ноя 2008
Рубрики: Начинающим
Метки: RS232, UART, Интерфейс, Модуль, Отладка, Радиопередача
Несущая
Приемник ловит изменение несущей, которую генерирует передатчик. А если не будет передатчика, что будет ловить приемник? По идее не должен ловить ничего, а что на практике? А на практике дикий срач!!! Натурально белый шум по всему диапазону от 0 до 255. Фигасе бага, да? Но ладно, хрен с этим белым шумом, его, в конце концов, можно фильтровать, отслеживать в нем наличие чего либо разумного и лишь после начинать прием.
Ждущий режим
У передатчика, к моему, а также ряда внимательных читателей, удивлению нет входа Enable. У приемника то есть. Редкостный бред, особенно ввиду того, что спустя 70mS простоя на линии DATA передатчик впадает в спячку и… правильно, отрубает несущую - на выходе приемника начинается в этот момент жуткий срач. Так что либо шли данные непрерывным потоком, либо перед каждой посылкой шли идентификационный пакет. А еще не забыв предупредить приемник о том, что передача закончена и дальше ловить нечего.
Совместная работа
Тут все просто, два передатчика одновременно работать не могут. От слова совсем. Либо по отдельности, либо никак. Это было ожидаемо и это надо учитывать.
Баги при передаче
Но что меня больше всего добило, так это баги. Если с первые три пункта можно учитывать и обрабатывать программно без лишних заморочек, то со последним уже все гораздо веселей.
AVR. Учебный курс. Передача данных через UART
Автор DI HALT
Опубликовано 07 Сен 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, AVR, RS232, UART, Интерфейс
Почти каждый микроконтроллер имеет на борту универсальный последовательный интерфейс - UART. AVR тут не исключение и поддерживает этот протокол в полном обьеме полностью аппаратно. По структуре это обычный асинхронный последовательный протокол, то есть передающая сторона по очереди выдает в линию 0 и 1, а принимающая отслеживает их и запоминает. Синхронизация идет по времени — приемник и передатчик заранее договариваются о том на какой частоте будет идти обмен. Это очень важный момент! Если скорость передатчика и приемника не будут совпадать, то передачи может не быть вообще, либо будут считаны не те данные.
Протокол
Вначале передатчик бросает линию в низкий уровень - это старт бит. Почуяв что линия просела, приемник выжидает интервал Т1 и считывает первый бит, потом через интервалы Т2 выковыриваются остальные биты. Последний бит это стоп бит. Говорящий о том, что передача этого байта завершена. Это в самом простом случае.
В конце байта, перед стоп битом, может быть и бит четности. Который получается если поксорить между собой все биты, для контроля качества передачи. Также может быть два стопа, опять же для надежности. Битов может быть не 8, а 9. О всех этих параметрах договариваются на берегу, до начала передачи. Самым же популярным является 8 бит, один старт один стоп, без четности.
Причем с самим протоколом можно не заморачиваться — все реализовано аппаратно. Разве что захочется завести второй UART, тогда придется делать его программно.
По такому же протоколу работает COM порт компьютера, разница лишь в разнице напряжений, поэтому именно этот протокол я буду использовать для связи микроконтроллера с компом. Для преобразования напряжений можно использовать RS232-TTL конвертер. Мы же применим встроенный в Pinboard мост USB-UART который образовывает в системе виртуальный COM PORT Читать полностью
Связь микроконтроллера с компьютером через RS232
Автор DI HALT
Опубликовано 31 Авг 2008
Рубрики: Готовые устройства
Метки: RS232, UART, Интерфейс, Микроконтроллер
|
| Схема |
|
| Плата сверху |
|
| Плата снизу |
|
| В собранном виде |
|
| Печатная плата. Тонер не смыт. |
Практически каждая фирма делает свой преобразователь, так что тут сгодится и ST232, и ADM232, и HIN232. Схемка простая как три копейки - вход, выход, питание и обвязка из пяти конденсаторов. Конденсаторы обычно ставятся 1uF электролиты, но в некоторых модификациях ставится 0.1uF керамика. Я везде впаивал 0.1uF керамику и не парился :) Работает как часы.
Кстати, существует еще и MAX3232 это то же самое, но на выходе у него не 5вольт TTL, а 3.3 вольта TTL. Её используют для низковольтных контроллеров.
Я себе сделал один такой универсальный шнурочек, чтобы к контроллерам цепляться было удобно по UART. Для общей компактности всю схему запихал прям в разъем, благо у меня были ST232 в soic корпусе. Получилась платка не больше рублевой монеты. Так как под рукой не было мелких SMD конденсаторов, то пришлось напаять кондеры сверху, кто во что горазд. Главное работает, хоть и не очень красиво вышло.
Если сомневаешься, что у тебя получится столь мелкий монтаж, то я тебе развел плату на стандартный PDIP корпус. Размером она будет со спичечный коробок, зато мельчить не надо.
После сборки проверяется просто:
Втыкается в разъем COM порта. Подается 5 вольт питания на схему, а затем замыкаешь Rx на Tx (у меня это зеленый и желтый провода).
Дальше открваешь любую терминалку, хоть Hyper Terminal, цепляешься к порту и начинаешь посылать байты, они должны тотчас возвращаться обратно. Если этого не произошло — проверяй схему, где то косяк.
Если работает, то дальше все просто. Тот провод который идет от ножки 9 микросхемы MAX232 это передающий вывод, его заводи на ногу RxD контроллера. А тот который с ножки 10 — принимающий, его смело сажай на вывод TxD контроллера.
Плата сделана была методом ЛУТ, в одном месте по моему недосмотру толщина просвета оказалась 0.05мм, протравилась, но со спайками, пришлось процарапывать. А в целом с первого раза ать и никаких проблем. Аж сразу захотелось сделать что нибудь маленькое маленькое, нафаршированное нафаршированное :)
Все, аппаратная часть для связи микроконтроллера с компом готова. Ждите следующего поста в котором я расскажу как конфигурировать и использовать UART в микроконтроллерах AVR. В будущем я буду через UART осуществлять отладочную связь с компом. Может быть даже ради этого соберу отдельный модуль с LCD экранчиком. Для отладки в железе. Посмотрим как попрет.
Печатная плата в формате Sprint Layout. Два варианта маленький и большой
Та же бодяга, но для работы через USB
AVR. Учебный курс. Работа с портами ввода-вывода. Практика
Автор DI HALT
Опубликовано 17 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Алгоритм, Интерфейс, Порт, Трюки
Вот ты читаешь сейчас это и думаешь — память, регистры, стек и прочее это хорошо. Но ведь это не пощупать, не увидеть. Разве что в симуляторе, но я и на дельфи с тем же условием могу накодить. Где мясо!!!
В других курсах там, чуть ли не с первых строк, делают что то существенное — диодиком мигают и говорят, что это наш Hello World. А тут? Гыде???
Да-да-да, я тебя понимаю. Более того, наверняка ты уже сбегал к конкурентам и помигал у них диодиком ;)))) Ничего, простительно.
Я просто не хотел на этом же мигании дидодиков и остановиться, а для прогресса нужно четкое понимание основ и принципов - мощная теоретическая база. Но вот пришла очередь практики.
О портах было рассказано, шаблон программы у вас уже есть, так что сразу и начнем.
Читать полностью
AVR. Учебный курс. Устройство и работа портов ввода-вывода
Автор DI HALT
Опубликовано 11 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, I/O, Интерфейс, Начинающим, Порт
С внешним миром микроконтроллер общается через порты ввода вывода. Схема порта ввода вывода указана в даташите:
![]() |
Но новичку там разобраться довольно сложно. Поэтому я ее несколько упростил Читать полностью











