Логический пробник на микроконтроллере avr: Обнаружено потенциально опасное значение Request.Path, полученное от клиента (?).

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

В статье этого же автора «Кабельный пробник на микроконтроллерах AVR» описан вариант кабельного пробника на микроконтроллерах ATmega8A-PU в передатчике и ATtiny24A-PU в приёмнике. В этой статье автор предлагает вниманию читателей более простой вариант этого прибора, предназначенный для выполнения сравнительно небольшого объёма работ по изготовлению и ремонту кабелей. Пробник имеет практически те же возможности, но выполнен на двух одинаковых и более распространённых микроконтроллерах ATtiny2313A-PU. Предусмотрен автоматический перевод микроконтроллеров в «спящий» режим с пониженным до предела энергопотреблением, что позволило не отключать батареи питания по завершении работы.

С помощью этого прибора легко находить в многопроводных кабелях нужные провода и проверять их исправность. Для этого на одном конце кабеля к ним подключают выходы передатчика с пронумерованными зажимами «крокодил». Общие выводы передатчика и приёмника (также снабжённые «крокодилами») соединяют вместе, причём использовать для этого можно как один из проводов кабеля, так и отдельный провод. На противоположном конце кабеля поочерёдно касаются его проводов щупом приёмника. При каждом таком касании, если провод исправен, на индикаторе приёмника появляется его номер, соответствующий номеру подключенного к его началу выхода передатчика.

В отличие от первого варианта, из приемника исключен контроль напряжения батареи при включении. Убраны выключатели питания, теперь напряжение батарей подано на приёмник и передатчик непрерывно. Большую часть времени микроконтроллер передатчика находится в режиме Powerdown с минимальным потреблением. Активизируют его и вновь «усыпляют» нажатиями на кнопку.

Микроконтроллер приёмника переходит в активный режим автоматически с появлением на входе импульсов передатчика, а переходит в режим Powerdown после длительного отсутствия этих импульсов. Ток потребления, как передатчика, так и приёмника в этом режиме не превышает 2 мкА. Число проверяемых проводов кабеля уменьшено с 22 до 15. За счёт этого схема передатчика упрощена.

В режим Powerdown приёмник и передатчик переходят автоматически по истечении заданного времени бездействия. Передатчик — через 40 мин с момента включения. Приёмник — через четыре минуты с момента включения или окончания последней операции «прозвонки».

Приёмник автоматически активизируется без нажатия на кнопку, если на его вход поданы импульсы от передатчика. Всё это обеспечивает экономию энергии батарей и повышает удобство пользования. Не приходится, например, специально идти к передатчику, чтобы выключить его по завершении «прозвонки».

Схема передатчика представлена на рис. 1. Его основа — микроконтроллер DD1. Для подключения проводов проверяемого кабеля использованы все линии его портов, которые могут работать как выходы. Это восемь линий порта B и семь линий порта D — всего 15.

Рис. 1. Схема передатчика

 

Для усиления контрольных импульсов применены микросхемы ULN2003AN (DD2, DD3), содержащие по семь транзисторных ключей. Недостающий 15-й ключ выполнен на транзисторе VT1, диоде VD1 и резисторе R4.

На указанных выводах микроконтроллер DD1 формирует пачки импульсов, число импульсов в которых соответствует номеру проверяемого проводника. В цепи начальной установки микроконтроллера имеется кнопка SB1. При нажатии на неё микроконтроллер DD1 переходит в исходное состояние. Начавшая работать программа проверяет, прежде всего, разряд состояния r5.0. Если в нём записана логическая единица, программа заменяет её логическим нулём и продолжает свою работу. При повторном нажатии на кнопку перезапущенная программа обнаруживает, что в разряде статуса записан логический ноль, инвертирует его, а затем переводит микроконтроллер в энергосберегающий режим Powerdown.

Резистор R3 ограничивает ток через проверяемые провода и, следовательно, через ключи микросхем DD2, DD3 и транзистор VT1. Мигание светодиода HL1 сообщает об активной работе передатчика. Погашенный светодиод означает, что передатчик переведён в режим Powerdown. Разъём X1 служит для подключения программатора.

Программа для передатчика написана в среде Algorithm Builder 5.44. Отказ от компилятора BASCOM-AVR 2.0.7, использовавшегося для разработки программы передатчика первой версии прибора, связан с тем, что при начале работы микроконтроллера этот компилятор принудительно заполняет всё его ОЗУ нулями, поэтому невозможно сохранить там информацию, занесённую в предыдущем сеансе работы. Использовать для этого EEPROM микроконтроллера было сочтено нецелесообразным.

Чертёж печатной платы передатчика представлен на рис. 2.

Рис. 2. Чертёж печатной платы передатчика

 

Схема микроконтроллерной части приёмника изображена на рис. 3, а индикаторной — на рис. 4. Их одноимённые выводы a-h, k1, k2, з, к, о должны быть соединены проводами. Импульсы от передатчика приходят на щуп «Х» и на провод «0» с зажимом «крокодил», а затем через оптрон U1 на вход PD2 (вывод 6) микроконтроллера. Супрессор VD1 и резистор R1 защищают вход приёмника от случайной подачи высокого напряжения.

Рис. 3. Схема микроконтроллерной части приёмника

 

Рис. 4. Схема индикаторной части приёмника

 

Двухцветный светодиод HL1 сигнализирует о наличии на входе приёмника импульсов передатчика. Зелёный цвет его свечения указывает на правильное соединение приёмника с передатчиком, при красном цвете нужно поменять местами зажим X1 и щуп X2 Информация о номере провода отображается на семиэлементных светодиодных с общими катодами индикаторах HG1 и HG2. Транзисторы VT1 и VT2 переключают катоды индикаторов, обеспечивая динамическую индикацию.

Нажатием на кнопку SB1 микроконтроллер приёмника принудительно переводят из активного режима в энергосберегающий и обратно. Разъём X3 служит для подключения программатора.

Рис. 5.  Чертёж печатной платы приёмника

 

Рис. 6.  Чертёж печатной платы приёмника

 

Приёмник собран на двух печатных платах, чертежи которых изображены на рис. 5 и рис. 6. Их содержимое соответствует схемам, показанным на рис. 3 и рис. 4. Платы установлены (рис. 7) в готовом корпусе G407, для крепления в них предусмотрены отверстия под саморезы диаметром 2,5…3 мм. Держатель батареи GB1, составленной из трёх гальванических элементов типоразмера AA, приклеен к корпусу термоклеем. Чтобы сделать это, на одной из половин корпуса срезаны два выступа для крепления плат. В этой же половине вырезано и закрыто красным светофильтром прямоугольное окно для индикаторов HG1 и HG2, а также просверлено отверстие под светодиод HL1.

Рис. 7. Монтаж плат приёмника

 

Светодиод АЛ307 в передатчике может быть заменён любым другим подходящего цвета и яркости свечения. Вместо транзисторов КТ315Б подойдут любые кремниевые транзисторы структуры n-p-n с допустимым током коллектора не менее 100 мА. Прямой замены для индикаторов АЛС324А нет, но, переделав плату индикации, можно применить любые подобные индикаторы с общими катодами. Двухцветный светодиод L-3WEGW диаметром 3 мм можно заменить другим трёхвыводным с общим катодом. Супрессор SMAJ5.0CA можно заменить любым другим симметричным супрессором с напряжением пробоя 5 В.

Для выходов передатчика использовано 15 зажимов «крокодил» в защитных оболочках красного цвета, на которые краской нанесены номера проводов. Ещё два «крокодила» в оболочках чёрного цвета предназначены для нулевых проводов передатчика и приёмника.

Конфигурация обоих микроконтроллеров должна быть запрограммирована в соответствии с таблицей. Программы для них приложены к статье.

Разряд

Сост.

Разряд

Сост.

CKSEL0

0

BODLEVELO

1

CKSEL1

0

B0DLEVEL1

1

CKSEL2

1

BODLEVEL2

1

CKSEL3

0

WDTON

1

SUT0

0

SPIEN

0

SUT1

1

EESAVE

1

CKOUT

1

DWEN

1

CKDIV8

1

SELFPRGEN

1

RSTDISBL

1

  

0 — запрограммировано;

1 — не запрограммировано

 

Рис. 8. Прибор в сборе

 

Налаживания приёмника и передатчика не потребуется. Необходимо лишь, прикасаясь щупом приёмника к зажимам «крокодил» передатчика при соединённых нулевых проводах (рис. 8), проверить соответствие цифр на индикаторе номерам на зажимах.

Файлы печатных плат прибора в формате Sprint Layout 6.0 и программы его микроконтроллеров имеются здесь.

Автор: С. Рычихин, г. Первоуральск Свердловской обл.

Логический пробник « схемопедия


   Пробник максимально прост и содержит минимальное количество радиодеталей. В нем применен полупроводниковый знакосинтезирующий индикатор АЛС324Б. Прибор индицирует три различных состояния на входе: отсутствие сигнала (загорается знак -|), напряжение низкого логического уровня (горит 0), напряжение высокого логического уровня (горит 1). Питается устройство от источника постоянного тока напряжением 9 В (батарея “Корунд”). Принципиальная схема логического пробника показана на рисунке 1. Транзистор VT1 выполняет роль электронного ключа. Элементы DD1.1 и DD1.3 микросхемы DD1 служат для усиления входного сигнала, а DD1.2 используется в качестве сравнивающего устройства. Логическая информация отображается знакосинтезирующим индикатором HG1. Постоянные резисторы R6-R10, R12, R13 ограничивают ток светодиодов индикатора, а подстроечный резистор R3 служит для установки пробника в исходное состояние при отсутствии входного сигнала. Батарея GB1, стабилитрон VD1 и подстроечный резистор R11 образуют стабилизированный источник питания постоянного тока.

   Предположим, что после включения питания сигнал на входе пробника отсутствует (щупы ХР1 и ХР2 не подключены к электрической цепи проверяемого устройства). При этом транзистор VT1 будет заперт и на входе 9 элемента DD1. 2 установится напряжение высокого логического уровня. Такой же величины будет напряжение на входах 5 и 6 DD1.1, а следовательно, и на выходе 1 DD1.3 и входе 8 DD1.2. В результате на выходе 10 DD1.2 установится логический 0, и на индикаторе HG1 загорятся сегменты g, b и с (последние два через резисторы R12 и R13 подключены непосредственно к “минусовому” проводу питания), обозначая отсутствие сигнала на входе пробника.

   Если теперь на вход подать напряжение высокого логического уровня, состояние элементов DD1.1 и DD1.3 не изменится, зато транзистор VT1 откроется и на входе 9 DD1.2 установится логический 0. Элемент DD1.2 переключится, на его выходе появится логическая 1 и сегмент g индикатора погаснет. В то же время сегменты b и c продолжают светиться, образуя цифру 1.

   Подадим на вход пробника напряжение низкого логического уровня. Транзистор VT1 снова окажется запертым, а вот элементы DD1.1 и DD1.3 переключатся в противоположные состояния и на выходе 1 DD1.3 и входе 8 DD1.2 установится логический 0. При этом элемент DD1.2 также переключится, и на его входе появится напряжение высокого логического уровня. В результате сегмент g погаснет, а сегменты а, d, e, f загорятся, образуя вместе с непрерывно горящими сегментами b и с изображение цифры 0.

Рис.1 Принципиальная схема логического пробника     Все элементы пробника, за исключением батареи питания GB1, тумблера SA1 и щупов ХР1 и ХР2, размещаются на монтажной плате размером 62×30 мм, изготовленной из фольгированного гетинакса или стеклотекстолита толщиной 1-2 мм (рис.2).

   В устройстве можно использовать следующие детали. Транзистор КТ601 – КТ603, КТ608 с любым буквенным индексом. Вместо индикатора АЛС324Б можно применить любой другой с разделенными катодами, например КЛЦ201. Стабилитрон – КС156А или КС147А. Постоянные резисторы-ВС, МЛТ, ОМЛТ, С2-23, С2-33; подстроечные – СПЗ-16. Допустимо также использовать подстроечные резисторы СП4; однако необходимо будет несколько изменить конструкцию монтажной платы с учетом его габаритов и расположения выводов. Тумблер – малогабаритный, например ПДМ или МТ1, МТД1. Щупы- от промышленного измерительного прибора.

   Настройка. Прежде всего вращением движка подстроечного резистора R11 подберите напряжение питания микросхемы DD1, чтобы оно составляло 5 В. Затем при отсутствии входного сигнала установите пробник в исходное состояние, переведя движок R3 в крайнее правое по схеме положение. При этом на индикаторе должны гореть сегменты b и с. Далее, медленно вращая движок R5 в обратную сторону, добейтесь свечения сегмента g. Теперь пробник готов к работе.

Рис. 2 Печатная плата и схема расположения элементов

Логический пробник с использованием ATTINY26 | Детали

Логический пробник предназначен для сборки на перфорированной плате, поэтому макет платы отсутствует.

Я выбрал ATTINY26 для этого проекта просто потому, что он у меня был. Тем не менее, при необходимости должна быть возможность перенести проект на меньшие или более новые ATTINY. AVR должен иметь

  • аналого-цифровой преобразователь
  • внешний контакт прерывания, настраиваемый для обнаружения обоих фронтов
  • таймер с выходным сравнением совпадений, переключающий выходной контакт
  • второй более упрощенный таймер для генерации такта таймера
  • 5 дополнительных контактов ввода/вывода для 3 светодиодов, 1 переключатель и 1 выход для предварительной зарядки датчика

Предохранители микроконтроллера должны быть настроены на работу на частоте 8 МГц внутренний осциллятор.

Сеть резисторов R8, R9 и R10 предварительно заряжает пробник через R1 напряжением, подходящим для обнаружения обрыва цепи. Напряжение для сигнализации неопределенного логического уровня составляет 1,4 В для TTL и 2,5 В для CMOS. Порт A Pin 6 управляет R9high в CMOS-режиме, hi-Z в TTL-режиме.

Светодиоды должны быть слаботочными, так как их резисторы допускают 5 мА при 5 В на светодиод. Вам решать, какими цветами вы хотите сигнализировать о высоком, низком или пульсирующем уровне. Устройство вывода звука представляет собой магнитный преобразователь с сопротивлением 40 Ом. Если вам нужно заменить BJM 05 на другой тип, он не должен иметь более низкий импеданс. В противном случае вам может понадобиться добавить усилитель.

Переключатель S1.1 отключает динамик, если звук раздражает вас или ваших коллег. Переключатель S1.2 выбирает TTL-режим, если включен, CMOS-режим, если выключен. Если вы не хотите использовать TTL-режим, просто оставьте порт A контакт 7 отключенным. В то же время вы можете оставить контакт 6 на том же порту также отключенным и перемкнуть R10 (подключить R9непосредственно в Vcc).

Логический пробник получает питание от тестируемой цепи. Будьте осторожны, чтобы не использовать микроконтроллер за пределами его указанного рабочего напряжения. Не меняйте местами провода Vcc и Ground!

Для всех моих проектов на ассемблере AVR я использую включение с макросами, чтобы лучше структурировать программы с блоками IF-ELSE-END и DO-EXIT-LOOP. Я написал макросы в 2010 году, они называются «Макросы структурированной сборки» и живут в «sam.inc».

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

  • регистр калибровки генератора
  • таймер 0 в качестве таймера 8 мс
  • таймер 1 в качестве генератора частоты для звука
  • АЦП получает опорное напряжение от Vcc, выводит 8 бит в старший регистр АЦП, использует АЦП9 (порт B, контакт 6) в качестве входа, использует 125 кГц в качестве тактового сигнала АЦП и запускает режим автономной работы
  • , чтобы установить флаг INTF0 на оба фронта обнаружены на INT0 (порт B контакт 6)
  • регистров для подсчета выборок, таймера фронта, частоты текущего логического состояния

Основной цикл программы состоит из 3 основных блоков, АЦП завершен, такт таймера 8 мс и обнаружен фронт сигнала.

Блок АЦП сначала решает, какие уровни применять, проверяя переключатель CMOS/TTL. Результат АЦП устанавливает высокий или низкий уровень светодиода и подсчитывает выборки за последние 8 мс такта таймера. Наконец, устанавливается уровень напряжения предварительной зарядки зонда.

Блок таймера 8 мс сначала проверяет, не истек ли срок действия светодиода импульса 100 мс на таймере. Затем количество семплов и таймер импульсов определяют, следует ли включить звук и какую частоту следует использовать. Последняя частота сверяется с текущим выбором, и если она совпадает, импульсный таймер получает приоритет. Это приводит к трели звука, когда обнаруживается импульс хотя бы с одним допустимым логическим уровнем.

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

АЦП выполняет почти 10 000 выборок в секунду при работе на частоте 125 кГц в автономном режиме. В первом из 13 циклов АЦП конденсатор выборки и хранения заряжается от входа АЦП. Какое бы сочетание уровней ни присутствовало в течение этого цикла, оно усредняется, а затем преобразуется. Цикл составляет 8 мкс при частоте 125 кГц. Однако важны только последние 5 мкс цикла выборки, поскольку максимальная частота для АЦП указана на уровне 200 кГц. Так что это будет не очень точно с короткими импульсами или высокими частотами. Например, при прямоугольной волне 2,5 МГц светодиод высокого или низкого уровня не загорается. Однако чем ближе вы подходите ко времени цикла, тем ближе среднее значение к верхнему и/или нижнему пороговым значениям. Это также зависит от мощности управляющего логического выхода. Слабому драйверу, едва достигающему порога, могут также потребоваться полные 5 мкс, чтобы позволить АЦП обнаружить действительный высокий или низкий уровень.

Вывод INT0 вызывает установку флага INTF0 каждый раз при обнаружении изменения уровня. Однако входные контакты тактируются тактовой частотой ввода-вывода ATTINY, которая совпадает с тактовой частотой ЦП 8 МГц. Если импульс полностью укладывается в цикл ввода/вывода продолжительностью 125 нс, он не вызовет срабатывания флага INTF0. Он все еще может срабатывать, если он перекрывает край тактового сигнала ввода-вывода. Можно ожидать, что импульс длительностью 62,5 нс (1/2 от 125 нс) вызовет срабатывание флага INTF0 в 50 % случаев.

Логический пробник с использованием ATTINY26 | Хакадей ио

Логический пробник использует АЦП для обнаружения правильных логических уровней с ~10 тыс. отсчетов на
секунды. Короткие импульсы или высокочастотные изменения могут быть не обнаружены таким образом.
Таким образом, изменение уровня определяется входом INT0 в режиме переключения. На 8 МГц Можно обнаружить
импульса длительностью более 125 нс.

3 светодиода сигнализируют о высоком и низком логических уровнях, а также об обнаруженных изменениях уровня или импульсах.
Светодиод импульса горит в течение 100 мс после обнаружения последнего фронта импульса.

Магнитный датчик делает логические уровни и изменения уровня или импульсы слышимыми.
Постоянный низкий уровень = 650 Гц, постоянный высокий уровень = 1750 Гц, изменение только уровня = 1100 Гц.
Низкий с высокими импульсами трели с частотой 650 Гц и 1100 Гц. Высокий с низким импульсом

трель с частотой 1750 Гц и 1100 Гц.

Файлы проекта также доступны по адресу https://github.com/Klaus2m5/Logic_Probe

Детали

Логический пробник предназначен для сборки на перфорированной плате, поэтому макет платы отсутствует.

Я выбрал ATTINY26 для этого проекта просто потому, что он у меня был. Тем не менее, при необходимости должна быть возможность перенести проект на меньшие или более новые ATTINY. AVR должен иметь

  • аналого-цифровой преобразователь
  • внешний контакт прерывания, конфигурируемый для обнаружения обоих фронтов
  • таймер с выходным сравнением, переключающий выходной контакт
  • второй более упрощенный таймер для генерации такта таймера
  • 5 дополнительные контакты ввода/вывода для 3 светодиодов, 1 переключателя и 1 выхода для предварительной зарядки пробника

Предохранители микроконтроллера должны работать на внутреннем генераторе 8 МГц.

Сеть резисторов R8, R9 и R10 предварительно заряжает пробник через R1 напряжением, подходящим для обнаружения обрыва цепи. Напряжение для сигнализации неопределенного логического уровня составляет 1,4 В для TTL и 2,5 В для CMOS. Порт A Pin 6 управляет высоким уровнем R9 в режиме CMOS, высоким уровнем Z в режиме TTL.

Светодиоды должны быть слаботочными, так как их резисторы допускают 5 мА при 5 В на светодиод. Вам решать, какими цветами вы хотите сигнализировать о высоком, низком или пульсирующем уровне. Устройство вывода звука представляет собой магнитный преобразователь с сопротивлением 40 Ом. Если вам нужно заменить BJM 05 на другой тип, он не должен иметь более низкий импеданс. В противном случае вам может понадобиться добавить усилитель.

Переключатель S1.1 отключает динамик, если звук раздражает вас или ваших коллег. Переключатель S1.2 выбирает TTL-режим, если включен, CMOS-режим, если выключен. Если вы не хотите использовать TTL-режим, просто оставьте порт A контакт 7 отключенным.

В то же время вы можете оставить контакт 6 на том же порту также отключенным и перемкнуть R10 (подключить R9 напрямую к Vcc).

Логический пробник получает питание от тестируемой цепи. Будьте осторожны, чтобы не использовать микроконтроллер за пределами его указанного рабочего напряжения. Не меняйте местами провода Vcc и Ground!

Для всех моих проектов на ассемблере AVR я использую включение с макросами, чтобы лучше структурировать программы с блоками IF-ELSE-END и DO-EXIT-LOOP. Я написал макросы в 2010 году, они называются «Макросы структурированной сборки» и живут в «sam.inc».

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

  • регистр 9 калибровки генератора.0009
  • таймер 0 в качестве таймера 8 мс
  • таймер 1 в качестве генератора частоты для звука
  • АЦП получает опорное напряжение от Vcc, выводит 8 бит в старший регистр АЦП, использует АЦП9 (порт B, контакт 6) в качестве входа, использует 125 кГц в качестве тактового сигнала АЦП и запускает режим автономной работы
  • , чтобы установить флаг INTF0 на оба фронта обнаружены на INT0 (порт B контакт 6)
  • регистры для подсчета выборок, таймер фронта, частота текущего логического состояния

Основной программный цикл состоит из 3 основных блоков, завершения преобразования АЦ, 8 мс таймера и обнаружения фронта сигнала.

Блок АЦП сначала решает, какие уровни применять, проверяя переключатель CMOS/TTL. Результат АЦП устанавливает высокий или низкий уровень светодиода и подсчитывает выборки за последние 8 мс такта таймера. Наконец, устанавливается уровень напряжения предварительной зарядки зонда.

Блок таймера 8 мс сначала проверяет, не истек ли срок действия светодиода импульса 100 мс на таймере. Затем количество семплов и таймер импульсов определяют, следует ли включить звук и какую частоту следует использовать. Последняя частота сверяется с текущим выбором, и если она совпадает, импульсный таймер получает приоритет. Это приводит к трели звука, когда обнаруживается импульс хотя бы с одним допустимым логическим уровнем.

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

АЦП выполняет почти 10 000 выборок в секунду при работе на частоте 125 кГц в автономном режиме.

В первом из 13 циклов АЦП конденсатор выборки и хранения заряжается от входа АЦП. Какое бы сочетание уровней ни присутствовало в течение этого цикла, оно усредняется, а затем преобразуется. Цикл составляет 8 мкс при частоте 125 кГц. Однако важны только последние 5 мкс цикла выборки…

Подробнее »

Посмотреть все подробности

  • 1 × IC1: ATTINY26 микроконтроллер
  • 1 × SP1: BJM 05, Z=40 Ом 5В магнитный преобразователь
  • 3 × LED1, LED2, LED3: слаботочный светодиод на ваш выбор красный, зеленый или желтый
  • 1 × S1: DIP-переключатель 2 переключателя или перемычки
  • 2 × С1, С2: 100 нФ конденсатор фольгированный или керамический >5В

Посмотреть все 12 компонентов

  • Адаптер макетной платы

    Клаус Дорманн • 04. 01.2017 в 10:02 • 0 комментариев

    Вчера я сделал макетный адаптер на перфорированной плате. Он имеет логический пробник и зажим для макета, построенный из небольшой перевернутой секции перфорированной платы с 11 x 4 отверстиями. Зажим крепится к логическому пробнику 4-мя проводами через обе перфорированные платы и припаивается к ним с двух сторон. 4 контакта подключаются к сигнальным столбцам макетной платы, а 2 контакта с каждой стороны подключаются к рядам шин питания. Я всегда использую условное обозначение заземления на внутренней шине и Vcc на внешней шине. Адаптер также можно использовать для перемычки питания с одной половины шины питания на другую.

    На контакте 9 ATTiny26 имеется разъем для подключения зонда. DIP-переключатели заменены перемычками. На картинках звук включен, уровень CMOS. Светодиоды зеленые для низкого, красного для высокого и желтого для импульса.

  • Расчеты АЦП

    Клаус Дорманн • 24.12.2016 в 11:42 • 0 комментариев

    Возможно, вы заметили, что АЦП используется в 8-битном режиме, поскольку бит ADLAR (результат регулировки левого значения АЦП) установлен в ADMUX. В то же время мы используем ADCH только для определения порогов напряжения. Опорное напряжение установлено на Vcc. Таким образом, мы получаем 0 для земли и 255 для Vcc. Теперь нам нужно использовать правило трех (также называемое правилом пропорции), чтобы найти значения ADCH для определенного процента или напряжения.

    Для CMOS напряжения определяются как <= 30% Vcc для низкого уровня, >= 70% для высокого уровня.

    • ADCth = ADCHmax * Vth% / 100%
    • ADClow = 255 * 30 / 100 = 76,5
    • ADChigh = 255 * 70 / 100 = 178,5

    Так как мы можем сравнивать только целое число с ADCH чтобы обрезать результат до целого числа. Результаты сравнения основаны на флаге переноса сравнения. 0 = такой же или выше, 1 = ниже. Поскольку мы хотим сравнить нижний порог, чтобы он был ниже или равен, нам нужно поднять нижний порог на 1. Я использовал ADClow = 77 и ADChigh = 178.

    Для TTL напряжения определяются как Vcc = 5 В, Vlow = 0,8 В и Vhigh = 2 В

    • ADCth = ADCHmax * Vth / Vcc 5 = 102

    Снова нужно использовать только целую часть и поднять нижний порог на 1: ADClow = 41 и ADChigh = 102

    Почему отрезать, а не округлить? Помните, что 2 младших бита результата АЦП также обрезаются, поэтому результат АЦП 76,75 все же меньше, чем 77. Если бы мы округлили 76,5 + 1, мы бы сравнили с 78, и это на самом деле было бы менее точным.

  • 1к вызов

    Клаус Дорманн • 23. 12.2016 в 11:37 • 0 комментариев

    Размер двоичного кода в нижней части листинга (Logic_Probe.lss):

     Сводка использования памяти "ATtiny26" [байт]:
    Сегмент Начало Конец Код Используемый Размер Данных Используемый%
    -------------------------------------------------- -------------
    [.cseg] 0x000000 0x0000dc 220 0 220 2048 10,7%
    [.dseg] 0x000060 0x000060 0 0 0 128 0,0%
    [.eseg] 0x000000 0x000000 0 0 0 128 0,0%
     

    Я использовал Atmel Studio 6.1 для сборки исходного кода.

  • ТТЛ открытый уровень

    Клаус Дорманн • 22.12.2016 в 13:21 • 0 комментариев

    только что заметил, что входные пороги для TTL несовместимы с сетью резисторов на выводе зонда.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *