-
Постов
5 333 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Alex стал победителем дня 3 декабря 2017
Alex имел наиболее популярный контент!
Информация о Alex
- День рождения 01.01.1981
Контакты
-
ICQ
461500721
Информация
-
Пол
Мужчина
-
Интересы
Микроконтроллеры, программирование.
-
Город
Планета Земля
Электроника
-
Стаж в электронике
10-20 лет
-
Сфера радиоэлектроники
Микроконтроллеры
-
Оборудование
Нет у меня ничего, я нищий...
Посетители профиля
201 941 просмотр профиля
Достижения Alex
-
Разделом явно ошиблись. Или Вы платите за поиск ?
-
Да. Сравнение идёт в несколько этапов, побайтово. По этому, как значение становится 768 (это 0x0300), и сравнивается старший байт, мы получаем истинное условие. Это в двух словах. Более детально - нужно смотреть дизасм и разбираться. volatile не обязывает компилятор делать атомарную операцию. Её может реализовать только программист, учитывая конкретную ситуацию и всякие там нюансы железа. volatile говорит компилятору только лишь одно - пожалуйста, не трогай эту переменную (не вырезай из программы её существование и обработку), т.к. я сам слежу за ней. Оптимизатор, просматривая часть кода, не находя связей с какой-то переменной, может её обработку вырезать к чертям собачим. И будет прав. По этому, при доступе к переменной из разных потоков, нужно оптимизатору связать руки, сказав, что ты сам - хозяин существования этой переменной. А как сказать это ? - правильно, добавить квалификтор volatile.
- 8 920 ответов
-
2
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
Это было в адрес слов о глючности компилятора ) Как правильно сделать - Вам уже написали. Попытайтесь понять, отчего возникают проблемы. Почитайте про атомарный доступ к переменным.
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
Главное - понять, почему он работает, а предыдущий - нет. Это важно !
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
@Demonrostov , пишите такой код : di(); // Запретить прерывания uint16_t u16_temp = timer_16; ei(); // Разрешить прерывания if(u16_temp > 1000) { Удивляетесь, что он работает. Пытаетесь понять почему. Понимаете. Радуетесь. Жесть ) И Вы ещё что-то плохое хотите сказать о разработчиках компилятора ? Это - не рабочий варик, а костыль. Который, как уже сказали выше, так-же будет глючить, но реже.
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
Такое ощущение, что да ) Вам выше уже намекнули про прерывания и атомарность. Копайте в этом направлении. Надеюсь, Вы в состоянии догадаться сравнить 2 числа (1010 и 768) в hex-представлении понять в чём проблема ? )
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
Да. Это означает, что полностью отключена оптимизация. Но не означает, что компилятор делает эту операцию атомарной. RMW, по определению, не может быть атомарной Реализация атомрности - забота программиста, а не компилятора. Только программист адекватно может оценить ситуацию. В любой нормальной ОС, например, имеются инструменты (средства синхронизации) для атомарного доступа к объектам.
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
Зачем мне пробовать элементарное действие ? Ни один компилятор не позволит себе заглючить в такой простой конструкции. Что, кстати, не скажешь о Протезе. Подозреваю, Вы понимаете о чём выше шла речь, но упорно продолжаете тут нас троллить, показывая на скринах какую-то ересть. Небольшая поправочка - программист должен это делать, а не компилятор
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
Вам, как бы, намекнули, что по Вашему скрину невозможно понять, в какой момент выполнения программы Вы смотрите на это значение. Думается, что Вы и сами не знаете этот момент. ПыСы: Мало вероятно, что компилятор глючит на таком элементарном выражении. Скорее, глюк где-то в алгоритме, заложенном программистом.
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
Прямая ссылка - https://ww1.microchip.com/downloads/en/DeviceDoc/MPLABX-v5.10-windows-installer.exe
- 8 920 ответов
-
- Микроконтроллер
- МК
-
(и ещё 2 )
C тегом:
-
На сколько я помню, нужно использовать секцию UDATA. Погуглите "MPASM".
-
По Протеусу есть отдельная тема , задавайте по нему вопросы там.
-
А Вы почитайте правила, тогда ответите сами на свой вопрос. И что значит ботоводство по-вашему ?