|
Как обойти глюки оптимизации, или мои глюки ... |
|
|
|
 |
Ответов
|
Dec 22 2008, 13:54
|
Местный
  
Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112

|
Это означает, что если переменная, допустим, типа int, и она проверяется в основной программе, в момент проверки, после сравнения, допустим старшего байта происходит прерываие таймера и изменяет эту переменную. В результате в операции сравнения сравнивается старший байт от старого значения, а младший - от нового. Вот такой получается косячок-с. Для того, чтоб такого не происходило, на время обращения к этой переменной прерывания надо запретить, а потом опять восстановить. (Или одно, конкретное прерывание, которое обновляет переменную).
Сообщение отредактировал forever failure - Dec 22 2008, 13:54
|
|
|
|
Сообщений в этой теме
Serg_el Как обойти глюки оптимизации Dec 22 2008, 13:25 bloodden При объявлении переменной напишите volatile int ti... Dec 22 2008, 13:32 forever failure volatile int timer;
А ещё обеспечивать атомарное о... Dec 22 2008, 13:32 Dog Pawlowa Цитата(forever failure @ Dec 22 2008, 17... Dec 22 2008, 13:41 Serg_el А что такое атомарное и причем здесь прерывания? Dec 22 2008, 13:46 scifi Цитата(Serg_el @ Dec 22 2008, 16:46) А чт... Dec 22 2008, 13:57   Сергей Борщ Цитата(sonycman @ Dec 25 2008, 17:13) Мож... Dec 25 2008, 15:32 Serg_el Спасибо. Буду пробовать Dec 22 2008, 13:58 Serg_el Вот еще один прикол. Прописываю константу limit по... Dec 23 2008, 15:19 HARMHARM Цитата(Serg_el @ Dec 23 2008, 17:19) Вот ... Dec 23 2008, 15:42 rezident Эта тема напоминает торный путь из граблей, по кот... Dec 23 2008, 16:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|