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

W3150, W5100 и многопоточная программа

Заинтересовал вопрос - можно ли между чтением байтов двухбайтного регистра (Sx_RX_RD, например) прочитать другой двухбайтный регистр. Для однопоточной системы это не актуально - в прерываниях читаются только однобайтные регистры статуса. Для многопоточной программы это означает - нужно ли обрамлять критической секцией каждое чтение двухбайтного регистра. В доке этот момент не отражен.  Ответ суппорта:

 

 

 

  Can I, for example, read high byte of S0_RX_RD from one program thread, after that from second thread read high byte of S1_RX_RD, low byte of S1_RX_RD, and finally from first thread read low byte of S0_RX_RD or they have single shadow register for low byte and has to be read in strict sequence?
Dear Sir,

No, the read operation can't be interleaved.

Regards,

Так что будьте внимательны: там лежат грабли. Нужна критическая секция.

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


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

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

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

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

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

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

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

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

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

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