![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
Flexz
Свой-
Постов
252 -
Зарегистрирован
-
Посещение
Весь контент Flexz
-
"модернизированной" - это в смысле просто допиленной/оптимизированной под себя, или косяки какие-то были? PS а 20+МБ это гуд)
-
Кто уже реализовывал, каких скоростей удалось добиться? Зависит ли производительность от микросхемы физического уровня?
-
проблема с UART в STM32
Flexz ответил man1 тема в ARM, 32bit
Как именно не работает-то? Пин не дрыгается? Уарт не уартит? По коду - переинициализация, включение-выключение UART - лишние. Или хотя бы сначала перенастраивайте пин, потом включайте UART. Иначе, в теории, можно глитч словить: пин переключается на UART, а тот выключен - имеем низкий уровень на выходе, UART включается - уровень становится высокми. PS процессор указывайте точнее, у вас видимо stm32f1xx? Просто в stm32f2, f4, l1 - настройка пинов выполняется по другому. -
Столкнулся с аналогичным косяком. Только мне нужно запустить АЦП от внешнего импульса. Рассчитывал запустить канал таймера в режиме Input Capture (нужно попутно фиксировать частоту следования импульсов) и от того же события толкнуть АЦП. Первые сомнения возникли при виде битов EXTEN - выбор фронта для запуска АЦП от события таймера. При чем тут выбор фронта, когда событие (факт захвата счетчика, либо совпадения счетчика и CCR) должно быть единичным импульсом? Дальнейшие раскопки показали, что АЦП запускается в режиме Output Compare, при чем должен быть включен выход (установлен бит CCxE в CCER). Из чего следует неутешительный вывод: документация нагло врет, а описание битов EXTSEL в регистре ADC_CR2 следует читать не как "Timer x CCy event", а как "Timer x OCy output". PS Буду безмерно счастлив если кто-то укажет в чем я не прав :rolleyes:
-
Диапазоны гироскопов и акселерометров
Flexz ответил theBMV тема в В помощь начинающему
Акселерометр, как ни странно, нужно выбирать исходя из ожидаемых перегрузок, в которых придется работать. Если на столе стоять - 2g достаточно. А то что сейчас называют гироскопами на самом деле поголовно - датчики угловой скорости, отсюда и величины - градусы в секунду. -
Быстрый алгоритм CRC
Flexz ответил zombi тема в Программирование
Если вопрос только в работе тестировщика, то почему не проверять одновременно несколько плат? Пока на одной тесты бегают он другую готовит и так по кругу. -
По неработающей периферии - посмотрите раздел "2.1 System architecture". У DMA1 не упоминается периферийная шина и на схеме он не соединен с AHB-периферией, вероятно, причина в этом. А фифо как настраиваете? там же отдельно есть настроки Memory burst и Peripheral burst.
-
DMA и таймер в режиме захвата
Flexz ответил LEVENVORF тема в ARM, 32bit
В исходном виду у вас прерывание вообще не происходит до полного окончания DMA трансфера. Вы измеряете интервал между импульсами на PB6, а не разность фаз, естественно результат неверен. Впрочем если вы предпочитаете ржать над советами - копайтесь сами. Успехов. -
DMA и таймер в режиме захвата
Flexz ответил LEVENVORF тема в ARM, 32bit
Tim_Capture_Init() запускает DMA и ждет его окончания ДО настройки прерывания от внешней линии в EXTI_init() Просто поменяйте местами их вызовы . -
STM32 UART траблы новичка
Flexz ответил french тема в ARM, 32bit
Оптимизация включена? Если да, то выключите. Или сделайте переменную _val - volatile, данные в нее записанные не используются и компилятор может ее выкинуть, ровно как и чтение DR. -
Главная проблема тут имхо - 32 разряда, на LPC17xx порты хоть и 32битные, но целых нету. Если б 16, еще можно попробовать успеть, но только на STM32F4 (168МГц), либо новые LPC43xx (204МГц), у этих порты 16битные. Вообще, конечно, для ПЛИСки задача.
-
Вопрос по С++
Flexz ответил Артём__ тема в Программирование
Вот же заносит вас :) Пример-то когда будете приводить? Или опять стрелки на макросы кинете, которые в обоих языках идентичны. -
Ошибки функций... и последствия
Flexz ответил toweroff тема в Программирование
Ну это понятно. Подход-то от этого не меняется. -
USART stm32f2xx по новой ...StdPeriph_Driver
Flexz ответил acvarif тема в ARM, 32bit
Тактирование включаете на порт А, а работаете с портом Б? -
Ошибки функций... и последствия
Flexz ответил toweroff тема в Программирование
Ну во встроенных приложениях выделение-освобождение ресурсов лучше сводить к минимуму, ИМХО. Если же без ресурсов "никак", это можно сделать на уровне конструктор-деструктор - объект создается на стеке (ресурс выделяется в конструкторе), разрушается при выходе из области видимости (ресурс освобождается). Либо try-catch-finally. На мой взгляд, так более наглядно, чем делать clean-up в конце функции. -
Вопрос по С++
Flexz ответил Артём__ тема в Программирование
А кто говорит что макросы в С++ вообще не нужны? Что я пропустил? Условная компиляция там везде, это и есть основное назначение макросов в С++. Где? Когда? Я опять что-то пропустил? Ну вот опять.. напротив, макросы в С++ нужны, с этим никто не спорит. Просто там где в С использовались макросы, в С++ взамен появились более надежные, гибкие и удобные конструкции, во многих местах, но не везде - условную компиляцию по другому не реализуешь, да и громоздкие конструкции на базе шаблонов иногда удобно засунуть в макрос просто ради удобства чтения кода. С последним тезисом тоже спорить бессмысленно, каждому свое :) -
Вопрос по С++
Flexz ответил Артём__ тема в Программирование
Если не ошибаюсь (давненько уже не смотрел чего нового в буст включили), boost::preprocessor это одна едиственная библиотека в бусте полностью написанная на базе макросов. Остальные основаны на число плюсовых фишках. Так что вы лишь подтверждаете чужие аргументы - 99% возможностей макросов покрываются новыми возможностями С++ (1% как раз - preprocessor). В обратную же сторону увы это не работает, попробуйте boost::spirit на макросы перевести :) PS а за вами все еще пример где С++ уступает С. -
Ошибки функций... и последствия
Flexz ответил toweroff тема в Программирование
Да нормально вполне, если не ошибаюсь, например, в OpenCV именно такой подход используют. Как вариант (уже выше предложили похожее) вместо goto crash_label; писать return crash_handler(чего-нибудь); ИМХО симпатичнее, чем в конце функции писать, да и религиозная ненависть к goto удовлетворена :) Это в embedded. На ББ предпочитаю C# и, естественно, исключения, но это уже совсееем другой разговор. -
эм.. не совсем так. Коммент мозговыносной. Просто нельзя одновременно включать линии периферии использующие данные ножки.
-
Включите и увидите :) Вообще размещению альтернативных функций посвящен солидный раздел ерраты F1. Вот в F2 переключение функций наконец-то сделано по-человечески, на каждую ножку есть регистр выбирающий какую именно функцию выводить.
-
Вопрос по С++
Flexz ответил Артём__ тема в Программирование
Видимо, он имел ввиду единый, общий для разных компиляторов name mangling. Он же не стандартизован и все компиляторы делают его по своему, хотя за последний стандарт языка не знаю. -
Вопрос по С++
Flexz ответил Артём__ тема в Программирование
Может приведете конкретные примеры этих многих случаев? Было бы очень интересно почитать. -
Не понимаю источник проблемы на Verilog
Flexz ответил Sirko тема в В помощь начинающему
always@(posedge Clk or posedge Rst) Касательно самого первого примера - а такие вложенные always-ы вообще допустимы? -
В документации черным по белому написано: Вот сбрасывается опоздавшее прерывание. PS а зачем вообще GF трогаете? у вас же прерывание по нему не включено.
-
CortexM3, запись данных в Program Counter.
Flexz ответил Danis тема в Программирование
Вам нужно сделать переход по адресу без модификации стека? Если же на стек наплевать, то лучше сделать именно через указатель на фукнцию.