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

    

Алексей ВМ

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

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

  • Посещение

Репутация

0 Обычный

Информация о Алексей ВМ

  • Звание
    Частый гость

Посетители профиля

1 985 просмотров профиля
  1. В моем посте приведена вся моя ISR - после проверки условия сразу сбрасываем флаг и запускаем таймер. Больше в ней ничего нет. Насчет дребезга поисследую, спасибо, но изначально дребезг в этой схеме не подразумевался ))
  2. Нет, не выполняется. Не совсем понимаю, о чем речь - ISR стандартная - void EXTI0_IRQHandler(void) { /* Make sure that interrupt flag is set */ if (EXTI_GetITStatus(EXTI_Line0) != RESET) { /* Do your stuff when PD0 is changed */ /* Clear interrupt flag */ EXTI_ClearITPendingBit(EXTI_Line0); // Запуск таймера } } Проблема в том, что сигнал подразумевается без дребезга, иначе, конечно, все придется делать по другому. Задача просто сформировать импульс по чистому цифровому сигналу. Забыл упомянуть - время между фронтами EXTI всегда больше длительности генерируемого импульса - срабатывание от EXTI во время работы таймера (генерации импульса) исключены. С другой стороны, нужно исключить вероятность появления дребезга, спасибо за наводку.
  3. В обработчике прерывания от EXTI флаг сбрасывается. Прерывание от EXTI запускает таймер, который генерит импульс с программируемой задержкой и программируемой же длительности на другой ноге. На этой ноге всегда присутствуют импульсы от переднего фронта и иногда от заднего, причем сдвиг импульса относительно фронта меняется в соответствии с заданной задержкой. Например, задали задержку 5 мс - после переднего фронта через 5 мс генерится импульс, и иногда с той же задержкой генерится импульс по заднему фронту, длина импульса всегда правильная, заданная. Грешу на то, что задний фронт затянут, но тут должен срабатывать гистерезис на ноге чипа, по идее.
  4. В моем случае все прерывания от переднего фронта возникают, только к ним добавляются ещё прерывания и от заднего фронта. Кроме того, используется ещё множество прерываний от таймеров, уарта и тп, все работает адекватно.
  5. На осцилле все чисто, на ногу идет сигнал с триггера Шмитта.
  6. Прерывание EXTI по изменению состояния на ноге. Разрешено прерывание по переднему фронту, однако иногда возникает прерывание по заднему. Может быть причиной то, что задний фронт затянут до 5 мкс?
  7. STM2F407 TIM3 ШИМ 125 кГц

    У меня такая картинка из RM, цифры сбиты Благодарю за помощь!
  8. STM2F407 TIM3 ШИМ 125 кГц

    Добрый день, Помогите, плиз. Имеется мк STM32F407, внешний кварц 25МГц. Хочу получить от таймера 3 ШИМ 125 кГц. Инициализация: TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Prescaler = ((SystemCoreClock / 4000000) - 1); TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = 8 - 1; // 8 us TIM_TimeBaseInit(RF_125KHZ_TIM, &TIM_TimeBaseStructure); TIM_OCStructInit(&TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 4; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC3Init(RF_125KHZ_TIM, &TIM_OCInitStructure); TIM_OC3PreloadConfig(RF_125KHZ_TIM, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(RF_125KHZ_TIM,ENABLE); TIM_Cmd(RF_125KHZ_TIM, ENABLE); SystemCoreClock равна 168 МГц. Частота шины APB1, на которой сидит TIM3, 42 МГц. На выходе шим с периодом 4 мкс. Что я делаю не так, куда копать?
  9. Добрый день. Использую QUAD SPI STM32L452 для работы с NAND Winbond w25n01g. При конфигурировании QUAD SPI для передачи команды Page Data Read (13h) Код  page = 0x30;   /* Initialize the read command */   sCommand.InstructionMode   = QSPI_INSTRUCTION_1_LINE;   sCommand.Instruction       = PAGE_DATA_READ_CMD;   sCommand.AddressMode       = QSPI_ADDRESS_1_LINES;   sCommand.AddressSize       = QSPI_ADDRESS_16_BITS;   sCommand.Address           = page;   sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;   sCommand.DataMode          = QSPI_DATA_NONE;   sCommand.DummyCycles       = 8;   sCommand.DdrMode           = QSPI_DDR_MODE_DISABLE;   sCommand.DdrHoldHalfCycle  = QSPI_DDR_HHC_ANALOG_DELAY;   sCommand.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;      /* Configure the command */   if (HAL_QSPI_Command(&QSPIHandle, &sCommand, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)   {     return QSPI_ERROR; } на шине следующее: [attachment=110678:w25n01_QUADSPI.JPG] 0x30 на месте старшего байта 16-ти разрядного слова, а в младшем байте - все 1. Куда копать, чтобы исправить ситуацию?
  10. Добрый день, Подскажите, пожалуйста, как сконфигурировать ногу PC15, чтобы на ней появилась частота внешнего генератора? Спасибо, Алексей.
  11. У Вас личка отключена, пока не наберете определенное количество тем на форуме. Есть ещё какие-нибудь контакты?
  12. Есть готовое решение, измеряет температуру PT100/PT1000, pH, потенциал. Интерфейс - MODBUS RTU. Могу изменить под Ваши требования. Нахожусь в СПб. e-mail: alexvm12@mail.ru
  13. Добрый день, Посоветуйте, пожалуйста, генератор видео сигналов. Нужны выходы RGB, компонентный, композитный, s-video, DVI. Важно, чтобы мог генерить ГОСТовские видеосигналы, в частности, композитные. Алексей.
  14. STM32F103 проблема с АЦП

    Цитата(AHTOXA @ Oct 24 2016, 16:04) Я голосую за превышение частоты тактирования АЦП. Частота равна частоте APB2, делённой на прескалер АЦП. Поищите у себя что-то типа такого: Так оно и есть. После деления частоты проблема пропала. Спасибо! Цитата(rudy_b @ Oct 24 2016, 16:11) А сам АЦП на нужную разрядность настроили? Не нашел такой настройки.