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

Yngvarr

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • День рождения 07.02.1974

Контакты

  • Сайт
    Array
  • ICQ
    Array
  1. Nucleo-F401RE + TIM

    В итоге: Если в настройках порта PA8 (к которому даже ничего не подключено пока) в регистре GPIOA_PUPDR не выставлять подтяжку к питанию или подтяжку к минусу относительно земли, то в регистр GPIOB->IDR данные с приемника приходят, в любом ином случае - нет..
  2. Nucleo-F401RE + TIM

    Это забыл выложить: /* Connect TIM3 pins to AF */ GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_TIM3); /* Connect TIM1 pins to AF */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_TIM1); Эмм.. Если не убирать из конфигурации GPIO_pin_8, то: ... если подключить выход приемника на TIM1, сигнал получаю, если на TIM3, то ситуация описанная вначале. ... если убрать эту строчку из конфигурации, то сигнал с приемника, подключенного к TIM1, конечно перестает поступать, но если при этом приемник подключить ко входу TIM3, то все начинает работать.
  3. Nucleo-F401RE + TIM

    Спасибо за ответы! Ruslan1: к сожалению осциллографа пока нет, только в планах =( esaulenka: спасибо за совет, учел.. =) На данный момент нашел полумеру. В описываемой мной ранее ситуации, порты сконфигурированы таким образом: GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOC); GPIO_DeInit(GPIOD); GPIO_DeInit(GPIOE); /* GPIO USART2 & TIM1 Channel 1 Configuration */ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* GPIOB PB4 (TIM3 channel 1) configuration */ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); Полумера заключается в том, что если убрать из конфигурации GPIO_Pin_8 (TIM1 channel1, PA8), то на TIM3 все начинает работать как и полагается... но мне нужны оба таймера (и порт PA8 очень удобен для меня), а главное хочется понять почему так происходит.
  4. Nucleo-F401RE + TIM

    Приветствую всех. Начав изучать таймеры столкнулся вот с чем: Дано: Nucleo-F401RE + приемник диапазона 433.92 МГц, ASK (MP433PRO) Подключил выход приемника на вход контроллера (PA8 - TIM1 Channel 1, APB2 84 MHz) . Написал небольшую функцию получения кода с пульта. Все работает, но так как хотел использовать TIM1 для других экспериментов переделал все на TIM3 (PB4 - TIM3 channel1, APB1 42MHz). Нет сигнала с приемника, даже шума нет. Через какое то время оказалось, что сигнал все же есть, но если поднести пульт вплотную к антенне приемника, до этого все прекрасно работало и из другого конца квартиры (при этом получаю длительности импульсов на TIM3 не те, что нужно, но скорее всего не учел что-то в тактировании, но это второй вопрос, наверно), но почему так?! Ок.. переделал на TIM4 (PB6 - TIM4 Channel1, APB1 42MHz). Такой же результат. Вернул на TIM1 все заработало. Почему так?! Спасибо! P.S. на всякий случай немного кода: #define UINT16_MAXIMUM 0xFFFF #define TIM1_PERIOD UINT16_MAXIMUM - 1 #define TIM1CH1_PULSE ((TIM1_PERIOD+1)/2) #define TIM1_PRESCALER (((SystemCoreClock / 1000000) / 2) - 1) #define TIM3_PERIOD UINT16_MAXIMUM - 1 #define TIM3_PRESCALER (((SystemCoreClock / 1000000) / 4 ) - 1) #define TIM4_PERIOD UINT16_MAXIMUM - 1 #define TIM4_PRESCALER (((SystemCoreClock / 1000000) / 4 ) - 1) RCC_DeInit(); RCC_HSEConfig(RCC_HSE_OFF); RCC_HSICmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); void TIM1_Configuration(void) { TIM_ICInitTypeDef TIM_ICInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = TIM1_PRESCALER; TIM_TimeBaseStructure.TIM_Period = TIM1_PERIOD; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInit(TIM1, &TIM_ICInitStructure); TIM_Cmd(TIM1, ENABLE); TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE); void TIM3_Configuration(void) { TIM_ICInitTypeDef TIM_ICInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = TIM3_PRESCALER; TIM_TimeBaseStructure.TIM_Period = TIM3_PERIOD; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInit(TIM3, &TIM_ICInitStructure); TIM_Cmd(TIM3, ENABLE); TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); } void TIM4_Configuration(void) { TIM_ICInitTypeDef TIM_ICInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = TIM4_PRESCALER; TIM_TimeBaseStructure.TIM_Period = TIM4_PERIOD; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInit(TIM4, &TIM_ICInitStructure); TIM_Cmd(TIM4, ENABLE); TIM_ITConfig(TIM4, TIM_IT_CC1, ENABLE); void TIM1_CC_IRQHandler(void) { if (TIM_GetITStatus(TIM1, TIM_IT_CC1) == SET) { TIM1->SR &= ~TIM_SR_CC1IF; Current[0] = TIM1->CCR1;} } void TIM3_IRQHandler(void) { if (TIM_GetITStatus(TIM3, TIM_IT_CC1) == SET) { //TIM_ClearITPendingBit(TIM3, TIM_IT_CC1); TIM3->SR &= ~TIM_SR_CC1IF; Current[1] = TIM3->CCR1;} }
  5. Проблема решилась просто... был заменен shield ...
  6. Это RxTx от USART6, так как USART2 ( D0, D1) заняты ST-LINK. P.S. МК занимаюсь только 3-й день, так что где-то могу в чем то ошибаться =)
  7. Да, пробовал, вылетает с такой же строчкой... В той же доке: If the voltage < 3.39V, the following URC will be reported, and the module will be automatically powered off. UNDER-VOLTAGE POWER DOWN If the voltage > 4.4V, the following URC will be reported, and the module will be automatically powered off. OVER-VOLTAGE POWER DOW
  8. Нашел.. Спасибо! Попробую
  9. Да, это я видел. У меня немного другая nucleo, но особой разницы не вижу. Все это прочел, не помогает.. предполагаю что на контакты Tx/Rx uart (shield) необходимо подавать не более 4.8V ... ставить пару диодов? корявенько ..
  10. именно... shield питается от 6 до 9 V.. даже если подать на него 4, то сообщение выдается такое же..
  11. Приветствую всех! Подскажите, кто то пытался скрестить Nucleo-F401RE и Waveshare GSM/GPRS/GPS Shield (B) ? Отказываются совместно работать ( Если джампер JP5 на плате Nucleo находится в положении 2-1 (U5V), то Shield не реагирует на AT команды, если в положении 3-2 (E5V), то после включения, выдает: RDY +CFUN: 1 at OK +CPIN: NOT INSERTED OVER-VOLTAGE POWER DOWN и выключается... (запитывал от блока питания из комплекта, своего блока питания, батарейки... результат один) Спасибо. P.S. прилагаю общую картинку подключения (на всякий случай)
×
×
  • Создать...