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

Flexz

Свой
  • Постов

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

  • Посещение

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


  1. "модернизированной" - это в смысле просто допиленной/оптимизированной под себя, или косяки какие-то были? PS а 20+МБ это гуд)
  2. Скорость High Speed USB на STM32F2/F4

    Кто уже реализовывал, каких скоростей удалось добиться? Зависит ли производительность от микросхемы физического уровня?
  3. Как именно не работает-то? Пин не дрыгается? Уарт не уартит? По коду - переинициализация, включение-выключение UART - лишние. Или хотя бы сначала перенастраивайте пин, потом включайте UART. Иначе, в теории, можно глитч словить: пин переключается на UART, а тот выключен - имеем низкий уровень на выходе, UART включается - уровень становится высокми. PS процессор указывайте точнее, у вас видимо stm32f1xx? Просто в stm32f2, f4, l1 - настройка пинов выполняется по другому.
  4. Столкнулся с аналогичным косяком. Только мне нужно запустить АЦП от внешнего импульса. Рассчитывал запустить канал таймера в режиме Input Capture (нужно попутно фиксировать частоту следования импульсов) и от того же события толкнуть АЦП. Первые сомнения возникли при виде битов EXTEN - выбор фронта для запуска АЦП от события таймера. При чем тут выбор фронта, когда событие (факт захвата счетчика, либо совпадения счетчика и CCR) должно быть единичным импульсом? Дальнейшие раскопки показали, что АЦП запускается в режиме Output Compare, при чем должен быть включен выход (установлен бит CCxE в CCER). Из чего следует неутешительный вывод: документация нагло врет, а описание битов EXTSEL в регистре ADC_CR2 следует читать не как "Timer x CCy event", а как "Timer x OCy output". PS Буду безмерно счастлив если кто-то укажет в чем я не прав :rolleyes:
  5. Акселерометр, как ни странно, нужно выбирать исходя из ожидаемых перегрузок, в которых придется работать. Если на столе стоять - 2g достаточно. А то что сейчас называют гироскопами на самом деле поголовно - датчики угловой скорости, отсюда и величины - градусы в секунду.
  6. Если вопрос только в работе тестировщика, то почему не проверять одновременно несколько плат? Пока на одной тесты бегают он другую готовит и так по кругу.
  7. DAC + DMA в STM32F2xx

    По неработающей периферии - посмотрите раздел "2.1 System architecture". У DMA1 не упоминается периферийная шина и на схеме он не соединен с AHB-периферией, вероятно, причина в этом. А фифо как настраиваете? там же отдельно есть настроки Memory burst и Peripheral burst.
  8. В исходном виду у вас прерывание вообще не происходит до полного окончания DMA трансфера. Вы измеряете интервал между импульсами на PB6, а не разность фаз, естественно результат неверен. Впрочем если вы предпочитаете ржать над советами - копайтесь сами. Успехов.
  9. Tim_Capture_Init() запускает DMA и ждет его окончания ДО настройки прерывания от внешней линии в EXTI_init() Просто поменяйте местами их вызовы .
  10. Оптимизация включена? Если да, то выключите. Или сделайте переменную _val - volatile, данные в нее записанные не используются и компилятор может ее выкинуть, ровно как и чтение DR.
  11. Главная проблема тут имхо - 32 разряда, на LPC17xx порты хоть и 32битные, но целых нету. Если б 16, еще можно попробовать успеть, но только на STM32F4 (168МГц), либо новые LPC43xx (204МГц), у этих порты 16битные. Вообще, конечно, для ПЛИСки задача.
  12. Вот же заносит вас :) Пример-то когда будете приводить? Или опять стрелки на макросы кинете, которые в обоих языках идентичны.
  13. Ну это понятно. Подход-то от этого не меняется.
  14. Тактирование включаете на порт А, а работаете с портом Б?
  15. Ну во встроенных приложениях выделение-освобождение ресурсов лучше сводить к минимуму, ИМХО. Если же без ресурсов "никак", это можно сделать на уровне конструктор-деструктор - объект создается на стеке (ресурс выделяется в конструкторе), разрушается при выходе из области видимости (ресурс освобождается). Либо try-catch-finally. На мой взгляд, так более наглядно, чем делать clean-up в конце функции.
  16. А кто говорит что макросы в С++ вообще не нужны? Что я пропустил? Условная компиляция там везде, это и есть основное назначение макросов в С++. Где? Когда? Я опять что-то пропустил? Ну вот опять.. напротив, макросы в С++ нужны, с этим никто не спорит. Просто там где в С использовались макросы, в С++ взамен появились более надежные, гибкие и удобные конструкции, во многих местах, но не везде - условную компиляцию по другому не реализуешь, да и громоздкие конструкции на базе шаблонов иногда удобно засунуть в макрос просто ради удобства чтения кода. С последним тезисом тоже спорить бессмысленно, каждому свое :)
  17. Если не ошибаюсь (давненько уже не смотрел чего нового в буст включили), boost::preprocessor это одна едиственная библиотека в бусте полностью написанная на базе макросов. Остальные основаны на число плюсовых фишках. Так что вы лишь подтверждаете чужие аргументы - 99% возможностей макросов покрываются новыми возможностями С++ (1% как раз - preprocessor). В обратную же сторону увы это не работает, попробуйте boost::spirit на макросы перевести :) PS а за вами все еще пример где С++ уступает С.
  18. Да нормально вполне, если не ошибаюсь, например, в OpenCV именно такой подход используют. Как вариант (уже выше предложили похожее) вместо goto crash_label; писать return crash_handler(чего-нибудь); ИМХО симпатичнее, чем в конце функции писать, да и религиозная ненависть к goto удовлетворена :) Это в embedded. На ББ предпочитаю C# и, естественно, исключения, но это уже совсееем другой разговор.
  19. эм.. не совсем так. Коммент мозговыносной. Просто нельзя одновременно включать линии периферии использующие данные ножки.
  20. Включите и увидите :) Вообще размещению альтернативных функций посвящен солидный раздел ерраты F1. Вот в F2 переключение функций наконец-то сделано по-человечески, на каждую ножку есть регистр выбирающий какую именно функцию выводить.
  21. Видимо, он имел ввиду единый, общий для разных компиляторов name mangling. Он же не стандартизован и все компиляторы делают его по своему, хотя за последний стандарт языка не знаю.
  22. Может приведете конкретные примеры этих многих случаев? Было бы очень интересно почитать.
  23. always@(posedge Clk or posedge Rst) Касательно самого первого примера - а такие вложенные always-ы вообще допустимы?
  24. В документации черным по белому написано: Вот сбрасывается опоздавшее прерывание. PS а зачем вообще GF трогаете? у вас же прерывание по нему не включено.
  25. Вам нужно сделать переход по адресу без модификации стека? Если же на стек наплевать, то лучше сделать именно через указатель на фукнцию.
×
×
  • Создать...