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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-01-14T18:39:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5546&amp;mode</id>
<entry>
<author><name><![CDATA[dawidu00]]></name></author>
<updated>2014-01-14T18:39:43+01:00</updated>
<published>2014-01-14T18:39:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65015#p65015</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65015#p65015"/>
<title type="html"><![CDATA[Re: multipleksowanie  wyświetlaczy LED- dziwne cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65015#p65015"><![CDATA[
proszę o zamknięcie tematu <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> wszystko działa zapomniałem dać &amp; <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=2281">dawidu00</a> — 14 sty 2014, o 18:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-14T16:17:50+01:00</updated>
<published>2014-01-14T16:17:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65006#p65006</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65006#p65006"/>
<title type="html"><![CDATA[Re: multipleksowanie  wyświetlaczy LED- dziwne cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65006#p65006"><![CDATA[
Kod Mirka jest przystosowany do sterowania wyświetlaczem ze wspólną anodą czyli segmenty i poszczególne wyświetlacze są włączane stanem niskim. Ty masz wyświetlacz ze wspólną katodą czyli aktywnym stanem jest stan wysoki.<br /><br />Powinieneś zmienić kod w tym miejscu[syntax=c]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 />};[/syntax]<br /><br />w tym<br />[syntax=c]ANODY_PORT = (ANODY_PORT | MASKA_ANODY);        // wygaszenie wszystkich wyświetlaczy[/syntax]<br /><br />I nie jestem pewien czy w tej linijce nie ma błędu<br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; MASKA_ANODY) | (licznik &amp; MASKA_ANODY);                      // 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=204">jacekk232</a> — 14 sty 2014, o 16:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawidu00]]></name></author>
<updated>2014-01-14T16:07:14+01:00</updated>
<published>2014-01-14T16:07:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65003#p65003</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65003#p65003"/>
<title type="html"><![CDATA[multipleksowanie  wyświetlaczy LED- dziwne cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5546&amp;p=65003#p65003"><![CDATA[
Witam mam dwa wyświetlacze LED ze wspólną katodą, atmega8 8MHz. Schemat ale zapomniałem dać rezystorów do danych segmentów:http://www.fotosik.pl/pokaz_obrazek/b4c4b0378fc871d0.html. To kod kawałek biblioteki od mirka. I na wyświetlaczu mam różne dziwne cyfry <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />[syntax=c]/*<br /> * d_led.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;// 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;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 &amp;=~ 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 &amp;=~ CA1; // wygaszenie wszystkich wyświetlaczy - anody<br />ANODY_PORT &amp;=~ CA2;<br />ANODY_PORT &amp;=~CA3;<br />ANODY_PORT &amp;=~ CA4;<br /><br />// ustawienie TIMER0<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 /><br />// ================= PROCEDURA OBSŁUGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br />ANODY_PORT = (ANODY_PORT | MASKA_ANODY);// wygaszenie wszystkich wyświetlaczy<br /><br /><br />if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;1&#93; );// gdy zapalony wyśw.1 podaj stan zmiennej c1<br />else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;2&#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; MASKA_ANODY) | (licznik &amp; MASKA_ANODY);// 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]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2281">dawidu00</a> — 14 sty 2014, o 16:07</p><hr />
]]></content>
</entry>
</feed>