Официальный сайт компании Arduino по адресу arduino.cc
Второй выход из таймера
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Сб, 12/09/2020 - 02:47
Добрый день
Эта программа генерирует синус на 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() { }
и что, на строчки 21 22 компилятор не ругается?