Faton_11 0 18 января Опубликовано 18 января · Жалоба Добрый вечер! Кто с wiznet5500 работал, скажите, пожалуйста, как сигнал прерывания INT после первого срабатывания вернуть снова в состояние высокого уровня: а то он как лег, так и лежит, на последующие прерывания не реагирует (использую прерывание RECV, оно возникает при каждом получении данных от участника сети). После прерывания в соответствующий бит регистра SIR устанавливается "1", попытка насильно записать туда "0" не оканчивается успехом. В документации сказано "Каждый разряд SIR будет равен ‘1’ до тех пор, пока хост не очистит Sn_IR", а он его и не собирается очищать. Как быть?🤷🏻♂️ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 19 января Опубликовано 19 января · Жалоба C W5500 не знаком, но зачастую для сброса флага нужно прочитать регистр Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 19 января Опубликовано 19 января · Жалоба 20 часов назад, Faton_11 сказал: пока хост не очистит Sn_IR", а он его и не собирается очищать По содержимому SIR вы определяете, какой из сокетов вызвал прерывание, затем читаете Sn_IR, чтобы понять, какое именно прерывание возникло, после чего сбрасываете этот бит в Sn_IR. Вы сбрасываете его, в данном случае под хостом понимается контроллер, управляющий микросхемой. Когда вы сбросите все обработанные флаги в SnIR - соответствующий бит в SIR сбросится. А когда сбросятся все биты в SIR - отпустится и INT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Faton_11 0 19 января Опубликовано 19 января · Жалоба проблема решилась, спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 19 января Опубликовано 19 января · Жалоба Так вы другим помогите, напишите, как решили Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 59 19 января Опубликовано 19 января · Жалоба Кому надо откроет описание и прочитает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Faton_11 0 23 января Опубликовано 23 января · Жалоба On 1/19/2024 at 7:05 PM, stells said: Так вы другим помогите, напишите, как решили В регистр Sn_IR нужно записать в соответствующий бит единицу: ENABLE_INTERRUPT_Sn_IR = 32'b00000000_00000010_00101100_00000100; // ENABLE INTERRUPT Sn_IR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться