<?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=16051&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-08-25T21:30:24+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=16051&amp;mode</id>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2016-08-25T21:30:24+01:00</updated>
<published>2016-08-25T21:30:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16051&amp;p=167087#p167087</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16051&amp;p=167087#p167087"/>
<title type="html"><![CDATA[Re: Odniesienie do portu w strukturze]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16051&amp;p=167087#p167087"><![CDATA[
Witam, nie wiem, czy dobrze zrozumiałem, zobacz:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />    typedef struct{<br />            uint8_t in_1;<br />            uint8_t in_2;<br />            volatile uint8_t *in_Port;<br />            uint8_t pin;<br />    }Tservo;<br /><br />    //Obiekty typu Tservo<br />    Tservo Servo1;<br /><br />const uint8_t pin = (1&lt;&lt;PC2);<br /><br /><br /><br />    void serwo_Init(Tservo * servo)<br />    {<br />            if(servo == &amp;Servo1)<br />            {<br />                 //Tutaj inicjalizacją za pomocą wskaźnika servo-&gt; ???<br /><br />            // To serwo jest na porcie C<br />            Servo1.in_Port = &amp;PORTC;<br /><br />            // Pewnie chciałbyś DDRx na danym pinie ustawic na wyjsciowy:<br />            // proszzz:<br /><br />            *(Servo1.in_Port -1) |= pin;// Rejestry DDRx mają aders o 1 mniejszy od adresu PORTx !!!!<br /><br /><br /><br />            // Ustawienie pinu na zero<br />            *Servo1.in_Port &amp;= ~(pin);<br /><br />            // Ustawienie pinu za 1<br />            *Servo1.in_Port |= pin;<br /><br />            }<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 25 sie 2016, o 21:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2016-08-24T08:59:03+01:00</updated>
<published>2016-08-24T08:59:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16051&amp;p=166924#p166924</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16051&amp;p=166924#p166924"/>
<title type="html"><![CDATA[Odniesienie do portu w strukturze]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16051&amp;p=166924#p166924"><![CDATA[
Witam. Chcę uzyskać możliwość sterowania stanami pinów poprzez odniesienia do struktury. Więc tak, jest struktura:<br />[syntax=c]typedef struct{<br />uint8_t in_1;<br />uint8_t in_2;<br />uint8_t in_Port;<br />}Tservo;<br /><br />//Obiekty typu Tservo<br />Tservo Servo1;[/syntax]<br /><br />Wcześniej w mekrodefinicjach ustawiam sobie piny oraz porty, do który podłączyłem odpowiednie wyjścia:<br />[syntax=c]//Makrodefinicje kierunkow sterujacych serwem<br />//Serwo 1<br />#define Servo1_Port C<br />#define Servo1_Pin1 4<br />#define Servo1_Pin2 5[/syntax]<br /><br />Oczywiście używam także makrodefinicji, które służą do sklejania typu #define PORT(x) SPORT(x) itd. (nie chce tu podawać fragmentów kodu z książki).<br /><br />Pytanie brzmi, w jaki sposób mogę przypisać te zmienne ze struktury, aby za ich pomocą móc zmieniać stany wyjść. Czyli nie chce robić tego w ten sposób:<br />[syntax=c]//Kierunki pinów wyjsciowe<br />DDR(Servo1_Port) |= (1&lt;&lt;Servo1_Pin1);<br />DDR(Servo1_Port) |= (1&lt;&lt;Servo1_Pin2);<br />//Poczatkowy stan niski<br />PORT(Servo1_Port) &amp;= ~(1&lt;&lt;Servo1_Pin1);<br />PORT(Servo1_Port) &amp;= ~(1&lt;&lt;Servo1_Pin2);[/syntax]<br />Tylko za pomocą zmiennych in_1, która odpowiada za Servo1_Pin1, in_2 za Servo1_Pin2 oraz in_Port, który odpowiada za port C. W jaki sposób powyższy kod można zapisać inaczej za pomocą struktury, tzn, chciałbym uzyskać ten sam efekt, który jest wyżej, czyli ustawienie kierunków i stanów na pinach za pomocą zmiennych w strukturze poprzez funkcję inicjalizującą :<br />[syntax=c]void serwo_Init(Tservo * servo)<br />{<br />if(servo == &amp;Servo1)<br />{<br />             //Tutaj inicjalizacją za pomocą wskaźnika servo-&gt; ???<br />        }<br />}[/syntax]<br /><br />Mam nadzieję, że jest to w miarę zrozumiałe co tutaj opisałem i liczę, że ktoś podpowie w jaki sposób mogę uzyskać taki efekt. Zależy mi na tym, ponieważ chcę tylko wywołać funkcję inicjalizującą podając jako argument wskaźnik do obiektu typu servo i potem tak samo w innych funkcjach ustawiać stany wyjść w zależności od wywołanego wskaźnika. Trochę zagmatwane, ale da się coś takiego uzyskać ?<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 24 sie 2016, o 08:59</p><hr />
]]></content>
</entry>
</feed>