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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-10-14T22:30:05+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22606&amp;mode</id>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-14T22:30:05+01:00</updated>
<published>2019-10-14T22:30:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222482#p222482</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222482#p222482"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222482#p222482"><![CDATA[
Dobra coś ruszyło .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 14 paź 2019, o 22:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-14T20:54:18+01:00</updated>
<published>2019-10-14T20:54:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222478#p222478</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222478#p222478"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222478#p222478"><![CDATA[
Ustawiłem jak radziłeś przed pętlą główną :<br /><br />[syntax=c]TCCR0 |= (1&lt;&lt; WGM01);        // tryb CTC dla timera[/syntax]<br /><br />I dalej kicha <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />może coś z tym preskalerem jest nie tak:<br /><br />[syntax=c]TCCR0 |= (1&lt;&lt;CS01);[/syntax]<br /><br />oczywiście  sei jest włączone.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 14 paź 2019, o 20:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-10-14T19:57:52+01:00</updated>
<published>2019-10-14T19:57:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222475#p222475</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222475#p222475"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222475#p222475"><![CDATA[
Czy nie powinieneś włączyć tryb CTC?<br />[syntax=c]TCCR0 |= (1&lt;&lt; WGM01);[/syntax]<br />Oczywiście masz włączoną globalną obsługę przerwań[syntax=c]sei();[/syntax]?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 14 paź 2019, o 19:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-14T13:22:16+01:00</updated>
<published>2019-10-14T13:22:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222467#p222467</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222467#p222467"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222467#p222467"><![CDATA[
Mylę że nie dużo mi brakuje do zakończenia tematu , ale muszę przy pomocy Timera wygenerować impuls CLK .<br />Początek generowania impulsu CLK stanowi pomiar:<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 />  LS=0;<br />  LA=0;<br />  BX&#91;0&#93;=0;<br />  BX&#91;1&#93;=0;<br />  BX&#91;2&#93;=0;<br /><br />          TCCR0 |= (1&lt;&lt;CS01); // tu ustawienie preskalera wynikające z obliczeń dla 11,92us dla rozpoczęcia odliczania.<br /><br />                        }[/syntax]<br />Jest to początek każdej ramki i teraz muszę uruchomić impuls CLK dlatego prubuje uruchomić timer<br /><br />[syntax=c]ISR(TIMER0_COMP_vect){// przerwanie wywołane po odliczeniu czasu trwania impulsu<br />   //flaga_clk=1;<br />//petla();<br />PORTA |=(1&lt;&lt;PA1);<br />    PORTA &amp;= ~(1&lt;&lt;PA1);<br /><br />   TCCR0 &amp;= (1&lt;&lt;CS00)|(1&lt;&lt;CS01)|(1&lt;&lt;CS02);//tu zatrzymanie timera<br />   TCNT0 = 0;//tu wyzerowanie timera =&gt; timer gotowy na następne generowanie impulsu<br />}[/syntax]<br /><br />Niestety na PA1 nic mi nie generuje  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />czy muszę jeszcze coś ustawić przed pętlą główną???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 14 paź 2019, o 13:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-12T15:29:12+01:00</updated>
<published>2019-10-12T15:29:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222438#p222438</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222438#p222438"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222438#p222438"><![CDATA[
Bardzo dziękuje za zainteresowanie tematem , ale ja na pewno wiem że nie zmierzę impulsu krótszego niż 5us, ale poznałem bardziej układ elektroniczny w/w  urządzenia i nie mam potrzeby mierzyć wszystkich<br />impulsów w ramce a jedynie sprawdzać te stany w chwili gdy impuls niebieski CLK zmienia stan z niskiego na wysoki - no może jeszcze dokładniej to trochę póżniej .<br />Myślę czy jakbym wygenerował przy pomocy AVR na jakimś wyjściu ten impuls CLK a potem przy pomocy porównania pinów w tych odpowiednich czasach stwierdzał jaki jest stan .<br />Momentów narastania impulsów jest tylko 13 i każdy coś określa , jedynie problemem może być dokładne wygenerowanie takiego impulsu tzn. <br />Przychodzi pierwszy impuls ramki i mogę np. przy pomocy wolnego przerwania INT 2 uruchomić odpowiedni timer i jakoś tak go określić aby wyzwolił taki przebieg CLK.<br />Ale kolega pisał że nie można w jednym momencie mieć dwóch przerwań, więc czy możliwa jest taka sytuacja że najpierw przerwanie INT 2 uruchamia krótką procedurę przerwania i wyzwolenia<br />impulsu clk a potem już dla każdego impulsu ramki leciało by tylko przerwanie ICP  I  nieważne są te krótkie impulsy a jedynie te co decydują o naruszeniu lini jak na rysunku.<br />Problemem jest tylko to czy za pomocą jednego przerwania mogę wygenerować taki impuls CLK a równolegle wykonywać pomiary ICP w wspomniane .<br />Jedynie co 13 impulsów sprawdzał bym i porównywałbym na bardzo krótką chwile stan Pinów a czas ipulsu tego co powoduje zmianę jest dosyć długi.<br />Pragnę tylko jeszcze dodać że przerwanie ICP mogę jeszcze trochę zmodyfikować ponieważ może nie muszę mierzyć wszystkich impulsów w ramkach a jedynie te które określają nr. ramki.<br />Jak bym znał tylko numer ramki to całe przerwanie ICP jest mi zbędne.<br />Przepraszam za chaos w rozmyślaniach i wielokrotne powtarzanie się  ale chciałem dokładniej wypowiedzieć się co chcę zrobić<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 12 paź 2019, o 15:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2019-10-12T14:23:37+01:00</updated>
<published>2019-10-12T14:23:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222436#p222436</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222436#p222436"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222436#p222436"><![CDATA[
Czytając to co piszesz mam wrażenie, ze nie do końca wiesz jak taki uC działa. AVR to procki jednowątkowe więc w danym momencie mogą się zajmować jedną rzeczą. Oczywiście da się ich czas poszatkować tak by zajmowały się wieloma zadaniami &quot;jednocześnie&quot; ale coś kosztem czegoś. uC taktowany kwarcem 16MHz większość rozkazów wykonuje w ciągu 0,0625us, więc pomiar impulsu 5us nie powinien stanowić problemu, no jeszcze pytanie z jaką dokładnością potrzebny ten pomiar, ale zgrubnie te 5us procek zmierzy. Jest jednak ale, jeśli ty masz tam jeszcze poupychane inne przerwania to nie ma siły by ten pomiar się udał. Bo jeśli wystąpi impuls a w tym czasie jest wykonywane inne przerwanie no to sory, ale może być tak że zanim przerwanie od impulsu zostanie wywołane to sam impuls &quot;przeminął już z wiatrem&quot;.<br /><div class="quotetitle">AKSELINEK napisał(a):</div><div class="quotecontent"><br />Tylko mam pytanie czy w czasie przerwania ICP moge wyzwolic inne przerwanie np wspomniane INT2?<br /></div>Oczywiście jest to możliwe do zrealizowania ale jest to już &quot;level very hard&quot; i bez dokładnej znajomości tematu lepiej do niego wogule nie podchodzić. Wyobraź sobie że zezwalasz na wystąpienie przerwania w przerwaniu, i teraz w czasie trwania przerwania zostaje wywołane następne, i w czasie wykonywania tego następnego przychodzi wyzwolenie kolejnego itd. Zaczyna się kaskadowe wywoływanie przerwań - totalny armagedon.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 12 paź 2019, o 14:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-11T15:14:29+01:00</updated>
<published>2019-10-11T15:14:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222426#p222426</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222426#p222426"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222426#p222426"><![CDATA[
Tak faktycznie masz rację na pewno z tego skzystam .Tylko mam pytanie czy w czasie przerwania ICP  moge wyzwolic inne przerwanie np wspomniane INT2?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 11 paź 2019, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-10-11T10:15:35+01:00</updated>
<published>2019-10-11T10:15:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222424#p222424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222424#p222424"/>
<title type="html"><![CDATA[Re: Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222424#p222424"><![CDATA[
Pierwsza uwaga <br />W poprzednim wątku napisałem że masz do dyspozycji jeszcze INT2 <br />Czemu z niego nie skorzystasz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 11 paź 2019, o 10:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[AKSELINEK]]></name></author>
<updated>2019-10-11T09:19:36+01:00</updated>
<published>2019-10-11T09:19:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222423#p222423</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222423#p222423"/>
<title type="html"><![CDATA[Analiza impulów c.d pytanie o pomysł]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22606&amp;p=222423#p222423"><![CDATA[
Witam.<br /><br />Walczę od dłuższego czasu z pewnym projektem analizy przebiegów i dzięki pomocy kolegów próbowałem różnych rozwiązań i nawet trochę się udało mi coś tam się nauczyć.<br />Wielokrotnie pisałem o problemie pomiaru zmieniających się impulsów , które to jednak okazały się trochę za krótkie aby przy pomocy Attmegi 32 i przerwania ICP odczytać.<br />Udał się experyment na nowych urządzeniach przy pomocy przerwania ICP:<br /><br />[syntax=c]ISR(TIMER1_CAPT_vect)    {<br /><br /><br />            static uint16_t LastCapture;<br />            uint16_t PulseWidth;<br /><br />            PulseWidth = ICR1 - LastCapture;<br />            LastCapture = ICR1;<br /><br />            if (PulseWidth&gt;3000)  L=0;<br /><br />            if (L==0)  ramka=ramka++;                                   // ustawianie licznika na początek ramiki<br /><br />            if (ramka==4) ramka=0;<br />                                    // if (L==0)              {                                                             <br />                                                             <br />                                                                                  <br />                                                                              <br /><br />                                                        <br />               uint16_t POM;<br /><br />       POM=PulseWidth;<br /><br /><br /><br />            TCCR1B ^= (1&lt;&lt;ICES1);// zmiana zbocza wyzwalającego na przeciwne<br />                                          <br />                                                               <br />                              <br /><br />                                             switch(ramka)<br />                                            {<br />                                               case 0:<br />                                             bufor_w1&#91;L&#93;=POM;<br />                                             break;<br /><br />                                               case 1:<br />                                               bufor_w2&#91;L&#93;=POM;<br />                                               break;<br /><br />                                               case 2:<br />                                               bufor_w3&#91;L&#93;=POM;<br />                                               break;<br /><br />                                               case 3:<br />                                               bufor_w4&#91;L&#93;=POM;<br />                                               break;<br /><br />                                           }<br />      }[/syntax]<br /><br />Jak wspomniałem pomagali koledzy ale się coś udało z tego zrobić.<br />Ale jednak okazało się że niektóre impulsy okazały się zbyt krótkie aby dokładnie odczytać ramkę problem zaczynał się poniżej 5us bo nie zdążyło w/w przerwanie tego zaobrazować.<br /><br />Ale po dokładym poznaniu problemu może nie ma potrzeby czytać tych krótkich impulsów pokaże jak pokazywał przebieg oscyloskop gdzie została wciśnięta (naruszona) jena tzw  lini:<br /><br /><a href="https://obrazkiforum.atnel.pl/18152/74763bb3641aa77e717ed348f4b312e7.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/18152/74763bb3641aa77e717ed348f4b312e7.JPG" alt="Obrazek" /></a><br /><br />wykres niebieski pokazuje jak działa dokładnie urządzenie , narastanie stanu z niskiego na wysoki i jego czasowy moment decyduje o porównania i pomiaru.<br /><br />I dochodzę wreszcie do mojego pytania jak stworzyć przy pomocy programu taki właśnie niebieski przebieg ja nazywam go CLK - ponieważ dokładnie moment  jego narastania pokazuje jak odczytać.<br />Pragnę  przypomnieć że przerwania INT 0 I INT 1 mam zajęte w/w przerwanie ICP jest potrzebne ponieważ muszę wiedzieć jaka jest ramka , ale można chyba go zmodyfikować bo nie muszę analizować wszystkich impulsów.<br />I teraz tak impuls CLK można by podłączyć do wejścia pinu mikrokontrolera i wdanym momencie porostu porównywać stan pinu czy jest 0 czy 1.<br /><br />Tylko jak przy pomocy timerów mogę to spróbować zrobić ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 31 minutach ]</span></strong><br /><br /><div class="quotetitle">AKSELINEK napisał(a):</div><div class="quotecontent"><br />Witam.<br /><br />Walczę od dłuższego czasu z pewnym projektem analizy przebiegów i dzięki pomocy kolegów próbowałem różnych rozwiązań i nawet trochę się udało mi coś tam się nauczyć.<br />Wielokrotnie pisałem o problemie pomiaru zmieniających się impulsów , które to jednak okazały się trochę za krótkie aby przy pomocy Attmegi 32 i przerwania ICP odczytać.<br />Udał się experyment na nowych urządzeniach przy pomocy przerwania ICP:<br /><br />[syntax=c]ISR(TIMER1_CAPT_vect)    {<br /><br /><br />            static uint16_t LastCapture;<br />            uint16_t PulseWidth;<br /><br />            PulseWidth = ICR1 - LastCapture;<br />            LastCapture = ICR1;<br /><br />            if (PulseWidth&gt;3000)  L=0;<br /><br />            if (L==0)  ramka=ramka++;                                   // ustawianie licznika na początek ramiki<br /><br />            if (ramka==4) ramka=0;<br />                                    // if (L==0)              {                                                             <br />                                                             <br />                                                                                  <br />                                                                              <br /><br />                                                        <br />               uint16_t POM;<br /><br />       POM=PulseWidth;<br /><br /><br /><br />            TCCR1B ^= (1&lt;&lt;ICES1);// zmiana zbocza wyzwalającego na przeciwne<br />                                          <br />                                                               <br />                              <br /><br />                                             switch(ramka)<br />                                            {<br />                                               case 0:<br />                                             bufor_w1&#91;L&#93;=POM;<br />                                             break;<br /><br />                                               case 1:<br />                                               bufor_w2&#91;L&#93;=POM;<br />                                               break;<br /><br />                                               case 2:<br />                                               bufor_w3&#91;L&#93;=POM;<br />                                               break;<br /><br />                                               case 3:<br />                                               bufor_w4&#91;L&#93;=POM;<br />                                               break;<br /><br />                                           }<br />      }[/syntax]<br /><br />Jak wspomniałem pomagali koledzy ale się coś udało z tego zrobić.<br />Ale jednak okazało się że niektóre impulsy okazały się zbyt krótkie aby dokładnie odczytać ramkę problem zaczynał się poniżej 5us bo nie zdążyło w/w przerwanie tego zaobrazować.<br /><br />Ale po dokładym poznaniu problemu może nie ma potrzeby czytać tych krótkich impulsów pokaże jak pokazywał przebieg oscyloskop gdzie została wciśnięta (naruszona) jena tzw  lini:<br /><br /><a href="https://obrazkiforum.atnel.pl/18152/74763bb3641aa77e717ed348f4b312e7.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/18152/74763bb3641aa77e717ed348f4b312e7.JPG" alt="Obrazek" /></a><br /><br />wykres niebieski pokazuje jak działa dokładnie urządzenie , narastanie stanu z niskiego na wysoki i jego czasowy moment decyduje o porównania i pomiaru.<br /><br />I dochodzę wreszcie do mojego pytania jak stworzyć przy pomocy programu taki właśnie niebieski przebieg ja nazywam go CLK - ponieważ dokładnie moment  jego narastania pokazuje jak odczytać.<br />Pragnę  przypomnieć że przerwania INT 0 I INT 1 mam zajęte w/w przerwanie ICP jest potrzebne ponieważ muszę wiedzieć jaka jest ramka , ale można chyba go zmodyfikować bo nie muszę analizować wszystkich impulsów.<br />I teraz tak impuls CLK można by podłączyć do wejścia pinu mikrokontrolera i wdanym momencie porostu porównywać stan pinu czy jest 0 czy 1.<br /><br />Tylko jak przy pomocy timerów mogę to spróbować zrobić ten impuls nazwany CLK ?<br /></div><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 36 minutach ]</span></strong><br /><br />.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 37 minutach ]</span></strong><br /><br />sory nie wiem jak przypadkowy cytat usunąć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18152">AKSELINEK</a> — 11 paź 2019, o 09:19</p><hr />
]]></content>
</entry>
</feed>