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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-10-19T10:29:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19416&amp;mode</id>
<entry>
<author><name><![CDATA[marcinceber]]></name></author>
<updated>2017-10-19T10:29:17+01:00</updated>
<published>2017-10-19T10:29:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197356#p197356</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197356#p197356"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu na całym porcie i działanie na nim.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197356#p197356"><![CDATA[
Uzupełniłem dane w profilu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Chciałem na wejścia podawać stan wysoki ale mogę też zastosować odwrotną logikę sterowania przy przekaźniku.<br /><br />Docelowo program ma zadziałać tak, że gdy nie będzie, żadnego sygnału to program ma na niego oczekiwać (w pętli) jak pojawi się tylko 1 sygnał na którymś z 5 wejść <br />to ma wykonać odpowiednie funkcje (dla danego wejścia np. dla każdego wejścia będą inne czasy migania diodą) , a gdy pojawią się dwa sygnały jednocześnie program będzie zgłaszał błąd (na początek awaryjne miganie diodą, później krótki sygnał buzzerem) który przerwie prace na 5sek. i powróci do pętli oczekiwania na sygnał.<br /><br />Jeszcze raz siadam do materiałów z książki, następnie Twoje filmy i spróbuje to ponownie napisać i pozwolę sobie odezwać się ponownie na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Dzięki za wskazówki.<br /><br />Pozdrawiam,<br />Marcin<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18107">marcinceber</a> — 19 paź 2017, o 10:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-10-19T09:28:15+01:00</updated>
<published>2017-10-19T09:28:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197350#p197350</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197350#p197350"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu na całym porcie i działanie na nim.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197350#p197350"><![CDATA[
<div class="quotetitle">marcinceber napisał(a):</div><div class="quotecontent"><br />Książkę oczywiście posiadam.<br /></div><br />To warto wejść w ustawienia swojego konta na forum i dodać ikonkę Bluebooka - żeby było wiadomo, że już się ją posiada <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />Zanim jeszcze obejrzysz poradniki a warto obejrzeć to pomyśl .... (o ile ja dobrze zrozumiałem twoje założenia)<br /><br />Jeśli normalnie na wszystkich pinach portu C masz stan wysoki i masz podjąć akcję gdy na dowolnym albo kilku pojawi się stan NISKI to wystarczy prosty IF aby to wyłapać<br /><br />if( PINC != 0xFF ) .... <br /><br />i wtedy wywołać funkcję (pisz funkcje a nie cały kod w pętli głównej programu) ... funkcję która sobie sprawdzi po kolei które bity są wyzerowane tu już możesz sobie przelecieć maskowaniem bitów no ale nie tak jak to próbujesz robić teraz - jak mówię, poradnik o MASKOWANIU bitów dużo ci wyjaśni ale też w Bluebooku jest to opisane jak to działa - więc tam też zajrzyj do rozdziału np o przesunięciach bitowych <br /><br />warto zrozumieć te PODSTAWOWE operacje w języku C bo później to jest chleb powszedni podczas pisania praktycznie każdego programu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 paź 2017, o 09:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marcinceber]]></name></author>
<updated>2017-10-19T09:26:33+01:00</updated>
<published>2017-10-19T09:26:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197349#p197349</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197349#p197349"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu na całym porcie i działanie na nim.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197349#p197349"><![CDATA[
Dziękuję za odpowiedź.<br />Książkę oczywiście posiadam. Jednym słowem zaczynam to wszystko raz jeszcze, bo &quot;wydaje się&quot;, że gdzieś dzwoni, ale tylko &quot;WYDAJE&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Dziękuję za szybką odpowiedź <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Pozdrawiam<br />Marcin<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18107">marcinceber</a> — 19 paź 2017, o 09:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-10-19T09:20:22+01:00</updated>
<published>2017-10-19T09:20:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197347#p197347</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197347#p197347"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu na całym porcie i działanie na nim.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197347#p197347"><![CDATA[
Proponuję po pierwsze obejrzeć ten poradnik:<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />ale również ten <br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />bo widać, że kolega na razie w ogóle nie wie co to znaczy maskowanie i jak do tego podchodzić<br /><br />polecam też zdecydowanie zacząć od książki<br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br /><div class="quotetitle">marcinceber napisał(a):</div><div class="quotecontent"><br />Czy brnę w ogóle w dobrą stronę?<br /></div><br />bo rzeczywiście kolega brnie niestety w ślepą uliczkę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 paź 2017, o 09:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marcinceber]]></name></author>
<updated>2017-10-19T09:01:02+01:00</updated>
<published>2017-10-19T09:01:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197346#p197346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197346#p197346"/>
<title type="html"><![CDATA[Sprawdzanie stanu na całym porcie i działanie na nim.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19416&amp;p=197346#p197346"><![CDATA[
Jako, że to mój pierwszy post chciałbym się z wszystkimi przywitać na forum! <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Tworzę program na Atmega8, który ma mieć za zadanie:<br /><br />sprawdzić czy na porcie PC (całym) są stany zerowe -&gt; jeśli pojawi się sygnał na którymś z portów (ale mają to być określone sygnały) ma wykonać odpowiednią instrukcje (miganie diodą).<br />Jeśli żadna z opcji się nie sprawdzi to dioda ma zacząć szybko mrugać.<br /><br />napisałem taki kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />// definicja kompenentow wejscia<br />#define PRZEKAZNIK1 (1&lt;&lt;PC0) //PC0<br />#define PRZEKAZNIK2   (1&lt;&lt;PC1) //PC1<br />#define PRZEKAZNIK3    (1&lt;&lt;PC2) //PC2<br />#define PRZEKAZNIK4    (1&lt;&lt;PC3) //PC3<br />#define PRZEKAZNIK5  (1&lt;&lt;PC4) //PC4<br />#define STATUS     (1&lt;&lt;PB1) //PB5<br />#define STATUS_ZMIANA PORTB ^=STATUS<br />#define PUSTE_WEJSCIA (PINC &amp; 0b00000000)<br /><br /><br />int main(void)<br />{<br />DDRC &amp;= ~PRZEKAZNIK1;<br />DDRC &amp;= ~PRZEKAZNIK2;<br />DDRC &amp;= ~PRZEKAZNIK3;<br />DDRC &amp;= ~PRZEKAZNIK4;<br />DDRC &amp;= ~PRZEKAZNIK5;<br />DDRB |= STATUS;<br />PORTC |= STATUS;<br /><br />while(1)<br />{<br />if(PUSTE_WEJSCIA)<br />{<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />STATUS_ZMIANA;<br />}<br />else<br />{<br /><br />switch(PINC)<br />{<br />case PRZEKAZNIK1:<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />break;<br /><br />case PRZEKAZNIK2:<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />break;<br />case PRZEKAZNIK3:<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />break;<br /><br />case PRZEKAZNIK4:<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />break;<br />case PRZEKAZNIK5:<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(1000);<br />break;<br /><br />default:<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />STATUS_ZMIANA;<br />_delay_ms(200);<br />break;<br />}<br />}<br />}<br />}[/syntax] <br /><br />Moje pytania: <br /><br />Czy definicja PUSTE_WEJSCIA (PINC &amp; 0b00000000) sprawdza czy stany są zerowe na pinach?<br />Czy w funkcji switch case mogę używać pętli for? Bo miałem problem z kompilacją jak użyłem pętli for(chciałem jej użyć do migania diodą)<br />Czy brnę w ogóle w dobrą stronę? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Serdecznie pozdrawiam<br />Marcin<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18107">marcinceber</a> — 19 paź 2017, o 09:01</p><hr />
]]></content>
</entry>
</feed>