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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5715&amp;mode</id>
<entry>
<author><name><![CDATA[pietszyk]]></name></author>
<updated>2014-01-29T07:47:51+01:00</updated>
<published>2014-01-29T07:47:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67144#p67144</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67144#p67144"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67144#p67144"><![CDATA[
Skoro na mega 32 działało to i tu bez kombinowania z podciąganiem powinno działać. Nota do łapki i sprawdzać konfigurację bo skoro to mega 8 to w TIMSK nie ma OCIE2 tylko OCIE1A i OCIE1B.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2341">pietszyk</a> — 29 sty 2014, o 07:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2014-01-28T23:24:56+01:00</updated>
<published>2014-01-28T23:24:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67137#p67137</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67137#p67137"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67137#p67137"><![CDATA[
Jeżeli masz ATMega8 jak w temacie to ona nie ma rejestru TCCR0A tylko TCCR0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 28 sty 2014, o 23:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafciu]]></name></author>
<updated>2014-01-29T14:24:30+01:00</updated>
<published>2014-01-28T22:51:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67136#p67136</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67136#p67136"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67136#p67136"><![CDATA[
Post do usunięcia  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=122">Rafciu</a> — 28 sty 2014, o 22:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-01-28T17:24:50+01:00</updated>
<published>2014-01-28T17:24:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67097#p67097</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67097#p67097"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67097#p67097"><![CDATA[
Panowie tak jak mówił PKoz !!! Wystarczy podciągnąć wyjścia sterownicze pod vcc i problem znika! Pytanie jaka powinna być wartość ustalona? ja dałem 380R i znikło w 90%. Wiadomo , żę jak dam trszkę wiekszy opór to zniknie w zupełności. Czy jest to jaka ustalona wartość ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 28 sty 2014, o 17:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BIGjack]]></name></author>
<updated>2014-01-28T17:17:31+01:00</updated>
<published>2014-01-28T17:17:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67094#p67094</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67094#p67094"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67094#p67094"><![CDATA[
Zamień to;<br /><div class="quotetitle">Morcinek92 napisał(a):</div><div class="quotecontent"><br />    ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (~licznik &amp; 0x0F);  <br /></div><br />Na to;<br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (licznik &amp; 0x0F);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1249">BIGjack</a> — 28 sty 2014, o 17:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-01-28T16:29:44+01:00</updated>
<published>2014-01-28T16:29:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67086#p67086</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67086#p67086"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67086#p67086"><![CDATA[
W ten sposob?? Bo jeśli tak to nadal jest identycznie jak było..<br /><br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; 0x0F);<br />ANODY_PORT &amp;= ~licznik;       // wygaszenie wszystkich wyświetlaczy oraz maska aby inne bity niz pierwsze            cztery  Nie ulegly zmianie<br /><br />            if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );         //Gdy zapalony wyswietlacz 1 podaj wartosc zmiennej cy1<br />            else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );    //Gdy zapalony wyswietlacz 2 podaj wartos zmiennej cy2<br />            else if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );    //Gdy zapalony wyswietlacz 3 podaj wartos zmiennej cy3<br />            else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );    //Gdy zapalony wyswietlacz 4 podaj wartos zmiennej cy4<br /><br />            ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (~licznik &amp; 0x0F);            // cykliczne przełączanie kolejnej anody w każdym przerwaniu[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 28 sty 2014, o 16:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2014-01-28T16:05:28+01:00</updated>
<published>2014-01-28T16:05:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67085#p67085</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67085#p67085"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67085#p67085"><![CDATA[
Wygaszenie wystarczyłoby ustawienie bitów 0 do 3 na 1 czyli<br />[syntax=c]ANODY_PORT |=  0x0F;[/syntax]<br />a zapalenie jednego wyświetlacza <br />[syntax=c]ANODY_PORT &amp;= ~licznik;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 28 sty 2014, o 16:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-01-28T15:37:05+01:00</updated>
<published>2014-01-28T15:37:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67079#p67079</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67079#p67079"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67079#p67079"><![CDATA[
biblioteki.<br />d_led.c[syntax=c]#include&lt;avr/io.h&gt;                      //Glowny systemowy plik naglowkowy<br />    #include&lt;avr/interrupt.h&gt;       //Plik naglowkowy do obslugi przerwan<br />    #include &lt;avr/pgmspace.h&gt;       // dołączenie pl. nagłówkowego potrzebnego do odczytu danych zawartych w pamięci programu FLASH<br /><br />    #include &quot;d_led.h&quot;                      //Plik naglowkowy do obslugi LED w ktorym znajduja sie defincje 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 /><br />    volatile uint8_t cy1;<br />    volatile uint8_t cy2;<br />    volatile uint8_t cy3;<br />    volatile uint8_t cy4;<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 />                    ~(SEG_A|SEG_F|SEG_G|SEG_C|SEG_D),                               // 10 Litera S<br />                    ~(SEG_A|SEG_B|SEG_E|SEG_F|SEG_C|SEG_G),                 // 11 Litera A<br />                    0xFF                                                                                    // 12 NIC (puste miejsce)<br />    };<br /><br />    //Definicja funkcji inicjalizujacej prace z wyswietlaczem multiplesowanym<br />    void d_led_init(void)<br />    {<br />            LED_DATA_DIR = 0xFF;                                    //PORT A jako wyjscie<br />            LED_DATA = 0xFF;                                                //Wygaszenie katod stan wysoki<br />            ANODY_DIR |= CD1 | CD2 | CD3 | CD4;             //4 piny portu D jako wyjscia<br />            ANODY_PORT |= CD1 | CD2 | CD3 | CD4;    //Wygaszenie wszystkich wyswietlaczy<br /><br />            TCCR2 |= (1&lt;&lt;WGM21);                            // tryb CTC<br />            TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);         // preskaler = 1024<br />            OCR2 = 39;                                                      // dodatkowy podział przez 39 (rej. przepełnienia)<br />            TIMSK |= (1&lt;&lt;OCIE2);                            // zezwolenie na przerwanie CompareMatch<br />    }<br /><br />    //Procedura obslugi przerwania - Compare Match<br />    ISR(TIMER2_COMP_vect)<br />    {<br />            static uint8_t licznik=1;                       //Zmienna do przelaczania kolejno anod wyswietlacza,<br />                                                                                    //cykliczne przelaczanie w kazdym przerwaniu anod kazdego wyswietlacza (wartosc negowana aby krazylo zero)<br /><br />            ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (~licznik &amp; 0x0F);           // wygaszenie wszystkich wyświetlaczy oraz maska aby inne bity niz pierwsze cztery nie ulegly zmianie<br /><br />            if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );         //Gdy zapalony wyswietlacz 1 podaj wartosc zmiennej cy1<br />            else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );    //Gdy zapalony wyswietlacz 2 podaj wartos zmiennej cy2<br />            else if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );    //Gdy zapalony wyswietlacz 3 podaj wartos zmiennej cy3<br />            else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );    //Gdy zapalony wyswietlacz 4 podaj wartos zmiennej cy4<br /><br />            ANODY_PORT = (ANODY_PORT &amp; 0xF0) | (~licznik &amp; 0x0F);           // cykliczne przełączanie kolejnej anody w każdym przerwaniu<br /><br />            licznik &lt;&lt;=1;                                           //operacje cyklicznego przesuwania bitu zapalajacego anody w zmiennej licznik o 1 w lewo<br />            if(licznik&gt;8) licznik = 1;                      //jezeli licznik wiekszy niz 8 to ustaw go na 1<br /><br /><br />    }[/syntax]<br />d_led.h<br />[syntax=c]#ifndef D_LED_H_<br />    #define D_LED_H_<br /><br />    //Definicje portow i pinow wyswietlacza uzywanych dla ulatwienia w programie jako stale preporocesora<br />    #define LED_DATA                PORTD   //port A z podlaczonymi segmentami<br />    #define LED_DATA_DIR    DDRD    //rejestr kierunku portu katod wyświetlaczy<br />    #define ANODY_PORT              PORTC   //port podlaczony z czterema anodami do wlaczania wyswietlaczy<br />    #define ANODY_DIR               DDRC    //rejestr kierunku portu anod wyświetlaczy<br /><br /><br />    #define CD1             (1&lt;&lt;PC0)                //CD1 oznacza bit nr 0 portu D czyli liczbe 1<br />    #define CD2             (1&lt;&lt;PC1)                //CD2 oznacza bit nr 1 portu D czyli liczbe 2<br />    #define CD3             (1&lt;&lt;PC2)                //CD3 oznacza bit nr 2 portu D czyli liczbe 4<br />    #define CD4             (1&lt;&lt;PC3)                //CD4 oznacza bit nr 3 portu D czyli liczbe 8<br /><br />    // definicje bitów dla poszczególnych segmentów LED<br />    #define SEG_A (1&lt;&lt;PD7)<br />    #define SEG_B (1&lt;&lt;PD6)<br />    #define SEG_C (1&lt;&lt;PD5)<br />    #define SEG_D (1&lt;&lt;PD4)<br />    #define SEG_E (1&lt;&lt;PD3)<br />    #define SEG_F (1&lt;&lt;PD1)<br />    #define SEG_G (1&lt;&lt;PD0)<br />    #define SEG_DP (1&lt;&lt;PD7)<br />    #define NIC 12<br /><br />    //Deklaracje zmiennych na potrzeby ich wykrzystania w innych plikach projektu, extern powoduje ze sa dostepne we wszystkich modulach ktore dolacza d_led.h<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 />    //obszar deklaracji funkcji udostepnionych dla innych modulow<br />    void d_led_init(void);<br /><br /><br />    #endif /* D_LED_H_ */[/syntax]<br /><br />Tak jak mówie na at32 wszystko działało, kodu nie zmieniałem...jedynie pin i porty no i timer ustawiony 2 w  tryb Ctc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 28 sty 2014, o 15:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2014-01-28T15:31:13+01:00</updated>
<published>2014-01-28T15:31:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67077#p67077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67077#p67077"/>
<title type="html"><![CDATA[Re: Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67077#p67077"><![CDATA[
A jak wygląda multiplex i d_led_init()? Może zamiast gasić wszystko zapalasz a potem ustawiasz cyfrę i taki efekt jest że te niby zgaszone jednak przez chwilę świecą.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 28 sty 2014, o 15:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-01-28T15:35:06+01:00</updated>
<published>2014-01-28T15:12:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67075#p67075</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67075#p67075"/>
<title type="html"><![CDATA[Multipleksowanie Led- Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5715&amp;p=67075#p67075"><![CDATA[
Witam, <br /><br />Robiłem multipleksowanie Led z BB na atmega32, nie ma z tym żadnych problemów, lecz kiedy zmienię procesor na atmega8:<br />dzieję się takie coś, że wszystkie segmenty się świeca...te które maja pokazywać liczby świecą jaśniej (tzn. czas normlanie jest pokazywany), a te które są nie używane to świecą na 30 %, najlepiej zobrazują to zdjęcia . Dlaczego tak jest? i jak temu zapobiec??<br /><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/903/5f5d6f8e66cf4887d7e22675c74aa09a.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/903/5f5d6f8e66cf4887d7e22675c74aa09a.jpg" alt="Obrazek" /></a><a href="http://forum.atnel.pl/_obrazki/o/903/c09f139096821e50d3ea3a8663d30662.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/903/c09f139096821e50d3ea3a8663d30662.jpg" alt="Obrazek" /></a><a href="http://forum.atnel.pl/_obrazki/o/903/f6c4fc3315484e92d12ea8b9a0cbecc8.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/903/f6c4fc3315484e92d12ea8b9a0cbecc8.jpg" alt="Obrazek" /></a><br /><br />biblioteki w bibliotekach d_led.c i d_led.h nic nie zmieniałem oprócz ustawień portów i pinów. <br />main.c<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2010-03-30<br /> *       Autor: Mirosław Kardaś<br /> */<br />#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 /><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]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 28 sty 2014, o 15:12</p><hr />
]]></content>
</entry>
</feed>