Страница 615 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт ноя 30, 2021 22:55:25
ARV
Олегыч1 писал(а):А что именно нужно подправить в CSV файле?
программа на Си понимает описание массива в таком виде:
Код: Выделить всё
int array[] = {
1234,
3334,
23,
3944,
44545
}
значит, открываете ваш CSV в Экселе или там где еще, и в клеточках рядом с цифрами ставите запятые. потом Copy-Paste в студию, пару ручных операций по расстановке скобок - вот и всё внедрение в код.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 00:29:03
Олегыч1
Не понимаю... вот в первой ячейке (в CSV) значение: "0.000000000000000, 0 "Это время старта в секундах. Нолик на конце после запятой указывает на то, что пока импульса нет.
В следующей ячейке значение: "0.000050174000000, 1 " Это время в секундах когда появилась логическая единица. Единица на конце говорит о том, что это начало логической единицы.
В следующей ячейке значение: "0.000053862000000, 0" Все так же, время, когда логическая единица перешла в ноль... И т.д. и еще 13 тысяч таких ячеек...
Подскажите пожалуйста на вот этом конкретном примере, где именно надо расставить запятые? Как будет выглядеть правильный код на Си в моем случае?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 08:27:23
ARV
мда... ни шагу без инструкции в картинках.
1. открыли свой CSV в таблице, нарисовали рядом ВТОРОЙ столбик, ввели в него формулу перевода дробных секунд в наносекунды, чтобы было целое число, потом нарисовали ТРЕТИЙ столбик с запятыми:

2. выделили ВТОРОЙ и ТРЕТИЙ столбики:

3. Сделали Copy-Paste в редактор кода:

4. дописали выше-ниже скопированного необходимые "буквы" программного кода.
Добавлено after 12 minutes 36 seconds:
то есть не совсем так: вам же нужно не время от начала записи, а между отсчетами... то есть формула у вас должна быть другой, для вычисления
разницы между моментами времени... т.е. примерно так для показанной на рисунке ячейки:
=(А3-А2)*1000000000
надеюсь, этого достаточно для вашей самостоятельной работы?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 09:26:14
Олегыч1
Да! Спасибо!) То что нужно!

Очень выручили
Возможно возникнут вопросы по самому коду, но это уже чуть позже... Как выглядит массив в Си вы уже показали. Как отыскать нужную библиотеку в AtmelStudio6?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 09:31:09
ARV
какую еще библиотеку?! ваша задача - не типовая, писать придется самому.
Добавлено after 2 minutes 12 seconds:
для начала определитесь с МК: судя по вашему примеру, интервалы у вас измеряются единицами микросекунд - из AVR, например, подобные интервалы реализовать не сможет ни один МК, значит, вам потребуется ARM. а это немного другой уровень вхождения в программирование... вам-то и AVR пока высоковат.
Добавлено after 47 seconds:
вы, часом, не IR-пульт имитировать собираетесь?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 09:48:54
КРАМ
[uquote="Олегыч1",url="/forum/viewtopic.php?p=4132139#p4132139"]а где эти модули распологаются? в настройках самой программы я не нашел...[/uquote]
Эти модули суть есть режимы работы таймеров.
Таймер при включении в режим захвата при наличии на ВХОДЕ ЗАХВАТА активного фронта (активный фронт настраивается) в регистр захвата АППАРАТНО записывается текущее значение таймера. Таким образом, пользователь получает отметки времени (таймер это по сути часы) на каждый фронт. Разность времени соседних фронтов и есть время между событиями.
При включении таймера в режим OutputCompare (PWM) полученные при захвате времена вставляем в регистр периода и дьюти и таким образом мы генерируем на выходе искомый записанный ранее сигнал.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 09:55:40
Олегыч1
[uquote="ARV",url="/forum/viewtopic.php?p=4132915#p4132915"]вы, часом, не IR-пульт имитировать собираетесь?[/uquote]
Попробую именно с него и начать. Да, я пока только для AVR могу что-то написать. Остальное пока не рассматриваю, т.к. реально пока сложновато для меня.
Эти модули суть есть режимы работы таймеров.
Таймер при включении в режим захвата при наличии на ВХОДЕ ЗАХВАТА активного фронта (активный фронт настраивается) в регистр захвата АППАРАТНО записывается текущее значение таймера. Таким образом, пользователь получает отметки времени (таймер это по сути часы) на каждый фронт. Разность времени соседних фронтов и есть время между событиями.
При включении таймера в режим OutputCompare (PWM) полученные при захвате времена вставляем в регистр периода и дьюти мы генерируем на выходе искомый записанный ранее сигнал.
КРАМ, это применимо для AVR? А в частности для Атмега 8 ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 09:58:31
КРАМ
[uquote="Олегыч1",url="/forum/viewtopic.php?p=4132930#p4132930"]КРАМ, это применимо для AVR? А в частности для Атмега 8 ?[/uquote]
Это есть практически во всех МК, где есть таймеры.
Откройте даташит на 8-ую атмегу в разделе первого таймера и там все прочтете.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 10:04:07
ARV
Олегыч1 писал(а):Попробую именно с него и начать.
так для него подход совсем другой требуется! вам надо захватывать не
несущую частоту 36-41 кГц, а
модулирующую, а там частота ниже во много раз! захватывать несущую нужен ARM, а огибающую - любой AVR справится. вы своим логическим анализатором захватываете с фотодиода, небось, а вы захватите с приёмника TSOP*** и посмотрите, как оно все существенно проще станет! и, кстати, многие логические анализаторы сразу код распознают, а имитировать отправку известного кода по известному стандарту - вообще пара пустяков!
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 12:40:47
Олегыч1
ARV, , да, именно!) Логическим анализатором с фотодиода, там и несущая и огибающая. Протокол очень похож на "Neс". Один в один как здесь:
https://www.radiokot.ru/articles/14/
Но мой анализатор не знает этого протокола

и по любому найдется какой-нибудь хитрый протокол, который тоже не распознается...
и, кстати, многие логические анализаторы сразу код распознают, а имитировать отправку известного кода по известному стандарту - вообще пара пустяков!
- Как именно это делается? на примере атмега 8

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 13:22:28
ARV
анализатор несущую не анализирует, сделайте, как я советовал: захватите сигнал с TSOP*** и посмотрите, что с ним сделает ваш анализатор
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 14:52:11
Олегыч1
Проблема в том, что у меня нет приемника... Только пульт

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 01, 2021 16:38:46
ARV
покупка приемника для вас более разумный вариант, чем пытаться сделать невозможное
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 01:27:34
Олегыч1
Я примерно представляю, какой сигнал будет на приемнике. Наверняка без несущей частоты, просто импульсы, которые образованы от огибающей. И наверняка они распознаются софтом от логического анализатора. Допустим. И как дальше быть? Как воспроизвести теперь распознанный сигнал?
Кстати, приемник может быть абсолютно любой? Не обязательно от родного пульта? Таких у меня навалом, старые цифровые приставки от TV подойдут? Очень хочется попробовать на конкретном примере сгенерировать сигнал

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 07:54:52
ARV
Олегыч1 писал(а):приемник может быть абсолютно любой?
приемники и пульты отличаются по частоте несущей. несущая практически всегда лежит в диапазоне 32-45 кГц, крайне редки случаи, когда она вне этого диапазона. в среднем можно считать, что несущая 36-38 кГц. любой пульт на эту частоту будет принимать сигналы и на другой несущей в упомянутом диапазоне, но дальность приема, конечно, будет существенно ниже. для экспериментов в пределах 1-2 метров о частоте несущей и соответствующего ей приемника можно не волноваться, считайте, что любой TSOP**** вам подойдет к любому пульту.
Олегыч1 писал(а):Как воспроизвести теперь распознанный сигнал?
есть несколько способов.
1. определить стандарт, по которому передает пульт, и формировать стандартный код, не занимаясь "воспроизведением захваченного"
2. сделать так, как я ранее уже рассказывал: определить частоту несущей при помощи анализатора, определить импульсы огибающей при помощи анализатора и приемника, записать CSV-таблицу и потом по ней повторить огибающий сигнал, промодулировав им сгенерированную несущую.
3. захватить огибающий сигнал сразу при помощи МК, и повторить его, генерируя пачки несущей частоты 38 кГц (подходящей с натяжкой для любого приемника). сам принцип формирования импульсов тот же самый, что и в п.2, только таблица длительностей строится сразу в памяти МК, а не грузится туда извне.
захват длительностей делается при помощи режима "захвата" таймера, в AVR это TIMER1
генерация несущей делается при помощи таймера МК, настроенного на генерацию меандра (чаще всего стандарты на IR-управление применяют не меандр, а импульсы в пропорции 1/3...1/4, но принципиальной разницы нет)
модуляция несущей делается путем включения-выключения вышеупомянутого режима таймера. то есть несущая генерируется аппаратно, а модуляция делается программно.
как сформировать сигнал стандарта RC5 (практически вся продукция PHILIPS), вы можете посмотреть в моем проекте:
https://simple-devices.ru/prj/9-electr/ ... te-control там есть исходники для передачи этого кода, все очень просто.
даже таймер для интервалов не применялся - простые задержки циклом. такой подход для примитивного пульта, больше ничего не делающего, кроме генерации кода, вполне допустим.
коды других стандартов делаются аналогично, и тоже для их генерации (при отсутствии других дел) можно отказаться от таймера, а делать на задержках.
да, продвинутые МК, типа новейших версий AVR, PIC и некоторых ARM, могут генерировать модулированную несущую более близким к аппаратному методу способом, там есть блоки, способные аппаратно умножать (логически) сигналы... но принципиально сути процесса это не меняет
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 09:27:51
oleg110592
[uquote="Олегыч1",url="/forum/viewtopic.php?p=4133542#p4133542"]И как дальше быть? Как воспроизвести теперь распознанный сигнал?
Кстати, приемник может быть абсолютно любой? Очень хочется попробовать на конкретном примере сгенерировать сигнал[/uquote]
можно посмотреть как сделано тут:
http://www.getchip.net/posts/092-univer ... myjj-pult/
Для того чтобы не создавать огромную базу команд различных пультов, я решил записывать IR-команды с оригинального пульта в память микроконтроллера и впоследствии их воспроизводить (своего рода диктофон для IR-команд). Обучаемому пульту нет разницы, по какому протоколу работает оригинальный пульт, нет разницы какого формата и длины IR-команда, он записывает всю передаваемую оригинальным пультом информацию в сыром (RAW) виде и точно так же воспроизводит.
Обсуждение:
http://www.forum.getchip.net/viewtopic.php?f=8&t=253
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 20:02:17
Олегыч1
ARV,

Вроде все теперь понятно, теперь наступает практика.
Добавлено after 2 hours 51 minute 14 seconds:
А для чего вообще нужна несущая частота в инфракрасных пультах? Ведь инфракрасное излучение передается оптически. Это же не радиоволна...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 20:52:31
ARV
чтобы выделять сигнал пульта на фоне других инфракрасных излучений. например, любая лампочка светит инфракрасным излучением импульсами 10 мс
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 21:34:21
Олегыч1
Ну и что? Импульсы от лампочки не попадают ни под один протокол) Да какой там, даже если и протокол будет один и тот же, а кодировка другая, то все равно сигнал получается индивидуальный

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 21:49:41
ARV
если вы считаете, что помехи не мешают приему полезного сигнала, мне нечего вам добавить к ранее сказанному. и вообще сомневаюсь в пользе продолжения диалога: очевидные, многократно описанные вещи у вас вызывают удивление и/или сомнение...