Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Сообщение NebelWefer »

Товарищи подскажите куда копать:
собрал макет ИК передатчика и приемника, есть заводской пульт филипс.
Приемник + заводской пульт работают стабильно, а самодельный пульт 1/10 раз.
и передатчик и приемник на одинаковых attiny44a, код банальный на delay. В передатчике делаю так:

Код: Выделить всё

TCCR0B=(1<<CS00);
_delay_us(TIMEOUT);
TCCR0B=(0<<CS00);
_delay_us(TIMEOUT); // 1
И тд, итого захардкожена посылка 11010.
Частота тиньки 8 МГц(RC) + 8 предделитель, таймер без делителя в режиме CTC, OCR0A=33, что дает 30.3 кГц. Приемник TSOP31230 с несущей 30кГц.
На приемнике делал цикл с замером длительности импульса и получал 1200-1500 , там где должно быть около 1600. 30.3кГц находится в пределах допустимой погрешности для приемника tsop, в даташите до 5% указано.
Обе тиньки работают на встроенном RC, отчего может так плавать частота в передатчике? Есть ли смысл перейти на кварц?
Реклама
akl
Друг Кота
Сообщения: 4470
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Аппаратный сброс таймера в режиме CTC происходит в следующем, после сравнения, цикле. Поэтому частота получается 1000000/(33+1)~29411. Попробуйте задать 33-1.
Реклама
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Сообщение NebelWefer »

akl писал(а):Аппаратный сброс таймера в режиме CTC происходит в следующем, после сравнения, цикле. Поэтому частота получается 1000000/(33+1)~29411. Попробуйте задать 33-1.
Попробовал, все также. В принципе частота 29.4 кГц тоже укладывается в 5%. Попробую кварц
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

Здравствуйте уважаемые радиокоты! Я по прежнему новичок в программировании микроконтроллеров, по этому не судите строго. Подскажите пожалуйста, возможно ли реализовать следующую идею:
Есть сигнал (пачки импульсов), снятые логическим анализатором. можно ли их записать в микроконтроллер, допустим Атмега 8? я правильно понимаю, что надо сначала написать программу для микроконтроллера, допустим чтобы вылетали эти же пачки импульсов при нажатии на кнопку? То есть я написал код до момента, когда надо вписать что-то, что будет в виде пачек импульсов. Как дальше быть?

Добавлено after 4 minutes 35 seconds:
Обязательно ли логический анализатор должен расшифровать данные по протоколу для этого? Данные снимать с логического анализатора можно в формате CSV. Если анализатор сможет расшифровать импульсы, то тогда можно сохранить их в формате BIN, HEX, и в др.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Сообщения: 2804
Зарегистрирован: Вс фев 02, 2020 09:12:37

Сообщение 1en2 »

1) микроконтроллер понимает только команды из даташита
2) вы хотите, чтобы лог. анализатор, ничего не зная про систему команд вашего контроллера, сам написал программу для генерации импульсов ????????????
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

Сообщение Dismas »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4130117#p4130117"]...Как дальше быть?[/uquote]
Эти "пачки импульсов" формируются согласно какого то протокола.
Остаётся узнать, что за протокол, и заставить Ваш контролер формировать их.
А уж если имеете анализатор - то узнаете и протокол, если конечно анализатор его поддерживает.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

Логический анализатор (самый недорогой китайский, аналог Saleae) В любом случае захватывает сигнал. То есть длительности импульсов и пробелов во времени. Но протоколов естественно так много, что по любому всех их нет в этом анализаторе (точнее в софте к нему по имени "Logic") Поэтому есть два варианта:
1) Протокол распознан и переведен в двоичную систему
2) Протокол неизвестный и данные записаны в exel-евскую таблицу.(формат CSV)
В случае первого варианта, как вписать в программный код микроконтроллера распознанные двоичные данные? И возможно ли вообще?
И как быть во втором случае?
По поводу второго варианта есть предположение: наверняка в одной из библиотек микроконтроллера есть готовый скетч, который нужно просто правильно заполнить, ну типа что-то копировать/вставить... как например записать звуковые колебания, речь, или музыку. Вот нужно такие же колебания (только в нашем случае импульсы" и записать через готовый скетч... Реально ли так? То есть не зная протокол, просто записать и воспроизвести из МК, как на магнитную ленту...

Добавлено after 20 minutes 43 seconds:
Может неправильно выразился... :oops: Типа способом аналого-цифрового преобразования. Только на аналоговый вход микроконтроллера будет поступать не синусоида, а импульсы. А они в МК уже сами преобразуются в нолики и единички...
Ну или может еще какой-нибудь более правильный способ есть? А то импульсы сами по себе не так много места в памяти занимают, а вот если их подать в МК как аналоговые, то тогда они все память МК займут... Как-то нерационально. :roll: Да и в частоте мы сильно ограничены.

Добавлено after 22 minutes 41 second:
Если нужно, то конкретный пример атмега 8. Ее можно разогнать до частоты 16 Мгц с внешним резонатором. 16 Мгц -импульсы мне хватит выше крыши:)
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4131521#p4131521"]16 Мгц -импульсы мне хватит выше крыши:)[/uquote]
Откуда там 16 MHz возьмутся? Если захваченный сигнал преобразовать в неупакованную последовательность бит которую скармливать SPI, то будет 8 MHz, а если сигнал хоть как-то упакован, то будет еще в разы медленнее. В любом случае задача достаточно простая, но если на каждой стадии возникают элементарные вопросы, то только и остается готовые скетчи искать :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

но я хотя бы правильно рассуждаю? Через АЦП надо записывать в МК, или из EXEL вписать значения в программный код?

Добавлено after 25 minutes 17 seconds:
В таблице exel (формат CSV) в каждой ячейке столбца указано время в секундах и присвоенное ему значение нуля или единицы. Время каждого значения отсчитывается от самого начала. Очень удобно и наглядно. Но каждое значение записывать в программный код...За пол секунды 13 тыс значений набегает... Подскажите пожалуйста скетч или библиотеку, которая работает с CSV-данными.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

Сообщение Dismas »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4131698#p4131698"]но я хотя бы правильно рассуждаю? ...[/uquote]
Для начала сделайте и покажите хотя бы скриншоты сигналов из анализатора.
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4131521#p4131521"]Типа способом аналого-цифрового преобразования. Только на аналоговый вход микроконтроллера будет поступать не синусоида, а импульсы.[/uquote]
АЦП тут вообще без нужды. Захват импульсного сигнала производят с помощью модуля Input Capture. Получают массив ДЛИТЕЛЬНОСТЕЙ низкого и высокого уровня (или периода и скважности). Воспроизведение захваченного сигнала делается модулем Output Compare, то есть по сути ШИМом.
Но позвольте полюбопытствовать о конечной цели вашей затеи. А то вполне вероятно, что ваши потуги будут напрасными.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

На примере стандартного сигнала из программы Logik 1.2.29 (канал №3)
Изображение
Но позвольте полюбопытствовать о конечной цели вашей затеи. А то вполне вероятно, что ваши потуги будут напрасными.
Я бы хотел попробовать сделать "обманку" АКБ от современного телефона. Дело в том, что мне необходимо посмотреть сколько тока потребляет телефон. А от лабораторника не удается подключить, т.к. в оригинальный АКБ вшит микроконтроллер, который выдает по квадратной шине данные о его состоянии (температура, заряд, степень изношенности...) Я планировал захватить эти данные, записать в свой микроконтроллер (например в Атмега 8 ) и стартонуть телефон, посылая в него скопированные данные по квадратной шине... Других вариантов, кроме как испортить АКБ, вытащив из него начинку, увы нет.

Добавлено after 1 minute 31 second:
Второй момент, Хотелось бы повторить пару сигналов с пультов от телевизора. Но именно способом захвата сигнала логическим анализатором.

Добавлено after 8 minutes 49 seconds:
Захват импульсного сигнала производят с помощью модуля Input Capture. Получают массив ДЛИТЕЛЬНОСТЕЙ низкого и высокого уровня (или периода и скважности). Воспроизведение захваченного сигнала делается модулем Output Compare,
а где эти модули распологаются? в настройках самой программы я не нашел... Там только можно экспортировать данные в формате CSV. Либо если протокол распознан, то в bin. или в HEX.
Вложения
проба 3 канал.zip
(52.52 КБ) 153 скачивания
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

Сообщение Dismas »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4132139#p4132139"]...который выдает по квадратной шине данные...[/uquote]
Что за шина такая ?
I2C ? Если да, то там 2 провода SDA и SCL, и, как правило
даже самый простой анализатор умеет её расшифровывать.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

Допустим анализатор расшифровал, но как теперь эту последовательность импульсов воспроизвести?
А вот сигнал от пульта TV не расшифровал и как быть?
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

Сообщение Dismas »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4132245#p4132245"]Допустим анализатор расшифровал...[/uquote]
Не нужно всё сваливать в одну кучу, мухи отдельно, котлеты отдельно.
Для начала разберитесь с "квадратной" шиной :))
Если это стандартный протокол - берём контролер в котором есть его
аппаратная поддержка и реализуем. Даже если её нет, можно реализовать
программно, или применить другой контролер. Выбор всегда есть.
Но опять же, сначала определиться с протоколом и данными, которые через
него передаются.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

Я немного не догоняю... Для каждого протокола нужен свой микроконтроллер? То есть только одним AVR микроконтроллером не обойтись? Давайте рассмотрим вариант, когда протокол неизвестен. Допустим программа логического анализатора не распознала протокол, но сигнал и данные сигнала (временные длительности нулей и длительности единичек) захвачены и определены. Как действовать дальше?

Добавлено after 6 minutes 16 seconds:
Для понимания и чистоты эксперимента пусть это будет не I2C, а что-то еще, где нет тактирующего сигнала... просто беспорядочные последовательные пачки импульсов с разными длительностями
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4132631#p4132631"]Как действовать дальше?[/uquote]
Пишется конвертер из формата в котором сохраняет ЛА в свой упакованный формат, какой именно зависит от частоты, формы и размера захватываемого сигнала, а также от числа задействованных пинов. Затем пишется прога на меге которая будет заниматься выводом, но сильно в это углубляться не имеет смысла т.к. судя по задаваемым вопросам в обозримом будущем ты не напишешь ни первое, ни второе, тем более то и другое вместе.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

Сообщение Dismas »

[uquote="Олегыч1",url="/forum/viewtopic.php?p=4132631#p4132631"]Я немного не догоняю... Для каждого протокола нужен свой микроконтроллер?...[/uquote]
Немного не так. К примеру нужен I2C
В одних контролерах есть аппаратный I2C в других нет.
Нужен UART - в одних есть аппаратный UART в других нет....
Вот тогда их реализуют программно. И т.д.
Но и I2C и UART и SPI и прочие стандартизованы.
[uquote="Олегыч1",url="/forum/viewtopic.php?p=4132631#p4132631"]... где нет тактирующего сигнала...[/uquote]
В таком случае там будут старт и стоп биты.
Последний раз редактировалось Dismas Вт ноя 30, 2021 21:12:56, всего редактировалось 2 раза.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Олегыч1 писал(а):Как действовать дальше?
я вообще не понимаю, в чем проблема.
если вы не умеете программировать МК, то будет ли польза от того, что я расскажу, как действовать?
на пальцах так:
1. мы имеем столбик чисел, равных интервалам в мс между фронтами сигнала (откуда он взят - оставим пока за кадром)
2. устанавливаем начальный уровень сигнала, допустим 0.
3. берем первое число и записываем его в регистр таймера (заранее настроенного на прерывание по истечению интервала)
4. когда таймер сформировал прерывание, т.е. когда первый интервал времени в мс истек, переключаем уровень сигнала на противоположный, берем следующее число из столбика и снова пишем его в таймер.
5. и так до конца всего столбика, после чего останавливаем таймер и выключаем сигнал.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Dismas",url="/forum/viewtopic.php?p=4132657#p4132657"]Но и I2C и UART и SPI и прочие стандартизованы.[/uquote]
Только не SPI :)
Ответить

Вернуться в «Разные вопросы по МК»