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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-28T16:39:00+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18006&amp;mode</id>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2017-03-28T16:39:00+01:00</updated>
<published>2017-03-28T16:39:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185811#p185811</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185811#p185811"/>
<title type="html"><![CDATA[Re: uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185811#p185811"><![CDATA[
<div class="quotetitle">BePower napisał(a):</div><div class="quotecontent"><br />że więcej ich już nie zrobię bo wstyd<br /></div><br />To nie wstyd, to nauka... Nie widziałeś moich błędów i pytań pierwszych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 28 mar 2017, o 16:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BePower]]></name></author>
<updated>2017-03-28T16:34:13+01:00</updated>
<published>2017-03-28T16:34:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185810#p185810</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185810#p185810"/>
<title type="html"><![CDATA[Re: uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185810#p185810"><![CDATA[
Dziękuję jeszcze raz za odpowiedź i za szybką i rzeczową pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Przeanalizowałem sobie swoje błędy i obiecuję, że więcej ich już nie zrobię bo wstyd ! <br />Operacje I/O to podstawa !<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15601">BePower</a> — 28 mar 2017, o 16:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2017-03-28T16:25:38+01:00</updated>
<published>2017-03-28T16:25:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185809#p185809</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185809#p185809"/>
<title type="html"><![CDATA[Re: uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185809#p185809"><![CDATA[
aż wziąłem zestaw i zrobiłem takie coś. Działa jak ta lala. Wgraj to z mojego postu wyżej.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br /><div class="quotetitle">BePower napisał(a):</div><div class="quotecontent"><br />czemu mi to nie działało wcześniej<br /></div><br />przeanalizuj co zrobiłeś. <br /><br />Były dwa błędy: <br />PORTD &amp;= ~KEY_PIN; tu ustawiasz kierunek portu więc używasz rejestru DDRD<br />PIND |= KEY_PIN; a tu masz podciągnąć pin do VCC, czyli wymusić jakiś stan na pinie więc ustawiasz rejestr WYJSCIOWY prawda?? Stąd trzeba użyć PORTD a nie PIND... Jasne już?<br /><br />Zbędne również jest to:<br />PORTD |= SPEAKER_PIN; //wlaczenie buzzera<br />bo jedyne co tym robisz to mega krótkie piknięcie, którego i tak nie usłyszysz. program wejdzie w main, włączy buzzer ale natychmiast po tym wchodzisz w funkcję sprawdzania klawisza i wyłączasz buzzer. W tym wypadku piknięcie trwa nieco ponad 100ms - tyle co delay w funkcji klawiszy plus kilka taktów na obsługę funkcji<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 28 mar 2017, o 16:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BePower]]></name></author>
<updated>2017-03-28T16:21:05+01:00</updated>
<published>2017-03-28T16:21:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185808#p185808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185808#p185808"/>
<title type="html"><![CDATA[Re: uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185808#p185808"><![CDATA[
Hmm... dziwne zjawisko. Tylko oby nie wyszło na to, że uszkodziłem uP. Ale do rzeczy. <br /><br />Po zmianie PORTD &amp;= ~KEY_PIN;  na DDRD &amp;= ~KEY_PIN;<br />Nadal jest to samo. Nie wiem, może mam uszkodzony uP? Może spróbować &quot;przeportować&quot; kod, czyli zmienić mu port na przykład z D na A? <br /><br />Po wgraniu wsadu od razu wyje. Po jakimś czasie wyć przestaje...:O <br />Wsad wgrany - teraz podpinam buzzer i cisza...włączam klawisz i niby zadziałało. Później nacisnąłem jeszcze raz i zaczęło wyć już cały czas od nowa. Nie rozumiem tego.<br /><br />Płytkę mam wpiętą pod zasilanie USB idzie to wszystko przez przetworniczkę. Napięcie zasilania stabilne kurde blade....<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />Dzięki <strong>skalarro</strong> działa !!!! <br />Hmm.....czemu mi to nie działało wcześniej. Co robiłem źle? Możesz na szybko odpowiedzieć. Mimo wszystko przypatrzę się twojemu kodowi źródłowemu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15601">BePower</a> — 28 mar 2017, o 16:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2017-03-28T16:02:36+01:00</updated>
<published>2017-03-28T16:02:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185801#p185801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185801#p185801"/>
<title type="html"><![CDATA[Re: uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185801#p185801"><![CDATA[
PORTD &amp;= ~KEY_PIN; //kierunek pinu PD7 - wejsciowy   zmień na <br />DDRD<br />PIND |= KEY_PIN; //podciagniecie pinu PD7 do VCC zmień na PORTD<br /><br />Wgraj to:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define SPEAKER_PIN (1&lt;&lt;PD6) //definicja pinu do którego jest podpiety buzzer<br />#define BUZZER_ON PORTD |= SPEAKER_PIN //makro wlaczanie buzzera (STANEM WYSOKIM)<br />#define BUZZER_OFF PORTD &amp;= ~SPEAKER_PIN // makro dla stanu niskiego na pinie do buzzera<br />#define KEY_PIN (1&lt;&lt;PD7) //definicja pinu do którego jest podpięty klawisz<br />#define KEY_DOWN !(PIND &amp; KEY_PIN) //makro sprawdzajace czy jest STAN NISKI<br /><br />uint8_t klawisz_wcisniety(void);<br /><br />int main (void)<br />{<br />        ////------------INICJALIZACJA-----------------<br />        DDRD |= SPEAKER_PIN; //kierunek pinu PD6 - wyjsciowy<br />        PORTD |= SPEAKER_PIN; //wlaczenie buzzera<br />        DDRD &amp;= ~KEY_PIN; //kierunek pinu PD7 - wejsciowy<br />        PORTD |= KEY_PIN; //podciagniecie pinu PD7 do VCC<br /><br />        while(1)<br />        {<br />                if(klawisz_wcisniety())<br />                {<br />                        BUZZER_ON;<br />                }<br />                else<br />                        {<br />                        BUZZER_OFF;<br />                        }<br />        }<br />}<br /><br />uint8_t klawisz_wcisniety(void)<br />        {<br />                if (KEY_DOWN)<br />                {<br />                        _delay_ms(100);<br />                        if(KEY_DOWN) return 1;<br />                }<br />                return 0;<br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 28 mar 2017, o 16:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BePower]]></name></author>
<updated>2017-03-28T15:58:15+01:00</updated>
<published>2017-03-28T15:58:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185799#p185799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185799#p185799"/>
<title type="html"><![CDATA[Re: uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185799#p185799"><![CDATA[
Po zastosowanych zmianach kod wygląda tak:<br />*<br /> [syntax=c]* main.c<br /> *<br /> *  Created on: 27 mar 2017<br /> *      Author: Adrian<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define SPEAKER_PIN (1&lt;&lt;PD6) //definicja pinu do którego jest podpiety buzzer<br />#define BUZZER_ON PORTD |= SPEAKER_PIN //makro wlaczanie buzzera (STANEM WYSOKIM)<br />#define BUZZER_OFF PORTD &amp;= ~SPEAKER_PIN // makro dla stanu niskiego na pinie do buzzera<br />#define KEY_PIN (1&lt;&lt;PD7) //definicja pinu do którego jest podpięty klawisz<br />#define KEY_DOWN !(PIND &amp; KEY_PIN) //makro sprawdzajace czy jest STAN NISKI<br /><br />uint8_t klawisz_wcisniety(void);<br /><br />int main (void)<br />{<br />////------------INICJALIZACJA-----------------<br />DDRD |= SPEAKER_PIN; //kierunek pinu PD6 - wyjsciowy<br />PORTD |= SPEAKER_PIN; //wlaczenie buzzera<br />PORTD &amp;= ~KEY_PIN; //kierunek pinu PD7 - wejsciowy<br />PIND |= KEY_PIN; //podciagniecie pinu PD7 do VCC<br /><br />while(1)<br />{<br />if(klawisz_wcisniety())<br />{<br />BUZZER_ON;<br />}<br />else<br />{<br />BUZZER_OFF;<br />}<br />}<br />}<br /><br />uint8_t klawisz_wcisniety(void)<br />{<br />if (KEY_DOWN)<br />{<br />_delay_ms(100);<br />if(KEY_DOWN) return 1;<br />}<br />return 0;<br />}[/syntax]<br /><br />Nadal to samo. <br />Objaw: Po wgraniu wsadu - buzzer wyje bez względu, który uSwitch mu podepnę i nacisnę.<br />Na pinie PD6 ciągle panuje stan wysoki VCC, na pinie PD7 również stan wysoki VCC, gdy wciskam klawisz stan niski GND - mierzone multimetrem.<br />Wydaje mi się, że coś pokopałem z tą całą inicjalizacją i makrami :/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15601">BePower</a> — 28 mar 2017, o 15:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2017-03-28T15:42:46+01:00</updated>
<published>2017-03-28T15:42:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185796#p185796</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185796#p185796"/>
<title type="html"><![CDATA[Re: uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185796#p185796"><![CDATA[
if(klawisz_wcisniety())<br />                {<br />                        BUZZER_ON;<br />                }else BUZZER_OFF;<br /><br />i oczywiście definicja dla BUZZER_OFF<br /><br />na razie  zrobiłeś tak, że w main włączasz buzzer a w while(1) sprawdzasz czy wciśnięty jest klawisz. Z tym, że buzzer cały czas jestr włączony. Musisz go wyłączyć, jeżeli sprawdzisz, że nie jest wduszony klawisz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 28 mar 2017, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BePower]]></name></author>
<updated>2017-03-28T15:33:27+01:00</updated>
<published>2017-03-28T15:33:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185795#p185795</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185795#p185795"/>
<title type="html"><![CDATA[uSwitch + Buzzer]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18006&amp;p=185795#p185795"><![CDATA[
Witajcie,<br />mam taki malutki (głupi) problem i nie wiem jak sobie z tym poradzić. Jako, że to co robię jest na prawdę banalne więc raczej nie będę wstawiał schematu ideowego bo mogę to łatwo opisać słowami.<br /><br /><strong>Kwestia jest taka:</strong><br /><br />Chcę sterować buzzerem jest podłączony do pinu PD6 uP <strong>STANEM WYSOKIM</strong>. Za pomocą przycisku, który jest podłączony do pinu PD7. Przycisk zwierany jest do masy. Więc programowo sprawdzam <strong>STAN NISKI</strong> na porcie PD7 właśnie.<br />Problem jest taki, że mam ciągle cały czas stan wysoki na pinie buzzera (PD6) nie wiem dlaczego co objawia się ciągłym wyciem bez względu na to czy klawisz jest wciśnięty czy nie. Domyślam się, że coś przekombinowałem z konfiguracją i makrodefinicjami pinów. <br />Prosiłbym was o rzucenie okiem na kod poniżej. <br />P.S kod jest w miarę skomentowany więc nie będzie raczej problemu ze zrozumieniem idei.<br /><em>A idea jest taka, że chcę aby buzzer wydawał dźwięk tylko podczas gdy klawisz jest wciśnięty</em><br />Chciałbym nadmienić, że posługuję się płytką ATB 1.04b i korzystam z <span style="color: #0080FF">BlueBooka</span><br />Więc opierając się o BlueBook napisałem taki kod:<br />[syntax=c]*<br /> * main.c<br /> *<br /> *  Created on: 27 mar 2017<br /> *      Author: Adrian<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define SPEAKER_PIN (1&lt;&lt;PD6) //definicja pinu do którego jest podpiety buzzer<br />#define BUZZER_ON PORTD |= SPEAKER_PIN //makro wlaczanie buzzera (STANEM WYSOKIM)<br />#define KEY_PIN (1&lt;&lt;PD7) //definicja pinu do którego jest podpięty klawisz<br />#define KEY_DOWN !(PIND &amp; KEY_PIN) //makro sprawdzajace czy jest STAN NISKI<br /><br />uint8_t klawisz_wcisniety(void);<br /><br />int main (void)<br />{<br />////------------INICJALIZACJA-----------------<br />DDRD |= SPEAKER_PIN; //kierunek pinu PD6 - wyjsciowy<br />PORTD |= SPEAKER_PIN; //wlaczenie buzzera<br />DDRD &amp;= ~KEY_PIN; //kierunek pinu PD7 - wejsciowy<br />PIND |= KEY_PIN; //podciagniecie pinu PD7 do VCC<br /><br />while(1)<br />{<br />if(klawisz_wcisniety())<br />{<br />BUZZER_ON;<br />}<br />}<br />}<br /><br />uint8_t klawisz_wcisniety(void)<br />{<br />if (KEY_DOWN)<br />{<br />_delay_ms(100);<br />if(KEY_DOWN) return 1;<br />}<br />return 0;<br />}[/syntax]<br />Pytanie: Czy w linii 25 kodu powinno być PIND czy PORTD ? <br />W BlueBook jest PORTX - ale to przecież jest rejestr wyjściowy, a ja przecież sprawdzam stan na pinie. <br />Więc domyślnie napisałem PINX czyli w moim przypadku PIND |= KEY_PIN;<br />Z ksiązki dowiedziałem się, że niepotrzebna jest linia <em>DDRD &amp;= ~KEY_PIN;</em> bo bity w rejestrze DDRD po resecie są już ustawione na 0 logiczne. <br />Po kompilacji i załadowaniu wsadu buzzer ciągle mi wyje bez względu czy klawisz jest wciśnięty czy nie. Tak jakby od razu wykrywał mi stan niski po resecie. Nie wiem jak sobie z tym poradzić :/ próbowałem negować argumenty if'a itp.  <br />Dzięki raz jeszcze za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15601">BePower</a> — 28 mar 2017, o 15:33</p><hr />
]]></content>
</entry>
</feed>