ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
1278841 Топик полностью
VVB_ (25.01.2023 16:12, просмотров: 11) ответил Dingo на NUC970 BSP. Непонятная ситуация с переменной структуры, которая обновляется в прерывании. Обрабатываю пакеты сети, которым надо отметку времени. Столкнулся с ситуацией, когда время "улетает в прошлое". Раскопки привели к тому, что в прерывании, которое считает время, не обновляется значение регистра сравнения. Основное предположение сейчас - прерывание таймера имеет меньший приоритет, чем обработка сетевого пакета. Работа с сетью взята из примера, в нижний уровень сам не лез
Работа с одной и той же периферией в разных контекстах выполнения кода -- плохая идея. 

В этой ветке и ранее https://caxapa.ru/1261313.html советовали двойное чтение регистра таймера, на мой взгляд, самый простой способ решения проблемы является самым лучшим.

Какое разрешение таймера допустимо для приложения? Если 1 мс и более, то перевести всю работу с таймерами в прерывании, и завести глобальную переменную-счётчик по 1 мс нужной разрядности. Проблема исчезнет как класс при атомарном доступе.