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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-07T20:06:00+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=8382&amp;mode</id>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2014-09-07T20:06:00+01:00</updated>
<published>2014-09-07T20:06:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94589#p94589</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94589#p94589"/>
<title type="html"><![CDATA[Re: Błąd kompilacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94589#p94589"><![CDATA[
Dalej problem sprawdziłem tą notę aplikacyjną nie wyskakuje mi żaden błąd kompilacji ale pojawiają mi się &quot;insekty&quot; na pasku i komunikat: &quot;Symbol could not be resolved&quot; przy ustawieniu timera0: <br /><br />[syntax=c]// ustawienie TIMER0 atmega 88<br />TCCR0A |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0B |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024 //ok<br />OCR0A = 38;// dodatkowy podział przez 39 (rej. przepełnienia)<br />TIMSK0 |= (1&lt;&lt;OCIE0A);// zezwolenie na przerwanie CompareMatch[/syntax]<br /><br />Nie wiem może coś źle robię mógłby ktoś zweryfikować bo ja jestem początkujący i mimo że wspieram się niebieską książką i waszymi poprzednimi radami co szczerze mówiąc sam już nie wiem..........<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 37 minutach ]</span></strong><br /><br />Jakoś rozwiązałem ten problem a mimo wszystko jeśli mógłby ktoś mnie sprawdzić odnośnie ustawień timera0 pod kątem atmegi88 byłbym wdzięczny.......<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 7 wrz 2014, o 20:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-09-04T19:50:03+01:00</updated>
<published>2014-09-04T19:50:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94279#p94279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94279#p94279"/>
<title type="html"><![CDATA[Re: Błąd kompilacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94279#p94279"><![CDATA[
I jeszcze ta linia jest błędna [syntax=c]TCCR0A |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);          // preskaler = 1024[/syntax]<br /><br />Sprawdź jeszcze raz w jakim rejestrze leżą bity CS02, CS01 i CS00.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 4 wrz 2014, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2014-09-04T19:48:27+01:00</updated>
<published>2014-09-04T19:48:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94278#p94278</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94278#p94278"/>
<title type="html"><![CDATA[Re: Błąd kompilacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94278#p94278"><![CDATA[
Pojawia mi się jeszcze jakiś Symol could not be resolved odnośnie: TCCR0A, TCCR0A, OCR0A, TIMSK0, OCIE0A i jakiś &quot;robak&quot; czy &quot;insekt&quot; obok tych linijek kodu związanych z timerem. O co chodzi bo już sam nie wiem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 4 wrz 2014, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-09-04T19:32:46+01:00</updated>
<published>2014-09-04T19:32:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94273#p94273</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94273#p94273"/>
<title type="html"><![CDATA[Re: Błąd kompilacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94273#p94273"><![CDATA[
<div class="quotetitle">moscow18-1990 napisał(a):</div><div class="quotecontent"><br />sprawdziłem dwie noty aplikacyjne<br /></div><br />...ale nie do końca <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> W megach (4|8|16|32)8 nie ma OCIE0, za to jest OCIE0A i OCIE0B<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 4 wrz 2014, o 19:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2014-09-04T19:26:06+01:00</updated>
<published>2014-09-04T19:26:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94270#p94270</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94270#p94270"/>
<title type="html"><![CDATA[Re: Błąd kompilacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=94270#p94270"><![CDATA[
Dalej problem: sprawdziłem dwie noty aplikacyjne i wyskakuje mi komunikat odnośnie ustawienia timera0:<br /><br />[syntax=c]// ustawienie TIMER0<br />TCCR0A |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0A |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024<br />OCR0A = 38;// dodatkowy podział przez 39 (rej. przepełnienia)<br />TIMSK0 |= (1&lt;&lt;OCIE0);// zezwolenie na przerwanie CompareMatch[/syntax]<br /><br />Korzystam z atmegi 88 a nie 32 o to bład:<br /><br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega88 -DF_CPU=8000000UL -MMD -MP -MF&quot;d_led.d&quot; -MT&quot;d_led.d&quot; -c -o &quot;d_led.o&quot; &quot;../d_led.c&quot;<br />../d_led.c: In function 'd_led_init':<br />../d_led.c:53: error: 'OCIE0' undeclared (first use in this function)<br />../d_led.c:53: error: (Each undeclared identifier is reported only once<br />../d_led.c:53: error: for each function it appears in.)<br />make: *** [d_led.o] Error 1<br /><br />**** Build Finished ****<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 4 wrz 2014, o 19:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-09-02T16:33:30+01:00</updated>
<published>2014-09-02T16:33:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=93996#p93996</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=93996#p93996"/>
<title type="html"><![CDATA[Re: Błąd kompilacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=93996#p93996"><![CDATA[
Chodzi o to, że Atmega88 nie posiada rejestrów TCCR0, OCR0, TIMSK i OCIE0 tylko TCCR0A, OCR0A, TIMSK0 i OCIE0A. To samo z nazwą przerwania od porównania. W Atmedze32 jest TIMER0_COMP_vect a w Atmedze88 - TIMER0_COMPA_vect.<br /><br />Po za tym po zamianie nazw rejestrów należało by jeszcze sprawdzić czy wszystkie bity konfiguracyjne leżą w tych samych rejestrach. Chodzi mi o bity CS02, CS01 i CS00. W Atmedze32 znajdują się w TCCR0 a w Atmedze88 w rejestrze TCCR0B, którego Atmega32 nie posiada.<br /><br />Najlepiej to otworzyć obydwie noty na rozpisce rejestrów Timera0 i porównać gdzie jakie bity leżą i jakie maja nazwy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 2 wrz 2014, o 16:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2014-09-02T16:07:10+01:00</updated>
<published>2014-09-02T16:07:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=93992#p93992</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=93992#p93992"/>
<title type="html"><![CDATA[Błąd kompilacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8382&amp;p=93992#p93992"><![CDATA[
Skorzystałem z gotowego kodu źródłowego z płyty z niebieskiej książki. Wyskakuje mi pewien błąd kompilacji. Ten kod jest napisany pod kątem chyba atmegi 32 ja korzystam z atmegi 88 i wprowadziłem pewne zmiany w pliku nagłówkowym odnośnie portów. O to kod w którym są błędy:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;// dołączenie głównego systemowego  pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt;// dołączenie pl. nagłówkowego potrzebnego do obsł. przerwań<br />#include &lt;avr/pgmspace.h&gt;// dołączenie pl. nagłówkowego potrzebnego do odczytu<br />// danych zawartych w pamięci programu FLASH<br /><br />#include &quot;d_led.h&quot;// dołączenie naszego pliku nagłówkowego<br />// w nim znajdują się potrzebne tu m.in. definicje preprocesora<br /><br />// definicje zmiennych globalnych przechowujących cyfry do wyświetlania<br />// volatile – ponieważ będą wykorzystywane do odczytu i zapisu zarówno w przerwaniu i programie<br />// głównym. Trzeba więc wyłączyć optymalizację dostępu do nich. (zmienne ulotne)<br />volatile uint8_t cy1;<br />volatile uint8_t cy2;<br />volatile uint8_t cy3;<br />volatile uint8_t cy4;<br /><br /><br />// definicja tablicy zawierającej definicje bitowe cyfr LED<br />const uint8_t cyfry&#91;15&#93; PROGMEM = {<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),// 0<br />~(SEG_B|SEG_C),// 1<br />~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),// 2<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),// 3<br />~(SEG_B|SEG_C|SEG_F|SEG_G),// 4<br />~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),// 5<br />~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 6<br />~(SEG_A|SEG_B|SEG_C|SEG_F),// 7<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 8<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),// 9<br />0xFF// NIC (puste miejsce)<br />};<br /><br /><br /><br />// ****** definicja funkcji inicjalizującej pracę z wyświetlaczem multipleksowanym<br />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 />}<br /><br /><br />// ================= PROCEDURA OBSŁUGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER0_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br />ANODY_PORT = (ANODY_PORT &amp; 0xF0);// wygaszenie wszystkich wyświetlaczy<br /><br /><br />if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );// gdy zapalony wyśw.1 podaj stan zmiennej c1<br />else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );// gdy zapalony wyśw.2 podaj stan zmiennej c2<br />else if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );// gdy zapalony wyśw.3 podaj stan zmiennej c3<br />else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );// gdy zapalony wyśw.4 podaj stan zmiennej c4<br /><br />ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (~licznik &amp; 0x0F);// cykliczne przełączanie kolejnej anody w każdym przerwaniu<br /><br />// operacje cyklicznego przesuwania bitu zapalającego anody w zmiennej licznik<br />licznik &lt;&lt;= 1;// przesunięcie zawartości bitów licznika o 1 w lewo<br />if(licznik&gt;8) licznik = 1;// jeśli licznik większy niż 8 to ustaw na 1<br />}[/syntax]<br /><br />Błąd który wyskakuje to:<br /><br />make all <br />Building file: ../d_led.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega88 -DF_CPU=8000000UL -MMD -MP -MF&quot;d_led.d&quot; -MT&quot;d_led.d&quot; -c -o &quot;d_led.o&quot; &quot;../d_led.c&quot;<br />../d_led.c: In function 'd_led_init':<br />../d_led.c:50: error: 'TCCR0' undeclared (first use in this function)<br />../d_led.c:50: error: (Each undeclared identifier is reported only once<br />../d_led.c:50: error: for each function it appears in.)<br />../d_led.c:52: error: 'OCR0' undeclared (first use in this function)<br />../d_led.c:53: error: 'TIMSK' undeclared (first use in this function)<br />../d_led.c:53: error: 'OCIE0' undeclared (first use in this function)<br />../d_led.c: At top level:<br />../d_led.c:58: warning: 'TIMER0_COMP_vect' appears to be a misspelled signal handler<br />make: *** [d_led.o] Error 1<br /><br />**** Build Finished ****<br /><br />A o to plik nagłówkowy:<br /><br />[syntax=c]#ifndef _d_led_h// dyrektywy zabezpieczające przed wielokrotnym dołączaniem<br />#define _d_led_h// tego samego pliku nagłówkowego jeśli będzie dołączany<br />// w wielu różnych plikach programu<br /><br />// definicje portów i pinów wyświetlacza używanych dla ułatwienia w programie jako stałe preprocesora<br />#define LED_DATA PORTD// port z podłączonymi segmentami<br />#defineLED_DATA_DIR DDRD// rejestr kierunku portu katod wyświetlaczy<br />#define ANODY_PORT PORTC// port z podłączonymi anodami- 4 bity najmłodsze<br />#define ANODY_DIR DDRC// rejestr kierunku portu anod wyświetlaczy<br /><br /><br />#define CA1 (1&lt;&lt;PC2)// CA1 oznacza bit nr.0 portu C //ok<br />#define CA2 (1&lt;&lt;PC3)// CA2 oznacza bit nr.1 portu C<br />#define CA3 (1&lt;&lt;PC4)// CA3 oznacza bit nr.2 portu C<br />#define CA4 (1&lt;&lt;PC5)// CA4 oznacza bit nr.3 portu C<br /><br />// definicje bitów dla poszczególnych segmentów LED<br />#define SEG_A (1&lt;&lt;0)<br />#define SEG_B (1&lt;&lt;1)<br />#define SEG_C (1&lt;&lt;2)<br />#define SEG_D (1&lt;&lt;3)<br />#define SEG_E (1&lt;&lt;4)<br />#define SEG_F (1&lt;&lt;5)<br />#define SEG_G (1&lt;&lt;6)<br />#define SEG_DP (1&lt;&lt;7)<br /><br />#define NIC 10<br /><br />// same DEKLARACJE zmiennych globalnych na potrzeby wykorzystania ich w innych plikach projektu<br />// przydomek externpowoduje, iż te zmienne będą dostępne we wszystkich modułach, które dołączą plik<br />// d_led.h za pomocą dyrektywy #include<br />extern volatile uint8_t cy1;<br />extern volatile uint8_t cy2;<br />extern volatile uint8_t cy3;<br />extern volatile uint8_t cy4;<br /><br /><br /><br />void d_led_init(void);<br /><br />#endif// koniec _d_led_h[/syntax]<br /><br />I main:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;// dołączenie głównego systemowego  pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />#include &quot;d_led.h&quot;// dołączenie naszego pliku nagłówkowego (obsługa LED)<br /><br />int main(void)<br />{<br />// ****** inicjalizacja *********<br />d_led_init();   // inicjalizacja wyświetlacza multipleksowanego<br /><br />// testowa inicjalizacja zmiennych oraz liczb mających się wyświetlać na wyrw. LED<br />cy1=NIC;<br />cy2=4;<br />cy3=1;<br />cy4=NIC;<br /><br />sei();// włączenie globalnego zezwolenia na przerwania<br /><br /><br /><br />//DDRA |= (1&lt;&lt;PA5);<br />//while(1)<br />//{<br />//PORTA ^= (1&lt;&lt;PA5);<br />//_delay_ms(1000);<br />//}<br /><br />uint16_t licznik=6000;<br />uint8_t d1,d2,d3,d4;<br /><br />//**********************  pętla główna<br />while(1)<br />{<br />licznik--;<br /><br />d1=licznik/1000;<br />if(d1) cy1=d1; else cy1=NIC;<br />d2=(licznik-(d1*1000))/100;<br />if(d2) cy2=d2; else cy2=(licznik&gt;999)?0:NIC;<br />d3=(licznik-(d1*1000)-(d2*100))/10;<br />if(d3) cy3=d3; else cy3=(licznik&gt;99)?0:NIC;<br />d4=(licznik-(d1*1000)-(d2*100)-(d3*10));<br />cy4=d4;<br />_delay_ms(10);<br />//if(licznik&gt;9999) licznik=0;<br />if(!licznik) licznik=6000;<br />}<br />}[/syntax]<br /><br />Moje pytanie brzmi: o co tu chodzi? Błąd wyskakuje d_led.c.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 2 wrz 2014, o 16:07</p><hr />
]]></content>
</entry>
</feed>