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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-09-21T12:16:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8301&amp;mode</id>
<entry>
<author><name><![CDATA[Gozer]]></name></author>
<updated>2015-09-21T12:16:17+01:00</updated>
<published>2015-09-21T12:16:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140307#p140307</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140307#p140307"/>
<title type="html"><![CDATA[Re: Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140307#p140307"><![CDATA[
No przecież....<br /><br />Teraz się kompiluje bez problemów. Dzięki!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11112">Gozer</a> — 21 wrz 2015, o 12:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-09-21T10:23:08+01:00</updated>
<published>2015-09-21T10:23:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140301#p140301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140301#p140301"/>
<title type="html"><![CDATA[Re: Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140301#p140301"><![CDATA[
Brakuje pliku nagłówkowego:<br />[syntax=c]#include &lt;avr/pgmspace.h&gt;// do odczytu danych zawartych w pamięci programu FLASH[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 21 wrz 2015, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gozer]]></name></author>
<updated>2015-09-21T09:49:53+01:00</updated>
<published>2015-09-21T09:49:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140299#p140299</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140299#p140299"/>
<title type="html"><![CDATA[Re: Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=140299#p140299"><![CDATA[
Pozwólcie, że się podepnę.<br />Jakoś dwa tygodnie temu zacząłem kombinować z C i AVR. Korzystam z Blue Book`a. I mam mkAVR Calculator.<br /><br />Póki co wszystko szło gładko aż do teraz. <br /><br />Napisałem sobie dla ATTINY13 PWM`a<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  PWM TEST<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />int main(void)<br /><br />{<br /><br />  uint8_t i;<br />  DDRB|=(1&lt;&lt;PB0); /*PB0 Jako wyjście*/<br />  /*Ustawienie licznika*/<br />  TCCR0A=(1&lt;&lt;WGM01)|(1&lt;&lt;WGM00)|(1&lt;&lt;COM0A1)|(0&lt;&lt;COM0A0);<br />  TCCR0B=(1&lt;&lt;CS00);<br /><br />  while(1)<br />  {<br />    for(i=0;i&lt;255;i++)<br />    {<br />      TCNT0=0;<br />      OCR0A=i;<br />      _delay_ms(20);<br /><br />    }<br />    for(i=255;i&gt;0;i--)<br />        {<br />          TCNT0=255;<br />          OCR0A=i;<br />          _delay_ms(20);<br /><br />  }<br />  }}[/syntax]<br /><br />No i działa. Wsjo jest OK. Dioda sie powoli rozjaśnia a potem powoli gaśnie.<br />Jednak w mkAVR Calculatorze jest korekcja Gamma, która też chciałem przetestować.<br /><br />No i przerobiłem powyższy mini programik na taki: <br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  TEST PWM GAMMA<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#define GAMMAR(a) (pgm_read_byte(&amp;gamma_correctionR&#91;a&#93;))  // macro for RED<br /><br />const uint8_t gamma_correctionR&#91;&#93; PROGMEM = {<br />  0,  1,  1,  1,  2,  3,  5,  7, 10, 13, 17, 21, 26, 32, 38, 45, 52, 60,<br /> 69, 78, 88, 99,111,124,137,151,166,182,199,217,235,255<br />};<br /><br />int main(void)<br /><br />{<br /><br />extern const uint8_t gamma_correctionR&#91;&#93;;<br />  uint8_t i;<br />  DDRB|=(1&lt;&lt;PB0); /*PB0 Jako wyjście*/<br />  /*Ustawienie licznika*/<br />  TCCR0A=(1&lt;&lt;WGM01)|(1&lt;&lt;WGM00)|(1&lt;&lt;COM0A1)|(0&lt;&lt;COM0A0);<br />  TCCR0B=(1&lt;&lt;CS00);<br /><br />  while(1)<br />  {<br />    for(i=0;i&lt;255;i++)<br />    {<br />      TCNT0=0;<br />      OCR0A=GAMMAR(i);<br />      _delay_ms(20);<br /><br />    }<br />    for(i=255;i&gt;0;i--)<br />        {<br />          TCNT0=255;<br />          OCR0A=GAMMAR(i);<br />          _delay_ms(20);<br /><br />  }<br />  }}[/syntax]<br /><br />No i niestety cały czas mam w Eclipse błąd &quot;Syntax error&quot; przed [syntax=c]const uint8_t gamma_correctionR&#91;&#93; PROGMEM = {<br />  0,  1,  1,  1,  2,  3,  5,  7, 10, 13, 17, 21, 26, 32, 38, 45, 52, 60,<br /> 69, 78, 88, 99,111,124,137,151,166,182,199,217,235,255<br />};[/syntax]<br /><br />A po próbie kompilacji w konsoli mam:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">10:44:27 **** Incremental Build of configuration Release for project PWM_tiny13 ****<br />make all <br />'Building file: ../main.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=attiny13 -DF_CPU=1200000UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c:11:35: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'PROGMEM'<br /> const uint8_t gamma_correctionR&#91;&#93; PROGMEM = {<br />                                   ^<br />../main.c: In function 'main':<br />../main.c:35:7: warning: implicit declaration of function 'pgm_read_byte' &#91;-Wimplicit-function-declaration&#93;<br />       OCR0A=GAMMAR(i);<br />       ^<br />make: *** &#91;main.o&#93; Błąd 1<br /><br />10:44:28 Build Finished (took 399ms)</div><br /><br />Podpowiecie całkowicie zielonemu co zrąbałem i jak to naprawić?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11112">Gozer</a> — 21 wrz 2015, o 09:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kuba]]></name></author>
<updated>2014-08-27T23:16:50+01:00</updated>
<published>2014-08-27T23:16:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93222#p93222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93222#p93222"/>
<title type="html"><![CDATA[Re: Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93222#p93222"><![CDATA[
Dzięki za pomoc, już tego rozumie  i Panu Mirkowi z przykotowanie fajnego programiku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1439">kuba</a> — 27 sie 2014, o 23:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[HCOOH]]></name></author>
<updated>2014-08-27T21:40:47+01:00</updated>
<published>2014-08-27T21:40:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93202#p93202</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93202#p93202"/>
<title type="html"><![CDATA[Re: Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93202#p93202"><![CDATA[
To makro działa w taki sposób (jak zresztą każde makro utworzone dyrektywą # <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />), że w każdym miejscu w Twoim kodzie źródłowym, gdzie napisałeś<br />[syntax=c]GAMMAR(jakaś_liczba)[/syntax]<br />powyższy zapis zostanie przed kompilacją zmieniony na<br />[syntax=c]pgm_read_byte(&amp;gamma_correctionR&#91;jakaś_liczba&#93;)[/syntax]<br /><br />Zaś sama instrukcja kryjąca się pod rozwinięciem tego makra to instrukcja pobierająca jeden bajt spod danego adresu (w pamięci Flash) i zwracająca jego wartość (której potem możesz użyć np. do podstawienia, choćby: OCR0A = pgm_read_byte(&amp;gamma_correctionR[jakaś_liczba]); ).<br /><br />Jako argument pgm_read_byte przyjmuje adres i, jak widać na powyższym przykładzie, adres ten otrzymuje. Jest to adres elementu tablicy gamma_correctionR o indeksie jakaś_liczba (w moim przykładzie).<br /><br /><br />A zatem zamiast pisać tę długą wersję pgm_read_byte...itd. możesz napisać np.:<br />[syntax=c]OCR0A = GAMMAR(15);[/syntax]<br />Co spowoduje wpisanie do rejestru OCR0A wartości z szesnastego elementu tablicy gamma_correctionR zapisanej w pamięci programu.<br /><br /><br /><br />Załóżmy że masz diodę podłączoną do procka anodą (czyli wystawienie stanu wysokiego na pinie powoduje jej zapalenie). Jeśli chcesz go używać w pętli do rozjaśniania diody w taki sposób, że, powiedzmy, stopień jasności będzie zmieniał się co 50 ms i masz nie więcej niż 8-bitową rozdzielczość skoków jasności (max 256 poziomów, wliczając 0 - stan wygaszenia), to możesz to zrobić tak:<br />[syntax=c]#define WIELK_TABELI 32 <br />// liczbę 32 podmień na taką, jaką ustawiłeś w programie Mirka jako wielkość tabeli<br /><br />uint8_t i = 0; // najpierw tworzymy zmienną, która będzie sobie &quot;tykała&quot;, powodując przechodzenie na kolejne poziomy PWM<br />while(i &lt; WIELK_TABELI)<br />{<br /> OCR0A = GAMMAR(i); // tu jest sedno używania tej instrukcji w pętli<br /> // do rejestru wpisana zostaje wartość i-ego elementu tablicy gamma_correctionR<br /> <br /> i++; // po czym i jest inkrementowane, więc w następnym obiegu pętli wskaże już na kolejny element tablicy<br /> // z wyższą wartością dla OCR0A<br /><br /> _delay_ms(50); // i oczywiście odczekanie 50 ms zanim pętla wróci do początku i wykona się po raz kolejny<br />}[/syntax]<br /><br />Chyba teraz bez trudu dopiszesz sobie tuż za tą pętlą drugą pętlę, która tym razem będzie diodę ściemniać <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Możesz skorzystać z wyinkrementowanej zmiennej &quot;i&quot;, żeby tym razem ją zdekrementować do zera.<br /><br />Oczywiście jeśli masz diodę podłączoną do pinu katodą, to powyższa instrukcja będzie diodę wygaszać, a nie rozjaśniać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />A... i nie zapomnij podłączyć do projektu biblioteki util/delay.h <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=2954">HCOOH</a> — 27 sie 2014, o 21:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kuba]]></name></author>
<updated>2014-08-27T19:56:39+01:00</updated>
<published>2014-08-27T19:56:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93176#p93176</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93176#p93176"/>
<title type="html"><![CDATA[Re: Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93176#p93176"><![CDATA[
I jeszcze jedno pytanie. Jak korzystać z korekcji gamma nie rozumiem tego makra [syntax=c]#define GAMMAR(a) (pgm_read_byte(&amp;gamma_correctionR&#91;a&#93;))[/syntax]jak go używać w pentli głównej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1439">kuba</a> — 27 sie 2014, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kuba]]></name></author>
<updated>2014-08-27T14:44:54+01:00</updated>
<published>2014-08-27T14:44:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93113#p93113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93113#p93113"/>
<title type="html"><![CDATA[Re: Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93113#p93113"><![CDATA[
utworzył projekt nowy i działa <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=1439">kuba</a> — 27 sie 2014, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kuba]]></name></author>
<updated>2014-08-27T13:56:46+01:00</updated>
<published>2014-08-27T13:56:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93108#p93108</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93108#p93108"/>
<title type="html"><![CDATA[Timer attiny2313]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8301&amp;p=93108#p93108"><![CDATA[
Witam <br /><br />Robię programowy PWM na ATtiny2313 ale nie można ustawić TIMER0 jaki mam błąd ?<br />[syntax=c]TCCR0A |= (1&lt;&lt;WGM01);           // tryb  CTC<br />TCCR0B |= (1&lt;&lt;CS00);            // preskaler = 1<br />OCR0A |= 199;                   // <br />TIMSK |= (1&lt;&lt;OCIE0A);          //zezwolenie na przerwanie CompareMatch[/syntax]<br /><br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">../main.c: In function 'main':<br />../main.c:34:2: error: 'TCCR0A' undeclared (first use in this function)<br />../main.c:34:2: note: each undeclared identifier is reported only once for each function it appears in<br />../main.c:35:2: error: 'TCCR0B' undeclared (first use in this function)<br />../main.c:36:2: error: 'OCR0A' undeclared (first use in this function)<br />../main.c:37:15: error: 'OCIE0A' undeclared (first use in this function)<br />make: *** &#91;main.o&#93; Error 1</div><br /><br />Dzięki za pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1439">kuba</a> — 27 sie 2014, o 13:56</p><hr />
]]></content>
</entry>
</feed>