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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-01-28T11:45:42+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=17468&amp;mode</id>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-01-28T11:45:42+01:00</updated>
<published>2017-01-28T11:45:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181106#p181106</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181106#p181106"/>
<title type="html"><![CDATA[Re: Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181106#p181106"><![CDATA[
Dzięki za wyrozumiałość i szczegółowe wyjaśnienie.<br /><br />pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 28 sty 2017, o 11:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-01-28T11:04:14+01:00</updated>
<published>2017-01-28T11:04:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181099#p181099</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181099#p181099"/>
<title type="html"><![CDATA[Re: Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181099#p181099"><![CDATA[
Ale co jest niezgodnego w BB ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Przecież w BB masz pokazaną inicjalizację timera razem z jego wystartowaniem natychmiast.<br /><br />Ja natomiast odniosłem wrażenie, że ty chcesz go po prostu startować dużo później niż w czasie inicjalizacji, czyli dopiero gdy przyleci coś tam na UART.<br /><br />Wtedy po prostu wyciągam włączenie preskalera na zewnątrz żeby go włączyć - gdyby tak miało być - poprzez ustawianie bitów CSXn ... (co w tym jest niezrozumiałego?)<br /><br />Poszedłem nawet dalej sądząc, że być może skoro gdzieś tam chcesz go startować to być może chcesz go również zatrzymywać - no to pokazałem ci opowiedziałem DOKŁADNIE tak to się robi ... <br /><br />TYLKO POPRZEZ ustawianie bądź zerowanie bitów CSXn<br /><br />i dlatego pokazałem, że można tak robić za pomocą MAKR - no żesz zobacz Pan sobie chociażby do GreenBooka do kodu WAV Playera <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> toż TAM DOKŁADNIE takie cosik robię<br /><br />Oczywiście ty możesz robić jak ci się żywnie podoba ale ty pytasz mnie teraz?<br /><br /><div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />i do tej pory tak to robiłem bez dodatkowych makr.<br /></div><br /><br />czy dla ciebie inicjalizacja timera to KONIECZNIE te wszystkie linijki ?<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />// ustawienie TIMER0<br />        TCCR0 |= (1&lt;&lt;WGM01);                            // tryb CTC<br /><span style="color: #FF0000">        TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);           // preskaler = 1024</span><br />        OCR0 = 38;                                                      // dodatkowy podział przez 39 (rej. przepełnienia)<br />        TIMSK |= (1&lt;&lt;OCIE0);                            // zezwolenie na przerwanie CompareMatch<br /></div><br /><br />Czy nie widzisz - że ta linijka na czerwono to po prostu START timera ? A reszta to tak na prawdę konfiguracja modułu sprzętowego timera? (która RAZ się wykona i obowiązuje w całym programie - po jaką choinkę wykonywać ją w tym miejscu gdzie ty pokazałeś to na początku?) Po prostu jeśli wiemy że ma od razu wystartować to startujemy go w INICJALIZACJI, ale jeśli zależy nam, żeby startował w innym miejscu programu a nie przy STARCIE MAIN, to wtedy tę linijkę przenosimy gdzie indziej ...<br /><br />i jeszcze raz powtórzę - skoro już go startujemy w innym miejscu to czasem bywa potrzeba też aby go np zatrzymać - to wtedy właśnie wystarczy wyzerować te bity w tej linijce - i na tę OKOLICZNOŚĆ pokazałem ci te dwa MAKRA<br />a nie po to żeby ich używać w inicjalizacji ...<br /><br />A ty już sam zdecyduj KIEDY potrzebujesz startować ten timer.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 sty 2017, o 11:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-01-28T10:41:21+01:00</updated>
<published>2017-01-28T10:41:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181097#p181097</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181097#p181097"/>
<title type="html"><![CDATA[Re: Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181097#p181097"><![CDATA[
Panie Mirku<br /><br />Z ustawieniami timera wzorowałem się na BB str.200<br />dalej mamy funkcję <br />[syntax=c]void d_led_init(void)<br />{<br />LED_DATA_DIR = 0xFF;   // wszystkie piny portu C jako WYJŚCIA(katody)<br />LED_DATA = 0xFF;// wygaszenie wszystkich katod – stan wysoki<br />ANODY_DIR |= CA1 | CA2 | CA3 | CA4;// 4 piny portu A jako WYJŚCIA (anody wyświetlaczy)<br />ANODY_PORT |= CA1 | CA2 | CA3  | CA4;// wygaszenie wszystkich wyświetlaczy - anody<br /><br />// ustawienie TIMER0<br />TCCR0 |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024<br />OCR0 = 38;// dodatkowy podział przez 39 (rej. przepełnienia)<br />TIMSK |= (1&lt;&lt;OCIE0);// zezwolenie na przerwanie CompareMatch<br />}[/syntax]<br /><br />a w głównej funkcji programu tylko jej wywołanie<br />[syntax=c]int main(void)<br />{<br />// ****** inicjalizacja *********<br />d_led_init();   // inicjalizacja wyświetlacza multipleksowanego[/syntax]<br /><br />i do tej pory tak to robiłem bez dodatkowych makr.<br />Gdy z jakichś względów chciałem zatrzymać timer to po prostu zerowałem mu bity w rejestrze TCCRx odpowiedzialne za preskaler.<br />No i mam dylemat czy sposób z książki czy z postów powyżej? Jak to powinno wyglądać zgodnie ze sztuką?<br />Proszę o wyrozumiałość<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 28 sty 2017, o 10:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-01-27T23:01:20+01:00</updated>
<published>2017-01-27T23:01:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181077#p181077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181077#p181077"/>
<title type="html"><![CDATA[Re: Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181077#p181077"><![CDATA[
<div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />Rozumiem, że timer nie wystartuje przed pętlą &quot;while(1)?<br /></div><br /><br />No ale przecież pisałem wyżej ... Staraj się zrozumieć jak działają moduły sprzętowe w procku. Jak myślisz PO CO JEST PRESCALER? który ma przy wartościach bitów CSXn równych 0 - wartość podziału ? jaką ? ... żadnego podziału a więc precaler jest ODŁĄCZONY czyli nie podaje timerowi taktowania - rozumiesz? W związku z tym on nie może tykać ... działać<br /><br />żeby było zgodnie ze sztuką to wszystkie inne bity konfigurujesz RAZ przed pętlą główną w main a później jak pisałem<br />albo go odpalasz<br /><br />nawet byle makrami <br /><br />[syntax=c]#define START_TIMER  TCCRB |= (1&lt;&lt;CS11)|(1&lt;&lt;CS10); // jakiś tam preskaler<br /><br />#define STOP_TIMER TCCRB &amp;= ~( (1&lt;&lt;CS11)|(1&lt;&lt;CS10) );  // wyłączamy timer odłączając preskaler[/syntax]<br /><br />toż to PODSTAWA podstaw a nie tam zastanawiania się czy aby mi timer sam nie ruszy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />... sam nie ruszy - TY go musisz ruszyć albo zatrzymać - teraz jaśniej ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 sty 2017, o 23:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-01-27T21:58:01+01:00</updated>
<published>2017-01-27T21:58:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181069#p181069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181069#p181069"/>
<title type="html"><![CDATA[Re: Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181069#p181069"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />robisz w sekcji INIT jeszcze przed pętlą główną w funkcji MAIN, a timer nie wystartuje  <br /> [/syntax]<br /></div><br /><br />No faktycznie z tą klamrą to namieszałem ehh.....<br />Rozumiem, że timer nie wystartuje przed pętlą &quot;while(1)?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 27 sty 2017, o 21:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-01-27T21:42:17+01:00</updated>
<published>2017-01-27T21:42:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181067#p181067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181067#p181067"/>
<title type="html"><![CDATA[Re: Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181067#p181067"><![CDATA[
to co powiedział kolega powyżej to PODSTAWA - boś pan namieszał że aż strach <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />a po drugie .... nie wiesz jak się włącza/wyłącza timer sprzętowy ?<br /><br />czy potrzeba zaraz robić TAKI KAWAŁ kodu ?<br /><br />[syntax=c]TCCR2 |=(1&lt;&lt;WGM21);<br />                  TCCR2 |=(1&lt;&lt;CS20)|(1&lt;&lt;CS21)|(1&lt;&lt;CS22);                    // tryb CTC dla Timerów programowych  ~100Hz<br />                  OCR2 = 156;<br />                  TIMSK =(1&lt;&lt;OCIE2);[/syntax]<br /><br />Panie kochany .... samo to:<br /><br />[syntax=c]TCCR2 |=(1&lt;&lt;WGM21);<br />                  OCR2 = 156;<br />                  TIMSK =(1&lt;&lt;OCIE2);[/syntax]<br />robisz w sekcji INIT jeszcze prze pętlą główną w funkcji MAIN, a timer nie wystartuje - za to przygotowałeś go do pracy, żeby go wystartować to później wystarczy w kodzie włączyć mu już sam presklaler<br /><br />[syntax=c]TCCR2 |=(1&lt;&lt;CS20)|(1&lt;&lt;CS21)|(1&lt;&lt;CS22);                    // tryb CTC dla Timerów programowych  ~100Hz[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 sty 2017, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matw]]></name></author>
<updated>2017-01-27T21:29:40+01:00</updated>
<published>2017-01-27T21:29:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181064#p181064</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181064#p181064"/>
<title type="html"><![CDATA[Re: Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181064#p181064"><![CDATA[
Masz lekki bałagan w kodzie, chodzi o wcięcia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Widzę że definicje funkcji Timer2_ON masz wewnątrz definicji funkcji dane_rs232 - stąd problemy. Popraw to i będzie ok.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2394">matw</a> — 27 sty 2017, o 21:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-01-27T21:22:37+01:00</updated>
<published>2017-01-27T21:22:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181061#p181061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181061#p181061"/>
<title type="html"><![CDATA[Kłopot z włączeniem timera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17468&amp;p=181061#p181061"><![CDATA[
witam Kolegów<br /><br />Przerabiam sobie jeden z poradników odnośnie UART-a. Programik działa bez problemu więc postanowiłem iść dalej i chcę powołać do życia timer który będzie mi potrzebny w dalszym kodzeniu przy timerach programowych. Mam zonka bo chciałem włączać timer pseudo-funkcją Timer2_ON();<br />a dostaję komunikat że mam niezdefiniowane odniesienie <br />Cały kod<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br /><br />#include &quot;MK_USART/mkuart.h&quot;<br /><br /><br />#define LCD_ON         PORTA |=(1&lt;&lt;PA7)<br />#define LCD_OFF        PORTA &amp;=~(1&lt;&lt;PA7)<br />#define LCD_TOG        PORTA ^=(1&lt;&lt;PA7)<br /><br /><br /><br /><br />char uart_buf&#91;100&#93;;<br /><br />void dane_rs232( char *buf);<br /><br />void Timer2_ON(void);<br /><br /><br />int main(void){<br /><br />DDRA |=(1&lt;&lt;PA7);<br /><br /><br /><br /><br />USART_Init(__UBRR);<br /><br />Timer2_ON();<br /><br />register_uart_str_rx_event_callback( dane_rs232);<br /><br /><br /><br /><br />sei();<br /><br />while(1)<br />{<br />UART_RX_STR_EVENT(uart_buf );<br /><br /><br /><br /><br />}<br />}<br /><br />void dane_rs232( char *buf)<br />{<br />if(!strcmp(buf,&quot;marek&quot;)){<br />LCD_ON;<br />}<br />if(!strcmp(buf,&quot;paulina&quot;)){<br />LCD_OFF;<br />}<br /><br /> void Timer2_ON(void)<br />  {<br />  TCCR2 |=(1&lt;&lt;WGM21);<br />  TCCR2 |=(1&lt;&lt;CS20)|(1&lt;&lt;CS21)|(1&lt;&lt;CS22);                    // tryb CTC dla Timerów programowych  ~100Hz<br />  OCR2 = 156;<br />  TIMSK =(1&lt;&lt;OCIE2);<br />  }<br />}<br /><br /><br />ISR(TIMER2_COMP_vect)<br />{<br /><br />}[/syntax]<br /><br />i zrzut ekranu<br /><br /><a href="https://obrazkiforum.atnel.pl/4651/9c9618f68fe1b5d8104fc03fa1525543.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4651/9c9618f68fe1b5d8104fc03fa1525543.jpg" alt="Obrazek" /></a><br /><br />coś robię nie tak ale nie wiem co......<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 27 sty 2017, o 21:22</p><hr />
]]></content>
</entry>
</feed>