<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=9196&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-15T18:02:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9196&amp;mode</id>
<entry>
<author><name><![CDATA[llemar]]></name></author>
<updated>2014-11-15T18:02:52+01:00</updated>
<published>2014-11-15T18:02:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=104125#p104125</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=104125#p104125"/>
<title type="html"><![CDATA[Re: Ściemniacz modbus RTU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=104125#p104125"><![CDATA[
Sytuacja mrugania nie ma miejsca w przypadku kiedy &quot;i&quot; ma przypisaną stałą wartość dla rozjaśniania &quot;0&quot; a dla ściemniania &quot;100&quot;. Tyle tylko, że muszę w zmienną &quot;za1&quot; wpisywać &quot;0&quot; lub &quot;100&quot; (nie ma tu mowy o regulacji natężenia światła). Ale w przypadku gdy żarówka się już świeci załóżmy w 60% to &quot;i&quot; musiało by posiadać wartość &quot;60&quot;. Wcześniej myślałem, że tą wartość mogę śmiało pobrać z &quot;kanal1&quot; a tu niestety dzieją się cyrki i przy ściemnianiu mrugnie sobie dwa razy i dopiero zaczyna ściemniać. <br />[syntax=c]if( i&lt;za1)<br />{<br />for( i=0; i&lt;za1; i++ )<br />{<br />kanal1 = procent(i);<br />        _delay_ms(szybkosc);<br />}<br />}<br /><br />if( i&gt;za1)<br />{<br />for( i=100; i&gt;za1; i-- )<br />{<br />kanal1 = procent(i);<br />_delay_ms(szybkosc);<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2090">llemar</a> — 15 lis 2014, o 18:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[llemar]]></name></author>
<updated>2014-11-12T14:40:16+01:00</updated>
<published>2014-11-12T14:40:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103530#p103530</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103530#p103530"/>
<title type="html"><![CDATA[Re: Ściemniacz modbus RTU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103530#p103530"><![CDATA[
...no tak trochę mi tu głupoty powychodziły <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> testowałem tylko na PC0 i w sumie mogłem szlifować kod tylko dla jednej żarówki, a jak by śmigała to dopiero rozszerzyć na 16. Nauczka na przyszłość.<br />Poniżej schemacik<br /><a href="http://forum.atnel.pl/_obrazki/o/2090/9f0dbf95fa0f511c0ced355eb1125397.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2090/9f0dbf95fa0f511c0ced355eb1125397.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2090">llemar</a> — 12 lis 2014, o 14:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-11-11T23:06:24+01:00</updated>
<published>2014-11-11T23:06:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103472#p103472</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103472#p103472"/>
<title type="html"><![CDATA[Re: Ściemniacz modbus RTU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103472#p103472"><![CDATA[
Witam<br />Nie ma to nic wspólnego z miganiem ale mam pytanie: który port &quot;odpalasz&quot; takim kodem?<br />[syntax=c]...<br />        DDRC |= (1&lt;&lt;PA0);<br />        T_ZAR9_OFF;<br /><br />        DDRC |= (1&lt;&lt;PA1);<br />        T_ZAR10_OFF;<br /><br />        DDRC |= (1&lt;&lt;PA2);<br />        T_ZAR11_OFF;<br /><br />        DDRC |= (1&lt;&lt;PA3);<br />        T_ZAR12_OFF;<br /><br />        DDRC |= (1&lt;&lt;PA4);<br />        T_ZAR13_OFF;<br /><br />        DDRC |= (1&lt;&lt;PA5);<br />        T_ZAR14_OFF;<br /><br />        DDRC |= (1&lt;&lt;PA6);<br />        T_ZAR15_OFF;<br /><br />        DDRC |= (1&lt;&lt;PA7);<br />        T_ZAR16_OFF;[/syntax]<br />...chodzi mi o te DDR'y; PORTC już raz uruchomiłeś wraz z wcześniejszymi żarówkami.<br />Może &quot;maźnij&quot; schemacik...?<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 11 lis 2014, o 23:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[llemar]]></name></author>
<updated>2014-11-11T22:41:28+01:00</updated>
<published>2014-11-11T22:41:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103469#p103469</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103469#p103469"/>
<title type="html"><![CDATA[Ściemniacz modbus RTU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9196&amp;p=103469#p103469"><![CDATA[
Witam szanownych forumowiczów. Właśnie się męczę nad ściemniaczem do świateł w domu sterowanym przez RS485 protokół modbus RTU. Wykombinowałem kawałek kodu dla 16tu żarówek ale przy ściemnianiu żarówka się zachowuje dziwnie, mignie kilkakrotnie i dopiero się ściemnia. Przy rozjaśnianiu nie ma tego problemu.<br />Pewnie dla Was, mistrzów programowania nie będzie problemu w stwierdzeniu co źle zrobiłem i nakierowania mnie na właściwy tor <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> za co z góry dziękuję.<br />Poniżej kod<br />[syntax=c]/*<br /><br />/* ----------------------- AVR includes -------------------------------------*/<br />#include &quot;avr/io.h&quot;<br />#include &quot;avr/interrupt.h&quot;<br />#include &lt;util/delay.h&gt;<br />/* ----------------------- Modbus includes ----------------------------------*/<br />#include &quot;mb.h&quot;<br />#include &quot;mbport.h&quot;<br /><br />/* ----------------------- Defines ------------------------------------------*/<br />#define REG_HOLDING_START 1000<br />#define REG_HOLDING_NREGS 16<br />#define REG_INPUT_START   1000<br />#define REG_INPUT_NREGS   0<br /><br />/*********************** D I M M E R  -   U S T A W I E N I A   ***************************/<br />#define LICZBA_KROKOW 200<br /><br />// czas trwania szpilki (Detekcja ZERA) wyrażony w milisekundach np: 1,2,... albo np: 0.5<br />#define SZPILKA_MS 1.8<br />/*********************** D I M M E R  -   U S T A W I E N I A   ***************************/<br /><br />#define __OCR_STEP ((F_CPU/8)*((1000-((SZPILKA_MS*100)/2))/LICZBA_KROKOW))/100000<br /><br />//#define procent(x) ((x*(LICZBA_KROKOW-1))/100)<br /><br />static uint8_t procent(uint8_t pr)<br />{<br />return (pr * (LICZBA_KROKOW-1))/100;<br />}<br />/* ----------------------- Static variables ---------------------------------*/<br />static USHORT   usRegHoldingStart = REG_HOLDING_START;<br />static USHORT   usRegHoldingBuf&#91;REG_HOLDING_NREGS&#93;;<br />static USHORT   usRegInputStart = REG_INPUT_START;<br />static USHORT   usRegInputBuf&#91;REG_INPUT_NREGS&#93;;<br /><br /><br />#define T_ZAR1_ON PORTC |= (1&lt;&lt;PC0)<br />#define T_ZAR1_OFF PORTC &amp;= ~(1&lt;&lt;PC0)<br />#define T_ZAR2_ON PORTC |= (1&lt;&lt;PC1)<br />#define T_ZAR2_OFF PORTC &amp;= ~(1&lt;&lt;PC1)<br />#define T_ZAR3_ON PORTC |= (1&lt;&lt;PC2)<br />#define T_ZAR3_OFF PORTC &amp;= ~(1&lt;&lt;PC2)<br />#define T_ZAR4_ON PORTC |= (1&lt;&lt;PC3)<br />#define T_ZAR4_OFF PORTC &amp;= ~(1&lt;&lt;PC3)<br />#define T_ZAR5_ON PORTC |= (1&lt;&lt;PC4)<br />#define T_ZAR5_OFF PORTC &amp;= ~(1&lt;&lt;PC4)<br />#define T_ZAR6_ON PORTC |= (1&lt;&lt;PC5)<br />#define T_ZAR6_OFF PORTC &amp;= ~(1&lt;&lt;PC5)<br />#define T_ZAR7_ON PORTC |= (1&lt;&lt;PC6)<br />#define T_ZAR7_OFF PORTC &amp;= ~(1&lt;&lt;PC6)<br />#define T_ZAR8_ON PORTC |= (1&lt;&lt;PC7)<br />#define T_ZAR8_OFF PORTC &amp;= ~(1&lt;&lt;PC7)<br /><br />#define T_ZAR9_ON PORTA |= (1&lt;&lt;PA0)<br />#define T_ZAR9_OFF PORTA &amp;= ~(1&lt;&lt;PA0)<br />#define T_ZAR10_ON PORTA |= (1&lt;&lt;PA1)<br />#define T_ZAR10_OFF PORTA &amp;= ~(1&lt;&lt;PA1)<br />#define T_ZAR11_ON PORTA |= (1&lt;&lt;PA2)<br />#define T_ZAR11_OFF PORTA &amp;= ~(1&lt;&lt;PA2)<br />#define T_ZAR12_ON PORTA |= (1&lt;&lt;PA3)<br />#define T_ZAR12_OFF PORTA &amp;= ~(1&lt;&lt;PA3)<br />#define T_ZAR13_ON PORTA |= (1&lt;&lt;PA4)<br />#define T_ZAR13_OFF PORTA &amp;= ~(1&lt;&lt;PA4)<br />#define T_ZAR14_ON PORTA |= (1&lt;&lt;PA5)<br />#define T_ZAR14_OFF PORTA &amp;= ~(1&lt;&lt;PA5)<br />#define T_ZAR15_ON PORTA |= (1&lt;&lt;PA6)<br />#define T_ZAR15_OFF PORTA &amp;= ~(1&lt;&lt;PA6)<br />#define T_ZAR16_ON PORTA |= (1&lt;&lt;PA7)<br />#define T_ZAR16_OFF PORTA &amp;= ~(1&lt;&lt;PA7)<br /><br />volatile uint8_t kroki;<br />volatile uint8_t kanal1, kanal2, kanal3, kanal4, kanal5, kanal6, kanal7, kanal8, kanal9, kanal10, kanal11, kanal12, kanal13, kanal14, kanal15, kanal16;<br />volatile uint8_t za1, za2, za3, za4, za5, za6, za7, za8, za9, za10, za11, za12, za13, za14, za15, za16;<br />volatile uint8_t ika1;<br /><br /><br />int<br />main( void )<br />{<br /><br />DDRC |= (1&lt;&lt;PC0);<br />T_ZAR1_OFF;<br />DDRC |= (1&lt;&lt;PC1);<br />T_ZAR2_OFF;<br />DDRC |= (1&lt;&lt;PC2);<br />T_ZAR3_OFF;<br />DDRC |= (1&lt;&lt;PC3);<br />T_ZAR4_OFF;<br />DDRC |= (1&lt;&lt;PC4);<br />T_ZAR5_OFF;<br />DDRC |= (1&lt;&lt;PC5);<br />T_ZAR6_OFF;<br />DDRC |= (1&lt;&lt;PC6);<br />T_ZAR7_OFF;<br />DDRC |= (1&lt;&lt;PC7);<br />T_ZAR8_OFF;<br />DDRC |= (1&lt;&lt;PA0);<br />T_ZAR9_OFF;<br />DDRC |= (1&lt;&lt;PA1);<br />T_ZAR10_OFF;<br />DDRC |= (1&lt;&lt;PA2);<br />T_ZAR11_OFF;<br />DDRC |= (1&lt;&lt;PA3);<br />T_ZAR12_OFF;<br />DDRC |= (1&lt;&lt;PA4);<br />T_ZAR13_OFF;<br />DDRC |= (1&lt;&lt;PA5);<br />T_ZAR14_OFF;<br />DDRC |= (1&lt;&lt;PA6);<br />T_ZAR15_OFF;<br />DDRC |= (1&lt;&lt;PA7);<br />T_ZAR16_OFF;<br /><br />// Przerwanie INT0<br />MCUCR |= (1&lt;&lt;ISC01)|(1&lt;&lt;ISC00);// zbocze narastające<br />GICR |= (1&lt;&lt;INT0);// odblokowanie INT0<br /><br /><br />// TIMER2<br />#define TIMER2_START TCCR2 |= (1&lt;&lt;CS21)// prescaler=8<br />#define TIMER2_STOP TCCR2 &amp;= ~(1&lt;&lt;CS21)// prescaler off<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb CTC<br />TIMSK |= (1&lt;&lt;OCIE2);// odblokowanie przerwania COMPARE MATCH<br />OCR2 = __OCR_STEP;<br /><br /><br />const UCHAR     ucSlaveID&#91;&#93; = { 0xAA, 0xBB, 0xCC };<br />    eMBErrorCode    eStatus;<br /><br />    eStatus = eMBInit( MB_RTU, 0x1, 0, 9600, MB_PAR_NONE );<br /><br />    eStatus = eMBSetSlaveID( 0x34, TRUE, ucSlaveID, 3 );<br />    sei(  );<br /><br />#define szybkosc 30<br /><br /><br />    /* Enable the Modbus Protocol Stack. */<br />    eStatus = eMBEnable(  );<br /><br />    for( ;; )<br />    {<br /><br />        uint8_t a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;<br /><br />/* ----------------------- Żarówka 1 ----------------------------------*/<br />if( a&lt;za1)<br />{<br />        for( a=kanal1; a&lt;za1; a++)<br />        {<br />            kanal1 = procent(a);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( a&gt;za1)<br />{<br />for( a=kanal1; a&gt;za1; a--)<br />{<br />kanal1 = procent(a);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 2 ----------------------------------*/<br />if( b&lt;za2)<br />{<br />        for( b=kanal2; b&lt;za2; b++)<br />        {<br />            kanal2 = procent(b);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( b&gt;za2)<br />{<br />for( b=kanal2; b&gt;za2; b--)<br />{<br />kanal2 = procent(b);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 3 ----------------------------------*/<br />if( c&lt;za3)<br />{<br />        for( c=kanal3; c&lt;za3; c++)<br />        {<br />            kanal3 = procent(c);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( c&gt;za3)<br />{<br />for( c=kanal3; c&gt;za3; c--)<br />{<br />kanal3 = procent(c);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 4 ----------------------------------*/<br />if( d&lt;za4)<br />{<br />        for( d=kanal4; d&lt;za4; d++)<br />        {<br />            kanal4 = procent(d);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( d&gt;za4)<br />{<br />for( d=kanal4; d&gt;za4; d--)<br />{<br />kanal4 = procent(d);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 5 ----------------------------------*/<br />if( e&lt;za5)<br />{<br />        for( e=kanal5; e&lt;za5; e++)<br />        {<br />            kanal5 = procent(e);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( e&gt;za5)<br />{<br />for( e=kanal5; e&gt;za5; e--)<br />{<br />kanal5 = procent(e);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 6 ----------------------------------*/<br />if( f&lt;za6)<br />{<br />        for( f=kanal6; f&lt;za6; f++)<br />        {<br />            kanal6 = procent(f);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( f&gt;za6)<br />{<br />for( f=kanal6; f&gt;za6; f--)<br />{<br />kanal6 = procent(f);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 7 ----------------------------------*/<br />if( g&lt;za7)<br />{<br />        for( g=kanal7; g&lt;za7; g++)<br />        {<br />            kanal7 = procent(g);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( g&gt;za7)<br />{<br />for( g=kanal7; g&gt;za7; g--)<br />{<br />kanal7 = procent(g);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 8 ----------------------------------*/<br />if( h&lt;za8)<br />{<br />        for( h=kanal8; h&lt;za8; h++)<br />        {<br />            kanal8 = procent(h);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( h&gt;za8)<br />{<br />for( h=kanal8; h&gt;za8; h--)<br />{<br />kanal8 = procent(h);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 9 ----------------------------------*/<br />if( i&lt;za9)<br />{<br />        for( i=kanal9; i&lt;za9; i++)<br />        {<br />            kanal9 = procent(i);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( i&gt;za9)<br />{<br />for( i=kanal9; i&gt;za9; i--)<br />{<br />kanal1 = procent(i);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 10 ----------------------------------*/<br />if( j&lt;za10)<br />{<br />        for( j=kanal10; j&lt;za10; j++)<br />        {<br />            kanal10 = procent(j);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( j&gt;za10)<br />{<br />for( j=kanal10; j&gt;za10; j--)<br />{<br />kanal10 = procent(j);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 11 ----------------------------------*/<br />if( k&lt;za11)<br />{<br />        for( k=kanal11; k&lt;za11; k++)<br />        {<br />            kanal11 = procent(k);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( k&gt;za11)<br />{<br />for( k=kanal11; k&gt;za11; k--)<br />{<br />kanal11 = procent(k);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 12 ----------------------------------*/<br />if( l&lt;za12)<br />{<br />        for( l=kanal12; l&lt;za12; l++)<br />        {<br />            kanal12 = procent(l);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( l&gt;za12)<br />{<br />for( l=kanal12; l&gt;za12; l--)<br />{<br />kanal12 = procent(l);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 13 ----------------------------------*/<br />if( m&lt;za13)<br />{<br />        for( m=kanal13; m&lt;za1; m++)<br />        {<br />            kanal13 = procent(m);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( m&gt;za13)<br />{<br />for( m=kanal13; m&gt;za13; m--)<br />{<br />kanal13 = procent(m);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 14 ----------------------------------*/<br />if( n&lt;za14)<br />{<br />        for( n=kanal14; n&lt;za14; n++)<br />        {<br />            kanal14 = procent(n);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( n&gt;za14)<br />{<br />for( n=kanal14; n&gt;za14; n--)<br />{<br />kanal14 = procent(n);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 15 ----------------------------------*/<br />if( o&lt;za15)<br />{<br />        for( o=kanal15; o&lt;za15; o++)<br />        {<br />            kanal15 = procent(o);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( o&gt;za15)<br />{<br />for( o=kanal15; o&gt;za15; o--)<br />{<br />kanal15 = procent(o);<br />_delay_ms(szybkosc);<br />}<br />}<br />/* ----------------------- Żarówka 16 ----------------------------------*/<br />if( p&lt;za16)<br />{<br />        for( p=kanal16; p&lt;za16; p++)<br />        {<br />            kanal16 = procent(p);<br />        _delay_ms(szybkosc);<br />        }<br />}<br /><br />if( p&gt;za16)<br />{<br />for( p=kanal16; p&gt;za16; p--)<br />{<br />kanal16 = procent(p);<br />_delay_ms(szybkosc);<br />}<br />}<br /><br />        ( void )eMBPoll(  );<br /><br />        /* Here we simply count the number of poll cycles. */<br />        za1 = usRegHoldingBuf&#91;0&#93;;<br />        za2 = usRegHoldingBuf&#91;1&#93;;<br />        za3 = usRegHoldingBuf&#91;2&#93;;<br />        za4 = usRegHoldingBuf&#91;3&#93;;<br />        za5 = usRegHoldingBuf&#91;4&#93;;<br />        za6 = usRegHoldingBuf&#91;5&#93;;<br />        za7 = usRegHoldingBuf&#91;6&#93;;<br />        za8 = usRegHoldingBuf&#91;7&#93;;<br />        za9 = usRegHoldingBuf&#91;8&#93;;<br />        za10 = usRegHoldingBuf&#91;9&#93;;<br />        za11 = usRegHoldingBuf&#91;10&#93;;<br />        za12 = usRegHoldingBuf&#91;11&#93;;<br />        za13 = usRegHoldingBuf&#91;12&#93;;<br />        za14 = usRegHoldingBuf&#91;13&#93;;<br />        za15 = usRegHoldingBuf&#91;14&#93;;<br />        za16 = usRegHoldingBuf&#91;15&#93;;<br />    }<br />}<br /><br />eMBErrorCode<br />eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs )<br />{<br />    eMBErrorCode    eStatus = MB_ENOERR;<br />    int             iRegIndex;<br /><br />    if( ( usAddress &gt;= REG_INPUT_START )<br />        &amp;&amp; ( usAddress + usNRegs &lt;= REG_INPUT_START + REG_INPUT_NREGS ) )<br />    {<br />        iRegIndex = ( int )( usAddress - usRegInputStart );<br />        while( usNRegs &gt; 0 )<br />        {<br />            *pucRegBuffer++ =<br />                ( unsigned char )( usRegInputBuf&#91;iRegIndex&#93; &gt;&gt; 8 );<br />            *pucRegBuffer++ =<br />                ( unsigned char )( usRegInputBuf&#91;iRegIndex&#93; &amp; 0xFF );<br />            iRegIndex++;<br />            usNRegs--;<br />        }<br />    }<br />    else<br />    {<br />        eStatus = MB_ENOREG;<br />    }<br /><br />    return eStatus;<br />}<br /><br />eMBErrorCode<br />eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegisterMode eMode )<br />{<br />    eMBErrorCode    eStatus = MB_ENOERR;<br />    int             iRegIndex;<br /><br />    if( ( usAddress &gt;= REG_HOLDING_START ) &amp;&amp;<br />        ( usAddress + usNRegs &lt;= REG_HOLDING_START + REG_HOLDING_NREGS ) )<br />    {<br />        iRegIndex = ( int )( usAddress - usRegHoldingStart );<br />        switch ( eMode )<br />        {<br />            /* Pass current register values to the protocol stack. */<br />        case MB_REG_READ:<br />            while( usNRegs &gt; 0 )<br />            {<br />                *pucRegBuffer++ = ( unsigned char )( usRegHoldingBuf&#91;iRegIndex&#93; &gt;&gt; 8 );<br />                *pucRegBuffer++ = ( unsigned char )( usRegHoldingBuf&#91;iRegIndex&#93; &amp; 0xFF );<br />                iRegIndex++;<br />                usNRegs--;<br />            }<br />            break;<br /><br />            /* Update current register values with new values from the<br />             * protocol stack. */<br />        case MB_REG_WRITE:<br />            while( usNRegs &gt; 0 )<br />            {<br />                usRegHoldingBuf&#91;iRegIndex&#93; = *pucRegBuffer++ &lt;&lt; 8;<br />                usRegHoldingBuf&#91;iRegIndex&#93; |= *pucRegBuffer++;<br />                iRegIndex++;<br />                usNRegs--;<br />            }<br />        }<br />    }<br />    else<br />    {<br />        eStatus = MB_ENOREG;<br />    }<br />    return eStatus;<br />}<br /><br />eMBErrorCode<br />eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils,<br />               eMBRegisterMode eMode )<br />{<br />    return MB_ENOREG;<br />}<br /><br />eMBErrorCode<br />eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNDiscrete )<br />{<br />    return MB_ENOREG;<br />}<br />ISR(INT0_vect) {<br /><br />TIMER2_STOP;<br />T_ZAR1_OFF;<br /><br />kroki=LICZBA_KROKOW;<br /><br />/* podwójne buforowanie, synchronizacja do 50Hz */<br />ika1=kanal1;<br /><br />TCNT2 = 0;<br />TIMER2_START;<br />}<br /><br />ISR(TIMER2_COMP_vect) {<br /><br />if(ika1 &amp;&amp; kroki == ika1) T_ZAR1_ON;<br />kroki--;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2090">llemar</a> — 11 lis 2014, o 22:41</p><hr />
]]></content>
</entry>
</feed>