Nokia lumia 1020 установка android. Сейчас мы пройдём все этапы создания художественного снимка, начиная непосредственно с настроек параметров фотографии, кадрирования, и заканчивая пост-обработкой в Camera RAW. Профессионалам фотографии данный материал п

Скачать на Телефон 02.03.2019
Скачать на Телефон

Логический анализатор приставка к ПК.

Поздравляю уважаемого Кота с днём рождения ещё раз и в качестве подарка представляю на ваш суд свою конструкцию, а именно программно-аппаратный комплекс тридцати двух канальный логический анализатор с максимальной частотой дискретизации 100 мГц и объёмом памяти записи 128 килобайт. Связь с ПК осуществляется через SPP LPT порт, так что подойдут и старые ПК на базе Р-1 и PCMCI - LPT карты обычно работающие только SPP режиме, и имеющие не стандартные адреса. Всем известно, что при разработке, налаживании или ремонте цифровой электроники этот прибор порой очень необходим. В Интернете есть много материала на эту тему, много конструкций достойных повторения, но исполненных на элементах каких в Российской глубинке не найти. Решено было попробовать стряпать самому, благо перепала Альтеровская ПЛИСина ЕРМ3064АТС100-10, быструю память KM736V789T-60 выдрал из материнки ноутбука APPLE (кэш процессора, процессор IBM что-то типа пентиум-2). Поскольку количества выводов ПЛИС для проекта явно не достаточно пришлось усложнять схему ключами и мультиплексором.

Входные ключи выполнены на двух шинных формирователях 74FCT164245, по сути, эта микросхема - две 74245 в одном корпусе, но имеет функцию преобразования уровней 5 вольт в 3, что не мало важно. Входные формирователи так же полезны в деле защиты дорогих и дефицитных деталей от аварийного попадания на их выводы высокого напряжения. На двух микросхемах IDTQS32X245 (тоже 2 * 74245) собран мультиплексор, сужающий 32-ух разрядную шину ОЗУ в восьми разрядную для последующей передачи в ПК. Все эти микросхемы были сняты с материнских плат отслуживших ноутбуков с 486-ым процессором. Генератор на 100 мГц достать не удалось, пришлось собирать на микросхеме ICD2028 (снята с материнки 486-го ПК), на отдельной плате в виде стандартного узла. В ходе разработки и модернизации выяснилось, что ресурсов ПЛИС не достаточно для воплощения задуманного, а результаты изысканий внушали оптимизма, через посылторг была приобретена микросхема ЕРМ3128АТС100-7, что позволило комфортно приблизить проект к логическому завершению и оставить ресурсы для модернизации. Проект для ПЛИС разработан на MAX+plus II, для тех кто не знаком с азами разработки и программирования ПЛИС фирмы Altera, рекомендую прочитать статью Абрамова Сергея, ссылка на неё https://electronix.ru в разделе "статьи". Плата устройства разработана в P-CAD 2001 и довольно сложна для "утюжной" технологии, но как видите, нет ни чего не возможного.

Устройство пока находится в "без оболочном" исполнении и предусматривает подключение плат входных, и выходных разъёмов, на которых будут находиться подтягивающие к GND, и помехозащитные элементы. В перспективе, раздобыв приличные АЦП и ОУ анализатор можно превратить в четырёх канальный запоминающий осциллограф. Устройство потребляет от источника питания 5 вольт (с подключенным к этой линии 3-х вольтовым стабилизатором) порядка 130 мА из них 50 мА приходится на генератор, так что запитав его от USB ноутбука работающего на батарее получаем гальванически развязанный с сетью прибор. На принципиальной схеме не изображены блокировочные конденсаторы ёмкостью 0,1 мкФ которые необходимо устанавливать возле каждого вывода Vcc питания микросхем. Разъём Х1 предназначен для программирования ПЛИС, разъём Х2 и выводы 1, 2 разъёма Х3 для подключения к LPT порту, при чём разводка Х2 соответствует нумерации разъёма DB-25 LPT порта, выводы 1 и 2 разъёма Х3 соединяют с выводами 17, 18-25 LPT порта соответственно. На выводе 7 разъёма Х3 присутствуют импульсы с частотой дискретизации (для тактирования АЦП, на случай его подключения), выводы 3-6 зарезервированы, их необходимо оставить не подключенными к чему либо. Х4 предназначен для подключения питания, разъёмы Х5, Х6 для исследуемых сигналов. При повторении конструкции в качестве ОЗУ можно использовать микросхемы кэш памяти процессоров Пентиум-II и с натяжкой Пентиум-I (у них максимальная частота "клока" 79 мГц), главное, ширина шины данных должна быть 32 - 36 бит и ёмкость 128 кбайт. Лучше использовать микросхемы взятые из ноутбуков, в противном случае потребляемый устройством ток может возрасти в несколько раз. В качестве ключей можно использовать 74НС244 - 245 или другие с Z-состоянием на выходах, при этом придётся разводить плату и позаботится о согласовании уровней исследуемых сигналов.
Теперь не много о программе со стороны ПК. Она написана на Delphi 7, крайне проста, но основную функцию отображения сигналов выполняет. Из всех "удобств" только курсорные измерения, запуск синхронизации по фронту или спаду одного из каналов, сохранение изображения в файл ВМР, возможность выбора длинны записи в ОЗУ 1 кбайт или 128 кбайт (на малой частоте дискретизации при 128 кбайтной длине время записи достигает 3 минут). А так же временная лупа, возможность выбора длинны просматриваемой на экране страницы памяти 1 кбайт или 8 кбайт, возможность выбрать количество просматриваемых каналов 8, 16, 32. От длинны страницы, количества используемых каналов, мощности процессора ПК, частоты дискретизации зависит время записи, передачи и прорисовки изображения, и как следствие максимальная частота обновления экрана при автоматическом запуске. Так что при больших значениях каналов, килобайт, микросекунд просмотр в реальном времени не возможен. Максимальная частота обновления экрана 100 мСек. Размер окна программы ограничен для возможности использования комплекса на старом ноутбуке с размером дисплея 800*600 пикселей.
В заключение хотелось попросить профессиональных "ПЛИСоводов" и программистов не судить строго, ведь это первый мой опыт в построении устройства на программируемой логике, да и вообще мы от сохи т.е. любители.

Логический анализатор в цифровой электронике может оказаться незаменимым помощником наравне с осциллографом. Часто при анализе цифровых сигналов не нужна большая разрядность АЦП, а достаточно наблюдения всего 2-х состояний входных сигналов – 1 или 0. При этом логический анализатор обладает большим числом входов, в то время как большинство осциллографов имеют только 2 канала.

Давно обратил внимание на различные логические анализаторы на основе микросхемы CY7C68013. Поглядывал на них и недавно, наконец, решился купить один из клонов Saleae Logic / USBee.

Выбирал самую простую и дешевую модель в виде готового законченного устройства в удобном корпусе. Выбор пал на 8-ми канальный 24МГц клон Saleae Logic. Сеё добро обошлось примерно в 300р.

Хоть в комплекте и шла ссылка на архив с ПО, но программное обеспечение и без него легко нашлось. Стоило только в поиске набрать название устройства «Saleae Logic» и перейти по первой ссылки на официальный сайт saleae.com . ПО установилось без проблем и после включение анализатор автоматически определился и начал работу. Программа порадовала: сделана добротно, удобная навигация, анализаторы протоколов…

Думал, что устройство будет получать, обрабатывать и отображать данные на лету, как осциллограф, но его работа оказалось немного другой. Задаём объем выделено памяти и частоту дискретизации и нажимаем «Start». Для того, что бы не писать пустоту и не отлавливать нужный сигнал, а только полезный можно воспользоваться триггерами. По завершению запаси можно просмотреть и проанализировать то – что было на линиях. Данные можно анализировать, как визуально и с помощью курсора замерять продолжительность импульсов и посылок, так в программе содержатся и хорошие инструменты для декодирования многих распространённых протоколов, таких как: CAN, DMX-512, I2C, I2S/PCM, манчестера, 1-Wire, UART, параллельного, SPI и UNI/O. Для проверки подцепил , содержащих UART и однопроводную линию данных RGB светодиодных контроллеров WS2811 и посмотрел, что твориться на линиях.

Так же есть возможность использования флагов, для подсчёта длины посылок.

Всё работает и всё что можно декодируется. В UART пакетах над каждой посылках подписан переданный байт, жалко только, что программа не распознаёт кириллицу, а отображает только ASCII код незнакомого ей символа.

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

Заглянем во внутрь.

Первым делом в глаза бросается контроллер – CY7C68013A, рядом с ним находится ЕЕПРОМ, с настройками контроллера. Чем интересна эта микросхема – тем, что при каждом включении она загружает программу с компьютера по USB в свою RAM. И, по сути, из этого контроллер можно делать всё, что угодно, не прошивая в привычном понимании этого слова, когда другим микроконтроллерам необходим программатор или специальный надстройки. Ещё заметны 24МГц кварц и буферный элемент с обвязкой.

На обратной стороне расположился стабилизатор.

Качество сборки нормально, только плату не отмыли.

Повторюсь, логический анализатор и его программное обеспечение порадовали. Из недостатков – во время работы немного нагревается.

  • Электроника для начинающих
  • Логические анализаторы

    Часто при разработке или отладке радиоэлектронных устройств состоящих из нескольких компонентов(микроконтроллер, АЦП, I2C память, итд) хочется посмотреть на общение этих компонентов между собой. Чтобы наконец понять почему всё написано «правильно», но ничего не работает. В целом для этого можно использовать цифровой осциллограф, но осциллографы с 4 каналами стоят достаточно дорого, да и не очень это удобно. Гораздо приятней такая задача решается при помощи логического анализатора. Логический анализатор по сути похож на осциллограф, но если основная задача осциллографа отображение изменение аналогового сигнала с чем он замечательно справляется, то цель логического анализатора запись цифрового(но не всегда только цифрового) сигнала с последующим его анализом в удобных программах.

    Ниже я опишу опыт работы с логическими анализаторами Logic Pro 8 от Saleae ценой около 480$ и DSLogic Pro от DreamSourceLab(скорей всего копия) ценой $99 мне достался за 73$.
    Кому стало интересно добро пожаловать под кат.

    Технические характеристики

    Логические анализаторы отличаются друг от друга в основном: количеством и типом каналов, наличием буфера, частотой сэмплирования.
    Небольшая сравнительная таблица с характеристиками:
    Logic Pro 8 DSLogic Pro Описание
    Число цифровых каналов 8 16 Чем больше тем лучше, но за год использования больше 4 пока было не особо нужно
    Число аналоговых каналов 8 0 Для аналога предпочтительней всё же осциллограф, но иногда бывает удобно увидеть, что творится не только в цифре на канале, но и в аналоге.
    Интерфейс USB 2.0 / USB 3.0 USB 2.0 USB 3.0 предпочтительней если он у вас есть конечно. Хотя момент спорный, ниже опишу почему.
    Частота сэмплирования цифровых каналов 500 MS/s - USB 3.0
    100 MS/s - USB 2.0
    400 MS/s - для 4 каналов
    200 MS/s - для 8 каналов
    100 MS/s - для 16 каналов
    Чем больше тем лучше, но в случае есть один нюанс, но об этом ниже.
    Частота сэмплирования аналоговых каналов 50 MS/s - USB 3.0
    10 MS/s - USB 2.0
    - Чем больше тем лучше.
    Диапазон напряжений цифра/аналог: 1.2V - 5.5V / -10V - +10V 0V - 5V / - Тут у Logic Pro 8 на выбор три пороговых напряжения 1.2V/1.8V/3.3V.
    У DSLogic Pro выбор от 0V до 5V с шагом 0.1V также у него значится защита от перенапряжение -30V - +30V.
    Внутреннее сопротивление каналов 1,8 MOm 250 кOm Чем больше тем лучше, меньше оказывается наводок на исследуемую схему.
    Буфер - 256Mbits Чем больше тем лучше, от этого параметра зависит сколько сэмплов может захватить анализатор не передавая их в компьютер. Вещь крайне полезная особенно для UBS 2.0
    Глубина выборки в теории не ограничена 16MS на канал Чем больше тем лучше, Logic Pro 8 использует память PC глубина выборки может быть очень большой, однако буфера DSLogic Pro тоже хватает.

    В общем по многим характеристикам Logic Pro 8 имеет перевес, особенно в плане аналоговой части. Однако отсутствие буфера сказывается отрицательно, во-первых скорость падает в два раза при использовании 4 каналов, и в 4 раза при использовании 6 и больше каналов. Но это не все, так как скорость плотно завязана на USB шину то казусы случаются если эта шина загружена, иногда достаточно подключить к одному USB хабу UART кабель, чтобы программа ругнулась и сказала, что скорости USB не хватает и скорость захвата будет снижена. Не то, чтобы это бывает часто и сильно мешает, но помнить про такое стоит.
    Из особенностей DSLogic Pro хочется отметить ещё наличие внешней линии клока, и сигналов внешнего входа триггера, и выхода триггера.

    Внешний вид и комплектация

    Комплект Logic Pro 8:

    • сам анализатор
    • два коннектора с разноцветными проводами, по 4 канала на коннектор
    • 16 клипс для соединения с ногами микросхем, проводами, итд
    • USB 3.0 кабель USB-A to MictoUSB 3.0

    Комплект DSLogic Pro:

    • сам анализатор
    • широкий коннектор на 16 каналов плюс дополнительные сигналы,
    • 16 разноцветных клипс для соединения с ногами микросхем, проводами, итд
    • USB 2.0 кабель USB-A to MictoUSB

    Сравнение

    Если сравнивать комплектацию то она приблизительно одинакова. Однако на мой взгляд коннектор с проводами для Logic Pro 8 гораздо удобнее и приятней в обращении, провода более мягкие и гибкие. Клипсы у Logic Pro 8 в несколько раз удобнее. Во-первых имеют два штыря для соединения с проводом анализатора, что удобно, и во-вторых штыри для соединения находятся сбоку, что упрощает зацепку клипс с уже подключённым к ним проводом. У DSLogic Pro штырь находится сверху, что усложняет его подключение в разы, хотя по хваткости клипсы не отличаются, но общее качество всё же хромает.

    Программное обеспечение

    Какой бы не был хороший логический анализатор, без хорошего софта удобства работы с ним не будет. Хороший софт должен быстро отображать захваченные данные, позволять смотреть их характеристики такие как частоту, скважность. И очень хорошо, что бы он умел расшифровывать общеизвестные протоколы. Это невообразимо удобно указать где находятся ноги I2C и увидеть, что же именно происходило на шине с точки зрения I2C протокола, а не сидеть и чесать затылок вглядываясь и пытаясь понять так ли оно всё и какой здесь записался адрес. Каждый анализатор комплектуется своей программой:

    Saleae Logic

    Анализаторы Saleae комплектуются Saleae Logic


    Программа мультиплатформенная, поддерживаются все версии Win dows начиная с XP(год назад были проблемы с Win 7 и выше, в новой версии Win 7 работает без нареканий, выше не тестировал), Mac OS X 10.7 Lion+ устанавливалась и работала без нареканий, Ubuntu 12.04.2+ у меня так и не заработала(тестировал год назад на старой версии программы сейчас может работает), но я особо и не пытался.

    Поддерживает большой список протоколов для анализа I2C/SPI/UART/CAN, работают без нареканий. Возможен захват как по ручному старту так и по триггеру на одном из каналов. Из недостатков на длинных выборках начинает достаточно сильно тормозить.

    Из фич программы стоит отметить, возможность управление по telnet-подобному протоколу, наличие SDK для написания своих декодеров протоколов. Протоколы пишутся на C++, что усложняет процесс их написания.

    DSView

    DSLogic Pro комплектуется программой DSView:

    Тоже мультиплатформенная программа поддержка Windows начиная с XP, Mac OS X 10.11.4, Linux(прога идёт в исходниках). По возможностям программа превосходит Saleae Logic, имеются более продвинутые триггеры с поддержкой сразу нескольких каналов, список протоколов достаточно обширен. Но тут разработчики пошли дальше и на протокол можно ещё навесить возможность расшифровки работы с конкретной реализацией этого протокола. Например Можно выбрать протокол I2C и реализацию 24СXX и после этого сразу прочитать, что именно происходило на шине с точки зрения данной микросхемы. Как протоколы так и их реализации пишутся при на Python, что по идее должно упростить написание и отладку. Тормозов в работе замечено не было.

    Также стоит отметить, что проект является частично OpenSource и на выложены исходники софта, и HDL части. А на приведена схематика. Поэтому возможно скоро будет куча клонов данного устройства(возможно у меня тоже клон).

    Простое тестирование

    Для простой проверки анализаторов была использована дев.плата DE0-Nano-SoC на которой были сгенерированы меандры от 200Mhz каждый следующий получен делением на 2 предыдущего (200/100/50) попробую захватить их имеющимися анализаторами.

    На DSLogic Pro удалось захватить 200Mhz/100Mhz/50Mhz ниже и так понятно, что всё идёт отлично. Сказать, что 200 и 100 были захвачены идеально нельзя иногда есть небольшое уплывание частоты и скважности, но в целом нормально, на 50 уже всё идеально.

    DSLogic Pro


    Seleae нормально не смог снять 200Mhz и 100Mhz, но 50 Mhz уже идёт идеально.

    Logic Pro 8


    И всё-таки к таким замерам я бы серьёзно не относился, 200Mhz замерять просто «накидными» проводами наверное перебор, но попробовать стоило.

    Для эксперимента попробуем захватить передачу данных по I2C(передачи разные поэтому данные не сходятся).

    Покупая всякую китайскую электронику для своих «поделок» часто сталкиваюсь с проблемой плохого описания работы,

    Тема сегодняшней статьи — использование дешевого китайского логического анализатора купленного на Алиэкспресс .

    Что такое логический анализатор? Это такой прибор… для логического анализа))) Сразу приходит на ум фильм с Робертом Де Ниро

    Зачем он нужен? Ну конечно же занимать логическим анализом))). А точнее анализом логических уровней разных микроконтроллеров и периферии к ним. То что принято называть реверс инжинирингом.

    Характеристики

    • Совместимость по софту с Saleae Logic 8
    • Число цифровых входов - 8
    • Два индикатора - питания и состояние логических входов
    • Входное сопротивление 100КОм, входная емкость 5пФ
    • Питание через USB
    • Поддерживаемые частоты дискретизации:
    • 24МГц,16МГц, 12МГц, 8МГц, 4МГц, 2МГц, 1МГц, 500КГц, 250КГц, 200КГц, 100КГц, 50КГц, 25КГц;
    • Количество сохраняемых значений одного измерения - 10000

    С одной стороны разъем на 10 штырьков и распиновкой на корпусе

    С другой Mini USB для питания и подключения к компьютеру

    Внутренности

    Внутри корпуса плата, на ней микропроцессор с высокоскоростным USB интерфейсом CY7C68013A от компании CYPRESS , EEPROM ATMLH432 и шинный формирователь LVC245A от NXP .

    На входе анализатора стоят токоограничивающие резисторы 100 Ом, подтягивающие к земле резисторы 100 КОм и конденсаторы 5 пФ. Все честно, как в описании.

    Подключение

    Для подключения анализатора в комплекте идут 10 соединительных проводков на штырьковые контакты. Сразу прикупил таких вот клипс-зажимов .

    Качество зажимов очень посредственное, но хорошие зажимы обойдутся дороже самого анализатора

    Софт

    Это, пожалуй, самое интересное в данном анализаторе. К нему подходит родной софт от Saleae Logic .

    Доступны версии для OSX, Linux и Windows на 32 и 64 бита.
    Saleae Logic 1.2.3 под Windows 7 заработал с пол пинка, софт запустился, железо опозналось, не смотря на надпись версии «Beta».

    Интересные плюшки в софте от Saleae Logic

    Триггер срабатывания записи логической последовательности на каждый канал

    • На изменения логического уровня в «0»
    • На изменение логического уровня в «1»
    • На положительный импульс заданной длительности
    • На отрицательный импульс заданной длительности

    Подсчет статистических показаний по текущему измерению

    Декодирования протоколов: Async Serial, I2C, SPI, Hide, 1-Wire, Atmel SWI, BISS C, CAN, DMX-512, HD44780, HDLC, HGMI CEC, I2S/ PCM, JTAC, LIN, MDIO, Manchester, Midi, Modbus, PS/2 Keyboard/Mouse, SMBus, SWD, Simple Parallel, UNI/O, USB LS и FS

    Ведение журнала по декодируемому протоколу

    Кроме того, данный анализатор можно прошить под софт от USBee

    Позанимаемся анализом

    Как раз разбирался с подключением ультразвуковых датчиков DYP-ME007Y, на вид абсолютно одинаковыми, но работающими совершенно по разному .

    Если один работает точно по даташиту: короткий импульс на «триггер» запускает ультразвуковой импульс и по длительности эхо измеряется расстояние. То второй и третий (с мигающим светодиодом) примерно раз в 100мс без каких либо внешних пинков сам мерит расстояние и посылает его на скорости 9600 в виде четырех байт (включая контрольную сумму). Программа Saleae Logic позволяет включить декодирование сигнала последовательной шины в последовательность байт. Датчики второго типа отлично работают с отключенным выводом «TRIG», хотя может и ждут какой нибудь команды на этом входе, но сие даже волшебный приборчик не покажет.

    Далее захотелось посмотреть ШИМ сигнал Aтмеги 168? Включил все шесть каналов поддерживающих PWM на разный уровень и с удивлением обнаружил, что частота двух каналов ШИМ отличается от 4-х других. Задействованы разные таймеры?

    А что там на шине данных у моих ?

    Волшебный приборчик и программа нормально декодировали последовательность, выдаваемую на светодиоды. Даже цвета светодиодов нарисовались.

    С анализом шины I2C тоже никаких проблем. Софт нормально справился с декодированием.Можно видеть пакеты записи в регистры при работе драйвера дисплея TM1637

    RF-приемник на 315МГц, подключенный напрямую к анализатору, получил сигнал с радиовыключателей , и выдал манчестреский код. После подбора скорости манчестреский код превращается умной программкой в последовательность байт.

    Интересно, а как с точностью измерения временных интервалов? Точного генератора импульсов у меня под рукой не оказалось, но Ардуиновская tone(1000) на 1000Гц

    и tone(20000) на 20КГц дают довольно точный результат.

    Для проверке высокой частоты на скорую руку собрал генератор на NE555. Удалось выжать из него 8МГц. Анализатор проглотил эту частоту нормально. На 20МГц проверить не удалось, но 8 для такой дешевой железки тоже очень хороший результат.

    Небольшой итог

    Логический анализатор очень нужная и полезная вещь для тех, кто занимается раскапыванием китайской периферии к микроконтроллерам (Назовем красиво - реверс инжинирингом)
    Из достоинств данной железки хочу отметить:

    • Привлекательную цену
    • Совместимость с довольно удобным софтом Saleae Logic
    • Защита на входе в виде шинного формирователя LVC245A
    • Малые габариты

    Явных недостатков у этой железки для себя не нашел. Жаль, что я не приобрел логический анализатор раньше — сколько времени бы я сэкономил во многих проектах. Несомненно, кому то возможностей данной железки окажется мало. Есть масса более навороченных моделей, но по цена $100-200 делает эти приборы гораздо менее доступными для радиолюбителей.

    Поанализируем что-нибудь еще?

    Купил анализатор логических сигналов. Думаю пригодится. Хорошая вещь, может помочь при исследовании сигналов и поиске неисправностей в логических схемах. Устройство является клоном Saleae logic, оригинал которого стоит не одну сотню долларов.

    Характеристики:

    • Каналов: 8
    • Частота выборки: до 24 млн/с
    • Входное сопротивление: 100 кОм

    Устройство представляет из себя небольшую коробочку, размером примерно со спичечный коробок. С одной стороны разъём miniUSB для подключения к компьютеру. С другой — гребёнка из 10 контактов (8 каналов + две земли). Посмотрим, что внутри.


    Микроконтроллер Cypress CY7C68013A, EEPROM Atmel 24C028N и буфер 74HC245.


    С другой стороны:


    Для работы с устройством качаем программу Logic .

    В центре находятся 8 полос-каналов, на которых будет выводиться график сигнала. Слева находится кнопка Start и кнопки настроек каналов. Справа — окна измерений и анализа. Рассмотрим настройки:


    Здесь можно выбрать частоту выборки (24 млн/с) и длительность:


    Чем больше частота и длительность, тем больше потребуется памяти для сбора и хранения данных.
    Для каждого канала можно выбрать ширину полосы, настроить фильтр помех или вообще скрыть канал:

    Для одного из каналов можно настроить триггер: по фронту сигнала, по спаду, по ширине высокого или низкого импульса. Тогда при нажатии кнопки Start отсчёт времени записи начнётся только после срабатывания триггера.


    Теперь для интереса рассмотрим различные сигналы с ардуинки.
    Поморгаем светодиодом с паузой в 100 мс. Такой код:

    1 2 3 4 5 6 void loop() { digitalWrite(13 , HIGH) ; delay(100 ) ; digitalWrite(13 , LOW) ; delay(100 ) ; }

    void loop() { digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(100); }

    Сигнал:


    Видим, что период получился 0.2 с, и частота 5 Гц. Всё верно.
    Теперь уменьшим задержки до 1 мс:

    1 2 3 4 5 6 void loop() { digitalWrite(13 , HIGH) ; delay(1 ) ; digitalWrite(13 , LOW) ; delay(1 ) ; }

    void loop() { digitalWrite(13, HIGH); delay(1); digitalWrite(13, LOW); delay(1); }

    Увеличим:

    Пока всё как мы и ожидали. Период чуть больше 2 мс, частота около 500 Гц.
    Теперь совсем уберём задержку:

    1 2 3 4 void loop() { digitalWrite(13 , HIGH) ; digitalWrite(13 , LOW) ; }

    void loop() { digitalWrite(13, HIGH); digitalWrite(13, LOW); }

    1 2 3 4 void loop() { PORTB = B11111111; PORTB = B00000000; }

    void loop() { PORTB = B11111111; PORTB = B00000000; }


    Ого, частота возросла больше, чем в 10 раз и теперь составляет примерно 1 МГц!
    Но что с шириной импульсов? Почему ширина высокого уровня значительно короче, чем низкого? Ведь запись в регистр должна производиться с одинаковой скоростью независимо от содержимого. Есть что-то ещё, что выполняется после функции loop()?
    Попробуем избавиться от стандартного перехода по функции loop и вставим бесконечный цикл:

    1 2 3 4 5 6 7 void loop() { while (1 ) { PORTB = B11111111; PORTB = B00000000; } }

    void loop() { while (1) { PORTB = B11111111; PORTB = B00000000; } }

    Уже лучше. И частота возросла до 4 МГц! Часть тактов теряется на прохождение сравнения в цикле (1 — истина?). Ну и теперь попробуем чередовать несколько одинаковых команд друг за другом:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 void loop() { while (1 ) { PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; } }

    void loop() { while (1) { PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; } }

    Вот этой аномалии я немного не понял. Частота возросла до 8 МГц! То есть по одной операции на такт. Но при этом почему-то уменьшилась в два раза (с 83 нс до 41 нс) ширина положительного импульса. Что на это повлияло я объяснить не готов. Надо пробовать ковырять HEX-файл в дизассемблере.
    Работа с регистрами напрямую очень необходима при работе с устройствами, которые критичны к синхронности импульсов на разных выводах. Посмотрим для примера, как различается импульс на двух контактах. Когда мы ставим друг за другом две команды digitalWrite для разных контактов, то мы считаем, что сигнал появится одновременно и там и там. Но конечно же это не так:

    1 2 3 4 5 6 7 8 void loop() { while (1 ) { digitalWrite(12 , HIGH) ; digitalWrite(11 , HIGH) ; digitalWrite(12 , LOW) ; digitalWrite(11 , LOW) ; } }

    void loop() { while (1) { digitalWrite(12, HIGH); digitalWrite(11, HIGH); digitalWrite(12, LOW); digitalWrite(11, LOW); } }



    Рекомендуем почитать

    Наверх