1) микроконтроллер понимает только команды из даташита 2) вы хотите, чтобы лог. анализатор, ничего не зная про систему команд вашего контроллера, сам написал программу для генерации импульсов ????????????
Эти "пачки импульсов" формируются согласно какого то протокола. Остаётся узнать, что за протокол, и заставить Ваш контролер формировать их. А уж если имеете анализатор - то узнаете и протокол, если конечно анализатор его поддерживает.
Логический анализатор (самый недорогой китайский, аналог Saleae) В любом случае захватывает сигнал. То есть длительности импульсов и пробелов во времени. Но протоколов естественно так много, что по любому всех их нет в этом анализаторе (точнее в софте к нему по имени "Logic") Поэтому есть два варианта: 1) Протокол распознан и переведен в двоичную систему 2) Протокол неизвестный и данные записаны в exel-евскую таблицу.(формат CSV) В случае первого варианта, как вписать в программный код микроконтроллера распознанные двоичные данные? И возможно ли вообще? И как быть во втором случае? По поводу второго варианта есть предположение: наверняка в одной из библиотек микроконтроллера есть готовый скетч, который нужно просто правильно заполнить, ну типа что-то копировать/вставить... как например записать звуковые колебания, речь, или музыку. Вот нужно такие же колебания (только в нашем случае импульсы" и записать через готовый скетч... Реально ли так? То есть не зная протокол, просто записать и воспроизвести из МК, как на магнитную ленту...
Добавлено after 20 minutes 43 seconds: Может неправильно выразился... Типа способом аналого-цифрового преобразования. Только на аналоговый вход микроконтроллера будет поступать не синусоида, а импульсы. А они в МК уже сами преобразуются в нолики и единички... Ну или может еще какой-нибудь более правильный способ есть? А то импульсы сами по себе не так много места в памяти занимают, а вот если их подать в МК как аналоговые, то тогда они все память МК займут... Как-то нерационально. Да и в частоте мы сильно ограничены.
Добавлено after 22 minutes 41 second: Если нужно, то конкретный пример атмега 8. Ее можно разогнать до частоты 16 Мгц с внешним резонатором. 16 Мгц -импульсы мне хватит выше крыши:)
Откуда там 16 MHz возьмутся? Если захваченный сигнал преобразовать в неупакованную последовательность бит которую скармливать SPI, то будет 8 MHz, а если сигнал хоть как-то упакован, то будет еще в разы медленнее. В любом случае задача достаточно простая, но если на каждой стадии возникают элементарные вопросы, то только и остается готовые скетчи искать
но я хотя бы правильно рассуждаю? Через АЦП надо записывать в МК, или из EXEL вписать значения в программный код?
Добавлено after 25 minutes 17 seconds: В таблице exel (формат CSV) в каждой ячейке столбца указано время в секундах и присвоенное ему значение нуля или единицы. Время каждого значения отсчитывается от самого начала. Очень удобно и наглядно. Но каждое значение записывать в программный код...За пол секунды 13 тыс значений набегает... Подскажите пожалуйста скетч или библиотеку, которая работает с CSV-данными.
Типа способом аналого-цифрового преобразования. Только на аналоговый вход микроконтроллера будет поступать не синусоида, а импульсы.
АЦП тут вообще без нужды. Захват импульсного сигнала производят с помощью модуля Input Capture. Получают массив ДЛИТЕЛЬНОСТЕЙ низкого и высокого уровня (или периода и скважности). Воспроизведение захваченного сигнала делается модулем Output Compare, то есть по сути ШИМом. Но позвольте полюбопытствовать о конечной цели вашей затеи. А то вполне вероятно, что ваши потуги будут напрасными.
На примере стандартного сигнала из программы Logik 1.2.29 (канал №3)
Цитата:
Но позвольте полюбопытствовать о конечной цели вашей затеи. А то вполне вероятно, что ваши потуги будут напрасными.
Я бы хотел попробовать сделать "обманку" АКБ от современного телефона. Дело в том, что мне необходимо посмотреть сколько тока потребляет телефон. А от лабораторника не удается подключить, т.к. в оригинальный АКБ вшит микроконтроллер, который выдает по квадратной шине данные о его состоянии (температура, заряд, степень изношенности...) Я планировал захватить эти данные, записать в свой микроконтроллер (например в Атмега 8 ) и стартонуть телефон, посылая в него скопированные данные по квадратной шине... Других вариантов, кроме как испортить АКБ, вытащив из него начинку, увы нет.
Добавлено after 1 minute 31 second: Второй момент, Хотелось бы повторить пару сигналов с пультов от телевизора. Но именно способом захвата сигнала логическим анализатором.
Добавлено after 8 minutes 49 seconds:
Цитата:
Захват импульсного сигнала производят с помощью модуля Input Capture. Получают массив ДЛИТЕЛЬНОСТЕЙ низкого и высокого уровня (или периода и скважности). Воспроизведение захваченного сигнала делается модулем Output Compare,
а где эти модули распологаются? в настройках самой программы я не нашел... Там только можно экспортировать данные в формате CSV. Либо если протокол распознан, то в bin. или в HEX.
Не нужно всё сваливать в одну кучу, мухи отдельно, котлеты отдельно. Для начала разберитесь с "квадратной" шиной Если это стандартный протокол - берём контролер в котором есть его аппаратная поддержка и реализуем. Даже если её нет, можно реализовать программно, или применить другой контролер. Выбор всегда есть. Но опять же, сначала определиться с протоколом и данными, которые через него передаются.
Я немного не догоняю... Для каждого протокола нужен свой микроконтроллер? То есть только одним AVR микроконтроллером не обойтись? Давайте рассмотрим вариант, когда протокол неизвестен. Допустим программа логического анализатора не распознала протокол, но сигнал и данные сигнала (временные длительности нулей и длительности единичек) захвачены и определены. Как действовать дальше?
Добавлено after 6 minutes 16 seconds: Для понимания и чистоты эксперимента пусть это будет не I2C, а что-то еще, где нет тактирующего сигнала... просто беспорядочные последовательные пачки импульсов с разными длительностями
Пишется конвертер из формата в котором сохраняет ЛА в свой упакованный формат, какой именно зависит от частоты, формы и размера захватываемого сигнала, а также от числа задействованных пинов. Затем пишется прога на меге которая будет заниматься выводом, но сильно в это углубляться не имеет смысла т.к. судя по задаваемым вопросам в обозримом будущем ты не напишешь ни первое, ни второе, тем более то и другое вместе.
Я немного не догоняю... Для каждого протокола нужен свой микроконтроллер?...
Немного не так. К примеру нужен I2C В одних контролерах есть аппаратный I2C в других нет. Нужен UART - в одних есть аппаратный UART в других нет.... Вот тогда их реализуют программно. И т.д. Но и I2C и UART и SPI и прочие стандартизованы.
я вообще не понимаю, в чем проблема. если вы не умеете программировать МК, то будет ли польза от того, что я расскажу, как действовать? на пальцах так: 1. мы имеем столбик чисел, равных интервалам в мс между фронтами сигнала (откуда он взят - оставим пока за кадром) 2. устанавливаем начальный уровень сигнала, допустим 0. 3. берем первое число и записываем его в регистр таймера (заранее настроенного на прерывание по истечению интервала) 4. когда таймер сформировал прерывание, т.е. когда первый интервал времени в мс истек, переключаем уровень сигнала на противоположный, берем следующее число из столбика и снова пишем его в таймер. 5. и так до конца всего столбика, после чего останавливаем таймер и выключаем сигнал.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
если вы не умеете программировать МК, то будет ли польза от того, что я расскажу, как действовать? на пальцах так: 1. мы имеем столбик чисел, равных интервалам в мс между фронтами сигнала (откуда он взят - оставим пока за кадром) 2. устанавливаем начальный уровень сигнала, допустим 0. 3. берем первое число и записываем его в регистр таймера (заранее настроенного на прерывание по истечению интервала) 4. когда таймер сформировал прерывание, т.е. когда первый интервал времени в мс истек, переключаем уровень сигнала на противоположный, берем следующее число из столбика и снова пишем его в таймер. 5. и так до конца всего столбика, после чего останавливаем таймер и выключаем сигнал.
Как раз это мне понятно. Я так себе и представлял. но дело в том, что там за пол секунды более 13 тыс импульсов набежало. А мне нужно допустим минуту повторить. Это я только неделю с утра до вечера буду писать программный код.... Может есть более рациональный вариант? Например, настроить один из выводов микроконтроллера на ввод, а другой на вывод. Первая ножка будет собирать информацию. А вторая по команде выводить их. Или так нельзя?
Добавлено after 24 minutes: Я все надеялся, что существует готовая библиотека, которая поможет написать программный код одним кликом, что то вроде скопировать/ вставить CSV файл в нее... Прога, в которой планировалось писать программный код для AVR - это Atmel Studio 6. Я очень надеялся, что в ней есть сто-то подобное. Но в моем случае все в конечном итоге сводится к тому, что если протокол неизвестен, то мы как ни как имеем аналоговый сигнал... Просто длительности импульсов, привязанные ко времени. Ну пусть так, для меня не это важно. Главное просто повторить точно такие же длительности импульсов и паузы между ними. Задача вроде бы простая до безобразия, но не могу догнать, как это осуществить. Я просто предположил что через микроконтроллер можно. Но может как-то еще это можно сделать? Может каким-то другим электронно-механическим устройством. Что-то типа диктофона, только чтобы частота была дальше чем звуковой диапазон. или может есть уже готовые такие гаджеты?
Добавлено after 8 minutes 48 seconds: а может быть есть готовый софт специально для таких частот. Полный аналог звукового редактора, только выводить импульсы не через звуковую карту, через USB, или через COM-порт прямо из ПК...
за пол секунды более 13 тыс импульсов набежало. А мне нужно допустим минуту повторить.
частота 26 килогерц... то есть 52000 фронтов импульсов в секунду, в минуту в 60 раз больше. это вам нужно МК с таймером, который очень-очень быстро считает. да и памяти под "столбик" значений интервалов надо под 400 килобайт - это неплохой такой микроконтроллер нужен, либо городить целый огород с внешним ОЗУ.
Олегыч1 писал(а):
Это я только неделю с утра до вечера буду писать программный код
зачем?! ваш "программный код", грубо говоря, будет сводиться к описанным мной 5 строкам. ну, плюс еще пару строк на организацию цикла - итого не больше 10 строк на основную часть. плюс всякая инициализация, то-сё - в пару сотен строк основной код уложится, как пить дать. что вы там писать собрались круглосуточно?!
Олегыч1 писал(а):
скопировать/ вставить CSV файл в нее
можно и так, если немного этот CSV-файл руками подправить. но тогда получится вариант "одна прошивка - один генерируемый код", никакой универсальности.
Олегыч1 писал(а):
Главное просто повторить точно такие же длительности импульсов и паузы между ними.
а универсальное решение состоит из двух частей: сначала захватываем при помощи таймера длительности промежутков между фронтами сигнала и запоминаем их, а потом делаем наоборот, как я уже описал - берем запомненные длительности и формируем сигнал. только, как я ранее писал, быстродействие для вашего сигнала нужно дикое и памяти овердохрена... вы точно правильно условие задачи формируете?
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
можно и так, если немного этот CSV-файл руками подправить. но тогда получится вариант "одна прошивка - один генерируемый код", никакой универсальности.
Такой вариант меня бы вполне устроил. Я, кстати, на него и рассчитывал А что именно нужно подправить в CSV файле? И подскажите пожалуйста библиотеку из Atmel Studio 6 где можно применить этот подправленный CSV-файлик.
Добавлено after 34 seconds: Я был бы вам мега-признателен
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения