Jump to content

    
Sign in to follow this  
Сергей Борщ

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

Recommended Posts

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

Share this post


Link to post
Share on other sites
первый собственно в теме - правильно ли я понял, что после чтения 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.**

Share this post


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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this