реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> W3150A - два вопроса про прерывания, Правильно ли я понял, что после чтения SxIR вывод прерывания будет ни
Сергей Борщ
сообщение Jun 1 2007, 07:03
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



первый собственно в теме - правильно ли я понял, что после чтения SxIR вывод прерывания будет низким еще 2 мс?
Цитата
IR (Interrupt Register)
The /INT signal retain low as long as any unmasked signal is set, and will not go high until all unmasked bits in this Register have been cleared.

Sx_INT
Occurrence of Socket x Socket Interrupt
It is set in case that interrupt occurs at the socket x. This bit will be automatically cleared when Sx_IR is cleared to 0x00.

Sn_IR (Socket n Interrupt Register)
The values are cleared by reading this register. Howerver, it takes 2ms to clear register after reading internally, and you may wait about 2ms after reading this register.
Получается, попав в обработчик прерывания я должен на 2 мс запрещать это прерывание?

Второй вопрос - в примерах передачи количество свободного места мониторится периодическим чтением Sx_TX_FSR. И если места не хватает, то висим в цикле постоянного чтения этого регистра пока предыдущий пакет не уйдет и место не освободится. Правильно ли я понял, что по прерываниям эту операцию не сделать никак?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
GL_basik
сообщение Jul 3 2007, 09:53
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 19-07-06
Пользователь №: 18 918



Цитата(Сергей Борщ @ Jun 1 2007, 11:03) *
первый собственно в теме - правильно ли я понял, что после чтения SxIR вывод прерывания будет низким еще 2 мс?Получается, попав в обработчик прерывания я должен на 2 мс запрещать это прерывание?

Совершенно верно. Поэтому удобней и надежней делать прерывание по фронту.
Цитата(Сергей Борщ @ Jun 1 2007, 11:03) *
Второй вопрос - в примерах передачи количество свободного места мониторится периодическим чтением Sx_TX_FSR. И если места не хватает, то висим в цикле постоянного чтения этого регистра пока предыдущий пакет не уйдет и место не освободится. Правильно ли я понял, что по прерываниям эту операцию не сделать никак?

В W3150A+ добавлено прервание SEND_OK, 4-ый бит в регистре Sn_IR
Код
4      SEND_OK           It is set as ‘1’ if send operation is completed.**
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 3 2007, 14:24
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(GL_basik @ Jul 3 2007, 12:53) *
Совершенно верно. Поэтому удобней и надежней делать прерывание по фронту.
По фронту можно пропустить прерывание, возникшее с момента входа до сброса флага прерывания в процессоре. Хотя, кажется будет работать - ведь регистры читаются после того, как флаг сброшен.
Цитата(GL_basik @ Jul 3 2007, 12:53) *
В W3150A+ добавлено прервание SEND_OK, 4-ый бит в регистре Sn_IR
Угу. Я как раз делаю следующую итерацию - перехожу на W5100.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 23:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016