<?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; STM32]]></title>
		<link>http://forum.rcl-radio.ru/index.php</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;fid=16&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние темы раздела «forum.rcl-radio.ru».]]></description>
		<lastBuildDate>Tue, 12 Oct 2021 17:55:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[TIMER > OUTPUT COMPARE MODE]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=426&amp;action=new</link>
			<description><![CDATA[<p>Сравнение вывода (output compare)<br />В этом режиме выбранный канал таймера будет подключен к соответствующему выводу и будет изменять его (вывода) состояние каждый раз, когда счётчик таймера досчитает до значения регистра TIM_CCRx.</p><div class="codebox"><pre><code>void setup() {
  GPIOA-&gt;regs-&gt;CRH |= 0xB0000000; // OUTPUT PA15
  RCC_BASE-&gt;APB1ENR |= RCC_APB1ENR_TIM2EN;     // TIM2EN &gt; включить тактирование TIM_2 (APB1 ограничен 36 МГц | CK_PSC = 36 MHz)
  RCC_BASE-&gt;APB2ENR|= RCC_APB2ENR_IOPAEN; // включить тактирование PORT_A
  TIMER2_BASE-&gt;CR1 &amp;= ~TIMER_CR1_CEN;          // TIMx_CR1_CEN &gt; стоп таймер
  AFIO_BASE-&gt;MAPR = 0x02000300; //  SWJ _CFG [2:0] = &quot;010&quot; | TIM2_REMAP = PA15 = TIM2_REMAP[1:0] = &quot;11&quot; &gt;&gt;&gt; PA15 активен как выход, канал СН1
  TIMER2_BASE-&gt;PSC = 0; // регистр предделителя 16bit
  TIMER2_BASE-&gt;ARR = 1; // регистр переполнения 16bit
  TIMER2_BASE-&gt;CCR1  = 1;//регистр сравнения 16 bit
  TIMER2_BASE-&gt;CCMR1 = 0x00000038;// OC1M[2:0]=&quot;011&quot; | OC1PE[3]=&quot;1&quot; 
   // F(CH1) = CK_PSC/((PSC+1)*(ARR+1))   |    ARR &gt;= CCR1
   // F(CH1) = 36 000 000 / ((0+1)*(1+1)) = 18 000 000 MHz
  TIMER2_BASE-&gt;CCER |= TIMER_CCER_CC1E; // КАНАЛ БЛОКА СРАВНЕНИЯ
  TIMER2_BASE-&gt;CR1 |= TIMER_CR1_CEN;           // TIMx_CR1_CEN &gt; старт таймер
}

void loop() {}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 12 Oct 2021 17:55:33 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=426&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[TIMER Прерывания по сравнению]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=425&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>void setup() {
  pinMode(PA1, OUTPUT);
  
  timer_attach_interrupt(TIMER2, TIMER_UPDATE_INTERRUPT, led1); // прерывание по переполнению
  timer_attach_interrupt(TIMER2, TIMER_CC1_INTERRUPT, led);     // прерывание по сравнению 1

  RCC_BASE-&gt;APB1ENR|= (1&lt;&lt;0);  // TIM2EN &gt; включить тактирование tim_2 
  TIMER2_BASE-&gt;CR1=0;          // TIMx_CR1 &gt; стоп таймер
  TIMER2_BASE-&gt;PSC = 7200-1;   // TIMx_PSC &gt; значение пред делителя -1 === F = 72 000 000 / 7200 = 10000 Hz
  TIMER2_BASE-&gt;ARR = 10000-1;  // TIMx_ARR &gt; считать до установленого числа и обнулить === F = 10000 / 10000 = 1 Hz | T = 1 s
  TIMER2_BASE-&gt;CCR1 = 5000-1;  // TIMx_CCR1 &gt; регистр сравнения 1 === F = 10000 / 5000 = 2 Hz | T = 0.5 s
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;0); // TIMx_DIER &gt; разрешить прерывание по переполнению
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;1); // TIMx_DIER &gt; разрешить прерывание по сравнению 1
  TIMER2_BASE-&gt;CR1|=(1&lt;&lt;0);    // TIMx_CR1 &gt; старт таймер
}

void loop() {}

void led1(){
  digitalWrite(PA1, HIGH); 
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}
void led(){  //обработчик прерывания 
  digitalWrite(PA1, LOW); 
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 12 Oct 2021 07:35:03 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=425&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[TIMER Прерывания по переполнению]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=424&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>volatile bool LED = 0;


void setup() {
  pinMode(PA1, OUTPUT);
  
  timer_attach_interrupt(TIMER2, TIMER_UPDATE_INTERRUPT, led); // прерывание по переполнению
  RCC_BASE-&gt;APB1ENR|= (1&lt;&lt;0);  // TIM2EN &gt; включить тактирование tim_2 
  TIMER2_BASE-&gt;CR1=0;          // TIMx_CR1 &gt; стоп таймер
  TIMER2_BASE-&gt;PSC = 72-1;   // TIMx_PSC &gt; значение пред делителя 72 === F = 72 000 000 / 72 = 1 000 000 Hz
  TIMER2_BASE-&gt;ARR = 50-1;   // TIMx_ARR &gt; считать до установленного числа и обнулить === F = 1 000 000 / 50 = 20 000 Hz
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;0); // TIMx_DIER &gt; разрешить прерывание по переполнению
  TIMER2_BASE-&gt;CR1|=(1&lt;&lt;0);    // TIMx_CR1 &gt; старт 
}

void loop() {}

void led(){  //обработчик прерывания 
  digitalWrite(PA1, (LED = !LED)); //меняем состояние порта на противоположное
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 12 Oct 2021 06:59:04 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=424&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[ADC]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=187&amp;action=new</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?id=187&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Частотомер]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=147&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>  
     volatile int  mon_flag;
     unsigned long freq;

void setup() {
 Serial.begin(9600);
pinMode(PA15,INPUT_PULLDOWN); // вход частотометра
    RCC_BASE-&gt;APB1ENR|= (1&lt;&lt;2)|(1&lt;&lt;1)|(1&lt;&lt;0); //включить тактирование tim-2,3,4
    RCC_BASE-&gt;APB2ENR|= (1&lt;&lt;3)|(1&lt;&lt;11)|(1&lt;&lt;2)|(1&lt;&lt;0)|(1&lt;&lt;4);////включить тактирование port-a-b-c,tim1
    AFIO_BASE-&gt;MAPR=(1&lt;&lt;8)|(1&lt;&lt;6); //tim 1 &amp;&amp; tim 2 Partial remap

}

void loop() {
 freq_meter();
 Serial.println(freq);

}

void freq_meter(){  // http://arduino.ru/forum/proekty/generator-s-reguliruemoei-chastotoi-na-arduino#comment-296530
   __asm volatile( &quot;cpsid i&quot; );
   /// Timer2 счёт младших 16 бит
    TIMER2_BASE-&gt;CR1=0;//стоп таймер
    TIMER2_BASE-&gt;CCER=0; TIMER2_BASE-&gt;PSC=0;  TIMER2_BASE-&gt;CNT=0; 
    TIMER2_BASE-&gt;CCR1=0; TIMER2_BASE-&gt;CCR2=0; TIMER2_BASE-&gt;CCR3=0; 
    TIMER2_BASE-&gt;CCR4=0;TIMER2_BASE-&gt;PSC=0;TIMER2_BASE-&gt;SR=0;
    TIMER2_BASE-&gt;CCMR2=0;
    TIMER2_BASE-&gt;CR2=1&lt;&lt;5; //MMS:010 управление подчинённым в режиме &quot;Update&quot; 
    TIMER2_BASE-&gt;SMCR= (1&lt;&lt;14);// ECE &amp; TS:000  режим 2 внешнего тактирования &amp; разрешение работы от таймера1
    TIMER2_BASE-&gt;ARR=65535; //считать до максимума
    TIMER2_BASE-&gt;EGR=1; //перечитать регистры.
    TIMER2_BASE-&gt;CR1|=(1&lt;&lt;0);//start timer2
   /// Timer3 счёт старших 16 бит
    TIMER3_BASE-&gt;CR1=1&lt;&lt;0;//стоп таймер
    TIMER3_BASE-&gt;CCER=0; TIMER3_BASE-&gt;PSC=0; TIMER3_BASE-&gt;CNT=0; 
    TIMER3_BASE-&gt;CCR1=0; TIMER3_BASE-&gt;CCR2=0; TIMER3_BASE-&gt;CCR3=0; 
    TIMER3_BASE-&gt;CCR4=0;TIMER3_BASE-&gt;PSC=0;TIMER3_BASE-&gt;SR=0;TIMER3_BASE-&gt;CR2=0;  
    TIMER3_BASE-&gt;CCMR1=0; 
    TIMER3_BASE-&gt;SMCR=(1&lt;&lt;2)|(1&lt;&lt;1)|(1&lt;&lt;0)|(1&lt;&lt;4);//SMS:111 &amp;&amp; TS:001  такт брать от 2-го таймера  
    TIMER3_BASE-&gt;ARR=65535; //считать до 
    TIMER3_BASE-&gt;EGR=1; //перечитать регистры.
    TIMER3_BASE-&gt;CR1|=(1&lt;&lt;0);//start timer3
 /// настройка времени разрешения на таймере1 для таймера2
    TIMER1_BASE-&gt;CR1=(1&lt;&lt;3)|(1&lt;&lt;2);//один импульс, без прерываний
    TIMER1_BASE-&gt;CNT=0;
    TIMER1_BASE-&gt;CR2=(1&lt;&lt;4);  //MMS:001 сигнал разрешения работы другим таймерам
    TIMER1_BASE-&gt;CCER=0;// отключить выходы таймера на физ ноги
    TIMER1_BASE-&gt;PSC=F_CPU/36000 -1;// 1999; // 72000000/2000= 36000кГц тактовая таймера 
    TIMER1_BASE-&gt;ARR=36000;//считать до 36000 (1секунда) 
    TIMER1_BASE-&gt;EGR=1; //перечитать регистры.
    TIMER1_BASE-&gt;CR1|=(1&lt;&lt;0);
    __asm volatile( &quot;cpsie i&quot; );
    while (TIMER1_BASE-&gt;CR1&amp;1) {asm volatile(&quot;nop&quot;); if(mon_flag) {return;}  }
    freq = TIMER3_BASE-&gt;CNT&lt;&lt;16  | TIMER2_BASE-&gt;CNT ; 
} </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 16 Mar 2020 02:39:26 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=147&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[STM32 + LCD1602]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=143&amp;action=new</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/03/e0f3c33a7c3fe96957f227c7ad1928fb.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/03/e0f3c33a7c3fe96957f227c7ad1928fb.png" /></span> </p><br /><div class="codebox"><pre><code>#include &lt;LiquidCrystal.h&gt;
  LiquidCrystal lcd(PB10, PB11, PB6, PB7, PB8, PB9);// RS,E,D4,D5,D6,D7

void setup() {
   lcd.begin(16, 2);// LCD 16X2
}

void loop() {
   lcd.setCursor(0,0);lcd.print(&quot;RCL-RADIO.RU&quot;);
   lcd.setCursor(0,1);lcd.print(&quot;LCD1602&quot;);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Wed, 11 Mar 2020 04:35:13 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=143&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Частотомер до 750000 Гц]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=142&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>unsigned long fx,timer;
bool rez;


void setup() {
  Serial.begin(9600);
 // pinMode(PA2,INPUT);
  Timer3.pause(); // останавливаем таймер перед настройкой
  Timer3.setPeriod(1000000); // время в микросекундах (500мс)
  Timer3.attachInterrupt(TIMER_UPDATE_INTERRUPT, fr_1); // активируем прерывание
  Timer3.refresh(); // обнулить таймер 
  Timer3.resume(); // запускаем таймер
 
}

void loop() {
  while(!(GPIOA-&gt; regs-&gt; IDR &amp; 0x0004)); 
  while((GPIOA-&gt; regs-&gt; IDR &amp; 0x0004)); 
  fx++;}

void fr_1(){
    Serial.println(fx);
  fx=0;
  }
 </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Wed, 11 Mar 2020 01:59:40 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=142&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[STM32 + ENC28J60]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=140&amp;action=new</link>
			<description><![CDATA[<p>Много страничная реализация веб-сервера</p><div class="codebox"><pre><code>// ENC28J60 -  STM32F103
//   VCC    -    3.3V
//   GND    -    GND
//   SCK    -    Pin PA5
//   SO     -    Pin PA6
//   SI     -    Pin PA7
//   CS     -    Pin PA8
// Указанные библиотеки входят в состав набора библиотек Arduino_STM32-master.zip
#include &lt;EtherCard_STM.h&gt;
#include &lt;SPI.h&gt;
#include &lt;OneWireSTM.h&gt;
#include &lt;EEPROM.h&gt;
OneWire  ds(4); // PA4
byte i,present = 0,type_s = 0, data[12], addr[8];
float celsius;
int temp0,temp1,reg,a,w,timer,html;
String line;
unsigned long times;
const byte gis=1; // Гистерезис 1 градус
 
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
static byte myip[] = { 10,42,0,100 };
 
byte Ethernet::buffer[5000];
BufferFiller bfill;
 
static word HTML() {
  bfill = ether.tcpOffset();
  if(html==0){
  bfill.emit_p(PSTR(
&quot;&lt;html&gt;&lt;head&gt;&lt;meta charset=&#039;UTF-8&#039;&gt;&quot;
 &quot;&lt;meta http-equiv=&#039;refresh&#039; content=&#039;$D&#039;/&gt;&lt;/head&gt;&quot;
 &quot;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}a{color:#333;&lt;/style&gt;&lt;/head&gt;&quot;
 &quot;&lt;br&gt;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;
 &quot;&lt;td&gt;&lt;big&gt;&lt;b&gt;&lt;a href=&#039;/?html=0&#039;&gt;Терморегулятор&lt;/a&gt; | &quot;
 &quot;&lt;a href=&#039;/?html=1&#039;&gt;Реле&lt;/a&gt;&lt;/b&gt;&lt;/big&gt;&lt;tr&gt;&quot;
 &quot;&lt;td&gt;&lt;center&gt;&lt;big&gt;&lt;b&gt;Терморегулятор STM32 DS18B20&lt;/b&gt;&lt;/big&gt;&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&quot;
 &quot;Температура: &lt;b&gt;$D.$D &lt;/b&gt;&amp;#176;C&quot;
 &quot;&lt;/td&gt;&lt;tr&gt;&lt;td align=&#039;center&#039;&gt;Установка температуры регулирования (0...125&amp;#176;C)&quot;
 &quot;&lt;form action=&#039;&#039; method=&#039;GET&#039;&gt;&quot;
 &quot;&lt;br&gt;&lt;input type=&#039;text&#039; name=&#039;reg&#039; autocomplete=&#039;off&#039; size=&#039;1&#039;&gt;&lt;/input&gt;  &quot;
 &quot;&lt;button type=&#039;submit&#039;&gt;Подтвердить&lt;/button&gt;&lt;/form&gt;&lt;/td&gt;&lt;tr&gt;&quot;
 &quot;&lt;td&gt;&lt;center&gt;Температура регулировки: &lt;b&gt;$D &amp;#176;C&lt;/b&gt;&lt;/td&gt;&quot;
 &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;small&gt;Время обновления страницы каждые $D сек | &lt;b&gt;&lt;a href=&#039;/?p=5&#039;&gt;5 сек&lt;/a&gt; &lt;a href=&#039;/?p=10&#039;&gt;10 сек&lt;/a&gt; &lt;a href=&#039;/?p=30&#039;&gt;30 сек&lt;/a&gt; &lt;a href=&#039;/?p=60&#039;&gt;1 мин&lt;/a&gt;&lt;/b&gt;&quot;
 &quot;&lt;/td&gt;&lt;/table&gt;&lt;/center&gt;&lt;/html&gt;&quot;
  ),timer,temp0,temp1,reg,timer);
  }

  if(html==1){
  bfill.emit_p(PSTR(
&quot;&lt;html&gt;&lt;head&gt;&lt;meta charset=&#039;UTF-8&#039;&gt;&quot;
 &quot;&lt;meta http-equiv=&#039;refresh&#039; content=&#039;$D&#039;/&gt;&lt;/head&gt;&quot;
 &quot;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}a{color:#333;&lt;/style&gt;&lt;/head&gt;&quot;
 &quot;&lt;br&gt;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;
 &quot;&lt;td&gt;&lt;big&gt;&lt;b&gt;&lt;a href=&#039;/?html=0&#039;&gt;Терморегулятор&lt;/a&gt; | &quot;
 &quot;&lt;a href=&#039;/?html=1&#039;&gt;Реле&lt;/a&gt;&lt;/b&gt;&lt;/big&gt;&lt;tr&gt;&quot;
 &quot;&lt;td&gt;&lt;center&gt;&lt;big&gt;&lt;b&gt;Реле времени&lt;/b&gt;&lt;/big&gt;&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&quot;
 
 // код реле времени
 &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;small&gt;Время обновления страницы каждые $D сек | &lt;b&gt;&lt;a href=&#039;/?p=5&#039;&gt;5 сек&lt;/a&gt; &lt;a href=&#039;/?p=10&#039;&gt;10 сек&lt;/a&gt; &lt;a href=&#039;/?p=30&#039;&gt;30 сек&lt;/a&gt; &lt;a href=&#039;/?p=60&#039;&gt;1 мин&lt;/a&gt;&lt;/b&gt;&quot;
 &quot;&lt;/td&gt;&lt;/table&gt;&lt;/center&gt;&lt;/html&gt;&quot;
  ),timer,timer);
  }
  return bfill.position();
}
 
void setup () {
  Serial.begin(9600);
  EEPROM.init(0x801F000,0x801F800,0x400);// 1024 byte
  ether.begin(sizeof Ethernet::buffer, mymac);
  ether.staticSetup(myip);
  pinMode(PB7, OUTPUT); // PB7 управление реле нагревательного элемента
  reg = EEPROM.read(10);timer = EEPROM.read(11);
}
 
void loop () {
   if(millis()-times&gt;2000){
  ///////// 18b20 //////////////////////
  if ( !ds.search(addr)) {ds.reset_search();delay(50);return;}
  ds.reset();ds.select(addr);ds.write(0x44, 1);delay(250); present = ds.reset();ds.select(addr);ds.write(0xBE); 
  for (i = 0; i &lt; 9; i++) {data[i] = ds.read();}
  int16_t raw = (data[1] &lt;&lt; 8) | data[0];if (type_s) {raw = raw &lt;&lt; 3;}celsius = (float)raw / 16.0;
  //////// end 18b20 ////////////////////
  }
  temp0 = int(celsius);
  temp1 = (celsius-temp0)*100;
  if(reg &gt;= celsius + gis){digitalWrite(PB7,HIGH);} 
  if(reg &lt;= celsius - gis){digitalWrite(PB7,LOW);} 
  
  word pos = ether.packetLoop(ether.packetReceive());
   if (pos){ char *data = (char *) Ethernet::buffer + pos;
  
  line = data;
  a = line.indexOf(&quot;?reg=&quot;);if(a&gt;0){reg = line.substring(a+5, a+8).toInt();w=1; if(reg&lt;0){reg=0;}if(reg&gt;125){reg=125;}}
  a = line.indexOf(&quot;?p=&quot;);if(a&gt;0){timer = line.substring(a+3, a+6).toInt();w=1;}
  a = line.indexOf(&quot;?html=&quot;);if(a&gt;0){html = line.substring(a+6, a+7).toInt();w=1;}
 
  ether.httpServerReply(HTML());
  
  if(w==1){w=0;EEPROM.update(10,reg);EEPROM.update(11,timer);}
}}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 08 Mar 2020 15:44:10 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=140&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[IR + STM32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=139&amp;action=new</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/03/2eeb00e66a32f74026003bfcb61d888a.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/03/2eeb00e66a32f74026003bfcb61d888a.png" /></span> </p><br /><div class="codebox"><pre><code>#include &lt;IRremote.h&gt; //  http://rcl-radio.ru/wp-content/uploads/2020/03/Arduino-IRremote-master.zip
IRrecv irrecv(PC15);
decode_results results;

void setup(){
  Serial.begin(9600); 
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&amp;results)) {Serial.print(&quot;0x&quot;);Serial.println(results.value, HEX);irrecv.resume();delay(200);}
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 08 Mar 2020 10:08:58 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=139&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[STM32 импульсный генератор 1кГц ... 64МГц]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=112&amp;action=new</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2019/12/4b10a391b8f520f5153ef0f81388b379.png" alt="http://forum.rcl-radio.ru/uploads/images/2019/12/4b10a391b8f520f5153ef0f81388b379.png" /></span> <br /><span class="attention-yellow"></span> </p><br /><br /><div class="codebox"><pre><code>#include &lt;Wire.h&gt; 
#include &lt;LiquidCrystal_I2C.h&gt; // liquidcrystali2c.zip
  LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
  HardwareTimer pwmtimer3(3);

long int del=1,mn=1;
float f;

void setup() {
  lcd.init();                     
  lcd.backlight();// Включаем подсветку дисплея
  ///////////////////////////
  pinMode(PB0, PWM);
  pinMode(PB1,INPUT); // +
  pinMode(PB10,INPUT);// -
  pinMode(PB11,INPUT);// х1 х10 x100 x1000
  pwmtimer3.pause();
  pwmtimer3.setPrescaleFactor(del);       
  pwmtimer3.setOverflow(2-1);// /2         
  pwmtimer3.setCompare(TIMER_CH3, 1);// меандр
  pwmtimer3.refresh();
  pwmtimer3.resume();
}
void loop() {
    if(digitalRead(PB11)==HIGH){mn=mn*10;if(mn&gt;1000){mn=1;}}
    if(digitalRead(PB1)==HIGH){del=del+mn;if(del&gt;65535){del=65535;}pwmtimer3.setPrescaleFactor(del);}
    if(digitalRead(PB10)==HIGH){del=del-mn;if(del&lt;1){del=1;}pwmtimer3.setPrescaleFactor(del);}
    
  lcd.setCursor(0, 0);
  lcd.print(&quot;F = &quot;);
  f = 64000000/(1*del);
  if(f&gt;1000000){lcd.print(f/1000000,3);lcd.print(&quot; MHz   &quot;);}else{lcd.print(f/1000,3);lcd.print(&quot; kHz   &quot;);}
  lcd.setCursor(0,1);
  lcd.print(&quot;x&quot;);lcd.print(mn);lcd.print(&quot;   &quot;);lcd.setCursor(6,1);lcd.print(&quot;d&quot;);lcd.print(del);lcd.print(&quot;      &quot;);
  delay(300);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 27 Dec 2019 08:50:34 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=112&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Прошивка STM32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?id=105&amp;action=new</link>
			<description><![CDATA[<p><a href="http://rcl-radio.ru/?p=68376">http://rcl-radio.ru/?p=68376</a></p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2019/12/9e0ee693a4ca8bbb9435ab340eb6d1a3.png" alt="http://forum.rcl-radio.ru/uploads/images/2019/12/9e0ee693a4ca8bbb9435ab340eb6d1a3.png" /></span></p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sat, 14 Dec 2019 11:28:52 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?id=105&amp;action=new</guid>
		</item>
	</channel>
</rss>
