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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-11T22:18:55+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11020&amp;mode</id>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-11T22:18:55+01:00</updated>
<published>2015-03-11T22:18:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123170#p123170</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123170#p123170"/>
<title type="html"><![CDATA[Re: sprawdzenie kodu timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123170#p123170"><![CDATA[
cały kod <br />[syntax=c]/*<br /> * program test.c<br /> *<br /> *  Created on: 10 mar 2015<br /> *      Author: k<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 /> #define led1 PB0 //defincja diody podłaczonej do PB0<br /><br /><br />volatile uint8_t adc;//zmienna do pomiaru ADC<br /><br />void timer1_init()<br />{<br />     //Inicjalizacja Timera<br />      TCCR1A |= (1 &lt;&lt; WGM12)|(1 &lt;&lt; CS12);//preskaler256<br /><br /><br />      TCNT1 = 0; //wartosc poczatkowa timera<br />      TIMSK |= (1&lt;&lt;OCIE1A); //przerwanie compar<br />      OCR1A = 31250;//porównanie wartosci (około 1s)<br />}<br />void init_ADC (void)<br />{<br />ADCSRA = (1&lt;&lt;ADEN)|(1&lt;&lt;ADSC)|(1&lt;&lt;ADPS2);      // ADC Enable (uruchomienie przetwornika)<br />              //|(1&lt;&lt;ADFR)      //tryb Free run<br />                //rozpoczęcie konwersji<br />               //ADPS2: (ustawienie preskalera) preskaler= 16<br /><br />     ADMUX =(1&lt;&lt;REFS0)|(1&lt;&lt;MUX2)|(1&lt;&lt;MUX0) |(1&lt;&lt;ADIE);          //VCC jako napięcie referencyjne<br />              //Wybór wejścia (ADC5 - Pin 5 zezwolenie na przerwanie po pomiarze<br /><br />}<br /> int main(void){<br /><br /><br />  init_ADC();<br />     sei();<br />    while(1){<br /><br />        ADCSRA |= (1&lt;&lt;ADSC);//start konwersji<br />        adc=ADC;<br /><br />    }<br /> }<br /> ISR(ADC_vect)<br /> {<br />         if(adc&gt;700){<br /><br /><br />         timer1_init();//inicjalizacja timera<br />         }<br />}<br /><br /> ISR(TIMER1_COMPA_vect)<br /> {<br /><br />   ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />   while(ADCSRA &amp; (1&lt;&lt;ADSC));//czeka na zakończenie konwersji<br />            adc=ADC;<br />            if(adc&gt;700){<br />            PORTB |=(1&lt;&lt;led1);<br />            }<br /><br /> }[/syntax]<br />właśnie chodzi mi o to ze po pierwszym pomiarze adc gdy wyskoczy  nam przerwanie adc zostało sprawdzone czy wartość przekracza te 700 jeśli nie pętla startuje od nowa czyli ponownie mierzy ale gdy juz adc przekroczy 700 włącza sie timer który odlicza 1 sekundę  po tym czasie wyskakuje porównanie rejestru timera w przerwanie wywyłane porównaniem rejestru timera w którym to już następuje ponowny pomiar adc i sprawdzenie czy wartość przekracza 700 jesli tak to zapala nam sie dioda<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 11 mar 2015, o 22:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2015-03-11T20:16:27+01:00</updated>
<published>2015-03-11T20:16:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123147#p123147</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123147#p123147"/>
<title type="html"><![CDATA[Re: sprawdzenie kodu timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123147#p123147"><![CDATA[
Witam<br />Strasznie to poszatkowałeś, wygląda jak zlepek kilku kodów. Nie wiem jak w praktyce ale nie bardzo widzę te zależności przerwań. Jeżeli adc będzie mniejsze od 700 to nie dojdzie do timer1_init a bez tego przerwania nie będzie pomiaru ADC; tym samym nie będziesz miał adc - ale to tak wzrokowo.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 11 mar 2015, o 20:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-11T18:39:35+01:00</updated>
<published>2015-03-11T18:39:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123125#p123125</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123125#p123125"/>
<title type="html"><![CDATA[sprawdzenie kodu timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11020&amp;p=123125#p123125"><![CDATA[
Witam mam prośbę o sprawdzenie poprawności całego kodu oraz samej konfiguracji timera<br />inicjalizacja timera<br />[syntax=c]void timer1_init()<br />{<br />     //Inicjalizacja Timera<br />      TCCR1A |= (1 &lt;&lt; WGM12)|(1 &lt;&lt; CS12);//preskaler256<br /><br /><br />      TCNT1 = 0; //wartosc poczatkowa timera<br />      TIMSK |= (1&lt;&lt;OCIE1A); //przerwanie compar<br />      OCR1A = 31250;//porównanie wartosci (około 1s)<br />}[/syntax]<br /><br />petla głowna programu <br />[syntax=c]int main(void){<br /><br /><br />  init_ADC();<br />     sei();<br />    while(1){<br /><br />        ADCSRA |= (1&lt;&lt;ADSC);//start konwersji<br />        adc=ADC;<br /><br />    }<br /> }[/syntax]<br />przerwanie adc<br />[syntax=c]ISR(ADC_vect)<br /> {<br />         if(adc&gt;700){<br /><br /><br />         timer1_init();//inicjalizacja timera<br />         }<br />}[/syntax]<br /><br />przerwanie compare match<br />[syntax=c]ISR(TIMER1_COMPA_vect)<br /> {<br /><br />   ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />   while(ADCSRA &amp; (1&lt;&lt;ADSC));//czeka na zakończenie konwersji<br />            adc=ADC;<br />            if(adc&gt;700){<br />            PORTB |=(1&lt;&lt;led1);<br />            }<br /><br /> }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 11 mar 2015, o 18:39</p><hr />
]]></content>
</entry>
</feed>