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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-12-23T15:40:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1974&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-23T15:40:21+01:00</updated>
<published>2012-12-23T15:40:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21951#p21951</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21951#p21951"/>
<title type="html"><![CDATA[Re: pwm zmiana za pomoca przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21951#p21951"><![CDATA[
<div class="quotetitle">jrq napisał(a):</div><div class="quotecontent"><br />A co do _BV dlaczego nie warto tego używać?<br /></div><br /><br />Tak jak napisał kolega wyżej .... ja dodam tylko, że każdy początkujący, który zamiast przesunięć korzysta z kociego makra _BV() ..... to widać od razu na kilometr - że nie do końca zrozumiał działanie przesunięć i stara się przed tym uciekać - a jak widać to się szybko mści <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />dlatego dobra solucja - na naszym forum - jak prezentujemy kody to używamy przesunięć ..... poza tym jak sam się przyzwyczaisz do ich używania - to szybko też dojdziesz do wniosku że kod źródłowy o 100x lepiej wygląda <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />wesołych świąt <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=54">mirekk36</a> — 23 gru 2012, o 15:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wrangler]]></name></author>
<updated>2012-12-23T13:58:48+01:00</updated>
<published>2012-12-23T13:58:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21944#p21944</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21944#p21944"/>
<title type="html"><![CDATA[Re: pwm zmiana za pomoca przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21944#p21944"><![CDATA[
Nie tyle, co nie warto - po prostu Mirek preferuje ustawianie konkretnych bitów za pomocą przesunięć, a np. dla porównania T. Francuz (autor innej książki do AVRów) wykorzystuje makro _BV(PBX). <br />Na forum przyjęły się przesunięcia bitowe, bo faktycznie kod jest wtedy czytelniejszy i łatwiej znaleźć ewentualną pomyłkę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=223">Wrangler</a> — 23 gru 2012, o 13:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jrq]]></name></author>
<updated>2012-12-23T13:26:14+01:00</updated>
<published>2012-12-23T13:26:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21942#p21942</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21942#p21942"/>
<title type="html"><![CDATA[Re: pwm zmiana za pomoca przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21942#p21942"><![CDATA[
Dzięki już chodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />, właśnie jestem w trakcie przerabiania tej książki niestety to mi umknęło.<br />A co do _BV dlaczego nie warto tego używać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=760">jrq</a> — 23 gru 2012, o 13:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-12-23T13:17:10+01:00</updated>
<published>2012-12-23T13:17:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21941#p21941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21941#p21941"/>
<title type="html"><![CDATA[Re: pwm zmiana za pomoca przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21941#p21941"><![CDATA[
[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define przycisk _BV(PB0)<br />void pwmlow(void);<br />void pwmhigh(void);<br />uint8_t klawisz_wcisniety(uint8_t klawisz);<br /><br />int main(void)<br />{<br />DDRB &amp;= ~przycisk;<br />PORTB |= przycisk;<br />DDRD |= _BV(PD2); // kierunek ruchu silnika<br />PORTD |= _BV(PD2);//<br /><br />if(klawisz_wcisniety(przycisk))<br />void pwmlow(void); ///////miejsce błędu &lt;- te oba void'y są nie potrzebne!<br />else<br />void pwmhigh(void); ////// miejsce błędu &lt;- j.w<br />return 0;<br /><br />}<br /><br /><br /><br />void pwmlow(void) <br />{<br /><br />DDRB |= _BV(PB1);<br />TCCR1A |= _BV(COM1A1) | _BV(WGM11);<br />TCCR1B |= _BV(WGM13) | _BV(WGM12) | _BV (CS12) | _BV(CS10);<br /><br />ICR1=1000;<br />OCR1A=800;<br />for(;;);<br /><br />}<br />void pwmhigh(void)<br />{<br /><br />DDRB |= _BV(PB1);<br />TCCR1A |= _BV(COM1A1) | _BV(WGM11);<br />TCCR1B |= _BV(WGM13) | _BV(WGM12) | _BV (CS12) | _BV(CS10);<br /><br />ICR1=1000;<br />OCR1A=900;<br />for(;;);<br /><br />}<br /><br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br />{<br />if(!(PINB &amp; przycisk))<br />{<br />_delay_ms(80);<br />if(!(PINB &amp; przycisk))<br />{<br />return 1;<br />}<br />return 0;<br />}<br />}[/syntax]<br /><br />Te void służy do zadeklarowania i zdefiniowania funkcji która niczego nie zwraca w programie. Funkcję należy wywoływać w ten sposób:<br />pwmlow() itp.  <br />Swoją drogą używaj operacji bitowych(tutaj masz to wyjaśnione: <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/01/avr-porty-wewy-dir-podstawy.html" >http://mirekk36.blogspot.com/2012/01/av ... stawy.html</a><!-- m -->) a nie mark _BV a najlepiej będzie jak się wyposażysz w tą pozycję: <!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --> bo widać u ciebie spore braki w rozumieniu języka C. <br /><br />Jeszcze jedna uwaga otóż widzę że zapomniałeś o klamrach w instrukcji warunkowej a wykonujesz więcej niż jedną operację więc te klamry powinny być.<br /><br />Pozdrawiam i życzę wesołych świąt!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 23 gru 2012, o 13:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2012-12-23T13:11:55+01:00</updated>
<published>2012-12-23T13:11:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21940#p21940</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21940#p21940"/>
<title type="html"><![CDATA[Re: pwm zmiana za pomoca przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21940#p21940"><![CDATA[
Pierwsze spostrzeżenia:<br />1. Jak dodajesz kod umieść go w znacznikach coda dla C.<br />2. Źle zdefiniowałeś przycisk.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 23 gru 2012, o 13:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jrq]]></name></author>
<updated>2012-12-23T13:04:27+01:00</updated>
<published>2012-12-23T13:04:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21937#p21937</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21937#p21937"/>
<title type="html"><![CDATA[pwm zmiana za pomoca przycisku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1974&amp;p=21937#p21937"><![CDATA[
Dzień dobry,<br /><br />Chce stworzyć program, który zmienia pwm w atmega8 pod wpływem przyciśnięcia przycisku na wejściu PB0.<br />Steruje silnikiem przez scalaka l293d, niestety po drobnych zmianach program nawet nie chce się skompilować.<br />Wywala błąd &quot;expected expression before 'void'&quot; w miejscu zaznaczonym w programie. Proszę o pomoc w zrealizowaniu tego pomysłu.<br /><br />[syntax=c]<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define przycisk _BV(PB0)<br />void pwmlow(void);<br />void pwmhigh(void);<br />uint8_t klawisz_wcisniety(uint8_t klawisz);<br /><br />int main(void)<br />{<br />DDRB &amp;= ~przycisk;<br />PORTB |= przycisk;<br />DDRD |= _BV(PD2); // kierunek ruchu silnika<br />PORTD |= _BV(PD2);//<br /><br />if(klawisz_wcisniety(przycisk))<br />void pwmlow(void); ///////miejsce błędu<br />else<br />void pwmhigh(void); ////// miejsce błędu<br />return 0;<br /><br />}<br /><br /><br /><br />void pwmlow(void) <br />{<br /><br />   DDRB |= _BV(PB1);<br />   TCCR1A |= _BV(COM1A1) | _BV(WGM11);<br />   TCCR1B |= _BV(WGM13) | _BV(WGM12)  | _BV (CS12) | _BV(CS10);<br /><br />   ICR1=1000;<br />   OCR1A=800;<br />   for(;;);<br /><br />}<br />  void pwmhigh(void)<br />   {<br /><br />      DDRB |= _BV(PB1);<br />      TCCR1A |= _BV(COM1A1) | _BV(WGM11);<br />      TCCR1B |= _BV(WGM13) | _BV(WGM12)  | _BV (CS12) | _BV(CS10);<br /><br />      ICR1=1000;<br />      OCR1A=900;<br />      for(;;);<br /><br />   }<br /><br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br />{<br />if(!(PINB &amp; przycisk))<br />{<br />_delay_ms(80);<br />if(!(PINB &amp; przycisk))<br />{<br />return 1;<br />}<br />return 0;<br />}<br />}<br /><br />[/syntax]<br /><br /><strong><span style="color: #FF0000">Wstawiłem znaczniki - SunRiver<br />Następnym razem do lochu .....</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=760">jrq</a> — 23 gru 2012, o 13:04</p><hr />
]]></content>
</entry>
</feed>