Jump to content

    

iliasam

Участник
  • Content Count

    11
  • Joined

  • Last visited

Community Reputation

0 Обычный

Recent Profile Visitors

902 profile views
  1. Есть вот такой вот участок кода: wire [R_WIDTH-1:0] summ_result; assign summ_result = part_adder(bus_in[7:0]) + part_adder(bus_in[15:8]) + part_adder(bus_in[23:16]); Он складывает результаты функций part_adder. Этот участок кода нормально синтезируется. Однако полная ширина шины - 128 бит, и вручную вводить все слагаемые не хочется. Хотелось бы реализовать суммирование в цикле. Пытался сделать так: Но при синтезе выдается сообщение "signal is connected to multiple drivers". Ничего лучше в голову пока не приходит и решение такой задачи пока найти не удается. Как лучше реализовать сложение?
  2. Действительно, очень занятная машина. Нашлось описание: http://www.faro.com/russia/faro-laser-tracker По точности должна подойти. Цена, правда, соответствующая: Price Range: $80,000 to $120,000
  3. Про оптико-механический метод. Довольно просто считается требуемая точность для 10м: atan(1mm/10m) = 20''. Теодолит средней точности обеспечивает измерение углов с точностью 3''. Подозреваю, что вышеупомянутые GPS модули по скорости не подойдут.
  4. Для SPL есть пример работы с микрофоном: http://we.easyelectronics.ru/STM32/usb-mik...-discovery.html
  5. Ого, какую тему я пропустил (это мою статью на Хабре про дальномер здесь упоминали). Во всей теме не нашел упоминания влияния амплитуды принятого сигнала на точность измерений. У меня из-за изменения амплитуды сильно менялась фаза сигнала и это вызывало большие проблемы.
  6. Уже видел эти темы, в первой BaN не упоминал никаких проблем с прерыванием конечной точки, а во второй речь идет о EP OUT, которая работает несколько по другому.
  7. Пытаюсь сделать USB-микрофон на базе платы STM32F4-Discovery. Написал соответствующие дескрипторы, в Windows плата нормально видится как микрофон. Хорошо обнаруживается команда SET_INTERFECE при запуске и остановке записи с компьютера. А вот с изохронной конечной точкой проблемы. Не совсем понятно, когда нужно передавать данные (вызывать функцию DCD_EP_Tx()). Во всех виденных примерах такую функцию вызывают из обработчика прерывания изохронной конечной точки. Вот только у меня этот обработчик (usbd_audio_DataIn) не вызывается. Приходилось встречать информацию, что для того, чтобы он начал вызываться, нужно однократно запустить передачу DCD_EP_Tx() из обработчика прерывания SOF. Пробовал сделать так - в результате usbd_audio_DataIn так и не вызывается, но возникают прерывания isochronous IN incomplete (usbd_audio_IN_Incplt). usbd_audio_IN_Incplt начинает вызываться только после вызова DCD_EP_Tx() из обработчика SOF. Частота этих прерываний - 500 Гц, и отключить их не удается. В самом обработчике usbd_audio_IN_Incplt я выполняю очистку FIFO буфера - DCD_EP_Flush() и все. Сброс флагов прерывания, насколько я понял, происходит в самой библиотеке USB. При этом, если установить breakpoint на вызов DCD_EP_Tx, то после остановки программы на нем и ее запуска видно, что прерывание usbd_audio_DataIn несколько раз все же вызывается, но потом происходит прерывание usbd_audio_IN_Incplt. Пробовал предавать данные в обработчике прерывания SOF (только когда пришла команда на выбор "рабочего" интерфейса). В данном случае прерывания usbd_audio_IN_Incplt появляются только после остановки записи (когда обработчик SOF перестает вызывать передачу DCD_EP_Tx()). После последующем запуске записи прерывания usbd_audio_IN_Incplt исчезают, и при остановке вновь появляются. Несмотря на то, что функция передачи DCD_EP_Tx() вызывается с частотой SOF, никакие данные на компьютер не приходят - это видно в анализаторе. Возникают следующие вопросы: Почему не вызывается прерывание конечной точки usbd_audio_DataIn? Из-за чего возникают прерывания isochronous IN incomplete - usbd_audio_IN_Incplt, почему они присутствуют даже после того, как компьютер прекратил запись? Почему на компьютер не приходят никакие данные, хотя DCD_EP_Tx() вызывается как минимум один раз при запуске записи?
  8. Строки в IAR

    Действительно, сначала C++ был отключен. После включения ругается на namespace вот так: Error[Pe725]: name must be a namespace name
  9. Строки в IAR

    Именно эту ссылку я уже и находил. Вот только IAR ругается и на using namespace std; И на string str ("This is an example phrase."); string::iterator it; Error[Pe020]: identifier "string" is undefined ну и далее тоже кучу ошибок. Потому то я и спрашивал, как работать именно с этими функциями в IAR. Сразу говорю, что в С++ я практически не разбираюсь.
  10. Строки в IAR

    Подскажите пожалуйста, как в IAR для STM8 работать со строками. В частности, необходимо удалить часть символов из строки или вставить одну строку в другую. В документации описываются функции string::erase и string::erase, использующие библиотеку dlib ec++, но как работать с этими функциями - совершенно непонятно. Примеров кода для IAR мне найти не удалось.