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

Кто любит 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 вольта с мелким шумом. На самой ножке, до фильтра, присутствует ШИМ сигнал с изменяющимся по линейному закону коэффициентом заполнения. Правильно ли я понимаю, что это происходит потому что конденсатор не успевает разряжаться?
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Сообщение optima »

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

Сообщение amv2000 »

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

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

optima писал(а):Так и должно быть! и напряжение будет зависеть от скважности импульсов.
Я б лучше DAC заюзал!
Так скважность меняется по линейному закону.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула

Сообщение IfoR »

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

OS: openSUSE 13.2 (x86_64)
Контактная информация:
Реклама
Ответить

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