Второй выход из таймера

gena321
Offline
Зарегистрирован: 19.01.2019
Добрый день
Эта программа генерирует синус на PB7, я пытаюсь добавить второй выход на PB6, но здесь нет никакого сигнала. 
Как решить проблему?
#define SAMPLES 100
#include <libmaple/dma.h>




dma_tube_config dma_cfg, dma_cfg2;
int val1[SAMPLES];
int val2[SAMPLES];                   // *******************


int amp = 35;
int cnt = 0;
int time_track = 0;
float stp = 6.2831 / SAMPLES;
int ret = 17;


int out1 = PB7; // TIM4_CH2 DMA_CH4 . 
int out2 = PB6; // TIM4_CH1 DMA_CH3 .                     *************************** 
timer_dev *dev1 = PIN_MAP[out2].timer_device;   
timer_dev *dev2 = PIN_MAP[out2].timer_device;






void timer_conf()
{


  // PB7 TIM4_CH2 DMA_CH4
  timer_dma_set_base_addr(dev1, TIMER_DMA_BASE_CCR2);
  timer_dma_set_burst_len(dev1, 1);
  timer_dma_enable_req(dev1, PIN_MAP[out1].timer_channel);
  timer_set_reload(dev1, 102);
  timer_set_prescaler(dev1, 0);


  // PB6 TIM4_CH1 DMA_CH3 .                                  *********************
  timer_dma_set_base_addr(dev2, TIMER_DMA_BASE_CCR2);
  timer_dma_set_burst_len(dev2, 1);
  timer_dma_enable_req(dev2, PIN_MAP[out2].timer_channel);
  timer_set_reload(dev2, 102);
  timer_set_prescaler(dev2, 0);




}
void dma_conf()
{
  dma_init(DMA1);


  // PB7 TIM4_CH2 DMA_CH4
  // PB6 TIM4_CH1 DMA_CH3
  dma_cfg.tube_dst = &(dev1->regs.gen->DMAR);                // PB7
  dma_cfg.tube_dst = &(dev2->regs.gen->DMAR);                // PB6********************
  dma_cfg.tube_src = val1;                                   // PB7
  dma_cfg.tube_src = val2;                                   // PB6********************
  dma_cfg.tube_src_size = DMA_SIZE_32BITS;
  dma_cfg.tube_nr_xfers = SAMPLES;
  dma_cfg.tube_flags = DMA_CFG_SRC_INC | DMA_CFG_CIRC;
  dma_cfg.tube_req_src = DMA_REQ_SRC_TIM4_CH2;               //PB7
  dma_cfg.tube_req_src = DMA_REQ_SRC_TIM4_CH1;               //PB6 ********************
  dma_cfg.target_data = 0;
  ret = dma_tube_cfg(DMA1, DMA_CH4, &dma_cfg);
  ret = dma_tube_cfg(DMA1, DMA_CH3, &dma_cfg);




}
void dma_start()
{
  // PB7 TIM4_CH2 DMA_CH4
  dma_enable(DMA1, DMA_CH4);
 timer_resume(dev1);
  dma_enable(DMA1, DMA_CH3);
  timer_resume(dev2);






}
void init_wave()
{
  int i;
  for (i = 0; i < SAMPLES; i++)
  {
    val1[i] = 50 + amp * sin(stp * i);
    val2[i] = 50 + amp * sin(stp * i);                      //************************
  }
}
void setup() {
  pinMode(out1, PWM);
  pinMode(out2, PWM);


  timer_conf();
  dma_conf();
  dma_start();
  init_wave();
}
void loop() {
}

 

 
 
b707
Онлайн
Зарегистрирован: 26.05.2017

и что, на строчки 21 22 компилятор не ругается?

gena321
Offline
Зарегистрирован: 19.01.2019
Программа реагирует на изменения в CCR, строки 34 и 42,
CCR1, CCR1 = сигнал только на PB6
CCR1, CCR2 = сигнал только на PB7
CCR2, CCR2 = сигнал только на PB7
CCR2, CCR1 = сигнал только на PB6