Думаю, манчестер можно расшифровать при помощи быстротактируемого счетчика (порядка 100 МГц) замеряем длительность сигнала от фронта до фронта если счетчик насчитал 4-6, значит это повторился предыдущий бит (была 1 и пришла 1 или была 0 и пришла 0 ), если счетчик насчитал 8-12, смотрим текущее состояние линии, ексли высокое, значит после 0 (можно использовать для проверки корректности) пришла 1, если низкое, значит после 1 пришел 0.
Добавлено after 3 minutes 51 second: можно быстротактируемый (около 30-39 МГц) сдвиговый регистр типа 595, его выходы на входы порта и написать карту состояний порта, по которой определять что там пришло... (эту версию я пока не до конца продумал). Но мне кажется что мега не успеет это обработать...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Думаю, манчестер можно расшифровать при помощи быстротактируемого счетчика (порядка 100 МГц )замеряем длительность сигнала от фронта до фронта...
отдельный ТТЛШ счётчик на 100 мгц... допустим))
Ivanoff-iv писал(а):
можно быстротактируемый (около 30-39 МГц) сдвиговый регистр типа 595, его выходы на входы порта и написать карту состояний порта, по которой определять что там пришло...
отдельный ТТЛШ сдвиговый регистр на 100 мгц... допустим))
пока плохо представляю себе схему этого чуда...
Добавлено after 31 minute 8 seconds: когда делали радиоуправление https://www.radiokot.ru/forum/viewtopic ... 8&t=148087 мы тоже использовали манчестер... ардуина цифровала сигнал с частотой в 16 раз больше с помощью таймера и прерывания... практика показала что 16 семплов на бит достаточно для надёжной синхронизации и восстановления исходного сигнала.... даже в условиях сильных помех и шумов...
ардуина прекрасно с этим справляется)) во только там частота синала была всего 1 килогерц)) а нам нужно принять сигнал частотой 10 мгц... в 10.000 раз быстрей !))
при помощи быстротактируемого счетчика (порядка 100 МГц) замеряем длительность сигнала от фронта до фронта
в другом варианте мы измеряли длительность от фронта до фронта с помощью всё того же таймера... в прерывании... ардуина с этим прекрасно справляется)) частота сигнала была уже 100 килогерц...
уже лучше)) но нам нужно принять сигнал частотой 10 мгц... 100 раз быстрей !))
Добавлено after 25 minutes 19 seconds: да, если в схему добавить быстродействующий счётчик... то частоту семплов можно поднять и до 160 мгц... и болше...)) тогда да, ардуина может оцифровывать входящий сигнал 10 мгц...
Добавлено after 1 hour 4 minutes 35 seconds: какие могут быть проблемы и как с ними бороться ? ))
1. во-первых быстротактируемый счетчик много жрёт электичества)) хотя можно сделать что быстротактируемый счетчик будет отключаться при отсутствии сигнала. допустим)) 2. во-вторых если писать семплы в память МК то SRАM быстро закончится)) хотя можно сделать обработку сигнала "на лету" допустим)) 3. счётчики... умножители... делители... промежуточный буфер... логика обнаружения сигнала... слишком ного деталей)) это решить будет сложнее...
я уже примерно представляю как это сделать... есть только одна проблема - слишком много будет деталей))
а может всё таки лучше метод прямой синхронизации ? там деталей совсем мало)) там главная проблема - блок синхронизации))
к стати... можно сделать и на транзисторах... для любителей всё делать на транзисторах))
Но можно принимать и на медленных частотах, понадобится асимметричный (заполнение около 5%) мультвибратор на 19,98МГц, детектор фронтов, сдвиговый регистр и делитель частоты на 8 и немного логики. если сигнал чистый, то можно и без мультвибратора обойтись с простым одновибратором.
Сигнал идёт на 2 RC фильтра, один (более высокочастотный) фильтрует сигнал для детектора фронтов, второй - для записи в сдвиговый регистр. если сигнал не шумный, то по фронту ведется запись в регистр, а также производится сброс одновибратора, настроенного на задержку чуть длиннее половины периода сигнала, каждые 8 записей вызывается прерывание для чтения содержимого регистра. /Запись производится сразу после прихода фронта пока более медленный фильтр ещё не успел переключиться (на вход регистра желателен триггер Шмидта). Если сигнал шумный, то используемый вместо одновибратора мультвибратор будет блокировать сигнал детектора фронта, пока тот не попадает во временнОе окно, а также дает импульс записи при отсутствии фронта в сигнале.
каждый бит информации оказывается записанным в 2 ячейки сдвигового регистра, либо ровно, либо со смещением в 1 бит, различать эти состояния будет логика принимающей стороны. У неё на это есть 8 тактов (при тактировании 20 МГц)
Добавлено after 30 minutes 18 seconds: или добавить D триггер для деления частоты пополам... Тогда выход детектора фронта идёт на триггер, выход одновибратора на сброс триггера, переход триггера 1->0 (в т.ч. и по сбросу) вызывает запись в регистр... всё! остается только прочитать содержимое регистра, там будет 8 бит полезной информации
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
во-первых... -когда мы делали радиоуправление мы использовали простую рацию... на выходе получили много шумов... -сейчас мы делаем интернет приёмник... сигнал идёт по экранированной паре... поэтому условимся что у нас сигнал чистый без шумов)) поэтому RC фильтры и триггеры Шмидта нам не нужны... осталось его только принять...))
или добавить D триггер для деления частоты пополам... Тогда выход детектора фронта идёт на триггер, выход одновибратора на сброс триггера, переход триггера 1->0 (в т.ч. и по сбросу) вызывает запись в регистр...
а это как будет выглядеть в реальной жизни ? ))
Добавлено after 34 minutes 13 seconds: технологию оцифровки на 160 мгц... пока оставим в покое)) вернемся к простой технологии прямой синхронизации...
с слову... Wi-Fi роутер использует PLL для синхронизации... что интересно, если уменьшить длину преамбулы до 4 байт то Wi-Fi роутер прекрасно работает))
а если уменьшить длину преамбулы до 3 байт то Wi-Fi роутер уже не работает))
//Ethernet preamble/SFD (synchronizer): 55 55 D5
таким образом мы вычислили минимальное время (постоянная времени петли ФАПЧ) необходимое для синхронизации PLL... ))
вот такие занимательные эксперименты можно делать на простой ардуине))
значит будем синхронизироваться по фронту первого импульса преамбулы... 8 байт... ... затем отчитывать 3/4 периода... и записывать в сдвиговый регистр уже готовые биты...
Добавлено after 43 minutes 9 seconds: сначала попробуем на транзисторах... )) берём три ждущих мультивибратора... -первый запускается по фронту... -второй запускается по спаду... -третий отчитывает 3/4 периода...
Часть схемы, отвечающую за синхронизацию и выделение информации из Манчестерского кода разрисовал и немного оптимизировал:Спойлер если сигнал чистый, то первый фильтр не нужен, а второй кроме фильтрации выполняет функцию задержки сигнала... хотя... тут можно просто инвертор поставить, а необходимые задержки при этом сформируются прохождением сигнала по линиям фазовой детекции (т.к. этот фронт всегда меняет полярность сигнала, то первая часть всегда инверсна второй... но рисунок перерисовывать уже лень... )
блок a находит все фронты в сигнале этими фронтами он переключает триггер и сбрасывает таймер одновибратора b, если на входе сменилось передаваемое значение, то фронта между битами не будет, и его дорисует (хоть и с небольшим запаздыванием) блок b он отправит сигнал сброса на триггер, чем принудительно синхронизирует его с передатчиком. фронт сигнала триггера вызывает запись в сдвиговый регистр и счет делителя частоты на 8 (счетчика заполнения сдвигового регистра) хотя, /8 не нужен, если будет выделение байтов временными промежутками или ещё каким-то образом (по Вашему рисунку я этого не понял, разве что кадр равен байту...)
Добавлено after 52 minutes 34 seconds: Попробовал создать схему в протеусе - работает хорошо. (Вложение) Правда частоты сделал низкие и задержки на конденсаторах, но я и не планировал всю схему рассчитать, а только мысль донести...
roman.com, возможно мы об одном и том-же думаем, но немного разными путями...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
мой старый протеус 8.6 не открывает)) просит протеус 8.8
Ivanoff-iv писал(а):
roman.com, возможно мы об одном и том-же думаем, но немного разными путями...
да))
Ivanoff-iv писал(а):
по Вашему рисунку я этого не понял, разве что кадр равен байту...
кадры - это синхронизация пакетов Ethernet... по кадрам ардуина определяет где заканчивается предыдущий пакет и начинается следующий пакет... всё это мы подробно разбирали в другой теме...
счет делителя частоты на 8 (счетчика заполнения сдвигового регистра) хотя, /8 не нужен, если будет выделение байтов временными промежутками или ещё каким-то образом...
ардуина будет синхронизирована со сдвиговым регистром...
каждый 8-й такт ардуина записывает содержимое регистра в свою память...
блок a находит все фронты в сигнале этими фронтами он переключает триггер и сбрасывает таймер одновибратора b, если на входе сменилось передаваемое значение, то фронта между битами не будет, и его дорисует (хоть и с небольшим запаздыванием) блок b он отправит сигнал сброса на триггер, чем принудительно синхронизирует его с передатчиком...
Это потому, что у тебя ... а! у тебя сдвиговый регистр это тот, что в меге... а я то думал внешний на порт повесить... а что, она за такт вот это вот может делать? не знал.... ну, да сейчас не об этом... смотри ЛС. ____________ хотя, нет... регистр внешний... тогда тем более не совсем понятно, как она из порта в ОЗУ за такт утрамбует? ладно бы из рабочего регистра... ИМХО тактировать мегу от сети не совсем правильно т.к. возможен джиттер да и с внутренними коммуникациями она может плохо подружиться...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
умеет !! ардуина всё умеет ! просто не все об этом знают))
Код:
//1 IN R22, PIND // IN Port -1 такт STS FIFO+1, R22 // Запись SRAM -2 такт NOP NOP NOP NOP NOP //2 IN R22, PIND // IN Port -1 такт STS FIFO+2, R22 // Запись SRAM -2 такт NOP NOP NOP NOP NOP //3 IN R22, PIND // IN Port -1 такт STS FIFO+3, R22 // Запись SRAM -2 такт NOP NOP NOP NOP NOP ...
но сейчас не об этом...))
Ivanoff-iv писал(а):
ИМХО тактировать мегу от сети совсем не правильно т.к. возможен джиттер да и с внутренними коммуникациями она может плохо подружиться...
блок a находит все фронты в сигнале этими фронтами он переключает триггер и сбрасывает таймер одновибратора b, если на входе сменилось передаваемое значение, то фронта между битами не будет, и его дорисует (хоть и с небольшим запаздыванием) блок b он отправит сигнал сброса на триггер, чем принудительно синхронизирует его с передатчиком...
одновибратор (он же ждущий мультивибратор) работает просто...
ну, всё таки это одновибратор: 1 импульс на входе вызовет 1 импульс на выходе, хотя... по сути это скорее 2 одновибратора: первый формирует задержку, которая длится чуть больше 50нс, эта задержка может обнуляться приходящими импульсами, второй срабатывает при окончании работы первого - его задача отпустить сброс триггера до прихода следующего счетного импульса (ограничить длительность лог 1 на выходе первого одновибратора). [какой-то замкнутой цикличности тут нет, значит это не генератор.] если второй легко собирается только на логике, то как организовать первый без RC (хоть он мне тут тоже не нравится) я не знаю... (на логике то если волна пошла, то волна пошла... разве что на финише её ловить и нейтрализовать - время её прихода нам известно... тогда можно и без RC обойтись).
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Ну, да, одновибратор б генерирует 1 импульс с задержкой... а больше и не надо. Так достигается синхронизация с входным сигналом без применения дополнительных источников опорной частоты.
Добавлено after 3 minutes 13 seconds: всё верно, там где пропущен импульс на входе С, приходит импульс на вход R. (он показан в следующей строке). а ещё в следующей - переключения триггера (красным выделено переключение именно от одновибратора б.
если одновибратор а не генерирует стробы то одновибратор б не генерирует задержки...
Вложение:
2023-02-01_08-01-41.jpg
поэтому эта схема работает не будет...
Не думал, что когда-нибудь напишу это: "но в Протеусе то работает" значит по крайней мере концепция правильная.
Добавлено after 3 minutes 45 seconds: ещё раз обращаю внимание - источник импульса "б" является по сути двумя одновибраторами: первый даёт задержку начала импульса, второй формирует конец импульса.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
угу... осталось подробней нарисовать а и б... вместо RC - лучше логические элементы с постоянной времени переключения... три элемента логики дают задержку ~50 nc...
перестроил на 10 МГц, но от конденсатора избавиться не удалось...Спойлер по линии Q идет очищеенный от информации тактовый сигнал. Пока мне не очень понятно, как происходит начало синхронизации? (это важно для синхронизации заполнения байта в регистре) каждый кадр с 0х55 начинается?
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Пока мне не очень понятно, как происходит начало синхронизации? (это важно для синхронизации заполнения байта в регистре) каждый кадр с 0х55 начинается?
угу...
прилетает пакет... синхронизатор запускается по первому фронту первого импульса... и погнали)) пока пакет не закончится))
Поправил схему (по невнимательности манчестер на 2 МГц был - теперь правильно, емкость в приемнике пересчитал), ещё нарисовал вариант без емкости, вписал в 5 корпусов, но без XOR, к сожалению, так и не обошелся. Приемники не путаются при заполнении нерабочего времени как 0, так и 1. определения конца пакета не делал. Привожу обе схемы:СпойлерТут схема работающего передатчика:Спойлер В архиве клип схемы для протеуса (открывается через экспорт в версиях и ниже 8.8 ).
Добавлено after 35 minutes 5 seconds: roman.com, на таких частотах осциллограф протеуса бесполезен, используй логический анализатор.
Добавлено after 3 hours 21 minute 14 seconds: Ещё немного поправил схему - добился стабильной работы при отклонении несущей частоты на 25% в обе стороны (схему не выкладывал, т.к. глобальных изменений нет, да и один фиг это в железе проверять надо)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
протеус тупой... всё врёт)) даже элементы XOR показывать не хочет... ошибка библиотеки)) другой нужен... искать надо)) в железе пока посмотреть нечем... иначе бы давно уже всё настроил)) передатчик пока оставим в покое)) работает и ладно... потом переделаем))
ну, можно что-то другое использовать... а можно своих библиотек напилить - правильных
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 230
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения