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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-04-05T14:57:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18060&amp;mode</id>
<entry>
<author><name><![CDATA[Jeziu]]></name></author>
<updated>2017-04-05T14:57:33+01:00</updated>
<published>2017-04-05T14:57:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186407#p186407</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186407#p186407"/>
<title type="html"><![CDATA[Re: Generator impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186407#p186407"><![CDATA[
Ok, dzieki.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5492">Jeziu</a> — 5 kwi 2017, o 14:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-04-03T16:07:44+01:00</updated>
<published>2017-04-03T16:07:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186258#p186258</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186258#p186258"/>
<title type="html"><![CDATA[Re: Generator impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186258#p186258"><![CDATA[
Witam<br /><div class="quotetitle">Jeziu napisał(a):</div><div class="quotecontent"><br />...posiadam bluebooka<br /></div><br />Więc &quot;zawzoruj&quot; się na PWM'em programowym, chyba że źle zrozumiałem ideę.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 3 kwi 2017, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeziu]]></name></author>
<updated>2017-04-03T12:53:47+01:00</updated>
<published>2017-04-03T12:53:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186245#p186245</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186245#p186245"/>
<title type="html"><![CDATA[Generator impulsów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18060&amp;p=186245#p186245"><![CDATA[
Witam serdecznie,<br />Jako że to mój pierwszy post to sie przedstawię: na imię mam Grzegorz i właśnie zaczynam z C na AVRach, posiadam bluebooka + ATB1.04b.<br /><br />Chciałbym zrealizować projekt - generator impulsów, pięciu impulsów . Istotna jest tutaj długość trwania każdego impulsu, stanu wysokiego oraz niskiego.<br />Napisałem taki kod:<br /><br />[syntax=c]// rezonator kwarcowy 11059200<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define Impuls_1 (1&lt;&lt;PA0)<br />#define Impuls_2 (1&lt;&lt;PA1)<br />#define Impuls_3 (1&lt;&lt;PA2)<br />#define Impuls_4 (1&lt;&lt;PA3)<br />#define Impuls_5 (1&lt;&lt;PA4)<br /><br />#define Impuls_1_ON  PORTA |= (1&lt;&lt;PA0)<br />#define Impuls_2_ON  PORTA |= (1&lt;&lt;PA1)<br />#define Impuls_3_ON  PORTA |= (1&lt;&lt;PA2)<br />#define Impuls_4_ON  PORTA |= (1&lt;&lt;PA3)<br />#define Impuls_5_ON  PORTA |= (1&lt;&lt;PA4)<br /><br />#define Impuls_1_OFF PORTA &amp;= ~(1&lt;&lt;PA0)<br />#define Impuls_2_OFF PORTA &amp;= ~(1&lt;&lt;PA1)<br />#define Impuls_3_OFF PORTA &amp;= ~(1&lt;&lt;PA2)<br />#define Impuls_4_OFF PORTA &amp;= ~(1&lt;&lt;PA3)<br />#define Impuls_5_OFF PORTA &amp;= ~(1&lt;&lt;PA4)<br /><br /><br />uint16_t timer_Impuls_1;// Timery napędzające impulsy<br />uint16_t timer_Impuls_2;<br />uint16_t timer_Impuls_3;<br />uint16_t timer_Impuls_4;<br />uint16_t timer_Impuls_5;<br /><br />uint16_t timer_Impuls_1_max = 32;// Dlugosci impulsów = stan H + stan L<br />uint16_t timer_Impuls_2_max = 770;<br />uint16_t timer_Impuls_3_max = 770;<br />uint16_t timer_Impuls_4_max = 170;<br />uint16_t timer_Impuls_5_max = 170;<br /><br /><br />volatile uint8_t ms1;// 1ms podstawa czasu<br /><br />void timers(void);// Funkcja napedzająca Timery<br /><br /><br /><br />int main(void){<br /><br />DDRA  |= Impuls_1|Impuls_2|Impuls_3|Impuls_4|Impuls_4;// Wyjscia dla Portu A<br /><br /><br />//Inicjalizacja Timera 0<br />TCCR0A |= (1&lt;&lt;WGM01);//Timer 0 tryb CTC<br />TCCR0B |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00);//Preskaler 64<br />TIMSK0 |= (1&lt;&lt;OCIE0A);//Timer/Counter0, Output Compare A Match Interrupt Enable<br />OCR0A = 172;//Wartosc do porownania<br /><br /><br />sei();<br /><br />while (1) {<br /><br />//Generowanie inmpulsów<br />if ( ms1 ) timers();<br /><br />if ( timer_Impuls_1 == 0 ) Impuls_1_OFF;<br />if ( timer_Impuls_1 == 4 ) Impuls_1_ON;<br /><br />if ( timer_Impuls_2 == 0 ) Impuls_2_OFF;<br />if ( timer_Impuls_2 == 70 ) Impuls_2_ON;<br /><br />if ( timer_Impuls_3 == 0 ) Impuls_3_OFF;<br />if ( timer_Impuls_3 == 70 ) Impuls_3_ON;<br /><br />if ( timer_Impuls_4 == 0 ) Impuls_4_OFF;<br />if ( timer_Impuls_4 == 20 ) Impuls_4_ON;<br /><br />if ( timer_Impuls_5 == 0 ) Impuls_5_OFF;<br />if ( timer_Impuls_5 == 20 ) Impuls_5_ON;<br /><br />}<br /><br /><br />}<br /><br />ISR(TIMER0_COMPA_vect) {<br />ms1=1;<br />}<br /><br /><br />void timers(void){<br /><br />timer_Impuls_1++;<br />timer_Impuls_2++;<br />timer_Impuls_3++;<br />timer_Impuls_4++;<br />timer_Impuls_5++;<br /><br />if ( timer_Impuls_1 == timer_Impuls_1_max ) timer_Impuls_1 = 0;<br />if ( timer_Impuls_2 == timer_Impuls_2_max ) timer_Impuls_2 = 0;<br />if ( timer_Impuls_3 == timer_Impuls_3_max ) timer_Impuls_3 = 0;<br />if ( timer_Impuls_4 == timer_Impuls_4_max ) timer_Impuls_4 = 0;<br />if ( timer_Impuls_5 == timer_Impuls_5_max ) timer_Impuls_5 = 0;<br /><br />ms1=0;<br /><br />}[/syntax]<br /><br />Generalnie kod działa poprawnie, można też go zmienić żeby była mozliwość zmiany długości stanu wysokiego i niskiego impulsów.<br />Natomiast nie mogę sobie poradzić z czymś innym , a mianowicie:<br /><br /> - zmiana wartości długości czasu impulsu powinna odbywac sie płynnie w, z góry zadanym, czasie ( w mili sekundach), rozpędzanie i chamowanie;<br /> - impulsy są ze sobą powiązane tzn. trzeba je przyspieszać / chamować wszystkie na raz proporcjonalnie np.: wszystko zmieniamy  o +/- 30% w czasie 500ms<br />   albo startujemy od 0 do 100% w czasie 200 ms, etc. ;<br /><br />Generalnie poczyniłem juz pewne próby, ale wyszły mi takie &quot;potworki&quot; że wstyd to pokazać na forum, kod był zupełnie nieczytelny no i nie działał <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Dlatego wyczyściłem go ze wszystkich &quot;smieci&quot; i postanowiłem poprosic o wsparcie.<br />Jeżeli możecie coś podpowiedzieć to będę bardzo wdzięczny.<br /><br />Dodam że generalnie program ma symulować pracę maszyny (silnika elektrycznego który napędza też inne elementy) - wszystko to razem <br />generuje impulsy które są odczytywane przez jakiś tam sterownik w celu monitorowania pracy całego użądzenia.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5492">Jeziu</a> — 3 kwi 2017, o 12:53</p><hr />
]]></content>
</entry>
</feed>