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

    

Timmy

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Знающий
  • День рождения 01.02.1971

Контакты

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

Информация

  • Город
    Санкт-Петербург
  1. Всё так. Сигналы можно использовать, но только там, где нужно. В данном случае, например, для SCL и SDA. А вот MyByte должен быть переменной. Кстати, переменные занимают меньше памяти и быстрее симулируются. Я тоже иногда использовал wait for 0, не всё можно удобно сделать на переменных.
  2. В качестве параметров вы используете сигналы, в которые перед вызовом процедуры выполнено отложенное присваивание. Первый по времени(старший) бит уходит ещё до того, как теневое значение сигнала синхронизировалось с видимым. Это можно пофиксить с помощью wait for 0s, тогда на временной диаграмме не будет видимых отличий, а лучше стараться вообще не использовать сигналы в тестбенчах без особой надобности, а если использовать, то без отложенных присваиваний.
  3. Для косвенной передачи списков параметров в произвольную команду нужно использовать стандартную команду tcl eval: set arg "-2008 version.vhd" eval vcom $arg И никаких извращений:).
  4. Интересно, зачем тут ПЛИС, если можно использовать простой микроконтроллер с генерацией импульсов таймером?
  5. Можно попробовать атрибут KEEP поставить на A_Mux.
  6. Например, тактировать конфигурирование по SPI внешнего генератора частоты, который потом выдаст на FPGA основной тактовый сигнал.
  7. А зачем голову ломать, добавьте в run/restart commands команду вроде set $sp = *(int*)0x00000000 и наслаждайтесь.
  8. STM32F373 ADC 12 BIT калибровка

    Цитата(ViKo @ May 10 2018, 10:15) Сказано, что АЦП должен пробыть в выключенном состоянии, как минимум, два такта. Но не сказано, что уже надо включить. Хотя, похоже, надо. Да, здесь наверное более уместно было бы Past Perfect, надо у лингвистов спросить.
  9. STM32F373 ADC 12 BIT калибровка

    Цитата(Alex_Golubev @ May 9 2018, 06:27) Тогда не ясно почему в доки сказано: Note: It is recommended to perform a calibration after each power-up. Before starting a calibration the ADC must have been in power-off state (ADON bit = ‘0’) for at least two ADC clock cycles. И да при ADON = 1 все работает. В доке всё чётко сказано. have been - это форма глагола Present Perfect, которая обозначает действие, полностью завершившееся к настоящему времени, то есть во время калибровки АЦП уже не должен быть в power-off.
  10. Цитата(Jenya7 @ Apr 24 2018, 09:10) Может кто то встречал реализацию управление мотором на FPGA? А смысл? Там же сложные алгоритмы, по-любому потребуется процессор.
  11. Не работает SPI на STM32F4Discivery

    Обязательно надо управлять ещё и сигналом Slave Select.
  12. Таймер для генерации импульсов

    Если не нужен дедтайм между каналами, то можно решить задачу на одном таймере и DMA. Первый сигнал представляется в виде двух последовательных широтно модулированных импульсов с различным периодом и скважностью. Второй сигнал аналогично, но в противоположной полярности, и с нулевой скважностью в одном такте из двух. Соотвественно настраиваем ШИМ режимы, и загрузку теневых ARR, CCR1, CCR2 через DMA burst при переполнении счётчика. DMA в кольцевом режиме на 6 слов по 16 бит.
  13. Странное поведение АЦП stm32L476

    Цитата(Pavlik @ Jan 19 2018, 16:02) Оказалось действительно "что угодно", проблема связана не с кодом. Оказалось, что в момент взятия выборки опорное напряжение просаживается примерно на 200 мВ. Странно такое поведение stm в работе с Ref3030 (25mA) когда по линии Vref декларируется потребление 400uA. Еще stm не любит когда аналоговая земля двигается относительно цифровой (при стабильных питающих VDD, VDDA). Конечно он такого любить и не должен, так как цифра и аналог в недрах его соединяются, но "удача - награда за смелость .." была. Следовательно никаких соединяющих землю дросселей нам не позволено, только нулевые сопротивления. Такие выводы. Поправьте, если неправ. Потребление по VRef декларируется среднее, а пиковое гораздо выше, это типично для любых АЦП со взвешиванием на конденсаторах, на VRef обязателен большой внешний конденсатор. Про земли в даташите написано - не более 50мВ разницы, и вообще там много интересного написано, почитайте как-нибудь.
  14. Замечу, что если у вас, судя по фотке, китайский бластер за 5$, то у него минимальное рабочее напряжение JTAG по даташитам на комплектующие будет около 2.5 вольта, что бы там китайцы ни говорили, а на этой плате может оказаться меньше.
  15. Прерывание в прерывании

    Цитата(syoma @ Nov 17 2017, 13:45) Каково же было мое удивление, когда оказалось, что ARM не поддерживает reentrant прерывания и выполнение Step_1s() полностью блокирует прерывание и Step_10ms() при этом не исполняется. Нашел в инете, что народ играется ассемблером и пытается восстанавливать стек и прочие вещи, чтобы процессор опять мог заходить в это же прерывание, но хотелось бы узнать - есть ли простое решение, без RTOS, так как кроме этой функции RTOS будет не нужна. Эта задача легко решается при помощи программных прерываний с различным приоритетом. Для программных прерываний можно использовать любые вектора неиспользуемых в проекте периферийных устройств. Для инициализации вызываем, как обычно, NVIC_SetPriority() и NVIC_EnableIRQ(), а чтобы позвать программное прерывание вызываем NVIC_SetPendingIRQ().