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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-10-19T21:25:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22613&amp;mode</id>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-19T21:25:45+01:00</updated>
<published>2019-10-19T21:25:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222576#p222576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222576#p222576"/>
<title type="html"><![CDATA[Re: Wygenerowanie grupy 13 impulsów przy pomocy Timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222576#p222576"><![CDATA[
Zmieniłem koncepcję programu ponieważ mój biedny Attmega32  chyba nie da rady  chyba ??? nie wiem w tym momencie czy na pewno chociaż koledzy już wspominali , że za wolny procesor <br />napotkałem na inne problemy zwłoki czasowej reakcji na przerwanie a ja muszę mieć czas w tym  krótkim momencie nie wykonam tego, mam pozajmowanie inne przerwania , które zakłucają <br />przerwanie ICP.  Impulsy są za krótkie . <br />Stworzyłem impulsy za pomocą układu CD1493 i otrzymałem zakładane zadanie , ale już to mnie satysfakcjonuje bo chciałem to zrobić to na AVR <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />i teraz dalsze problemy  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br />stworzyłem instrukcję :<br /><br />[syntax=c]void DD (void){      // funkcja pozwala wystawic na wyjsciu stanlini DD<br /><br /><br />                      if ((PIND &amp; (1&lt;&lt;PD6)) ==0 )    // jesli 0 to wystaw stan 1<br />                                             {<br /><br />                                          //PORTA |=(1&lt;&lt;PA1);<br /><br />w przerwaniach nie dam rady bo mam ICP nie włączę innych przerwań bo czasy krótkie,  to mam rozbudować układ na cd CD1493 no ale nie tak chciałem ???<br />Jak mogę to wyliczyć czy brnąć w to dalej czy zdążę ?????<br />void CLK (void) {<br /><br />// funkcja pozwala wystawic na wyjsciu stanlini CLK<br /><br />                 if ((PINB &amp; (1&lt;&lt;PB2)) ==0 )    // jesli 0 to wystaw stan 1<br />                                             {<br /><br />                                          //PORTD |=(1&lt;&lt;PD7);<br />                                                         s_clk=1;<br />                                         }<br />              else                         // jesli 1 to wystaw stan 0<br />                                         {<br /><br />                                       //PORTD &amp;= ~(1&lt;&lt;PD7);<br />                                      s_clk=0;<br />                                         }<br />}<br /><br /><br /><br />                                                             s_dd=1;<br />                                         }<br />              else                         // jesli 1 to wystaw stan 0<br />                                         {<br /><br />                                     //PORTA &amp;= ~(1&lt;&lt;PA1);<br />                                     s_dd=0;<br />                                         }[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 11 minutach ]</span></strong><br /><br />wszystko bardzo fajnie zmienne przyjmują stany o lub 1 w zależności od CLK i DD i nawet pętla nadąża, na analizatorze widzę jest ok  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  ale    jak włączam wyświetlanie na LCD  to staje się kicha impulsy zanikają  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />[syntax=c]if ((s_dd==0) &amp;&amp; (s_clk==1)    {<br /><br />                         PORTD |=(1&lt;&lt;PD7);<br />                         PORTD &amp;= ~(1&lt;&lt;PD7);<br />                         T=1;<br /><br />                            }<br />          else (T=0);[/syntax]<br />zmienna T zmienia się stabilnie i  jest ok w analizatorze widzę impulsy , a jak zainicjalizuję LCD to  QURCZE jest kicha :<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 33 minutach ]</span></strong><br /><br />Dlaczego włączenie LCD tak blokuje mi impulsy nie rozumem tego oczywiście LCD to biblioteka Mirka, ale czy to zajmuje  aż tak wymaganego czasu?????<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 19 paź 2019, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Slawek5791]]></name></author>
<updated>2019-10-15T20:09:37+01:00</updated>
<published>2019-10-15T20:09:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222502#p222502</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222502#p222502"/>
<title type="html"><![CDATA[Re: Wygenerowanie grupy 13 impulsów przy pomocy Timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222502#p222502"><![CDATA[
Zobacz w BB projekt dotyczący sterowania fazowego. Tam jest to zastosowane dla timera2<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8744">Slawek5791</a> — 15 paź 2019, o 20:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-15T17:27:49+01:00</updated>
<published>2019-10-15T17:27:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222495#p222495</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222495#p222495"/>
<title type="html"><![CDATA[Re: Wygenerowanie grupy 13 impulsów przy pomocy Timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222495#p222495"><![CDATA[
No tak ale jak mogę włączyć lub wyłączyć preskaler??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 15 paź 2019, o 17:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-15T08:37:01+01:00</updated>
<published>2019-10-15T08:37:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222486#p222486</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222486#p222486"/>
<title type="html"><![CDATA[Wygenerowanie grupy 13 impulsów przy pomocy Timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22613&amp;p=222486#p222486"><![CDATA[
Witam.<br /><br />Pragnę podpowiedzi w temacie - jak w odpowiedzi na opadające zbocze sygnału wygenerować grupę 13 impulsów?<br />Do pierwszego wzbudzenia Timera wykorzystam przerwanie  ICP , które to robi pomiar impulsów bo chodzi o to aby start generowanego impulsu nastąpił w chwili gdy przychodzi pierwszy<br />impuls ramki - tak to wygląda w przerwaniu:<br /><br />[syntax=c]ISR(TIMER1_CAPT_vect)    {<br />  static uint16_t LastCapture;<br />         uint16_t PulseWidth;<br /><br />         PulseWidth = ICR1 - LastCapture;<br />         LastCapture = ICR1;<br /><br />  if (PulseWidth&gt;4000)  {<br />                            // jesli zmierzony impus jest taki długi to nadchodzi pierwszy impuls ramki <br />                                           // tu muszę w jakiś sposób wykonać START TIMERA<br /><br />                                   }[/syntax]<br /><br />[syntax=c]Timer mam tak skonfigurowany i działa na wygenerowanie impulsów ok 12us:<br />// ustawienie TIMER0<br />    TCCR0 |= (1&lt;&lt;WGM01);// tryb CTC<br />    TCCR0 |= (1&lt;&lt;CS01);               // preskaler<br />    OCR0 = 1;// dodatkowy podział przez 39 (rej. przepełnienia)<br />    TIMSK |= (1&lt;&lt;OCIE0);// zezwolenie na przerwanie CompareMatch<br /><br />     sei();     // GLOBALNE URUCHOMIENIE PRZERWAŃ[/syntax]<br /><br />[syntax=c]ISR(TIMER0_COMP_vect){                             // przerwanie wywołane po odliczeniu czasu trwania impulsu<br /><br /><br />                                     }[/syntax]<br /><br />Timer generuje krótkie impulsy ale to tylko wiem że działa.<br />Teraz chciałbym aby na pinie PA1  wytworzyć  taki przebieg , który wyglądałby tak:<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 32 minutach ]</span></strong><br /><br /><a href="https://obrazkiforum.atnel.pl/18152/22b999e9ee397d4f234d9270404ce174.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/18152/22b999e9ee397d4f234d9270404ce174.JPG" alt="Obrazek" /></a><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 36 minutach ]</span></strong><br /><br />Na pewno trzeba stworzyć funkcję START i STOP ale nie wiem jak sterować Timerem żeby go uruchamiać aby wygenerować w/w  przebieg i jeszcze jedna kwestia jak zrobić żeby nie było konfliktu<br />przerwania ICP , które cały czas oblicza długości impulsów z przerwaniem Timera??<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 40 minutach ]</span></strong><br /><br />Sory nie dodałem:<br /><br />[syntax=c]ISR(TIMER0_COMP_vect){<br /><br />                            PORTA &amp;= ~(1&lt;&lt;PA1);    // wygenerowanie impulsu na porcie PA1<br />                            PORTA ^=(1&lt;&lt;PA1); <br />                                    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 15 paź 2019, o 08:37</p><hr />
]]></content>
</entry>
</feed>