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

jcxz

Свой
  • Постов

    13 830
  • Зарегистрирован

  • Посещение

  • Победитель дней

    38

Весь контент jcxz


  1. Сперва научитесь читать. Именно читать написанное. А не выдумывать. Модель вашего проца я и не угадывал.
  2. Так в чём именно "не угадал"? PS: Кстати - судя по листингу это может быть и Cortex-M. Cortex-M вполне может выполнять такие команды.
  3. "Cortex-M" была опечатка. Судя по листингу - обычный ARM. А в чём именно "не угадал"? Хотите сказать, что команды не соответствуют командам ARM?
  4. Причём тут DSP? Судя по листингу - у ТС обычный ARM в 32-битном режиме.
  5. "Это неправильные пчёлы и наверняка они делают неправильный мёд!" Надо искать правильных пчёл.
  6. Вам бы корону что-ль снять. Или ЧСВ своё поуменьшить. По-крайней мере до тех пор, пока хоть научитесь 10 строк кода без 10 багов в них писать.
  7. Вот не надо врать! Пока вы никакого кода не приводили. Пока только ваши голословные утверждения. В которых вы утверждаете, что компилятор глючит. Не приводя аргументов. Что крайне сомнительно. Так как компилятор ваш - довольно распространённый, и такой серьёзный баг давно должен быть замечен и исправлен. volatile вообще-то запрещает любую оптимизацию обращений к объекту. Про "внешний источник", это уже вы сами придумали.
  8. Это не из области фантастики. Это называется volatile. Стандартно и поддерживается всеми компиляторами. Но ТС упорно не хочет его использовать. Видимо тут какое-то религиозное табу. Харам. Типа неприятия некошерных продуктов. Стоит задача: сделать то же, что делает volatile, но без volatile. задачка.... впрочем - каждый сходит с ума как ему вздумается Вполне возможно. Даже скорее - наверняка в каком-то компиляторе имеется какая-то pragma, аналогичная volatile по эффекту. И можно обойтись только ею. Только вопрос - ЗАЧЕМ??? Если есть стандартный volatile, и он делает всё что нужно. Всякие pragma - это внеязыковые сущности, которые опциональны для поддержки в компиляторах. Vendor-specific. В то время как volatile - часть стандарта языка, обязательная к поддержке компилятором. Сегодня ваша pragma есть, завтра (в новом компиляторе) её уже может и не быть.
  9. нет слов.... Без volatile это не поможет. Так как компилятор вправе их заинлайнить, а потом сделать всё то же самое, что и без функций. То что они глобальные - не панацея. Ведь компилятор вправе делать все оптимизации, которые не нарушают логику программы, описанную алгоритмом. А выделение в отдельную функцию не меняет логику выполнения. +++
  10. Про некие "тэги"? В си для описания регистров периферии главный тэг - volatile. Как уже неоднократно сказано выше. И судя по листингу - у вас его нет. Вы не привели исходного кода и определений регистров периферии. Без которых вам нужно обращаться на форум прорицателей и ясновидящих, а не сюда.
  11. Исходник - видимо секретный. Или автору стыдно его показывать.
  12. Скобки забыты и volatile забыт. А так да - ничего.
  13. Вот от этого: while((etpwmREG2->TBSTS)& 0x0002 == 0); Вы чего ожидаете? Компилятор должен просто выкинуть такую строку (особенно - при отсутствии volatile). Читайте про приоритеты операций в си. Баги почти в каждой строке работы с периферией... мрак... PS: Для вставки кода здесь (в редакторе форума) есть спец.тэг. Обратите внимание как у меня вставлен код.
  14. вижу баг уже в 1-й строке. PS: Выкладывайте текстом. Никто тут не захочет перепечатывать это с экрана. PPS: Также (судя по листингу) - volatile при определении регистров периферии отсутствуют.
  15. Причём тут какие-то личности? "И так и так" быть не должно. Должно быть с volatile обязательно. Но вы похоже не понимаете почему... Что-то очень сомнительно, чтобы проблема была в компиляторе. Показывайте код и листинг. Со всеми определениями естественно.
  16. Тогда виноватых нужно искать явно не в компиляторе, а где-то между стулом и клавиатурой. PS: Странно не знать таких базовых вещей человеку, который вроде как уже много лет пишет код для МК....
  17. "Периферийные регистры" объявлены с volatile? Если нет, то компилятор тут явно не при чём...
  18. Знаете такую песню: "Не стоит прогибаться под изменчивый мир, пусть лучше мир прогнётся под нас!..." ? Так может действительно - не стоит прогибаться?
  19. .....а потом ещё окажется, что нужно графики в реальном времени качать и несколько каналов осц. на ним на лету строить. И чтобы маленький буфер в девайсе не успел переполниться. Даже при втыкании флешки в соседний разъём. Человек вроде про некое своё устройство пишет. Которое он же (или коллеги) разрабатывает. Значит деды могут спать спокойно. Вы ведь не храните свои исходники на перфокартах? А почему? Ведь деды с них начинали...
  20. Да уж... человек совсем зелёный....
  21. Лучше для кого? Вас? Меня? Васи Пупкина из форума? Мира во всём мире? Для каждого "лучше" будет своё. Для меня, например, проще - на VS C++ или Python QT. У других будут свои предпочтения. PS: И если уже говорить про лучше, то это точно не Modbus. Лучше не-Modbus. Что-ж все начинающие так от него прутся-то??
  22. Видимо предполагается, что девайс будет часто виснуть. ЗЫ: Очень неудачное расположение этой кнопки. Почти 100% юзер будет частенько промахиваться, желая нажать соседние кнпки, и цеплять кнопку RESET. Хотя - может в серийных девайсах она будет помечена как "неустанавливаемая"?
  23. Не бойтесь, девушки в технические специальности идут совсем не для того, чтобы потом по ним работать. У них совсем иные цели. Главное - чтобы борщ вкусный варила! А уж с килоомами - муж разберётся.
  24. Не плавно очевидно значит - дискретно. Да, переменные резисторы есть разные. И дело тут не в характеристике (линейной или логарифмической). А в том, что резисторы бывают проволочные и тогда, при переходе ползунка на другой виток, будет скачок сопротивления. Такова конструкционная особенность проволочных переменных резисторов.
  25. Адрес точки вызова SVC указан: "PC:XXXXXXX". Т.е. - это адрес, по которому находится команда SVC (для программных trap()). А для вторичных ловушек (порождённых HF, MPU, ...) это значение, которое было в PC в момент fault-a (не адрес fault-а!).
×
×
  • Создать...