на чём мы остановились... надо доделать / переделать самодельный интернет)) для Умного дома...

смотрим сигнал в интернете...
Спойлер

Спойлер

берём Ардуино
Спойлер

пишем программу...
Спойлер

нажимаем на кнопочки... всё работает))
разберём подробнее...
Спойлер

Расчётная скорость передачи пакетов у нас должна быть 17.000 пакетов/c. Но на анализаторе мы видим 8.630 пакетов/c.
Половина пектов теряется...
Почему так происходит ?
Потому что мы нарушили требования спецификации
https://ru.wikipedia.org/wiki/10BASE-TУ нас ATmega8 передаёт пакеты непрерывно... А согласно спецификации межпакетный интервал должен составлять 9,6 мкс.
https://en.wikipedia.org/wiki/Interpacket_gapПеределаем всё по стандарту.
Спойлер

Спойлер

Спойлер

Когда ATmega8 не передаёт пакеты, ATmega8 передаёт импульсы NLP (согласно спецификации 10BASE-T).
Спойлер

Всё работает ))
Расчётная скорость передачи пакетов у нас должна быть около 14.000 пакетов/c. На анализаторе видим 14.431 пакетов/c.
Замечательно. Наша ATmega8 передаёт пакеты со скорость 14.431 пакетов/c.
Потерь пакетов нет. Всё работает стабильно.
Преамбула должна быть 8 байт... но на самом деле достаточно 4 байт.
в конце пакета CRC32
Спойлер

Wireshark это не видит. Но оно там есть)).
Далее... усложним схему...
Сделаем Сумматор.
Спойлер

работает.
Далее... Синхронизировали работу двух МК.))
Теперь всё работает так:
1- Два МК работают от одного тактового генератора (кварцевый генератор).
2- Два МК выполняют все инструкции синхронно.
Спойлер

Принцип работы синхронизатора простой.))
Перед началом выполнения инструкций первый МК передаёт сигнал синхронизации второму МК.
Второй МК синхронизируется по сигналу синхронизации от первого МК.
В итоге оба МК выполняют все инструкции синхронно.
И нифига не работает))
Видимо для синтеза сигнала Ethernet недостаточно просто синхронизировать выполнений инструкций. Необходимо ещё синхронизировать фазу тактового генератора... с учётом задержек на переключение выводов самого МК...
Добавим в схему фазовый детектор тактового сигнала 20 МГц.
Спойлер

Фазовый детектор показывает задержку фазы тактового сигнала 20 МГц в несколько наносекунд.
Спойлер

В этом вся проблема.
Решение.
Можно скорректировать тактовый сигнал с помощью LC или RC цепи...
Или можно использовать внешний тактовый генератор.
Другое...
Подключили внешний тактовый генератор на ATmega328.
Спойлер

Фазовый детектор показывает - отклонений фазы тактового сигнала нет.
Теперь два МК типа ATmega8 работают от одного кварцевого генератора синхронно и синфазно. ))
Теперь всё работает как надо.
Далее... используем мультиплексор...
Спойлер

Спойлер

Спойлер

Спойлер

Спойлер

Теперь всё работает как надо.
далее... приёмник.
делаем синхронизацию...
используем прямой метод синхронизации...
Спойлер

блок синхронизации...
Спойлер

в блоке синхронизации используем время переключения логических элементов...
Спойлер

Спойлер

работает))
В итоге получилась такая схема.
Спойлер

работает))

Теперь о недостатках...
1- приёмник (ATmega328_RX_Ethernet) периодически зависает. Сказывается плохая синхронизация... Спасает только RESET.
ATmega328 нужна нормальная синхронизация.
2- много Ардуин... надо оставить одну Ардуину... сотальное надо переделать на логику.
Добавлено after 24 minutes 21 second:надо переделать вход...
на дифференциальный...
поставить сумматор побольше))
сделать сдвиговый регистр на логике...
- Вложения
-
- Ethernet_полная.rar
- (129.36 KiB) Скачиваний: 12