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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-07T18:49:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9569&amp;mode</id>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T18:49:29+01:00</updated>
<published>2014-12-07T18:49:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107741#p107741</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107741#p107741"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107741#p107741"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />W tego typu problemach warto zajrzeć do pliku *.lss by zobaczyć jak wygląda obsługa przerwania w asemblerze i jak długo trwa. Przy odrobinie chęci można policzyć ile cykli będzie trwało przerwanie. I wcale nie trzeba być ekspertem asemblera. <br /><br />Aby łatwiej było się odnaleźć w pliku lss warto włączyć opcję Standard debugging info albo Extra debugging info w Project Properties -&gt; C\C++ Build -&gt; Settings -&gt;zakładka Tool Settings -&gt; Avr Compiler -&gt; Debugging.<br /></div><br /><br />Zaglądałem do tego pliku, ale tak jak mówisz, nie za bardzo się tam mogłem odnaleźć. Teraz zoptymalizowałem trochę kod i jest o wiele lepiej. Nie pracowałem jeszcze na tak dużych zmiennych ale teraz będę miał nauczkę żeby ich nie pchać do przerwań.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 7 gru 2014, o 18:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-12-07T18:33:28+01:00</updated>
<published>2014-12-07T18:33:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107736#p107736</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107736#p107736"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107736#p107736"><![CDATA[
W tego typu problemach warto zajrzeć do pliku *.lss by zobaczyć jak wygląda obsługa przerwania w asemblerze i jak długo trwa. Przy odrobinie chęci można policzyć ile cykli będzie trwało przerwanie. I wcale nie trzeba być ekspertem asemblera. <br /><br />Aby łatwiej było się odnaleźć w pliku lss warto włączyć opcję <strong>Standard debugging info</strong> albo <strong>Extra debugging info</strong> w Project Properties -&gt; C\C++ Build -&gt; Settings -&gt;zakładka Tool Settings -&gt; Avr Compiler -&gt; Debugging.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 7 gru 2014, o 18:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T17:51:52+01:00</updated>
<published>2014-12-07T17:51:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107731#p107731</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107731#p107731"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107731#p107731"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Przetestowałem program i u mnie też nie działało przerwanie od timera0.<br /><br />Ale wystarczyło że z przerwania od Timera1 wywaliłem to<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br />if(ilosc_tykniec &gt; 0xFFFFFFFFFFFFFFFE) ilosc_tykniec = 0;<br />GeSHi<br /><br />albo zmniejszyłem częstotliwość występowania tego przerwania (poprzez zwiększenie preskalera) i już przerwanie od Timera0 zaczęło działać.<br /><br />Wydaje mi się że to przerwanie wykonuje się zbyt długo z powodu działania na liczbach uint32_t i uint64_t.<br /></div><br /><br />Dzięki, wszystko teraz działa... swoją drogą nie pomyślałbym że to może być przyczyną.. Cóż, przecież uczymy się najlepiej na własnych błędach <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> dzięki Ci bardzo <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 7 gru 2014, o 17:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-12-07T17:44:19+01:00</updated>
<published>2014-12-07T17:44:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107729#p107729</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107729#p107729"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107729#p107729"><![CDATA[
Przetestowałem program i u mnie też nie działało przerwanie od timera0.<br /><br />Ale wystarczyło że z przerwania od Timera1 wywaliłem to<br />[syntax=c]if(ilosc_tykniec &gt; 0xFFFFFFFFFFFFFFFE) ilosc_tykniec = 0;[/syntax]<br />albo zmniejszyłem częstotliwość występowania tego przerwania (poprzez zwiększenie preskalera) i już przerwanie od Timera0 zaczęło działać.<br /><br />Wydaje mi się że to przerwanie wykonuje się zbyt długo z powodu działania na liczbach uint32_t i uint64_t.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 7 gru 2014, o 17:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T17:35:57+01:00</updated>
<published>2014-12-07T17:35:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107728#p107728</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107728#p107728"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107728#p107728"><![CDATA[
Zauważyłem że gdy w TIMSK odblokowane są oba przerwania to wykonuje się to od TIMER1, gdy jest włączone tylko od TIMER0 to włazi mi  w przerwanie... Cóż. Spróbuje dać go w tryb normal.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 7 gru 2014, o 17:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T16:35:12+01:00</updated>
<published>2014-12-07T16:35:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107720#p107720</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107720#p107720"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107720#p107720"><![CDATA[
<div class="quotetitle">Nondzu napisał(a):</div><div class="quotecontent"><br />ja dojrzałem tyle, że preskaler timera0 oraz timera1 jest współdzielony. moze tutaj tkwi problem ?<br /></div><br /><br />No zauważyłem, dlatego dla obu ustawiłem taki sam tj. 1...<br /><br />Miałbym prośbę dla kogoś z forum żeby przetestował u siebie na swojej ATmedze32 czy to mu zadziała? Bo fakt, mogę sobie i bez tego timer'a poradzić w sumie albo spróbowac go dać w tryb normal ale nie na tym rzecz polega..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 7 gru 2014, o 16:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2014-12-07T14:49:50+01:00</updated>
<published>2014-12-07T14:49:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107699#p107699</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107699#p107699"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107699#p107699"><![CDATA[
hmm zajrzyj na strone 82 noty katalogowej od atmegi 32. chodzi mi o rejestr SFIOR. poczytaj, testuj może coś się wyklaruje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br />ja dojrzałem tyle, że preskaler timera0 oraz timera1 jest współdzielony. moze tutaj tkwi problem ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1672">Nondzu</a> — 7 gru 2014, o 14:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T14:37:46+01:00</updated>
<published>2014-12-07T14:37:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107696#p107696</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107696#p107696"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107696#p107696"><![CDATA[
Widocznie dwa timery w trybie CTC się jakoś konfliktują czy coś... Nie mam pojęcia o co chodzi.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />Próbowałem zmienić  preskaler dla timera0 na 8 ale to też nie pomogło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 7 gru 2014, o 14:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gelten]]></name></author>
<updated>2014-12-07T14:18:16+01:00</updated>
<published>2014-12-07T14:18:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107691#p107691</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107691#p107691"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107691#p107691"><![CDATA[
Myślałem, że po ujrzeniu całego kodu coś rzuci mi się w oczy. Niestety myliłem się ;/ Mam nadzieję, że ktoś Ci jednak pomoże <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5228">Gelten</a> — 7 gru 2014, o 14:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T13:38:57+01:00</updated>
<published>2014-12-07T13:38:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107685#p107685</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107685#p107685"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107685#p107685"><![CDATA[
Wrzucam cały kod, narazie jest w trakcie budowy ale myślę że jest w miarę czytelny:<br /><br /><strong>main.c</strong><br /><br />[syntax=c]/*                  e-gadget.header<br /> * main.c<br /> *<br /> *  Created on: 2014-12-05<br /> *    Modyfied: 2014-12-05 13:46:06<br /> *      Author: Nefarious19<br /> *<br /> * Project name: &quot;CPU_FAN_CONTROLLER&quot;<br /> *<br /> *<br /> *          MCU: ATmega32<br /> *        F_CPU: 16 000 000 Hz<br /> *<br /> *    Flash: 1 306 bytes   &#91; 4,0 % &#93;<br /> *      RAM:  26 bytes   &#91; 1,3 % &#93;<br /> *   EEPROM:  0 bytes   &#91; 0,0 % &#93;<br /> *<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;lcd_display.h&quot;<br />#include &quot;funkcje.h&quot;<br /><br /><br /><br />//deklaracje zmiennych globalnych<br />volatile uint32_t licznik,licznik1;<br />volatile uint8_t flaga;<br />volatile uint64_t ilosc_tykniec,time1,time2,time3;<br />volatile uint64_t srednia;<br />volatile uint8_t dt = 1;<br />volatile uint64_t mikrosekundy;<br /><br />uint16_t zadana = 3000;<br /><br />int main (void){<br /><br />DDRC |= (1&lt;&lt;PC7);<br />PORTC |= (1&lt;&lt;PC7);<br /><br />lcd_backlight_off();<br />lcd_init();<br /><br />lcd_locate(0,0);<br />lcd_sendStr(&quot;OBROTY CPU FAN:&quot;);<br /><br />inicjalizacja_PWM();<br />inicjalizacja_ADC();<br />inicjalizacja_INT0();<br />inicjalizacja_TIMER1_16BIT_CTC();<br />inicjalizacja_timer0_1us();<br /><br /><br />time1 = ilosc_tykniec;<br /><br />_delay_ms(10);<br />sei();<br /><br />while(1){<br />if(!licznik1){<br />licznik = 1;<br />if (srednia &gt; zadana){<br />OCR2--;<br />if(OCR2&lt;20) OCR2 = 20;<br />}<br />else OCR2++;<br />}<br /><br /><br /><br /><br />if (!mikrosekundy)<br />{<br /><br />mikrosekundy = 100000;<br /><br />//PORTC ^= (1&lt;&lt;PC7);<br />}<br /><br />zadana = (2.5*odczytaj_adc(7))+2500;<br /><br />if (!licznik)<br />{<br />licznik = 20000;<br />lcd_locate(1,1);<br />lcd_sendStr(&quot;  &quot;);<br /><br />lcd_locate(1,0);<br />lcd_sendInt(zadana);<br /><br />lcd_locate(1,7);<br />lcd_sendStr(&quot;     &quot;);<br /><br />lcd_locate(1,5);<br /><br />lcd_sendInt(srednia);<br /><br />lcd_locate(1,10);<br />lcd_sendStr(&quot;     &quot;);<br /><br />}<br /><br />}<br /><br />}<br /><br /><br />ISR(INT0_vect)<br />{<br />flaga = 1;<br />time2 = time1;<br />time1 = ilosc_tykniec;<br />time3 = time1 - time2;<br />time3 = time3 * 10;<br /><br />time3 = 1000000/time3;<br />time3 *= 60;<br /><br />//srednia = time3;<br />srednia = srednia * dt;<br />srednia = srednia + time3;<br />srednia = srednia / (dt+1);<br /><br />if (srednia &lt; 2000) srednia = 0;<br />if (srednia &gt; 5500) srednia = 5500;<br />}<br /><br />ISR(TIMER0_COMP_vect)<br />{<br />PORTC &amp;= ~(1&lt;&lt;PC7);<br />//if(mikrosekundy) mikrosekundy--;<br /><br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />if(licznik) licznik--;<br />if(licznik1) licznik1--;<br />ilosc_tykniec++;<br />if(ilosc_tykniec &gt; 0xFFFFFFFFFFFFFFFE) ilosc_tykniec = 0;<br />}[/syntax]<br /><br /><strong>funkcje.h</strong><br /><br />[syntax=c]/*<br /> * funkcje.h<br /> *<br /> *  Created on: 5 gru 2014<br /> *      Author: Rafał<br /> */<br /><br />#ifndef FUNKCJE_H_<br />#define FUNKCJE_H_<br /><br />//deklaracje funkcji<br />void inicjalizacja_PWM(void);<br />void inicjalizacja_ADC(void);<br />uint16_t odczytaj_adc (uint8_t pin);<br />void inicjalizacja_INT0(void);<br />void inicjalizacja_TIMER1_16BIT_CTC(void);<br />void inicjalizacja_timer0_1us(void);<br />#endif /* FUNKCJE_H_ */[/syntax]<br /><br /><br />i <strong>funkcje.c</strong><br /><br />[syntax=c]/*<br /> * funkcje.c<br /> *<br /> *  Created on: 5 gru 2014<br /> *      Author: Rafał<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />void inicjalizacja_PWM(void)<br />{<br />DDRD |= (1&lt;&lt;PD7);<br />PORTD &amp;= ~(1&lt;&lt;PD7);<br />TCCR2 |= (1&lt;&lt;WGM20) | (1&lt;&lt;WGM21);<br />TCCR2 |= (1&lt;&lt;COM21);<br />TCCR2 |= (1&lt;&lt;CS20) | (1&lt;&lt;CS21);<br />}<br /><br />void inicjalizacja_ADC(void)<br />{<br />ADCSRA |= (1&lt;&lt;ADEN);//wlacz ADC<br />ADCSRA |= (1&lt;&lt;ADPS0) | (1&lt;&lt;ADPS1);//preskaler na 4<br />ADMUX |= (1&lt;&lt;REFS0); //wybór AVCC jako napięcie odniesienia<br />}<br /><br />uint16_t odczytaj_adc (uint8_t pin)<br />{<br />ADMUX = ((0b11111000) &amp; ADMUX) | pin;<br />ADCSRA |= (1&lt;&lt;ADSC);<br />while (ADCSRA &amp; (1&lt;&lt;ADSC));<br />return ADCW;<br />}<br /><br />void inicjalizacja_INT0(void)<br />{<br />MCUCR |= (1&lt;&lt;ISC00) | (1&lt;&lt;ISC01);<br />GICR |= (1&lt;&lt;INT0);<br />}<br /><br />void inicjalizacja_TIMER1_16BIT_CTC(void)<br />{<br />TCCR1B |= (1&lt;&lt;WGM12); //tryb ctc<br />TCCR1B |= (1&lt;&lt;CS11);  //preskaler na 8;<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />OCR1A = 19;<br />}<br /><br />void inicjalizacja_timer0_1us(void)<br />{<br />TCCR0 |= (0&lt;&lt;COM00) | (1&lt;&lt;COM01);<br />TCCR0 |= (1&lt;&lt;WGM01); //tryb CTC;<br />TCCR0 |= (1&lt;&lt;CS00); //preskaler 1<br />TIMSK |= (1&lt;&lt;OCIE0);<br />OCR0 = 15;<br />}[/syntax]<br /><br /><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=2500">Nefarious19</a> — 7 gru 2014, o 13:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gelten]]></name></author>
<updated>2014-12-07T13:15:47+01:00</updated>
<published>2014-12-07T13:15:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107682#p107682</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107682#p107682"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107682#p107682"><![CDATA[
Pokaż tą inicjalizację Timera 1. Wywołujesz ją przed inicjalizacją Timera 0 czy po?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5228">Gelten</a> — 7 gru 2014, o 13:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T12:20:36+01:00</updated>
<published>2014-12-07T12:20:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107674#p107674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107674#p107674"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107674#p107674"><![CDATA[
<div class="quotetitle">kurnachatka napisał(a):</div><div class="quotecontent"><br />oże warto spróbować zastosować?<br /><br />Tu masz coś na temat volatile<br /><br />[ moderowano - mirekk36 ]<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2011/08/test.html" >http://mirekk36.blogspot.com/2011/08/test.html</a><!-- m --><br /></div><br /><br />pewnie, dzięki za link <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ale niestety to nie pomogło... Nie mam pojęcia co może być nie tak z tym TIMER'em...<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br />Usunąłem inicjalizacje TIMER'a 1 w trybie CTC i przerwanie od TIMER'a 0 w trybie CTC się odpala... Czy to znaczy że w trybie CTC może być tylko jeden timer?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 7 gru 2014, o 12:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-12-07T00:25:25+01:00</updated>
<published>2014-12-07T00:25:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107653#p107653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107653#p107653"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107653#p107653"><![CDATA[
<div class="quotetitle">Nefarious19 napisał(a):</div><div class="quotecontent"><br />Co do volatile, to nie zastosowałem. Wszystko działa bez tego bo w pętli głównej tylko odczytuje te zmienne z przerwań.<br /></div><br /><br />Może warto spróbować zastosować?<br /><br />Tu masz coś na temat volatile<br /><br /><span style="color: #FF0000">[ moderowano - mirekk36 ]</span><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2011/08/test.html" >http://mirekk36.blogspot.com/2011/08/test.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 7 gru 2014, o 00:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-07T00:16:35+01:00</updated>
<published>2014-12-07T00:16:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107652#p107652</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107652#p107652"/>
<title type="html"><![CDATA[Re: Odp: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107652#p107652"><![CDATA[
<div class="quotetitle">Gelten napisał(a):</div><div class="quotecontent"><br />Mógłbyś udostępnić troszkę więcej kodu? Inicjalizacja jest dobra, przerwanie również. Bez reszty kodu ciężko będzie coś doradzić:P I takie pytanie, jaki zakres wartości ma zmienna <strong>mikrosekundy</strong>? Wykonujesz instrukcję kiedy jest ona równa 0?<br /></div><br />To jest uint64_t, myślałem juz  ze moze to to ze jest zbyt wielka ale po usunięciu jej z przerwania i zostawieniu samego leda nic się nie zmieniło. <br /><br />Co do volatile, to nie zastosowałem. Wszystko działa bez tego bo w pętli głównej tylko odczytuje te zmienne z przerwań.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 7 gru 2014, o 00:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-12-07T00:07:41+01:00</updated>
<published>2014-12-07T00:07:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107651#p107651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107651#p107651"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107651#p107651"><![CDATA[
Tak tylko pytam, stosujesz volatile dla tych zmiennych w przerwaniach?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 7 gru 2014, o 00:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gelten]]></name></author>
<updated>2014-12-07T00:06:25+01:00</updated>
<published>2014-12-07T00:06:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107650#p107650</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107650#p107650"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107650#p107650"><![CDATA[
Mógłbyś udostępnić troszkę więcej kodu? Inicjalizacja jest dobra, przerwanie również. Bez reszty kodu ciężko będzie coś doradzić:P I takie pytanie, jaki zakres wartości ma zmienna <strong>mikrosekundy</strong>? Wykonujesz instrukcję kiedy jest ona równa 0?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5228">Gelten</a> — 7 gru 2014, o 00:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-06T23:59:25+01:00</updated>
<published>2014-12-06T23:59:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107649#p107649</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107649#p107649"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107649#p107649"><![CDATA[
No wywołuje ta funkcje zaraz na początku int main(void), później inicjaluzuje jeszcze kilka rzeczy daje 10 milisekundowego delaya i wchodzę w pętle główną.  narazie w tym przerwaniu mam tylko zapalenie leda. Działam na zestawie ATB. Ten led jest wygaszony też w main. No nic, musze pomyśleć co może być nie tak... Jakis konflikt przerwań czy co?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 6 gru 2014, o 23:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gelten]]></name></author>
<updated>2014-12-06T23:26:03+01:00</updated>
<published>2014-12-06T23:26:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107643#p107643</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107643#p107643"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107643#p107643"><![CDATA[
Przepraszam za wyżej, przeczytałem milisekundy, a mają być mikrosekundy. Przepraszam też za wzór, jest dla częstotliwości pinu przy Toogle <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> W takim wypadku masz poprawne obliczenia. Jednakże zauważ, że wchodzisz w to przerwanie co 16 taktów zegara.<br /> <br />Dodano:<br />Kolego <strong>no atnel no fun</strong>, dobrze jest ustawiony bit w TIMSK i adres przerwania. Przerwanie jest od <strong> OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable</strong>, czyli <strong>TIMER0_COMP_vect</strong> - Timer/Counter0 Compare Match.<br /><br />Dodano2:<br />Takie może głupie pytanie: wywołujesz funkcje <strong>inicjalizacja_timer0_1us()</strong> w kodzie?:P<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5228">Gelten</a> — 6 gru 2014, o 23:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[no atnel no fun]]></name></author>
<updated>2014-12-06T23:28:23+01:00</updated>
<published>2014-12-06T23:24:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107642#p107642</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107642#p107642"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107642#p107642"><![CDATA[
Kolega Gelten ma rację.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3610">no atnel no fun</a> — 6 gru 2014, o 23:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2014-12-06T23:13:22+01:00</updated>
<published>2014-12-06T23:13:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107640#p107640</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107640#p107640"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107640#p107640"><![CDATA[
Cześć, w książce którą posiadam &quot;Mikrokontrolery dla początkujących&quot; Piotra Góreckiego ( o Bascomie ;() piszę, że wykonanie typowego rozkazu w asemblerze trwa około 0,25 us dla kwarcu 4Mhz więc dla 16Mhz 0,25/4=0,0625us więc w 1us/0,0625us = 16 rozkazów zakładając, że są one w asemblerze, więc wydaję mi się, że co 1us to trochę za szybko, chociaż led powinien się zapalić  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 6 gru 2014, o 23:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-06T22:54:12+01:00</updated>
<published>2014-12-06T22:54:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107639#p107639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107639#p107639"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107639#p107639"><![CDATA[
Przerwanie ustawiłem tak by tykało co 1us (uzywałem mkavrcalculatora i narzędzia AVR TIMER KALKULATOR, ustawiając pożądane us na 1) Procek taktuje z kwarca 16MHz. Czy ustawienie przerwania by wykonywało się co 1us to za szybko? Chodzi o to że wstawiłem w obsługę przerwania zapalenie LED'a na PC7 i LED nie chce zaświecić tak jakby to przerwanie się nie wykonywało w ogóle. Timer1 ustawiłem by tykał co 10us i działa normalnie. TIMER0 dla testów przestawiłem na 15us i też lipa... Nie wiem co jest grane.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />sei() masz?<br /></div><br /><br />Pewnie, napisałem że inne przerwania się normalnie wykonują. Używam timera2 do PWM, timera1 by tykał co 10us, używam przerwania od INT0 i wszystko gra, tylko to jedno nieszczęsne przerwanie się nie chce wykonać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 6 gru 2014, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[no atnel no fun]]></name></author>
<updated>2014-12-06T22:41:51+01:00</updated>
<published>2014-12-06T22:41:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107636#p107636</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107636#p107636"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107636#p107636"><![CDATA[
Siemka.<br />sei() masz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3610">no atnel no fun</a> — 6 gru 2014, o 22:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gelten]]></name></author>
<updated>2014-12-06T22:17:20+01:00</updated>
<published>2014-12-06T22:17:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107633#p107633</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107633#p107633"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107633#p107633"><![CDATA[
Inicjalizacja Timera 0 wydaje się być okay, adres jego przerwania również. Przydałaby się informacja na temat taktowania uC <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Zakładając wewnętrzne 8 MHz, Timer0 wykonuje przerwanie z częstotliwością 8 000 000 / 2 / (15+1) = 250 000 Hz. Z obecnym preskalerem musiałbyś taktować uC z częstotliwością 1000 Hz * 2 * (15+1) = 32 000 Hz. Możliwe, że przerwanie Timera 0 wywołuję się za szybko <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5228">Gelten</a> — 6 gru 2014, o 22:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[misiulu]]></name></author>
<updated>2014-12-06T22:08:27+01:00</updated>
<published>2014-12-06T22:08:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107632#p107632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107632#p107632"/>
<title type="html"><![CDATA[Re: Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107632#p107632"><![CDATA[
Z tego co pokazałeś w kodzie inicjalizacja oraz samo przerwanie wygląda ok. Poza tym ciężko powiedzieć co może być nie tak <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4068">misiulu</a> — 6 gru 2014, o 22:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-12-06T21:31:15+01:00</updated>
<published>2014-12-06T21:31:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107629#p107629</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107629#p107629"/>
<title type="html"><![CDATA[Problem z TIMER0 - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9569&amp;p=107629#p107629"><![CDATA[
Hej Koledzy i Koleżanki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Piszę sobie z nudów sterownik obrotów wentylatorka od CPU i chciałem sobie skonfigurować timer0 by mi tykał co jedną mikosekundę. Potrzebne mi to będzie do całkowania bo chcę regulator PID tam zaimplementować. Napisałem taką inicjalizację, no banał po prostu:<br /><br />[syntax=c]void inicjalizacja_timer0_1us(void)<br />{<br />TCCR0 |= (1&lt;&lt;WGM01); //tryb CTC;<br />TCCR0 |= (1&lt;&lt;CS00);    //preskaler 1<br />TIMSK |= (1&lt;&lt;OCIE0);   //odblokowanie przerwania<br />OCR0 = 15;<br />}[/syntax]<br /><br />No i niestety nie wchodzi mi w to przerwanie... Używam jeszcze TIMER1 do tego by tykał co 10us, on służy mi do pomiaru prędkości i przerwania od INT0 też używam. Oba przerwania się wykonują. Tak wyglądają obsługi przerwań.<br /><br />[syntax=c]ISR(INT0_vect)<br />{<br />flaga = 1;<br />time2 = time1;<br />time1 = ilosc_tykniec;<br />time3 = time1 - time2;<br />time3 = time3 * 10;<br /><br />time3 = 1000000/time3;<br />time3 *= 60;<br /><br />//srednia = time3;<br />srednia = srednia * dt;<br />srednia = srednia + time3;<br />srednia = srednia / (dt+1);<br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />if(licznik) licznik--;<br />ilosc_tykniec++;<br />if(ilosc_tykniec &gt; 0xFFFFFFFFFFFFFFFE) ilosc_tykniec = 0;<br />}<br /><br />ISR(TIMER0_COMP_vect)<br />{<br /><br />if(mikrosekundy) mikrosekundy--;<br /><br />}[/syntax]<br /><br /><br />Co może być nie tak bo zgłupiałem już..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 6 gru 2014, o 21:31</p><hr />
]]></content>
</entry>
</feed>