И снова про ШИМ

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Карась
Открыл глаза
Сообщения: 67
Зарегистрирован: Ср май 28, 2008 14:33:11
Откуда: Россия, Саров
Контактная информация:

И снова про ШИМ

Сообщение Карась »

Всем привет!

На STM32F4Discovery запускаю вот такую программку:

Код: Выделить всё

#include "stm32f4xx.h"
#include "system_stm32f4xx.h"

#define TAB_SIZE 10
uint16_t SinusTable[TAB_SIZE] = {
3000,
4763,
5853,
5853,
4763,
3000,
1237,
147,
147,
1237,
};

void InitGPIO(void)
{
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
    GPIOC->MODER |= GPIO_MODER_MODER6_1;
    GPIOC->OTYPER &= ~GPIO_OTYPER_OT_6;
    GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6;
    GPIOC->AFR[0] = 0x03000000; // TIM8 CH1 connected to pin PC6 (AF3)
}

void InitTIM(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_TIM8EN;
    TIM8->ARR = 6000;
    TIM8->CNT = 0;
    TIM8->PSC = 0;
    TIM8->CCER |= TIM_CCER_CC1E;
    TIM8->CCMR1 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1);
    TIM8->BDTR |= TIM_BDTR_MOE;
    TIM8->CR1 |= TIM_CR1_CEN;
}

void InitAll(void)
{
    InitGPIO();
    InitTIM();
}

int main(void)
{
    uint16_t i = 0;

    InitAll();

    for (;;) {
        if (TIM8->SR & TIM_SR_CC1IF) {
            TIM8->SR &= ~TIM_SR_CC1IF;
            TIM8->CCR1 = SinusTable[i];
            i++;
            i %= TAB_SIZE; 
        }     
    }
}



На ножку PC6 повесил RC-фильтр нч: 1к, 100нф. На выходе наблюдается что-то более-менее похожее на синусоиду. Потом в массив SinusTable, вместо таблицы синусов, записываю линейно нарастающую последовательность чисел, в надежде увидеть пилу, но вместо пилы вижу постоянку 2.5 вольта с мелким шумом. На самой ножке, до фильтра, присутствует ШИМ сигнал с изменяющимся по линейному закону коэффициентом заполнения. Правильно ли я понимаю, что это происходит потому что конденсатор не успевает разряжаться?
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: И снова про ШИМ

Сообщение optima »

Так и должно быть! и напряжение будет зависеть от скважности импульсов.
Я б лучше DAC заюзал!
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: И снова про ШИМ

Сообщение amv2000 »

А чем предыдущая тема не понравиась? Или следующая будет ШИМ ВОЗВРАЩАЕТСЯ :)
Это я к тому что, модератор за нарушения пункта 1.3 может наказать.
Карась
Открыл глаза
Сообщения: 67
Зарегистрирован: Ср май 28, 2008 14:33:11
Откуда: Россия, Саров
Контактная информация:

Re: И снова про ШИМ

Сообщение Карась »

optima писал(а):Так и должно быть! и напряжение будет зависеть от скважности импульсов.
Я б лучше DAC заюзал!


Так скважность меняется по линейному закону.
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

Re: И снова про ШИМ

Сообщение IfoR »

Если постоянка, значит у тебя фильтр настроен не на ту частоту. С твоими параметрами частота среза составляет 1600 Гц. Судя по всему, ты пытаешься воспроизвести сигнал со значительно большей частотой. Частота среза должна быть на порядок (желательно) меньше частоты ШИМ, но и генерируемый сигнал должен быть частотой меньше, чем частота среза.
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Ответить

Вернуться в «ARM»