- Главная
- Форум
- Микроконтроллеры и Системы на Модуле (SOM)
- Микроконтроллеры
- глюк STM32F100RBT6
глюк STM32F100RBT6
- Kerensky
- Автор темы
- Посетитель
12 года 8 ч. назад - 12 года 4 ч. назад #3654
от Kerensky
Kerensky создал тему: глюк STM32F100RBT6
Работал с отладкой stm32vl discovery и наткнулся на интересный баг.
Настраиваю TIM2 на шим генерацию по всем 4 каналам.
В дальнейшем при попытке записать в регистр TIM2->CCR2 значение меньше 300 приводит к зависанию мк, второго такого проца нет что бы проверить, на stm32f100c4t6 такого глюка нет.
код настройки мк, остальная часть проги отвечает только за изменение регистров CCR
зависает именно на моменте записи в TIM2->CCR2 если значение меньше 300.
#include "stm32f10x.h"
void main()
{
SystemInit ();
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // алтернативные функции
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // порт А
GPIOA->CRL = 0x4444BBBB;
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // TIM 2
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
TIM2->ARR = 4096; // период
TIM2->PSC = 100; // прескаллер
TIM2->CCMR1 = 0x6060; // канал 1 и 2 pwm mode1
TIM2->CCMR2 = 0x6060; // канал 3 и 4 pwm mode1
TIM2->CCER |= TIM_CCER_CC1E; // выход сравнения 1 включить
TIM2->CCER |= TIM_CCER_CC2E; // выход сравнения 2 включить
TIM2->CCER |= TIM_CCER_CC3E; // выход сравнения 3 включить
TIM2->CCER |= TIM_CCER_CC4E; // выход сравнения 4 включить
TIM2->CCR1 = 500; // значение сравнения
TIM2->CCR2 = 500; // значение сравнения
TIM2->CCR3 = 500; // значение сравнения
TIM2->CCR4 = 500; // значение сравнения
TIM2->CR1 |= TIM_CR1_CEN; // запуск счета
}
Настраиваю TIM2 на шим генерацию по всем 4 каналам.
В дальнейшем при попытке записать в регистр TIM2->CCR2 значение меньше 300 приводит к зависанию мк, второго такого проца нет что бы проверить, на stm32f100c4t6 такого глюка нет.
код настройки мк, остальная часть проги отвечает только за изменение регистров CCR
зависает именно на моменте записи в TIM2->CCR2 если значение меньше 300.
#include "stm32f10x.h"
void main()
{
SystemInit ();
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // алтернативные функции
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // порт А
GPIOA->CRL = 0x4444BBBB;
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // TIM 2
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
TIM2->ARR = 4096; // период
TIM2->PSC = 100; // прескаллер
TIM2->CCMR1 = 0x6060; // канал 1 и 2 pwm mode1
TIM2->CCMR2 = 0x6060; // канал 3 и 4 pwm mode1
TIM2->CCER |= TIM_CCER_CC1E; // выход сравнения 1 включить
TIM2->CCER |= TIM_CCER_CC2E; // выход сравнения 2 включить
TIM2->CCER |= TIM_CCER_CC3E; // выход сравнения 3 включить
TIM2->CCER |= TIM_CCER_CC4E; // выход сравнения 4 включить
TIM2->CCR1 = 500; // значение сравнения
TIM2->CCR2 = 500; // значение сравнения
TIM2->CCR3 = 500; // значение сравнения
TIM2->CCR4 = 500; // значение сравнения
TIM2->CR1 |= TIM_CR1_CEN; // запуск счета
}
Последнее редактирование: 12 года 4 ч. назад пользователем .
- Денис Ягов
- Посетитель
11 года 11 мес. назад #3661
от Денис Ягов
Денис Ягов ответил в теме Re: глюк STM32F100RBT6
Добрый день.
Проверил на своей Дискавери. Эффекта не получил. Если это глюк - то только на конкретном контроллере.
Либо вариант2: на что нагружен выход ШИМ? может ли возникнуть просадка по питанию?
Проект приложил.
Проверил на своей Дискавери. Эффекта не получил. Если это глюк - то только на конкретном контроллере.
Либо вариант2: на что нагружен выход ШИМ? может ли возникнуть просадка по питанию?
Проект приложил.
- Kerensky
- Автор темы
- Посетитель
11 года 11 мес. назад #3663
от Kerensky
Kerensky ответил в теме Re: глюк STM32F100RBT6
на светодиод через резюк. каждый выход выдает до 10 мА. значит глюк конкретного мк ))
Время создания страницы: 0.031 секунд