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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-01-30T23:30:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5726&amp;mode</id>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2014-01-30T23:30:10+01:00</updated>
<published>2014-01-30T23:30:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67556#p67556</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67556#p67556"/>
<title type="html"><![CDATA[Re: Anody wyświetlacza na innych pinach przy multipleksowani]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67556#p67556"><![CDATA[
<div class="quotetitle">Marcin_G napisał(a):</div><div class="quotecontent"><br />Ponoć pomaga zmiana procesora w &quot;Properties&quot; projektu który stwarza problem, wciśnięcie &quot;Apply&quot;, a następnie powtórne ustawienie właściwego procesora i powinno być OK.<br /></div><br /><br />Mi pomogło teraz nie zgłasza problemu <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=122">Rafciu</a> — 30 sty 2014, o 23:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marcin_G]]></name></author>
<updated>2014-01-30T14:56:40+01:00</updated>
<published>2014-01-30T14:56:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67428#p67428</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67428#p67428"/>
<title type="html"><![CDATA[Re: Anody wyświetlacza na innych pinach przy multipleksowani]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67428#p67428"><![CDATA[
Ponoć pomaga zmiana procesora w &quot;Properties&quot; projektu który stwarza problem, wciśnięcie &quot;Apply&quot;, a następnie powtórne ustawienie właściwego procesora i powinno być OK. Piszę ponoć, bo mi ten sposób nie pomógł, ale może to dlatego że pracuje pod MAC OS. Natomiast w stu procentach problem rozwiązało to :<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/758/143deeca150c99ed6513ea5d2f96d099.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/758/143deeca150c99ed6513ea5d2f96d099.png" alt="Obrazek" /></a><br /><br />Wchodzisz w preferencje, wybierasz z opcji po lewej stronie &quot;Language Mappings&quot;, następnie &quot;Add...&quot; i przypisujesz tak jak na obrazku powyżej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=758">Marcin_G</a> — 30 sty 2014, o 14:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2014-01-29T22:37:34+01:00</updated>
<published>2014-01-29T22:37:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67355#p67355</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67355#p67355"/>
<title type="html"><![CDATA[Re: Anody wyświetlacza na innych pinach przy multipleksowani]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67355#p67355"><![CDATA[
Dzięki jacekk232, to jest moje kiepskie wyświetlanie kropki i jak już to powinno być:<br />[syntax=c]if(licznik==128) PORTB ^=SEG_DP;[/syntax]<br />przerobię to inaczej.<br /><br />Ciągle mnie jednak denerwuje dlaczego Eclips Indigio podkreśla i oznacza jako Problems (Problem description: Symbol 'TCCR0A' could not be resolved) ustawienia dotyczące Timera? Kompilator w konsoli nie zgłasza błędów. Procesor Atmega 88PA.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 29 sty 2014, o 22:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-01-29T20:37:10+01:00</updated>
<published>2014-01-29T20:37:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67305#p67305</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67305#p67305"/>
<title type="html"><![CDATA[Re: Anody wyświetlacza na innych pinach przy multipleksowani]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67305#p67305"><![CDATA[
<div class="quotetitle">Zaba napisał(a):</div><div class="quotecontent"><br />Atmega8 nie ma rejestru TCCR0A<br />i z tego ten błąd (Problem description: Symbol 'TCCR0A' could not be resolved)<br /><br /> Atmega8 ma rejestr TCCR0 gdzie dotyczy on Timera 0 (8-mio bitowego)<br />i TCCR1A, TCCR1B Timer1 (16-sto bitowy)<br /><br /><br />edit:<br />Dopiero teraz spojrzałem ty masz ATmega88 ale tu może być podobnie<br />musiałbyś sprawdzić DS <br />Sorry za zmieszanie<br /></div><br />zerknąłem do DS i akurat 88PA ma taki rejestr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 29 sty 2014, o 20:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-29T20:08:25+01:00</updated>
<published>2014-01-29T20:08:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67294#p67294</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67294#p67294"/>
<title type="html"><![CDATA[Re: Anody wyświetlacza na innych pinach przy multipleksowani]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67294#p67294"><![CDATA[
A jakie zadanie spełnia ta linia<br />[syntax=c]if(licznik==128) PORTD ^=SEG_DP;[/syntax]<br />Przecież ta linia zmienia ci stan na pinie PD7, do którego masz podłączoną anodę czwartego wyświetlacza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 29 sty 2014, o 20:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-01-29T18:37:41+01:00</updated>
<published>2014-01-29T18:37:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67267#p67267</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67267#p67267"/>
<title type="html"><![CDATA[Re: Anody wyświetlacza na innych pinach przy multipleksowani]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67267#p67267"><![CDATA[
Atmega8 nie ma rejestru TCCR0A<br />i z tego ten błąd (Problem description: Symbol 'TCCR0A' could not be resolved)<br /><br /> Atmega8 ma rejestr TCCR0 gdzie dotyczy on Timera 0 (8-mio bitowego)<br />i TCCR1A, TCCR1B Timer1 (16-sto bitowy)<br /><br /><br />edit:<br />Dopiero teraz spojrzałem ty masz ATmega88 ale tu może być podobnie<br />musiałbyś sprawdzić DS <br />Sorry za zmieszanie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 29 sty 2014, o 18:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2014-01-29T17:05:15+01:00</updated>
<published>2014-01-29T17:05:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67242#p67242</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67242#p67242"/>
<title type="html"><![CDATA[Re: Anody wyświetlacza na innych pinach przy multipleksowani]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67242#p67242"><![CDATA[
Znam tą opcję z MKAvr Calculatora ale ona raczej mi nie pomoże bo tam można wygenerować kod odpowiadający znakom dla rożnego ułożenia ,w moim przypadku katod, a ja zmieniłem piny sterujące tranzystorami które następnie sterują anodami wyświetlacza. <br /><br />Teraz chyba będzie jaśniej o co chodzi.<br /><br />d_led.h<br />[syntax=c]/*<br /> * d_led.h<br /> *<br />Edit: Rafciu<br /> *      Oryginalny kod pochodzi z książki:<br /> *      Mikrokontrolery AVR Język C-podstawy programowania.<br /> *      Mirosław Kardas<br /> *      Zapraszam:<br /> *      www.atnel.pl  www.forum.atnel.pl<br /> */<br />#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 PORTB// port z podłączonymi segmentami<br />#defineLED_DATA_DIR DDRB// rejestr kierunku portu katod wyświetlaczy<br />#define ANODY_PORT PORTD// port z podłączonymi anodami- 4 bity najmłodsze<br />#define ANODY_DIR DDRD// rejestr kierunku portu anod wyświetlaczy<br /><br /><br />#define CA1 (1&lt;&lt;PD4)// CA1 oznacza bit nr.4 portu D<br />#define CA2 (1&lt;&lt;PD5)// CA2 oznacza bit nr.5 portu D<br />#define CA3 (1&lt;&lt;PD6)// CA3 oznacza bit nr.6 portu D<br />#define CA4     (1&lt;&lt;PD7)// CA4 oznacza bit nr.7 portu D<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 />#define r 11<br />#define u 12<br />#define n 13<br />#define E 14<br />#define minus 15<br /><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]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 29 sty 2014, o 17:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2014-01-29T14:38:55+01:00</updated>
<published>2014-01-29T14:38:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67212#p67212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67212#p67212"/>
<title type="html"><![CDATA[Anody wyświetlacza na innych pinach przy multipleksowaniu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5726&amp;p=67212#p67212"><![CDATA[
Witam<br />Wykonuję sobie projekt termometru w którym będę wykorzystywał 4 wyświetlacze 7 segmentowe LED. Przekopałem trochę internet i w każdym przykładzie jaki znalazłem, tak jak w przykładzie z BB Mirka wspólne anody poszczególnych wyświetlaczy są podłączone do np pinów od PD0 do PD3. W projekcie zmieniłem układ połączeń to znaczy anody mam podłączone do portu D odpowiednio PD4 pierwsza cyfra, PD5 druga cyfra, PD6 cyfra trzecia i PD7 cyfra czwarta. Katody są podłączone do całego portu B. <br />Wpadłem na pomysł przerobienie biblioteki jak poniżej niestety pierwsza druga i trzecia cyfra wyświetlają się poprawnie, a na czwartej mam trzecią i czwartą cyfrę jednocześnie układ połączeń jest poprawny.<br /><br />[syntax=c]/*<br /> * d_led.c<br /> *<br />        Edit: Rafciu<br /> *      Oryginalny kod pochodzi z książki:<br /> *      Mikrokontrolery AVR Język C-podstawy programowania.<br /> *      Mirosław Kardas<br /> *      Zapraszam:<br /> *      www.atnel.pl  www.forum.atnel.pl<br /> */<br />#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 /><br />// definicja tablicy zawierającej definicje bitowe cyfr LED<br />uint8_t cyfry&#91;16&#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),    // 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 />~0x00,// NIC (puste miejsce 10)<br />~(SEG_E|SEG_G),                                 //11 r<br />~(SEG_C|SEG_D|SEG_E),                           //12 u<br />    ~(SEG_C|SEG_E|SEG_G),                           //13 n<br />~(SEG_A|SEG_D|SEG_E|SEG_F|SEG_G),               //14 E<br />        ~(SEG_G),                                       //15 &quot;-&quot; minus<br /><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 />TCCR0A |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0B |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024<br />OCR0A = 38;// dodatkowy podział przez 39 (rej. przepełnienia)wpisujemy 38 bo wliczamy 0<br />TIMSK0 |= (1&lt;&lt;OCIE0A);// zezwolenie na przerwanie CompareMatch<br />}<br /><br /><br />// ================= PROCEDURA OBSŁUGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER0_COMPA_vect)<br />{<br />static uint16_t licznik=16;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br />ANODY_PORT = (ANODY_PORT &amp; 0x0F);// wygaszenie wszystkich wyświetlaczy<br /><br /><br />if(licznik==16)  LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );// gdy zapalony wyśw.1 podaj stan zmiennej c1<br />else if(licznik==32) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );// gdy zapalony wyśw.2 podaj stan zmiennej c2<br />else if(licznik==64) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );// gdy zapalony wyśw.3 podaj stan zmiennej c3<br />else if(licznik==128) 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; 0x0F) | (~licznik &amp; 0xF0);// cykliczne przełączanie kolejnej anody w każdym przerwaniu i zamaskowanie nie używanych pinów<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;128) licznik = 16;// jeśli licznik większy niż 128 to ustaw na 16<br />    if(licznik==128) PORTD ^=SEG_DP;<br />}[/syntax]<br /><br />Na koniec jeszcze jedno małe pytanko dlaczego Eclips Indigio podkreśla i oznacza jako Problems (Problem description: Symbol 'TCCR0A' could not be resolved) ustawienia dotyczące Timera? Kompilator w konsoli nie zgłasza błędów.<br />Program napisany jest na  procesor Atmega 88PA taktowana 8MHz z wewnętrznego zegara.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 29 sty 2014, o 14:38</p><hr />
]]></content>
</entry>
</feed>