Перейти к содержанию
    

W3150A - два вопроса про прерывания

первый собственно в теме - правильно ли я понял, что после чтения 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. И если места не хватает, то висим в цикле постоянного чтения этого регистра пока предыдущий пакет не уйдет и место не освободится. Правильно ли я понял, что по прерываниям эту операцию не сделать никак?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

первый собственно в теме - правильно ли я понял, что после чтения SxIR вывод прерывания будет низким еще 2 мс?Получается, попав в обработчик прерывания я должен на 2 мс запрещать это прерывание?

Совершенно верно. Поэтому удобней и надежней делать прерывание по фронту.

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

В W3150A+ добавлено прервание SEND_OK, 4-ый бит в регистре Sn_IR

4      SEND_OK           It is set as ‘1’ if send operation is completed.**

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Совершенно верно. Поэтому удобней и надежней делать прерывание по фронту.
По фронту можно пропустить прерывание, возникшее с момента входа до сброса флага прерывания в процессоре. Хотя, кажется будет работать - ведь регистры читаются после того, как флаг сброшен.

В W3150A+ добавлено прервание SEND_OK, 4-ый бит в регистре Sn_IR
Угу. Я как раз делаю следующую итерацию - перехожу на W5100.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...