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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-02-15T22:14:22+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10665&amp;mode</id>
<entry>
<author><name><![CDATA[marcin w]]></name></author>
<updated>2015-02-15T22:14:22+01:00</updated>
<published>2015-02-15T22:14:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119249#p119249</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119249#p119249"/>
<title type="html"><![CDATA[Re: TCNT0 wartość niezerowa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119249#p119249"><![CDATA[
<div class="quotetitle">krish napisał(a):</div><div class="quotecontent"><br />a czy ta linia kodu jest aby na pewno prawidłowa?:<br />       TCCR0 |= ((1&lt;CS00) | (1&lt;CS01) | (1&lt;CS02));<br /></div><br />Tak, tu był błąd. Powinno być <span style="color: #408000">TCCR0 |= (1&lt;&lt;CS00) | (1&lt;&lt;CS01) | (1&lt;&lt;CS02);</span> <br /><br />A tyle czasu zmarnowałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3936">marcin w</a> — 15 lut 2015, o 22:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2015-02-15T21:55:07+01:00</updated>
<published>2015-02-15T21:55:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119242#p119242</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119242#p119242"/>
<title type="html"><![CDATA[Re: TCNT0 wartość niezerowa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119242#p119242"><![CDATA[
a czy ta linia kodu jest aby na pewno prawidłowa?:<br />       TCCR0 |= ((1&lt;CS00) | (1&lt;CS01) | (1&lt;CS02));<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 15 lut 2015, o 21:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marcin w]]></name></author>
<updated>2015-02-15T21:37:24+01:00</updated>
<published>2015-02-15T21:37:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119236#p119236</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119236#p119236"/>
<title type="html"><![CDATA[Re: TCNT0 wartość niezerowa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119236#p119236"><![CDATA[
Dodałem dodatkowo linię<br />[syntax=c]PORTD |= (1&lt;&lt;4);[/syntax]<br /><br />Ale niewiele to zmieniło, w zasadzie nic, uP wyświetla jakąś wartość na LCD, nie wiem co to jest, na impulsy na wejściu T0 nie reaguje. Zwieram do masy T0 ale wartość z zasadzie bez zmian. Teraz po tej modyfikacji przy każdym przerwaniu zmienia się cyklicznie wartość +/-1. Zwarcie do masy nic nie zmienia, liczba oscyluje +/1.<br /><br />Dla sprawdzenia przeniosłem zerowanie TCNT1 pod koniec obsługi przerwania i zmieniłem przypisanie zmiennej licznikT0 na TCNT1. Tu pokazuje 3907, można przypuszczać że to będzie faktyczna wartość TCNT1. Licznik ten po osiągnięciu wartości 3906 generuje przerwanie w którym zatrzymuje się T0.<br /><br />Zmieniłem procesor na atmega328P z wymaganymi korektami w programie - bez zmian.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3936">marcin w</a> — 15 lut 2015, o 21:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2015-02-15T20:48:42+01:00</updated>
<published>2015-02-15T20:48:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119223#p119223</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119223#p119223"/>
<title type="html"><![CDATA[Re: TCNT0 wartość niezerowa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119223#p119223"><![CDATA[
Tak na szybko przejrzane <br />podciągnij (pullUp) wejście PD4/T0 do VCC wewnętrznym rezystorem<br />żeby ustawić stabilny stan wysoki.<br />Do zliczania zwieraj PD4/T0 z masą<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 15 lut 2015, o 20:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marcin w]]></name></author>
<updated>2015-02-15T19:20:38+01:00</updated>
<published>2015-02-15T19:20:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119173#p119173</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119173#p119173"/>
<title type="html"><![CDATA[TCNT0 wartość niezerowa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10665&amp;p=119173#p119173"><![CDATA[
Mam problem z wartością początkową T0 w atmedze8, na wstępie ustawiam sygnał zegarowy licznika na źródło zewnętrzne (T0), potem zeruję licznik aby mieć pewność że nie znajdą się w nim jakieś śmieci. Wartość licznika T0 w przerwaniu generowanym przez T1 co ok 1s przepisuję na wyświetlacz LCD. Dodatkowo każde przerwanie zmienia stan portu PD2 - do którego jest podpięta dioda - na przeciwny. <br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 15-02-2015<br /> *      Author: Marcin<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;HD44780.h&quot;<br /><br /><br />#define PRESCALER_START TCCR1B |= (1&lt;&lt;CS12);<br />#define PRESCALER_STOP TCCR1B &amp;= ~(1&lt;&lt;CS12);<br /><br />volatile int licznikT0;<br />char wynik&#91;&#93;=&quot;      &quot;;<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />PRESCALER_STOP;<br />TCNT1 = 0x0000;<br />PORTD ^= (1&lt;&lt;2);<br />licznikT0 = TCNT0;<br />itoa(licznikT0, wynik, 10);<br />LCD_GoTo(0,1);<br />LCD_WriteText(wynik);<br />PRESCALER_START;<br />}<br /><br />int main ()<br />{<br />//konfiguracja licznika zliczającego<br />TCCR0 |= ((1&lt;CS00) | (1&lt;CS01) | (1&lt;CS02));<br />TCNT0 = 254;<br /><br />DDRD |= (1&lt;&lt;2);<br />PORTD |= (1&lt;&lt;2);<br /><br />DDRD &amp;= ~(1&lt;&lt;4);<br /><br />//konfiguracja licznika do odmierzania czasu<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />OCR1A = 3906;<br />PRESCALER_START;<br />sei();<br /><br />//konfiguracja LCD<br />LCD_Initalize();<br />LCD_Clear();<br />LCD_WriteText(&quot;     Licznik&quot;);<br /><br />//pętla nieskończona<br />while(1)<br />{<br /><br />}<br />}[/syntax]<br /><br />Problem w tym przy braku sygnału na wejściu T0 wyświetlacz wyświetla wartości rożne od 0, czasem przy restarcie drugie przerwanie zwiększa lub zmniejsza tą wartość o 1, podanie jakiegokolwiek impulsu na wejście T0 w ogóle nie zmienia stanu licznika.<br />W momencie kiedy do licznikT0 podstawię bezpośrednio wartość liczbową, np<br />[syntax=c]licznikT0 = 255;[/syntax]<br />To wyświetlacz wyświetla tą wartość. Również gdy przed przypisaniem do zmiennej licznikT0 wartości TCNT0 piszę do TCNT0 0 (TCNT0 = 0x00;) to wyświetla prawidłową wartość czyli 0.<br /><br />Co robię nie tak że wyświetlacz podaje wartość w TCNT0 inną niż 0 w przypadku kiedy na wejściu T0 brak impulsów zegarowych ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3936">marcin w</a> — 15 lut 2015, o 19:20</p><hr />
]]></content>
</entry>
</feed>