<?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 + ENC28J60]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=140</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=140&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «STM32 + ENC28J60».]]></description>
		<lastBuildDate>Sun, 08 Mar 2020 15:44:10 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[STM32 + ENC28J60]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=1111#p1111</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?pid=1111#p1111</guid>
		</item>
	</channel>
</rss>
