<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_serial_bus_functions</id>
	<title>FULL-C: serial bus functions - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_serial_bus_functions"/>
	<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_serial_bus_functions&amp;action=history"/>
	<updated>2026-06-13T18:00:09Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_serial_bus_functions&amp;diff=262&amp;oldid=prev</id>
		<title>Adamn v 26. 6. 2021, 10:22</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_serial_bus_functions&amp;diff=262&amp;oldid=prev"/>
		<updated>2021-06-26T10:22:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 26. 6. 2021, 10:22&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l37&quot; &gt;Řádek 37:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 37:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sběrnice RS485 na SDS-BIG ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sběrnice RS485 na SDS-BIG ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Zařízení SDS-BIG má specifika pro své použití - '''musíte přesně sledovat návod''' zde: [[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;SDS_BIG&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;_RS485&lt;/del&gt;]].  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Zařízení SDS-BIG má specifika pro své použití - '''musíte přesně sledovat návod''' zde: [[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SDS BIG&lt;/ins&gt;: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;RS485&lt;/ins&gt;]].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_serial_bus_functions&amp;diff=261&amp;oldid=prev</id>
		<title>Adamn: Založena nová stránka s textem „FULL-C  == Funkce pro práci se sériovými sběrnicemi ==  __NOTOC__   Zařízení SDS mají k dispozici jednu nebo více sériových sběrnic, které lze…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_serial_bus_functions&amp;diff=261&amp;oldid=prev"/>
		<updated>2021-06-26T10:20:27Z</updated>

		<summary type="html">&lt;p&gt;Založena nová stránka s textem „FULL-C  == Funkce pro práci se sériovými sběrnicemi ==  __NOTOC__   Zařízení SDS mají k dispozici jednu nebo více sériových sběrnic, které lze…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;FULL-C&lt;br /&gt;
&lt;br /&gt;
== Funkce pro práci se sériovými sběrnicemi ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS mají k dispozici jednu nebo více sériových sběrnic, které lze přímo ovládat z FULL-C programu.&lt;br /&gt;
&lt;br /&gt;
Program může použít tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_serial_config(unsigned int busID, unsigned int BaudRateCfg, unsigned int DataSizeCfg, unsigned int StopBitsCfg, unsigned int ParityCfg);&lt;br /&gt;
         void SDS_serial_writeCH(unsigned int busID, unsigned char writeChar);&lt;br /&gt;
         void SDS_serial_write(unsigned int busID, void *ptr, unsigned int len);&lt;br /&gt;
 unsigned int SDS_serial_read(unsigned int busID, void *ptr, unsigned int maxlen);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sériové sběrnice (UART) ==&lt;br /&gt;
&lt;br /&gt;
Sériová sběrnice umožňuje připojit další prvky a zařízení ke každému SDS. Výhodou je, že data se posílají sériově, což vyžaduje &amp;quot;jen jeden drát&amp;quot; v každém směru.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Každé zařízení SDS má k dispozici následující sériové sběrnice (které jsou dostupné prostřednictvím FULL-C funkcí):&lt;br /&gt;
&lt;br /&gt;
* COM1 - busID == 1&lt;br /&gt;
* COM3 - pouze prostřednictvím funkcí SDS_TOPB_xxxx()&lt;br /&gt;
* COM6 - busID == 6&lt;br /&gt;
&lt;br /&gt;
Je čistě na vás, jaký HW připojíte ke COM1 a jaký ke COM6. &lt;br /&gt;
&lt;br /&gt;
Výrobek SDS-BIG napevno připojuje RS485 ke sběrnici COM1, přičemž se navíc sám vnitřně stará o přepínaní směru master budiče linky RS485.&lt;br /&gt;
&lt;br /&gt;
COM6 je k dispozici vždy jako nezávislá duplexní sériová linka (UART) s 3V3 CMOS logikou. COM6 je určeno pro připojení komunikačních modulů jako je GSM, LoRa, MBUS a další.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sběrnice RS485 na SDS-BIG ==&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS-BIG má specifika pro své použití - '''musíte přesně sledovat návod''' zde: [[SDS_BIG:_RS485]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konfigurace ==&lt;br /&gt;
&lt;br /&gt;
Využijte funkci SDS_serial_config(). Potřebné parametry jsou následující:&lt;br /&gt;
&lt;br /&gt;
* busID       - viz seznam výše, určuje kterou sériovou sběrnici chcete nastavit&lt;br /&gt;
* BaudRateCfg - určuje rychlost sériového přenosu (např. 9600, nebo 115200 bps)&lt;br /&gt;
* DataSizeCfg - určuje kolik datových bitů má jedno slovo přenášené po lince, možnosti jsou 9 nebo 8 (běžně je to 8)&lt;br /&gt;
* StopBitsCfg - určuje kolik stop-bitů má jedno slovo přenášené po lince, možnosti jsou 0, 1 nebo 2 (běžně je to 1)&lt;br /&gt;
* ParityCfg   - určuje jaký typ má případný paritní bit v každém slově přenášeném po lince, možnosti jsou 1=odd, 2=even, 0=none (běžně to je 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Pozor! &lt;br /&gt;
&lt;br /&gt;
Pokud je ParityCfg nenulové, '''musí''' být DataSizeCfg napevno '''nastaven na 9'''. Nastavte to na 9 bez obav, protože data samotné zůstávají stále na osmi bitech, přičemž ten devátý je právě pro paritu. Obvyklá chyba je, že nastavíte ParitCfg nenulově (na 1 nebo 2) ale zapomenete dát DataSizeCfg na 9, a směr vysílání z SDS pak nefunguje !&lt;br /&gt;
&lt;br /&gt;
 Informace&lt;br /&gt;
&lt;br /&gt;
Každou sériovou linku (neplatí pro COM3) musíte nejprve, jednou na začátku, před použitím (čtení či zápis) nastavit právě touto funkcí.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zápis do sériové linky (výstup dat ze SDS) ==&lt;br /&gt;
&lt;br /&gt;
Využijte funkci SDS_serial_writeCH() pro zápis jednoho znaku, popř. SDS_serial_write() pro zápis více (tj. 'len') znaků.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Čtení ze sériové linky (vstup dat do SDS) ==&lt;br /&gt;
&lt;br /&gt;
SDS obsahuje vnitřní vyrovnávací buffer, pro případ že by FULL-C program nestíhal číst data tak rychle, jak do SDS po sériové lince přicházejí. Ovšem kapacita tohoto bufferu je omezená.&lt;br /&gt;
&lt;br /&gt;
Využijte funkci SDS_serial_read() pro čtení jednoho nebo více znaků (čte až 'maxlen' znaků do vámi přichystané oblasti na kterou ukazuej 'ptr').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
Vzorový příklad, který komunikuje po sběrnici COM6 rychlostí 9600bps a využívá EVEN paritu. Tento příklad opakovaně odesílá pět bajtů dat (nějaký příkaz) a pak vypisuje do konzole vše co přijal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unsigned char buf[128];&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 // 6 -&amp;gt; SETUP COM6&lt;br /&gt;
 // 9 -&amp;gt; we have 8bit data word + 1bit parity&lt;br /&gt;
 // 1 -&amp;gt; one stop bit&lt;br /&gt;
 // 2 -&amp;gt; even parity&lt;br /&gt;
 SDS_serial_config(6, 9600, 9, 1, 2);&lt;br /&gt;
&lt;br /&gt;
 // loop for ever&lt;br /&gt;
 for (;;)&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;TX...\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
   // send cmd to slave&lt;br /&gt;
   SDS_serial_writeCH(6, 0x10);&lt;br /&gt;
   SDS_serial_writeCH(6, 0x5b);&lt;br /&gt;
   SDS_serial_writeCH(6, 0x00);&lt;br /&gt;
   SDS_serial_writeCH(6, 0x5b);&lt;br /&gt;
   SDS_serial_writeCH(6, 0x16);&lt;br /&gt;
&lt;br /&gt;
   // waiting for slave&lt;br /&gt;
   wait(1000);&lt;br /&gt;
&lt;br /&gt;
   // read all from slave&lt;br /&gt;
   for (;;)&lt;br /&gt;
   {&lt;br /&gt;
     int rd, i;&lt;br /&gt;
&lt;br /&gt;
     // try to read up to 64 bytes&lt;br /&gt;
     rd = SDS_serial_read(6, (void *) &amp;amp;buf[0], 64);&lt;br /&gt;
&lt;br /&gt;
     // got anything ?&lt;br /&gt;
     if (0 == rd) break;&lt;br /&gt;
&lt;br /&gt;
     // print all we got so far&lt;br /&gt;
     for (i = 0; i &amp;lt; rd; i++)&lt;br /&gt;
     {&lt;br /&gt;
       printf(&amp;quot;%02x &amp;quot;, buf[i]);&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // wait before repeating&lt;br /&gt;
   wait(1000);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
Řada příkladů je k dispozici na našem fóru, např. zde: https://forum.sds.an-d.cz//viewtopic.php?pid=6854#p6854 a další.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
</feed>