jcxz
Свой-
Постов
13 830 -
Зарегистрирован
-
Посещение
-
Победитель дней
38
Весь контент jcxz
-
Сперва научитесь читать. Именно читать написанное. А не выдумывать. Модель вашего проца я и не угадывал.
-
Так в чём именно "не угадал"? PS: Кстати - судя по листингу это может быть и Cortex-M. Cortex-M вполне может выполнять такие команды.
-
"Cortex-M" была опечатка. Судя по листингу - обычный ARM. А в чём именно "не угадал"? Хотите сказать, что команды не соответствуют командам ARM?
-
Причём тут DSP? Судя по листингу - у ТС обычный ARM в 32-битном режиме.
-
"Это неправильные пчёлы и наверняка они делают неправильный мёд!" Надо искать правильных пчёл.
-
Вам бы корону что-ль снять. Или ЧСВ своё поуменьшить. По-крайней мере до тех пор, пока хоть научитесь 10 строк кода без 10 багов в них писать.
-
Вот не надо врать! Пока вы никакого кода не приводили. Пока только ваши голословные утверждения. В которых вы утверждаете, что компилятор глючит. Не приводя аргументов. Что крайне сомнительно. Так как компилятор ваш - довольно распространённый, и такой серьёзный баг давно должен быть замечен и исправлен. volatile вообще-то запрещает любую оптимизацию обращений к объекту. Про "внешний источник", это уже вы сами придумали.
-
Это не из области фантастики. Это называется volatile. Стандартно и поддерживается всеми компиляторами. Но ТС упорно не хочет его использовать. Видимо тут какое-то религиозное табу. Харам. Типа неприятия некошерных продуктов. Стоит задача: сделать то же, что делает volatile, но без volatile. задачка.... впрочем - каждый сходит с ума как ему вздумается Вполне возможно. Даже скорее - наверняка в каком-то компиляторе имеется какая-то pragma, аналогичная volatile по эффекту. И можно обойтись только ею. Только вопрос - ЗАЧЕМ??? Если есть стандартный volatile, и он делает всё что нужно. Всякие pragma - это внеязыковые сущности, которые опциональны для поддержки в компиляторах. Vendor-specific. В то время как volatile - часть стандарта языка, обязательная к поддержке компилятором. Сегодня ваша pragma есть, завтра (в новом компиляторе) её уже может и не быть.
-
нет слов.... Без volatile это не поможет. Так как компилятор вправе их заинлайнить, а потом сделать всё то же самое, что и без функций. То что они глобальные - не панацея. Ведь компилятор вправе делать все оптимизации, которые не нарушают логику программы, описанную алгоритмом. А выделение в отдельную функцию не меняет логику выполнения. +++
-
Про некие "тэги"? В си для описания регистров периферии главный тэг - volatile. Как уже неоднократно сказано выше. И судя по листингу - у вас его нет. Вы не привели исходного кода и определений регистров периферии. Без которых вам нужно обращаться на форум прорицателей и ясновидящих, а не сюда.
-
Исходник - видимо секретный. Или автору стыдно его показывать.
-
Скобки забыты и volatile забыт. А так да - ничего.
-
Вот от этого: while((etpwmREG2->TBSTS)& 0x0002 == 0); Вы чего ожидаете? Компилятор должен просто выкинуть такую строку (особенно - при отсутствии volatile). Читайте про приоритеты операций в си. Баги почти в каждой строке работы с периферией... мрак... PS: Для вставки кода здесь (в редакторе форума) есть спец.тэг. Обратите внимание как у меня вставлен код.
-
вижу баг уже в 1-й строке. PS: Выкладывайте текстом. Никто тут не захочет перепечатывать это с экрана. PPS: Также (судя по листингу) - volatile при определении регистров периферии отсутствуют.
-
Причём тут какие-то личности? "И так и так" быть не должно. Должно быть с volatile обязательно. Но вы похоже не понимаете почему... Что-то очень сомнительно, чтобы проблема была в компиляторе. Показывайте код и листинг. Со всеми определениями естественно.
-
Тогда виноватых нужно искать явно не в компиляторе, а где-то между стулом и клавиатурой. PS: Странно не знать таких базовых вещей человеку, который вроде как уже много лет пишет код для МК....
-
"Периферийные регистры" объявлены с volatile? Если нет, то компилятор тут явно не при чём...
-
Плавный переход C -> C++ под МК
jcxz ответил Arlleex тема в Программирование
Знаете такую песню: "Не стоит прогибаться под изменчивый мир, пусть лучше мир прогнётся под нас!..." ? Так может действительно - не стоит прогибаться? -
Плавный переход C -> C++ под МК
jcxz ответил Arlleex тема в Программирование
.....а потом ещё окажется, что нужно графики в реальном времени качать и несколько каналов осц. на ним на лету строить. И чтобы маленький буфер в девайсе не успел переполниться. Даже при втыкании флешки в соседний разъём. Человек вроде про некое своё устройство пишет. Которое он же (или коллеги) разрабатывает. Значит деды могут спать спокойно. Вы ведь не храните свои исходники на перфокартах? А почему? Ведь деды с них начинали... -
Плавный переход C -> C++ под МК
jcxz ответил Arlleex тема в Программирование
Да уж... человек совсем зелёный.... -
Плавный переход C -> C++ под МК
jcxz ответил Arlleex тема в Программирование
Лучше для кого? Вас? Меня? Васи Пупкина из форума? Мира во всём мире? Для каждого "лучше" будет своё. Для меня, например, проще - на VS C++ или Python QT. У других будут свои предпочтения. PS: И если уже говорить про лучше, то это точно не Modbus. Лучше не-Modbus. Что-ж все начинающие так от него прутся-то?? -
Видимо предполагается, что девайс будет часто виснуть. ЗЫ: Очень неудачное расположение этой кнопки. Почти 100% юзер будет частенько промахиваться, желая нажать соседние кнпки, и цеплять кнопку RESET. Хотя - может в серийных девайсах она будет помечена как "неустанавливаемая"?
-
электроника Помогите решить две задачи, пожалуйста.
jcxz ответил Lera1382 тема в Решение задач
Не бойтесь, девушки в технические специальности идут совсем не для того, чтобы потом по ним работать. У них совсем иные цели. Главное - чтобы борщ вкусный варила! А уж с килоомами - муж разберётся. -
Умощнение выхода ОУ
jcxz ответил koluna тема в Схемотехника
Не плавно очевидно значит - дискретно. Да, переменные резисторы есть разные. И дело тут не в характеристике (линейной или логарифмической). А в том, что резисторы бывают проволочные и тогда, при переходе ползунка на другой виток, будет скачок сопротивления. Такова конструкционная особенность проволочных переменных резисторов. -
Адрес точки вызова SVC указан: "PC:XXXXXXX". Т.е. - это адрес, по которому находится команда SVC (для программных trap()). А для вторичных ловушек (порождённых HF, MPU, ...) это значение, которое было в PC в момент fault-a (не адрес fault-а!).