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

aBoomest

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о aBoomest

  • Звание
    Частый гость
  • День рождения 20.09.1983

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Россия
  1. Набор для разработки на ARM

    Да \\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Include\ (Скачано с сайта STM) Есть комментарии об этом? Если так и должно быть, объясните пожалуйста смысл.
  2. Набор для разработки на ARM

    Неожиданно возник вопрос. Организационный, если можно так выразиться. Билиотека для STM32F4 (полное название STM32F4xx_DSP_StdPeriph_Lib_V1.8.0). Почему там есть core_cm3, core_cm4 и core_cm7?
  3. ошибка в stm32f4xx_conf.h с assert_param

    Та же проблема на STM32F429. Инфа в инете есть. Проблема решена, но нихрена (простите) не понятна, ни с т.з. физики происходящего, ни с т.з. организации программы. Хотелось бы сообща разобраться. Конкретика: Мне, например, совершенно не ясно а почему же он там не подключен сразу? Т.е. каждому пользователю библиотек (вероятно 99% пользователей) при создании проекта необходимо редактировать библиотеки от производителя МК. Т.е. во всех файлах библиотеки (_gpio.c, _rcc.c, . . . etc) необходимо вручную прописывать либо #include stm32f4xx_conf.h, либо добавить строчку #define assert_param(expr) ((void)0). И это во ВСЕХ ФАЙЛАХ, поставляемых производителем, где есть эта функция. Более того в stm32f4xx_conf.h имеют место уже свои инклуды. И их не мало. И след-но надо, либо все это протащить в проект (даже если оно вам не нужно), либо опять же, снова, еще раз уже в других местах редактировать файл библиотеки и как-то это обходить. Не исключено, что по цепочке еще что-то вылезет, не проверял. Логически вытекающий вопрос: Совершенно не понятен такой подход: обязательная необходимость для создание проекта редактировать библиотеки от производителей. Это уже в этом случае перестает быть похожим на библиотеку, если оно требует обязательных изменений. Так это такой подход, или я чего-то не понимаю? PS: Вообще, первый раз в жизни с подобным сталкиваюсь. И ведь это не глюк, это типа нормально. Я понимаю (несколько раз сталкивался), когда имеет место глюк, и приходится библиотеку производителя корректировать и вкомпиливать себе уже что-то свое - переделанное. Но в данном же случае получается, что это надо делать всегда, для каждого проекта. В моем понимании, библиотека (тем более написанная не энтузиастами, а самими производителями, это то, что подключается к проекту и используется, но никак не редактируется)
  4. Набор для разработки на ARM

    Доброго дня. Я вероятно в какой-то степени отсталый стал, ибо работал последнее время с платами довольно древними, и такого еще ни разу не видал. Вопрос в следующем. Пришла наконец платка STM32F429I DISC1. Включаю - а там уже прошито что-то. Не знаю операционка там есть или нет в данный момент. Скорее всего да. На экране 6 ярлыков/иконок - Video player - Image Browser - Game - Clock/Calendar - Performance - System info Одним словом - красота, слов нет. При включении, также на PC открылся проводник на созданный виртуальный съемный диск в котором 2 файла: Текстовый файл с содержимым Version: 0221 Build: Nov 19 2015 15:23:07 И файл html, при запуске которого приходит на следующий сайт. Фиг разбери к чему это (вообще огромный вал информации, очень тяжело с ходу начать работать, в отличие например от MSP430. Никакую из фирм не хочу принизить/превысить, просто личные субъективные ощущения). Хочу хочу сказать/спросить - может мне кто-нибудь популярно объяснить, что это все, к чему. Что за ОС. (Может это типа рекламный ход такой?) И вобще есть где-то этот файл, с тем что туда прошито по-умолчанию после покупки? Просто хочется начать что-то делать, естественно поморгать светодиодом и т.д., но убивать эту красоту, если не смогу потом восстановить - пока нет никакого желания.
  5. Функция sprintf

    Как же тогда делать? Давно просили - про "Программа вылетает": не знаю как это может помочь Hard fault HFSR 0E80
  6. Набор для разработки на ARM

    И в комплекте есть и по отдельности тоже есть. Если уж на ЧИП-ДИП в одном месте (заголовок) написано DISC1 а в другом (описание) DISCO, то невольно задашься вопросами. По цене отличий ощущаемых вроде нет. Что там на самом деле - пока не ясно. Поэтому и возник этот вопрос. Тогда еще такой вопрос если Open429Z-D идет с DISCO, то тогда какое название у материнской платы для набора с DISC1? PS: ощущения такие, что на материнку Open429Z-D и то и то "сядет". PSPS: В документации на Open429Z-D говорится только про STM32F429I-DISCO.
  7. Набор для разработки на ARM

    Добрый день. Поискал в интернете отличие STM32F429I-DISC1 и STM32F429I-DISCO. Толковой информации не нашел. Если кто работал, можно вкратце отличия? Также хочу приобрести Open429Z-D mother board. Однако везде оно позиционируется вместе с STM32F429I-DISCO. Вопрос: подойдет ли оно для STM32F429I-DISC1? Причем например тут вобще в заголовке написано DISC1 а в разделе характеристик DISCO.
  8. Функция sprintf

    Стек начинается с адреса кратного 8. При заходе в подпрограмму функции sprintf в регистре адреса число (почему-то) не кратное 8. Почему - фиг его знает. Переменная, в которую я запихиваю строчку при помощи функции sprintf - локальная, т.е. объявлена в той же функции, в которой я вызываю sprintf. Пока пришел к следующему: если переменную объявить глобально, то все работает. Однако объяснения этому всему пока нет. Уважаемые форумчане, есть мысли на этот счет?
  9. Функция sprintf

    1. Операционок нет, для прерываний контекст сохраняется и восстанавливается автоматически. 2. "Стэк не выровнен на 8." - поясните плз что это значит? Стэк должен начинаться с адреса кратного восьми? или все элементы в стэке должны размещаться в нем с "шагом" кратном 8? Или еще как-то?
  10. Функция sprintf

    Добрый день. Работаю на NXP MK66FN2M0xxx18. При этом при использовании функции sprintf для вывода чисел с плавающей запятой, программа на этой функции вылетает. Убираешь %f (т.е. выводишь все кроме float'ов) - все работает. Кто сталкивался с подобным? На сайте IAR нашел следующее https://www.iar.com/support/tech-notes/gene...point-f-on-arm/ Правда думается, что не о том.
  11. Аналог STM32

    Спасибо. Все вики и сайты производителей я просмотрел. Просто одно дело прочитать о том с чем ни разу не сталкивался, а другое дело спросить у тех кто сталкивался. Это крайне разные вещи. Ну и цен на сайте не найти, только спросить у тех кто знает. Всем спасибо, пока поизучаю, согласно узнанному. Такой вопрос: что правильнее - внешний АЦП + АРМ - АРМ со встроенным АЦП - или для внешнего АЦП лучше ставить DSP процессор? Я понимаю, что тут аспектов может быть море в пользу того или иного? Но всеже хотелось бы услышать мнения.
  12. Аналог STM32

    Доброго дня. Нужен совет по отечественным компонентам. В теме спрашивал по поводу выбора микроконтроллера для задачи оцифровки сигнала и его цифровой обработки. Форумчане много всего насоветовали, за что им всем большое спасибо. Пока наилучший кандидат STM32F429ZI (ядро ARM Cortex-M4) и платка для разработки STM32F429I-DISC1. Вопрос заинтересовал следующий? Все мы знаем что кругом говорят об импортозамещении. Так вот, кто знает отечественный аналог STM32F429ZI. Хорошо бы чтобы был и по стоймости примерно аналогичен. Ну также если есть отечественный DSP процессор, сопоставимый по цене - тоже будет интересно знать Также еще интересует вопрос об отечественных микросхемах АЦП (12 - 16) разрядов. Кто работал уже с такими? Можете какие-нибудь посоветовать варианты или вообще в целом комментарий по данному вопросу. PS: вроде как в АО «НИИЭТ» и Меландр есть что-то похожее. Но хотелось бы конкретики, а еще лучше советов тех кто уже работал с отечественными аналогами. Ведь вопрос не только в микросхеме, ее корпусе, цене но еще и наличие средств и ПО разработки. Насколько они уже развиты. Итд итп. Вобщем все аспекты интересны. PSPS: МЦСТ - имеет две архитектуры, спарк и эльбрус. Спарк у них вроде как продается. А эльбрус это вобще что-то свое? кто что знает об этом? Заранее спасибо за любую информацию.
  13. Спасибо. Дельно. Вот такой вопрос, чтобы понять нюанс, по сообщениям номер 15 и номер 23: Какую частоту должны иметь сигналы clk? В моем случае антидребезг с временем 10 мс. (используется частота 100 Гц) А та частота о которой говорю, она же , как я понимаю должна быть <100 Гц (или <=100Гц). По крайней мере, вроде как она не должна быть больше. Т.е. эта частота определяет с какой скоростью PulsePerPeriod_VAR будет увеличиваться/уменьшаться на 1. Т.е. если clk = 1 Гц, то при нажатой кнопке UP один раз в секунду PulsePerPeriod_VAR будет увеличиваться на единицу. Правильные рассуждения? Если да, то что всетаки может помешать сделать clk > 100 Гц?
  14. Спасибо всем за ответы! Все говорят и советуют FSM, например . . . Так вроде нечто подобное и есть, по тактовой частоте 100 Гц я определяю нажатость. Контролирую ее два раза. Т.е. антидребезг на 10 мс. См.пост #5 А далее уже как раз событие нажатия ловлю. Вопрос был еще немного в другом, как по нажатию разных кнопок менять значение одной и той же переменной? Может правильнее будет изменение PulsePerPeriod_VAR засунуть вообще внутрь процесса антидребезга? Или я тут уже перегибаю? ButtonsPolling: process(Clock_100Hz) begin if rising_edge(Clock_100Hz) then if Btn_Left = '1' then Key_01 := '1'; if Key_01 = Key_02 then OnBtnLeft_DownEvent <= '1'; end if; else OnBtnLeft_DownEvent <= '0'; end if; if Btn_Right = '1' then Key_01 := '1'; if Key_01 = Key_02 then OnBtnRight_DownEvent <= '1'; end if; else OnBtnRight_DownEvent <= '0'; end if; Key_02 := Key_01; end process ButtonsPolling;
  15. Не, чего-то и где-то я не допонимаю. :( Запихал все в один процесс, как советовали выше. И, как я понимаю, ошибка в том, что нельзя в двух местах изменять переменную PulsePerPeriod_VAR. Как из ситуации-то выходить? Если по нажатию одной кнопки мне нужно увеличить значение на 1цу, по нажатию другой, соответственно уменьшить. Существует какое-то классическое/общепринятое решение в данном случае? МОжет в этот процесс надо как-то Clock какой-нибудь добавить. OnButtonLeftRight_Down: process(OnBtnLeft_DownEvent,OnBtnRight_DownEvent) -- изменение длительности импульса begin if rising_edge(OnBtnLeft_DownEvent) then if (PulsePerPeriod_VAR > 0) then PulsePerPeriod_VAR := PulsePerPeriod_VAR - 1; end if; elsif rising_edge(OnBtnRight_DownEvent) then if (PulsePerPeriod_VAR < PulsePerPeriod_VAR_MAX) then PulsePerPeriod_VAR := PulsePerPeriod_VAR + 1; end if; end if; end process OnButtonLeftRight_Down;