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

ozforester

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

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

404 просмотра профиля
  1. Спасибо за подсказки. Пропустил, так как там название cpu wake-up. Думал, что это только выход из энергосбережения, а флагу не мешает. Теперь буду тщательнее смотреть функциональные сехмы.
  2. Забить нельзя разобраться. (=
  3. Они там изначально, да и отладчиком заглядывал, прежде чем окончательно загрустить. На J и F, да, можно проверить состояние соседей висящих на том же пине, а на 48-пиновом порт В не пересекается с другими. И IMR1 - это навряд ли, он же для вывода проца из энергосбережения по прерыванию. PB5 при следущем подходе попробую, может у меня только седьмой не хочет работать.
  4. Попробовал с C8, тоже не включается EXTI на PB7. Может просто неправильно настраиваю? RCC->IOPENR |= (1 << 1); // clocking B GPIOB->MODER &= ~(0b11 << 14); // 7 input GPIOB->PUPDR |= (1 << 14); // 7 pull-up EXTI->FTSR1 |= (1 << 7); // 7 trig fall EXTI->EXTICR[1] = (0x01 << 24); // 7 mask NVIC_EnableIRQ( EXTI4_15_IRQn ); // vect
  5. Как-то пытался повесить прерывание на ногу B7 по низкому уровню и не работало. Тогда использовал порт А, так как ошибок в конфигурации явных не было. Другие пины порта B не проверял, корпус был 20-пиновый, так тоже этого порта немного. Еще не разбирался, как правильно использовать вывод, на который назначено несколько gpio, нужно будет заглянуть в раздел gpio референса в следующий раз.
  6. STM32F0 DMA TIM3_CH2

    Спасибо, запомню как запасной вариант. Сделал рокировку TIM16 TIM17. Так как TIM17 и TIM3 сейчас на соседних выводах, а TIM3_CH1 уже имеется в DMA-таблице. Поменял выводы местами. STM32F030F4 тот ещё "кубик-рубик", не соскучишься собирая пазл из периферии и оставшихся ног. (=
  7. STM32F0 DMA TIM3_CH2

    Не хватило производительности, решил разгрузить процессор, смотрю - вроде бы со стороны таймера есть dma по захвату, а со стороны контроллера канал отсутствует. "Бывает" или опечатка в таблице со стороны dma?
  8. Пока HAL не подоспел. Однократно устанавливалось смещение на базу транзистора. Регистры, биты и позиции не шифровались, прямиком из референс-мануала. Включался 4 канал таймера 4 на ноге B9 stm32f1. /* * P W M T I M 4 - C H 4 (PB9,AF) */ void pwm_on ( int ccr ) { RCC_APB2ENR |= (1<<0); // afio clocking RCC_APB2ENR |= (1<<3); // clocking port B GPIOB_CRH &= ~( 0b1111 << 4 ); // pb9 reset GPIOB_CRH |= ( 0b1010 << 4 ); // pb9 af out pp 2 RCC_APB1ENR |= (1 << 2) ; // TIM4 clocking TIM4_PSC = 72 - 1 ; // 1 MHz TIM4_ARR = 1000 - 1 ; // 1kHz TIM4_CCR4 = ccr ; // width = bias TIM4_CCMR2 |= (0b111 << 12)|(0<<15); // pwm mode 1 TIM4_CCER |= (1 << 12) ; // CC4 output enable TIM4_CR1 |= 1 ; // counter enable }
  9. Сбой тактирования, это походило на взаимное влияние. Соседние пины, и кварц на макете далековато от мк. Уложил по другому и добавил несколько блокировочных конденсаторов по питанию. (можно ли завести сигнал на триггер иначе у этого корпуса не перепроверял, но по первости другого решения не увидел) Сам измеряемый сигнал содержал пульсации до 200 мВ, что в диапазоне неопределенного состояния входа также могло оказывать влияние на счетчик. Немного плавали показания. Отфильтровать помеху сложно. При идеальном питании и увеличении напряжения сигнала с функционального генератора до предельно допустимого, ошибка получилась в один младший разряд. Пока ставлю точку . Может сделаю в другой раз формирователь с гистерезисом на входе, а сейчас цель была простая - практическая работа с таймером. Поторопился. Нет было опыта. Работаю по трем-четырем мануалам, чаще по двум - DS и RM. Кортекс и PM реже востребованы. С трудом представляю как вообще по другому можно самому к чему-то прийти в этом мире. Хотя это лирика, главное - "ложечки нашлись" (=
  10. В лабе была только проверка тактирования mode1, все вспомогательное запускалось отдельно от таймера. В любом случае, "не может быть" - звучит обнадеживающе. Попробую выбросить все кроме изучаемого таймера и вспомогательного, мигающего светодиодом. Может поведение изменится. Таймер сейчас такой: void TIM1_BRK_UP_TRG_COM_IRQHandler(void){ HFreq++; TIM1_SR &= ~1; } void tim1_init(void){ RCC_APB2ENR |= ( 1 << 11 ); // clocking TIM1 TIM1_PSC = 0; // unused TIM1_CR1 &= ~(1 << 4); // upcounter TIM1_CR1 &= ~(1 << 3); // is not stopped at update event TIM1_CCMR1 |= (0b01 << 8); // input IC2 mapped to TI2 TIM1_SMCR |= (0b111); // 111 - external clock mode 1 TIM1_SMCR |= (0b110 << 4); // Filtered Timer Input 2 (TI2FP2) TIM1_DIER |= 1; //enable interrupt NVIC_ISER0 |= (1 << 13) ; // enable TIM1 IRQn } void counter_init( void ){ // input - TIM1 CH2 PA9 (17) AF2 RCC_AHBENR |= (1<<17); // clock port A GPIOA_MODER &= ~( 0b11 << 18 ); // reset PA9 GPIOA_MODER |= ( 0b10 << 18 ); // PA9 as AF GPIOA_AFRH |= ( 0b0010 << 4 ); // PA9 AF2 = TIM1_CH2 } Есть пара лишних строк, но они здесь не мешают.
  11. Вроде бы как у F1 нет "irreversable" защиты как у младших и старших товарищей. Вот, к примеру,из референса на F0:
  12. Да, "упс". Исходное условие не соблюдается. Если только как запасной вариант с навесным конденсатором на пин-хедере и ценой одного порта.
  13. Добрый вечер. Разбираюсь с таймерами на STM32F030F4, столкнулся с проблемой. Согласно даташита, на нешний вход можно подавать до 24 МГц. Примерно с 5 МГц у МК сбивается тактирование. Обычно просто зависает, но иногда увеличивается частота системной шины (на совбодном таймере контрольный светодиод с интервалом в 1 сек, мигание котрого ускоряется) Конфигурация аналогична примеру mode 1 из референса. Лаба простая, контроллер не загружен. В прерывании по переполнению первого таймера просто инкрементируется переменная. С интервалом в несколько секунд таймер выключается и переменная выводится на дисплей. Грешил на электромагнитную совместимость, но до сих пор ограничивался блокировочными конденсаторами по питанию в простых лабах, и проблем не возникало. Есть, напрмер, макет частотомера на stm32f103c6 (mode 2 т.к. наружу выведен ETR), монтаж такой же простой на макетной плате, и до 30 МГц стабильно считает. Может я просто что-то не догоняю в mode1 и он не позволяет так просто считать со входа?
  14. Имхо, у "старичка" просто нет второго уровня защиты, что в кругах начинающих ембеддеров дорогого стоит. (= А можно ли на блюпил stm32f401 в UFQFPN48 посадить?
  15. Вобщем, докладываю. Стал замечать, что этот МК иногда не отвечает программатору и теряется при отладке, а в конце концов совсем перестал подавать признаки жизни. Измерил мультиметром ноги питания, падение ближе к одному вольту.. Заменил на новый МК и заодно проверил тактирование. Теперь тактируется как положено до 16 МГц, которые снимаются с MCO макого же МК.
×
×
  • Создать...