<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; ADC]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=187</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=187&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «ADC».]]></description>
		<lastBuildDate>Wed, 05 Aug 2020 10:07:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=1964#p1964</link>
			<description><![CDATA[<div class="codebox"><pre><code>#include &quot;SPI.h&quot;
#include &lt;Adafruit_GFX_AS.h&gt;   // http://rcl-radio.ru/wp-content/uploads/2020/06/Adafruit_GFX.zip
#include &lt;Adafruit_ILI9341_STM.h&gt;
#include &lt;STM32ADC.h&gt;
#include &lt;HardwareTimer.h&gt; 
 STM32ADC myADC(ADC1);
 uint8 pin = PA1;
 volatile static bool dma1_ch1_Active;
 #define maxSamples 640
 uint16_t buffer[maxSamples]; 
 


 
#define TFT_CS         PB1                 
#define TFT_DC         PB10            
#define TFT_RST        PB11
  Adafruit_ILI9341_STM tft = Adafruit_ILI9341_STM(TFT_CS, TFT_DC, TFT_RST); // Mosi - PA7, SCK - PA5
  
byte data[640],data_old[640];
int i,x,y,i2;
long h0,h1;
long times;

void setup() {
 Serial.begin(115200);
 pinMode(pin, INPUT_ANALOG);
 ///// SETUP ALL ////////////////////////////////////////  
 tft.begin();tft.setRotation(1);tft.fillScreen(ILI9341_BLACK);

     Timer3.pause();
     Timer3.setPrescaleFactor(1);
     Timer3.setOverflow(4);
     Timer3.setMasterModeTrGo(TIMER_CR2_MMS_UPDATE);
     Timer3.refresh(); // обнулить таймер 
     Timer3.resume(); // запускаем таймер
     myADC.setSampleRate(ADC_SMPR_1_5);
     myADC.setPins(&amp;pin, 1);
}
 
void loop() {
 
      DMA();
      if(dma1_ch1_Active == 0){
        for(int x=0; x&lt;maxSamples; x++){
       //   Serial.println(buffer[x]);
          data[x]=map(buffer[x],0,4095,0,200);
        }
      }
//////  TFT  //////////////////////////////////////////
  tft.setCursor(0, 0);
  tft.setTextColor(ILI9341_WHITE);  tft.setTextSize(1);
  tft.println(&quot;RCL-RADIO.RU&quot;);
 // tft.fillRect(0,0,150,40,ILI9341_BLACK); 

  setka(); i=0;
  while(i&lt;319){i++;
 tft.drawLine(i, 230-data_old[i],i, 230-data_old[i+1], ILI9341_BLACK);
 tft.drawLine(i, 230-data[i],i, 230-data[i+1],  ILI9341_RED);}i=0;
 while(i&lt;639){i++;data_old[i]=data[i];}i=0; 
}


void DMA(){
     dma1_ch1_Active = 1;
     myADC.setDMA(buffer, maxSamples, (DMA_MINC_MODE | DMA_TRNS_CMPLT), DMA1_CH1_Event);
     myADC.setTrigger(ADC_EXT_EV_TIM3_TRGO);
     myADC.startConversion();
     while (dma1_ch1_Active &gt;= 1){};
     dma_disable(DMA1, DMA_CH1);     
  }


   void setka(){ 
 for(y=40;y&lt;240;y=y+40){
  for(x=10;x&lt;320;x=x+10){
tft.drawPixel(x, y, ILI9341_WHITE);}}
    
for(x=40;x&lt;320;x=x+40){
 for(y=40;y&lt;240;y=y+10){
tft.drawPixel(x, y, ILI9341_WHITE);}}}

static void DMA1_CH1_Event() {
  dma1_ch1_Active = 0;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Wed, 05 Aug 2020 10:07:56 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=1964#p1964</guid>
		</item>
		<item>
			<title><![CDATA[ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=1963#p1963</link>
			<description><![CDATA[<div class="codebox"><pre><code>int data;
unsigned long times;

void setup() {
 Serial.begin(9600);
 GPIOA-&gt; regs-&gt; CRL = 0b0000;  
 ADC1-&gt; regs-&gt; CR2 |= ADC_CR2_CAL;                  // Запуск калибровки АЦП
 while (!(ADC1-&gt; regs-&gt; CR2 &amp; ADC_CR2_CAL));        // Ожидаем окончания калибровки
 ADC1-&gt; regs-&gt; SMPR2 |= (ADC_SMPR2_SMP1 &amp; 0b100);   // Интервалы между выборками 100 = 41,5 цикла канал ADC1
 ADC1-&gt; regs-&gt; CR2 |= ADC_CR2_JEXTSEL;              // Преобразование инжектированной группы
 ADC1-&gt; regs-&gt; CR2 |= ADC_CR2_CONT;                 // Разрешает непрерывное преобразование
 ADC1-&gt; regs-&gt; CR1 |= ADC_CR1_JAUTO;                // Разрешить преобразование инжектированной группы
}
 
void loop() {
 ADC1-&gt; regs-&gt; JSQR |= (1&lt;&lt;14);                 // Задаем номер канала (выбран ADC1)
 ADC1-&gt; regs-&gt; CR2 |= ADC_CR2_ADON;             // Включаем АЦП
 ADC1-&gt; regs-&gt; CR2 |= ADC_CR2_JSWSTART;         // Заупск преобразования
 while (!(ADC1-&gt; regs-&gt; SR &amp; ADC_SR_JEOC));     // Ждем завершения преобразования
 data = ADC1-&gt; regs-&gt; JDR1;                     // Регистр данных инжектированных преобразований
  Serial.println(data);
  delay(1000);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 03 Aug 2020 00:20:26 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=1963#p1963</guid>
		</item>
	</channel>
</rss>
