Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Вт ноя 30, 2021 22:55:25

Олегыч1 писал(а):А что именно нужно подправить в CSV файле?
программа на Си понимает описание массива в таком виде:
Код:
int array[] = {
1234,
3334,
23,
3944,
44545
}

значит, открываете ваш CSV в Экселе или там где еще, и в клеточках рядом с цифрами ставите запятые. потом Copy-Paste в студию, пару ручных операций по расстановке скобок - вот и всё внедрение в код.

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

Ср дек 01, 2021 00:29:03

Не понимаю... вот в первой ячейке (в CSV) значение: "0.000000000000000, 0 "Это время старта в секундах. Нолик на конце после запятой указывает на то, что пока импульса нет.
В следующей ячейке значение: "0.000050174000000, 1 " Это время в секундах когда появилась логическая единица. Единица на конце говорит о том, что это начало логической единицы.
В следующей ячейке значение: "0.000053862000000, 0" Все так же, время, когда логическая единица перешла в ноль... И т.д. и еще 13 тысяч таких ячеек...
Подскажите пожалуйста на вот этом конкретном примере, где именно надо расставить запятые? Как будет выглядеть правильный код на Си в моем случае?

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

Ср дек 01, 2021 08:27:23

мда... ни шагу без инструкции в картинках.
1. открыли свой CSV в таблице, нарисовали рядом ВТОРОЙ столбик, ввели в него формулу перевода дробных секунд в наносекунды, чтобы было целое число, потом нарисовали ТРЕТИЙ столбик с запятыми:
Изображение
2. выделили ВТОРОЙ и ТРЕТИЙ столбики:
Изображение
3. Сделали Copy-Paste в редактор кода:
Изображение
4. дописали выше-ниже скопированного необходимые "буквы" программного кода.

Добавлено after 12 minutes 36 seconds:
то есть не совсем так: вам же нужно не время от начала записи, а между отсчетами... то есть формула у вас должна быть другой, для вычисления разницы между моментами времени... т.е. примерно так для показанной на рисунке ячейки: =(А3-А2)*1000000000
надеюсь, этого достаточно для вашей самостоятельной работы?
Вложения
1-3.PNG
(4.68 KiB) Скачиваний: 330
1-2.PNG
(3.02 KiB) Скачиваний: 339
1-1.PNG
(6.46 KiB) Скачиваний: 333

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

Ср дек 01, 2021 09:26:14

Да! Спасибо!) То что нужно! 8) Очень выручили :beer:
Возможно возникнут вопросы по самому коду, но это уже чуть позже... Как выглядит массив в Си вы уже показали. Как отыскать нужную библиотеку в AtmelStudio6?

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

Ср дек 01, 2021 09:31:09

какую еще библиотеку?! ваша задача - не типовая, писать придется самому.

Добавлено after 2 minutes 12 seconds:
для начала определитесь с МК: судя по вашему примеру, интервалы у вас измеряются единицами микросекунд - из AVR, например, подобные интервалы реализовать не сможет ни один МК, значит, вам потребуется ARM. а это немного другой уровень вхождения в программирование... вам-то и AVR пока высоковат.

Добавлено after 47 seconds:
вы, часом, не IR-пульт имитировать собираетесь?

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

Ср дек 01, 2021 09:48:54

а где эти модули распологаются? в настройках самой программы я не нашел...

Эти модули суть есть режимы работы таймеров.
Таймер при включении в режим захвата при наличии на ВХОДЕ ЗАХВАТА активного фронта (активный фронт настраивается) в регистр захвата АППАРАТНО записывается текущее значение таймера. Таким образом, пользователь получает отметки времени (таймер это по сути часы) на каждый фронт. Разность времени соседних фронтов и есть время между событиями.
При включении таймера в режим OutputCompare (PWM) полученные при захвате времена вставляем в регистр периода и дьюти и таким образом мы генерируем на выходе искомый записанный ранее сигнал.

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

Ср дек 01, 2021 09:55:40

вы, часом, не IR-пульт имитировать собираетесь?

Попробую именно с него и начать. Да, я пока только для AVR могу что-то написать. Остальное пока не рассматриваю, т.к. реально пока сложновато для меня.

Эти модули суть есть режимы работы таймеров.
Таймер при включении в режим захвата при наличии на ВХОДЕ ЗАХВАТА активного фронта (активный фронт настраивается) в регистр захвата АППАРАТНО записывается текущее значение таймера. Таким образом, пользователь получает отметки времени (таймер это по сути часы) на каждый фронт. Разность времени соседних фронтов и есть время между событиями.
При включении таймера в режим OutputCompare (PWM) полученные при захвате времена вставляем в регистр периода и дьюти мы генерируем на выходе искомый записанный ранее сигнал.

КРАМ, это применимо для AVR? А в частности для Атмега 8 ?

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

Ср дек 01, 2021 09:58:31

КРАМ, это применимо для AVR? А в частности для Атмега 8 ?

Это есть практически во всех МК, где есть таймеры.
Откройте даташит на 8-ую атмегу в разделе первого таймера и там все прочтете.

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

Ср дек 01, 2021 10:04:07

Олегыч1 писал(а):Попробую именно с него и начать.
так для него подход совсем другой требуется! вам надо захватывать не несущую частоту 36-41 кГц, а модулирующую, а там частота ниже во много раз! захватывать несущую нужен ARM, а огибающую - любой AVR справится. вы своим логическим анализатором захватываете с фотодиода, небось, а вы захватите с приёмника TSOP*** и посмотрите, как оно все существенно проще станет! и, кстати, многие логические анализаторы сразу код распознают, а имитировать отправку известного кода по известному стандарту - вообще пара пустяков!

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

Ср дек 01, 2021 12:40:47

ARV, , да, именно!) Логическим анализатором с фотодиода, там и несущая и огибающая. Протокол очень похож на "Neс". Один в один как здесь: https://www.radiokot.ru/articles/14/
Но мой анализатор не знает этого протокола :? и по любому найдется какой-нибудь хитрый протокол, который тоже не распознается...
и, кстати, многие логические анализаторы сразу код распознают, а имитировать отправку известного кода по известному стандарту - вообще пара пустяков!
- Как именно это делается? на примере атмега 8 :roll:

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

Ср дек 01, 2021 13:22:28

анализатор несущую не анализирует, сделайте, как я советовал: захватите сигнал с TSOP*** и посмотрите, что с ним сделает ваш анализатор

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

Ср дек 01, 2021 14:52:11

Проблема в том, что у меня нет приемника... Только пульт :?

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

Ср дек 01, 2021 16:38:46

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

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

Чт дек 02, 2021 01:27:34

Я примерно представляю, какой сигнал будет на приемнике. Наверняка без несущей частоты, просто импульсы, которые образованы от огибающей. И наверняка они распознаются софтом от логического анализатора. Допустим. И как дальше быть? Как воспроизвести теперь распознанный сигнал?
Кстати, приемник может быть абсолютно любой? Не обязательно от родного пульта? Таких у меня навалом, старые цифровые приставки от TV подойдут? Очень хочется попробовать на конкретном примере сгенерировать сигнал :)

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

Чт дек 02, 2021 07:54:52

Олегыч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

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

можно посмотреть как сделано тут:
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

ARV, :beer: Вроде все теперь понятно, теперь наступает практика. :solder:

Добавлено after 2 hours 51 minute 14 seconds:
А для чего вообще нужна несущая частота в инфракрасных пультах? Ведь инфракрасное излучение передается оптически. Это же не радиоволна...

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

Чт дек 02, 2021 20:52:31

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

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

Чт дек 02, 2021 21:34:21

Ну и что? Импульсы от лампочки не попадают ни под один протокол) Да какой там, даже если и протокол будет один и тот же, а кодировка другая, то все равно сигнал получается индивидуальный :wink: :idea:

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

Чт дек 02, 2021 21:49:41

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