Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2021-ноя-28 03:20

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу « 1 2 3 »
Автор Сообщение
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-09 11:44 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
StartMilandr писал(а): *
...Нужно было подать стабильную частоту 80Мгц от внешнего генератора на пины HSE0, сам HSE0 включить в режиме PY_PASS, чтобы пропустить 80МГц на MAX_CLOCK и соответственно на блок PHY. Но ядро работает только до 64МГц, поэтому нужно было использовать делитель, чтобы 80МГц не попало на ядро. Вроде как-то так мы это запускали когда к РС подключали...


Помогите, пожалуйста, разобраться, где ошибка.
CLKCTRL_HSEconfig(CLKCTRL_HSE0_CLK_BYP);

while (CLKCTRL_HSEstatus(CLKCTRL_HSEn_STAT_HSE0_RDY) != SUCCESS) {}

CLKCTRL_CPU_PLLconfig(PLL0, CLKCTRL_PLLn_CLK_SELECT_HSE0div1, PLL_DIVQ_Q_16, 4); // 20 MHz, (3<N<75)

while (CLKCTRL_CPU_PLLstatus(0) != SUCCESS) {}

CLKCTRL_MAX_CLKSelection (CLKCTRL_MAX_CLK_HSE0div1);
На входе сейчас 80 МГц, программные настройки частот приведены выше. Отладчик доходит до строчки проверки pll, и там крутится в ожидании успешного окончания настройки. А его нет.

Пожалуйста, подскажите, что упущено.

Заранее спасибо.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-09 13:13 
Не в сети

Зарегистрирован: 2020-дек-10 09:35
Сообщения: 58
Организация: Startex
Не надо 80МГц на PLL подавать.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-09 14:15 
Не в сети
Support

Зарегистрирован: 2017-май-31 15:10
Сообщения: 107
Организация: АО "ПКК Миландр"
Откуда: АО "ПКК Миландр"
Ann писал(а): *
StartMilandr писал(а): *
...Нужно было подать стабильную частоту 80Мгц от внешнего генератора на пины HSE0, сам HSE0 включить в режиме PY_PASS, чтобы пропустить 80МГц на MAX_CLOCK и соответственно на блок PHY. Но ядро работает только до 64МГц, поэтому нужно было использовать делитель, чтобы 80МГц не попало на ядро. Вроде как-то так мы это запускали когда к РС подключали...


Помогите, пожалуйста, разобраться, где ошибка.
CLKCTRL_HSEconfig(CLKCTRL_HSE0_CLK_BYP);

while (CLKCTRL_HSEstatus(CLKCTRL_HSEn_STAT_HSE0_RDY) != SUCCESS) {}

CLKCTRL_CPU_PLLconfig(PLL0, CLKCTRL_PLLn_CLK_SELECT_HSE0div1, PLL_DIVQ_Q_16, 4); // 20 MHz, (3<N<75)

while (CLKCTRL_CPU_PLLstatus(0) != SUCCESS) {}

CLKCTRL_MAX_CLKSelection (CLKCTRL_MAX_CLK_HSE0div1);
На входе сейчас 80 МГц, программные настройки частот приведены выше. Отладчик доходит до строчки проверки pll, и там крутится в ожидании успешного окончания настройки. А его нет.

Пожалуйста, подскажите, что упущено.

Заранее спасибо.
Входная частота PLL от 2 до 16 МГц.

Также некорректно настраивается сам блок.
Необходимо выполнять условие:
𝐹𝐼𝑁𝑇 = 𝐹𝐼𝑁∗(𝐾𝑁𝑃𝐿𝐿)/(𝐾𝑄𝑃𝐿𝐿+1)
Частота FINT, полученная после умножения 𝐹𝐼𝑁 на 𝐾𝑁𝑃𝐿𝐿 и деления на (𝐾𝑄𝑃𝐿𝐿+1), должна быть в диапазоне от 75 до 150 МГц.
Далее частота 𝐹𝐼𝑁𝑇 участвует в формировании выходной частоты PLL:
FOUT = FINT/(DV+1)

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-09 14:55 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
Спасибо большое за указание ошибок.
Действительно, настройки pll некорректны.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-09 15:17 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
И, тем не менее, снова прошу помощи.
1. Правильно ли были произведены настройки всех частот для запуска ethernet?
StartMilandr писал(а): *
...Нужно было подать стабильную частоту 80Мгц от внешнего генератора на пины HSE0, сам HSE0 включить в режиме PY_PASS, чтобы пропустить 80МГц на MAX_CLOCK и соответственно на блок PHY. Но ядро работает только до 64МГц, поэтому нужно было использовать делитель, чтобы 80МГц не попало на ядро. Вроде как-то так мы это запускали когда к РС подключали...

Мой код в соответствии с вышеизложенными рекомендациями:
CLKCTRL_HSEconfig(CLKCTRL_HSE0_CLK_BYP);  // режим Bypass 

while (CLKCTRL_HSEstatus(CLKCTRL_HSEn_STAT_HSE0_RDY) != SUCCESS) {}

CLKCTRL_MAX_CLKSelection (CLKCTRL_MAX_CLK_HSE0div1);  // 80МГц на max_clock

CLKCTRL_CPUclkPrescaler(CLKCTRL_CPU_CLK_CPUclk2); // делитель, чтобы на ядро 80 МГц не попали
На входе сейчас 80 МГц.


2. Отладчик доходит до while, и там и остаётся. Что не так? Почему режим не устанавливается?

Заранее спасибо.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-09 16:18 
Не в сети

Зарегистрирован: 2018-мар-18 15:49
Сообщения: 273
Организация: StartMilandr.ru
Надо проверить:
1 - что амплитуда сигнала 80МГц равна Ucc
2 - на тот ли пин подана амплитуда


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-10 10:45 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
StartMilandr писал(а): *
Надо проверить:
1 - что амплитуда сигнала 80МГц равна Ucc
2 - на тот ли пин подана амплитуда
Синус, амплитуда 3.3 В, подано туда же, куда ранее приходило 10МГц, т.е. на hseo_in.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-10 10:48 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
CLKCTRL_HSEconfig(CLKCTRL_HSE0_CLK_BYP);  // режим Bypass 

while (CLKCTRL_HSEstatus(CLKCTRL_HSEn_STAT_HSE0_RDY) != SUCCESS) {}

Уважаемые разработчики! Почему режим Bypass на микроконтроллере 1986ВЕ8Т не устанавливается? Почему программа под отладчиком зависает на проверке работоспособности hse0?
В одной из тем рекомендовали отменить эту проверку, но если её отменить, отладчик вылетает совсем.
Пожалуйста, подскажите, что нужно дописать/переписать, чтобы заработало.

Заранее спасибо.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-10 11:11 
Не в сети

Зарегистрирован: 2018-мар-18 15:49
Сообщения: 273
Организация: StartMilandr.ru
Имхо надо меандр подать...
- Когда на внутренний генератора HSE подается частота от внешнего резонатора, то этот внутренний генератор делает из входящего синуса с амплитудой ~100мв меандр с той же частотой и амплитудой Ucc. Выходной "компаратор" отсчитывает заданное количество переключений меандра на выходе и выставляет бит Ready.
- Когла HSE включается в режиме ByPASS, то он как генератор отключается (не делает из "микросинуса" меандр), а просто пропускает сквозь себя внешнюю частоту. Но выходной "компаратор" так-же должен насчитать заданное дизайном количество переключений, чтобы выставить бит Ready.

Ucc у вас 3,3 вольта?


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-сен-10 14:17 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
StartMilandr писал(а): *
Имхо надо меандр подать...
- Когда на внутренний генератора HSE подается частота от внешнего резонатора, то этот внутренний генератор делает из входящего синуса с амплитудой ~100мв меандр с той же частотой и амплитудой Ucc. Выходной "компаратор" отсчитывает заданное количество переключений меандра на выходе и выставляет бит Ready.
- Когла HSE включается в режиме ByPASS, то он как генератор отключается (не делает из "микросинуса" меандр), а просто пропускает сквозь себя внешнюю частоту. Но выходной "компаратор" так-же должен насчитать заданное дизайном количество переключений, чтобы выставить бит Ready.

Ucc у вас 3,3 вольта?
3.3.

Всё заработало! Спасибо Вам огромное!


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-ноя-18 15:02 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
Здравствуйте! Помогите, пожалуйста, понять, в чем дело.

Есть простая программа для 1986ВЕ8Т, передающая и принимающая в прерывании пакеты через ethernet. Причём даже не через внешний разъём, а внутри (ETH_Loopback_Mode = ENABLE). Пока программа запускается из внутренней памяти, все в порядке. Но если подключить 1645РУ4АУ и запустить программу оттуда, прерывание срабатывает один раз, а на втором после попадания в обработчик прерывания крутится в строчке:
 while (MDR_ETHO->R_HEAD == MDR_ETHO->R_TAIL) {}


Внешняя память подключена корректно (программа с прерыванием по таймеру, запускаемая из внешней памяти, отрабатывает без ошибок). Проблема именно в Ethernet. И в прерывании. Потому что если передавать и принимать пакеты в вечном цикле, как это сделано в примере, всё работает дольше. Но в конце концов, тоже останавливается в указанной выше строке кода.
Подскажите, пожалуйста, что это может быть.

Заранее спасибо.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-ноя-18 17:00 
Не в сети

Зарегистрирован: 2020-дек-10 09:35
Сообщения: 58
Организация: Startex
Надо код смотреть. Эта строка говорит о том, что новых пакетов нет.
А если вы висите в этой строке, то не исполняется код который следующий пакет должен послать (раз уж Loopback режим). Соответственно цикл и висит.
Проблема в логике программы.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-ноя-18 17:39 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 770
Откуда: г. Санкт-Петербург
Ann писал(а): *
...Пока программа запускается из внутренней памяти, все в порядке. Но если подключить 1645РУ4АУ и запустить программу оттуда, прерывание срабатывает один раз, а на втором после попадания в обработчик прерывания крутится в строчке:
 while (MDR_ETHO->R_HEAD == MDR_ETHO->R_TAIL) {}
...
1. Какие настройки таймингов для внешней шины? По умолчанию на частоте 40 МГц цикл шины будет порядка 4 мкс.
2. Включен ли КЭШ для внешней шины?
Влияют ли эти параметры на поведение программы?
Если часть кода разместить во внутренней SRAM (например таблица векторов и обработчики прерывания) - это повлияет на поведение программы?
Ann писал(а): *
...Потому что если передавать и принимать пакеты в вечном цикле, как это сделано в примере, всё работает дольше. Но в конце концов, тоже останавливается в указанной выше строке кода...
Если код всего вечного цикла помещается в КЭШ, то при включенном кэш обращений по шине после заполнения кэш вообще не должно быть (или будут минимальными при извлечении констант). При этом программа будет работать с максимальным быстродейсвием.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-ноя-22 10:44 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
AndOrFin писал(а): *
Надо код смотреть. Эта строка говорит о том, что новых пакетов нет.
А если вы висите в этой строке, то не исполняется код который следующий пакет должен послать (раз уж Loopback режим). Соответственно цикл и висит.
Проблема в логике программы.
Спасибо за ответ.
Код прилагаю ниже.

Программа простая, но, действительно, есть нюанс - в прерывании я отправляю заново пакет, чтобы был непрерывный цикл приема/передачи. В окончательной программе этого, конечно, нет. Здесь же такой код, чтобы отследить ошибку. Без внешней памяти он работал. Казалось, что и с включением 1645РУ4АУ тоже ничего не изменится.


Вложения:
main.rar [4.03 КБ]
8 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Проблемы с Ethernet
СообщениеДобавлено: 2021-ноя-22 11:11 
Не в сети

Зарегистрирован: 2021-авг-05 16:06
Сообщения: 37
Организация: АО Созвездие
vasili писал(а): *
Если часть кода разместить во внутренней SRAM (например таблица векторов и обработчики прерывания) - это повлияет на поведение программы?
Спасибо большое за ответ!

Размещение части кода во внутренней памяти и включение кэша на поведение программы не повлияло никак.

Кэш не включен.

Внешняя частота 80МГц. Временные настройки контроллера внешней памяти следующие:
DIVOCLK = 6;
WS_HOLD = 6;
WS_SETUP = 6;
WS_ACTIVE =6.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 35 сообщений ]  На страницу « 1 2 3 »

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB