<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; квадратурный генератор]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=223&amp;type=atom" />
	<updated>2020-11-08T07:07:11Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=223</id>
		<entry>
			<title type="html"><![CDATA[квадратурный генератор]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2465#p2465" />
			<content type="html"><![CDATA[<p>Здравствуйте <br />Не могу найти почему нет второго&nbsp; сигнала на PB6,это STM32f103</p><div class="codebox"><pre><code>#define SAMPLES 77
#include &lt;libmaple/dma.h&gt;
dma_tube_config dma_cfg, dma_cfg2;
int flag = 0;
int flag1 = 0;
int out = PB6;
int out1 = PB7;
int val[SAMPLES];
int val1[SAMPLES];


int16 shift = 0;


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


timer_dev *dev = PIN_MAP[out].timer_device;
uint8 cc_channel = PIN_MAP[out].timer_channel;
timer_dev *dev1 = PIN_MAP[out1].timer_device;
uint8 cc_channel1 = PIN_MAP[out1].timer_channel;


void fun()
{
  flag++;
}
void fun1()
{
  flag1++;
}


void timer_conf()
{
  /////////////
  timer_dma_set_base_addr(dev, TIMER_DMA_BASE_CCR2);
  timer_dma_set_burst_len(dev1, 1);
  timer_dma_enable_req(dev, cc_channel1);
  timer_set_reload(dev, 102);
  timer_set_prescaler(dev, 0);
  ///////////////
  timer_dma_set_base_addr(dev1, TIMER_DMA_BASE_CCR2);
  timer_dma_set_burst_len(dev1, 1);
  timer_dma_enable_req(dev1, cc_channel1);
  timer_set_reload(dev1, 102);
  timer_set_prescaler(dev1, 0);
}


void dma_conf()
{
  dma_init(DMA1);
  /* T4C2 DMA C4 */
  dma_cfg.tube_dst = &amp;(dev-&gt;regs.gen-&gt;DMAR);
  dma_cfg.tube_dst = &amp;(dev1-&gt;regs.gen-&gt;DMAR);
  dma_cfg.tube_dst_size = DMA_SIZE_32BITS;
  dma_cfg.tube_src = val;
  dma_cfg.tube_src = val1;
  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_CMPLT_IE;
  dma_cfg.tube_req_src = DMA_REQ_SRC_TIM4_CH1;
  dma_cfg.tube_req_src = DMA_REQ_SRC_TIM4_CH2;
  dma_cfg.target_data = 0;


  ret = dma_tube_cfg(DMA1, DMA_CH4, &amp;dma_cfg);
}


void dma_start()
{
  dma_attach_interrupt(DMA1, DMA_CH4, fun);
  dma_enable(DMA1, DMA_CH4);
  timer_resume(dev1);
    dma_enable(DMA1, DMA_CH1);
  dma_enable(DMA1, DMA_CH2);


}


void init_wave()
{
  int i;
  for (i = 0; i &lt; SAMPLES; i++)
  {
    val[i] = 40 + amp * sin(stp * i);
    val1[i] = 40 + amp * sin(stp * i);
    //**************************************************************************
   // val1[i] = 40 + amp * cos(stp * i);// квадратурный выход 
   //***************************************************************************


  }
}


void setup()
{
  int i;
  // pinMode(out1, PWM);
  pinMode(out, OUTPUT);
  pinMode(out1, OUTPUT);
  timer_conf();
  dma_conf();
  dma_start();
  init_wave();
}


void loop()


{
  int i;
  for (i = 0; i &lt; SAMPLES; i++)
    //if ( val1[i]  &gt; 40)
    if ( val1[i]  &gt; 38)
    {
      digitalWrite(PB7, HIGH);
    }
    else
    {
      digitalWrite(PB7, LOW);
    }


}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[korted]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1050</uri>
			</author>
			<updated>2020-11-08T07:07:11Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2465#p2465</id>
		</entry>
</feed>
