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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-09-16T17:44:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=16164&amp;mode</id>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-16T17:44:38+01:00</updated>
<published>2016-09-16T17:44:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168869#p168869</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168869#p168869"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168869#p168869"><![CDATA[
Witam,<br />Obiecany kod.  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> - niestety trochę tasiemiec nie optymalizowany, ale działa. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Problem z tablicą pozostał,<br />ale będzie kontynuowany w następnej wersji jak się trochę poduczę. <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br />Zamysły już są w jaki sposób to ogarnąć.<br />............................................................................................<br />Tu można dowolnie wybierać:<br />PORTY A B C D,<br />PINY 0 - 7<br />załączanie stanem wysokim lub niskim,<br />niezależnie czy to segmenty czy cyferblaty-(wspólne anody lub katody).<br />.............................................................................................<br />Dla odróżnienia cyfra_1 - (wyświetlana cyfra 1 ), od cyfra_pierwsza, te ostatnie nazwałem cyferblat_1. <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />  <br /><br />Na potrzeby edukacyjne Wojtka i jak ktoś ma ochotę to proszę. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Nieraz na szybko może do testów się przyda.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 14 wrz 2016<br /> *      Author: Daro69<br /> *<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />/************************************************************DARO69************************************************************<br /> *<br />          Dla  wojciechgorzolka - kolegi z forum &quot;ATNEL&quot;<br /> *<br />      X       XXXXX    XXXX                    8.8. 8.8.8.8.  &lt;---max szesc cyferblatow-<br />      X       X    X   X<br />      X       X    X   X<br />      X       X    X   X<br />      XXXXX   XXXXX    XXXX  V.2.               NA PORCIE             A    B    C    D<br /> *<br /> *<br /> *            DEFINICJE PINOW PORTOW I DDROW ZE WSPÓLNĄ ANODĄ LUB KATODĄ<br /> *<br /> **********************************************************DARO69**************************************************************/<br /><br />#define LICZBA_CYFERBLATOW 2// &lt;----WYBIERZ LICZBĘ ANOD-KATOD<br /><br />#if LICZBA_CYFERBLATOW<br /><br />#define ZALACZANIE_CYFERBLATOW 1 // &lt;----1-STANEM WYSOKIM , 0-STANEM NISKIM<br />#define ZALACZANIE_SEGMENTOW 0// &lt;----1-STANEM WYSOKIM , 0-STANEM NISKIM<br /><br />#if LICZBA_CYFERBLATOW<br />#define CYFERBLAT_1 (1&lt;&lt;0)// &lt;----NR PINU PIERWSZEJ WSPOLNEJ ANODY-KATODY &quot; 0 1 2 3 4 5 6 7 &quot;<br />#define PORT_CYFERBLAT_1 PORTB// &lt;----PORT PIERWSZEJ WSPOLNEJ ANODY-KATODY &quot; PORTA PORTB PORTC PORTD &quot;<br />#define DDR_CYFERBLAT_1 DDRB// &lt;----DDR PIERWSZEJ WSPOLNEJ ANODY-KATODY &quot; DDRA DDRB DDRC DDRD&quot;<br />#endif<br /><br />#if LICZBA_CYFERBLATOW &gt; 1<br />#define CYFERBLAT_2 (1&lt;&lt;7)// &lt;----NR PINU DRUGIEJ WSPOLNEJ ANODY_KATODY &quot; 0 1 2 3 4 5 6 7 &quot;<br />#define PORT_CYFERBLAT_2 PORTD// &lt;----PORT DRUGIEJ WSPOLNEJ ANODY-KATODY &quot; PORTA PORTB PORTC PORTD &quot;<br />#define DDR_CYFERBLAT_2 DDRD// &lt;----DDR DRUGIEJ WSPOLNEJ ANODY-KATODY &quot; DDRA DDRB DDRC DDRD&quot;<br />#endif<br /><br />#if LICZBA_CYFERBLATOW &gt; 2<br />#define CYFERBLAT_3 (1&lt;&lt;6)// &lt;----NR PINU TRZECIEJ WSPOLNEJ ANODY_KATODY &quot; 0 1 2 3 4 5 6 7 &quot;<br />#define PORT_CYFERBLAT_3 PORTD// &lt;----PORT TRZECIEJ WSPOLNEJ ANODY-KATODY &quot; PORTA PORTB PORTC PORTD &quot;<br />#define DDR_CYFERBLAT_3 DDRD// &lt;----DDR TRZECIEJ WSPOLNEJ ANODY-KATODY &quot; DDRA DDRB DDRC DDRD&quot;<br />#endif<br /><br />#if LICZBA_CYFERBLATOW &gt; 3<br />#define CYFERBLAT_4 (1&lt;&lt;5)// &lt;----NR PINU CZWARTEJ WSPOLNEJ ANODY_KATODY &quot; 0 1 2 3 4 5 6 7 &quot;<br />#define PORT_CYFERBLAT_4 PORTD// &lt;----PORT CZWARTEJ WSPOLNEJ ANODY-KATODY &quot; PORTA PORTB PORTC PORTD &quot;<br />#define DDR_CYFERBLAT_4 DDRD// &lt;----DDR CZWARTEJ WSPOLNEJ ANODY-KATODY &quot; DDRA DDRB DDRC DDRD&quot;<br />#endif<br /><br />#if LICZBA_CYFERBLATOW &gt; 4<br />#define CYFERBLAT_5 (1&lt;&lt;1)// &lt;----NR PINU PIATEJ WSPOLNEJ ANODY_KATODY &quot; 0 1 2 3 4 5 6 7 &quot;<br />#define PORT_CYFERBLAT_5 PORTD// &lt;----PORT PIATEJ WSPOLNEJ ANODY-KATODY &quot; PORTA PORTB PORTC PORTD &quot;<br />#define DDR_CYFERBLAT_5 DDRD// &lt;----DDR PIATEJ WSPOLNEJ ANODY-KATODY &quot; DDRA DDRB DDRC DDRD&quot;<br />#endif<br /><br />#if LICZBA_CYFERBLATOW &gt; 5<br />#define CYFERBLAT_6 (1&lt;&lt;2)// &lt;----NR PINU SZOSTEJ WSPOLNEJ ANODY_KATODY &quot; 0 1 2 3 4 5 6 7 &quot;<br />#define PORT_CYFERBLAT_6 PORTD// &lt;----PORT SZOSTEJ WSPOLNEJ ANODY-KATODY &quot; PORTA PORTB PORTC PORTD &quot;<br />#define DDR_CYFERBLAT_6 DDRD// &lt;----DDR SZOSTEJ WSPOLNEJ ANODY-KATODY &quot; DDRA DDRB DDRC DDRD&quot;<br />#endif<br /><br />/*********************************************       -A-            *********************************************<br /> *                                              -F-      -B-<br /> *DEFINICJE PINOW I PORTÓW Z SEGMENTAMI              -G-<br /> *                                              -E-      -C-<br /> * ********************************************      -D--H-*********************************************/<br /><br /><br />/*SEGMENT A*/<br />#define DDR_A_SEGMENTDDRC// &lt;----DDR SEGMENTU A<br />#define PORT_A_SEGMENTPORTC// &lt;----PORT SEGMENTU A<br />#define A_SEGMENT(1&lt;&lt;0)// &lt;----NR PINU SWGMENTU A<br />#define A_SEGMENT_NA_PORCIE C// &lt;----PORT SEGMENTU A<br /><br />/*SEGMENT B*/<br />#define DDR_B_SEGMENT DDRC// &lt;----DDR SEGMENTU B<br />#define PORT_B_SEGMENT PORTC// &lt;----PORT SEGMENTU B<br />#define B_SEGMENT (1&lt;&lt;1)// &lt;----NR PINU SWGMENTU B<br />#define B_SEGMENT_NA_PORCIE C// &lt;----PORT SEGMENTU B<br /><br />/*SEGMENT C*/<br />#define DDR_C_SEGMENT DDRC// &lt;----DDR SEGMENTU C<br />#define PORT_C_SEGMENT PORTC// &lt;----PORT SEGMENTU C<br />#define C_SEGMENT (1&lt;&lt;2)// &lt;----NR PINU SWGMENTU C<br />#define C_SEGMENT_NA_PORCIE C// &lt;----PORT SEGMENTU C<br /><br />/*SEGMENT D*/<br />#define DDR_D_SEGMENT DDRC// &lt;----DDR SEGMENTU D<br />#define PORT_D_SEGMENT PORTC// &lt;----PORT SEGMENTU D<br />#define D_SEGMENT (1&lt;&lt;3)// &lt;----NR PINU SWGMENTU D<br />#define D_SEGMENT_NA_PORCIE C// &lt;----PORT SEGMENTU D<br /><br />/*SEGMENT E*/<br />#define DDR_E_SEGMENT DDRC// &lt;----DDR SEGMENTU E<br />#define PORT_E_SEGMENT PORTC// &lt;----PORT SEGMENTU E<br />#define E_SEGMENT (1&lt;&lt;4)// &lt;----NR PINU SWGMENTU E<br />#define E_SEGMENT_NA_PORCIE C// &lt;----PORT SEGMENTU E<br /><br />/*SEGMENT F*/<br />#define DDR_F_SEGMENT DDRC// &lt;----DDR SEGMENTU F<br />#define PORT_F_SEGMENT PORTC// &lt;----PORT SEGMENTU F<br />#define F_SEGMENT (1&lt;&lt;5)// &lt;----NR PINU SWGMENTU F<br />#define F_SEGMENT_NA_PORCIE C// &lt;----PORT SEGMENTU F<br /><br />/*SEGMENT G*/<br />#define DDR_G_SEGMENT DDRD// &lt;----DDR SEGMENTU G<br />#define PORT_G_SEGMENT PORTD// &lt;----PORT SEGMENTU G<br />#define G_SEGMENT (1&lt;&lt;0)// &lt;----NR PINU SWGMENTU G<br />#define G_SEGMENT_NA_PORCIE D// &lt;----PORT SEGMENTU G<br /><br />/*SEGMENT H*/<br />#define DDR_H_SEGMENT DDRB// &lt;----DDR SEGMENTU H<br />#define PORT_H_SEGMENT PORTB// &lt;----PORT SEGMENTU H<br />#define H_SEGMENT (1&lt;&lt;1)// &lt;----NR PINU SWGMENTU H<br />#define H_SEGMENT_NA_PORCIE B// &lt;----PORT SEGMENTU H<br /><br />/******************************************************************************************************************************<br /> *<br /> *    SPRAWDZANIE KTÓRE PORTY SĄ UzYWANE PRZEZ SEGMENTY<br /> *<br /> * ****************************************************************************************************************************/<br />#if(A_SEGMENT_NA_PORCIE==A || B_SEGMENT_NA_PORCIE==A || C_SEGMENT_NA_PORCIE==A || D_SEGMENT_NA_PORCIE==A || E_SEGMENT_NA_PORCIE==A || F_SEGMENT_NA_PORCIE==A ||G_SEGMENT_NA_PORCIE==A || H_SEGMENT_NA_PORCIE==A )<br />#define SEGMENTY_NA_PORCIE_A  1<br />#endif<br />#if(A_SEGMENT_NA_PORCIE==B || B_SEGMENT_NA_PORCIE==B || C_SEGMENT_NA_PORCIE==B || D_SEGMENT_NA_PORCIE==B || E_SEGMENT_NA_PORCIE==B || F_SEGMENT_NA_PORCIE==B ||G_SEGMENT_NA_PORCIE==B || H_SEGMENT_NA_PORCIE==B )<br />#define SEGMENTY_NA_PORCIE_B  1<br />#endif<br />#if(A_SEGMENT_NA_PORCIE==C || B_SEGMENT_NA_PORCIE==C || C_SEGMENT_NA_PORCIE==C || D_SEGMENT_NA_PORCIE==C || E_SEGMENT_NA_PORCIE==C || F_SEGMENT_NA_PORCIE==C ||G_SEGMENT_NA_PORCIE==C || H_SEGMENT_NA_PORCIE==C )<br />#define SEGMENTY_NA_PORCIE_C  1<br />#endif<br />#if(A_SEGMENT_NA_PORCIE==D || B_SEGMENT_NA_PORCIE==D || C_SEGMENT_NA_PORCIE==D || D_SEGMENT_NA_PORCIE==D || E_SEGMENT_NA_PORCIE==D || F_SEGMENT_NA_PORCIE==D ||G_SEGMENT_NA_PORCIE==D || H_SEGMENT_NA_PORCIE==D )<br />#define SEGMENTY_NA_PORCIE_D  1<br />#endif<br /><br /><br />/******************************************************************************************************************************<br /> *<br /> *    DEFINICJE ZAŁĄCZANIA WSPÓLNYCH ANOD-KATOD<br /> *<br /> * *****************************************************************************************************************************/<br /><br />#if ZALACZANIE_CYFERBLATOW//************* DEFINICJE ZAŁĄCZANIA STANEM WYSOKIM*************<br /><br />#if (LICZBA_CYFERBLATOW==1)// DLA JEDNEJ CYFRY<br /><br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 |= CYFERBLAT_1<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1<br />#endif<br />#if (LICZBA_CYFERBLATOW==2)// DLA DWÓCH CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 |= CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 |= CYFERBLAT_2<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1;  PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2<br />#endif<br />#if (LICZBA_CYFERBLATOW==3)// DLA TRZECH CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 |= CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 |= CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 |= CYFERBLAT_3<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1;  PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2;  PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3<br />#endif<br />#if (LICZBA_CYFERBLATOW==4)// DLA CZTERECH CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 |= CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 |= CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 |= CYFERBLAT_3<br />#define CYFERBLAT_4_ON PORT_CYFERBLAT_4 |= CYFERBLAT_4<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1;  PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2;  PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3;  PORT_CYFERBLAT_4 &amp;= ~CYFERBLAT_4<br />#endif<br />#if (LICZBA_CYFERBLATOW==5)// DLA PIĘCIU CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 |= CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 |= CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 |= CYFERBLAT_3<br />#define CYFERBLAT_4_ON PORT_CYFERBLAT_4 |= CYFERBLAT_4<br />#define CYFERBLAT_5_ON PORT_CYFERBLAT_5 |= CYFERBLAT_5<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1;  PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2;  PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3;  PORT_CYFERBLAT_4 &amp;= ~CYFERBLAT_4;  PORT_CYFERBLAT_5 &amp;= ~CYFERBLAT_5<br />#endif<br />#if (LICZBA_CYFERBLATOW==6)// DLA SZEŚCIU CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 |= CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 |= CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 |= CYFERBLAT_3<br />#define CYFERBLAT_4_ON PORT_CYFERBLAT_4 |= CYFERBLAT_4<br />#define CYFERBLAT_5_ON PORT_CYFERBLAT_5 |= CYFERBLAT_5<br />#define CYFERBLAT_6_ON PORT_CYFERBLAT_6 |= CYFERBLAT_6<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1;  PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2;  PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3;  PORT_CYFERBLAT_4 &amp;= ~CYFERBLAT_4;  PORT_CYFERBLAT_5 &amp;= ~CYFERBLAT_5;  PORT_CYFERBLAT_6 &amp;= ~CYFERBLAT_6<br /><br />#endif<br /><br /><br />#else//*************DEFINICJE ZAŁĄCZANIA STANEM NISKIM*******************<br /><br />#if (LICZBA_CYFERBLATOW==1)// DLA JEDNEJ CYFRY<br /><br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 &amp;= ~(CYFERBLAT_1)<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 |= CYFERBLAT_1<br />#endif<br /><br />#if (LICZBA_CYFERBLATOW==2)// DLA DWÓCH CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 |= CYFERBLAT_1;  PORT_CYFERBLAT_2 |= CYFERBLAT_2<br /><br />#endif<br /><br />#if (LICZBA_CYFERBLATOW==3)// DLA TRZECH CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 |= CYFERBLAT_1;  PORT_CYFERBLAT_2 |= CYFERBLAT_2;  PORT_CYFERBLAT_3 |= CYFERBLAT_3<br />#endif<br /><br />#if (LICZBA_CYFERBLATOW==4)// DLA CZTERECH CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3<br />#define CYFERBLAT_4_ON PORT_CYFERBLAT_4 &amp;= ~CYFERBLAT_4<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 |= CYFERBLAT_1;  PORT_CYFERBLAT_2 |= CYFERBLAT_2;  PORT_CYFERBLAT_3 |= CYFERBLAT_3;  PORT_CYFERBLAT_4 |= CYFERBLAT_4<br />#endif<br /><br />#if (LICZBA_CYFERBLATOW==5)// DLA PIĘCIU CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3<br />#define CYFERBLAT_4_ON PORT_CYFERBLAT_4 &amp;= ~CYFERBLAT_4<br />#define CYFERBLAT_5_ON PORT_CYFERBLAT_5 &amp;= ~CYFERBLAT_5<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 |= ANODA_KATODA_1;  PORT_CYFERBLAT_2 |= CYFERBLAT_2;  PORT_CYFERBLAT_3 |= CYFERBLAT_3;  PORT_CYFERBLAT_4 |= CYFERBLAT_4;  PORT_CYFERBLAT_5 |= CYFERBLAT_5<br />#endif<br /><br />#if (LICZBA_CYFERBLATOW==6)// DLA SZEŚCIU CYFR<br />#define CYFERBLAT_1_ON PORT_CYFERBLAT_1 &amp;= ~CYFERBLAT_1<br />#define CYFERBLAT_2_ON PORT_CYFERBLAT_2 &amp;= ~CYFERBLAT_2<br />#define CYFERBLAT_3_ON PORT_CYFERBLAT_3 &amp;= ~CYFERBLAT_3<br />#define CYFERBLAT_4_ON PORT_CYFERBLAT_4 &amp;= ~CYFERBLAT_4<br />#define CYFERBLAT_5_ON PORT_CYFERBLAT_5 &amp;= ~CYFERBLAT_5<br />#define CYFERBLAT_6_ON PORT_CYFERBLAT_6 &amp;= ~CYFERBLAT_6<br />#define WYGAS_CYFERBLATY PORT_CYFERBLAT_1 |= CYFERBLAT_1;  PORT_CYFERBLAT_2 |= CYFERBLAT_2;  PORT_CYFERBLAT_3 |= CYFERBLAT_3;  PORT_CYFERBLAT_4 |= CYFERBLAT_4;  PORT_CYFERBLAT_5 |= CYFERBLAT_5;  PORT_CYFERBLAT_6 |= CYFERBLAT_6<br />#endif<br /><br />#endif<br /><br /><br /><br />/*******************************************************************************************************************************<br /> *<br /> *     DEFINICJE WYSWIETLANIA SEGMENTÓW-CYFR NA RÓŻNYCH PINACH I PORTACH<br /> *<br /> ******************************************************************************************************************************/<br /><br />#if ZALACZANIE_SEGMENTOW<br /><br />// DEFINICJE ZAŁĄCZANA SEGMENTóW STANEM WYSOKIM<br />#define CYFRA_0  PORT_A_SEGMENT |= A_SEGMENT;    PORT_B_SEGMENT |= B_SEGMENT;PORT_C_SEGMENT |= C_SEGMENT;PORT_D_SEGMENT |= D_SEGMENT;   PORT_E_SEGMENT |= E_SEGMENT;   PORT_F_SEGMENT |= F_SEGMENT<br />#define CYFRA_1  PORT_B_SEGMENT |= B_SEGMENT;    PORT_C_SEGMENT |= C_SEGMENT<br />#define CYFRA_2  PORT_A_SEGMENT |= A_SEGMENT;    PORT_B_SEGMENT |= B_SEGMENT;PORT_G_SEGMENT |= G_SEGMENT;   PORT_E_SEGMENT |= E_SEGMENT;   PORT_D_SEGMENT |= D_SEGMENT<br />#define CYFRA_3  PORT_A_SEGMENT |= A_SEGMENT;    PORT_B_SEGMENT |= B_SEGMENT;   PORT_C_SEGMENT |= C_SEGMENT;   PORT_D_SEGMENT |= D_SEGMENT;   PORT_G_SEGMENT |= G_SEGMENT<br />#define CYFRA_4  PORT_F_SEGMENT |= F_SEGMENT;    PORT_G_SEGMENT |= G_SEGMENT;   PORT_B_SEGMENT |= B_SEGMENT;   PORT_C_SEGMENT |= C_SEGMENT<br />#define CYFRA_5  PORT_A_SEGMENT |= A_SEGMENT;    PORT_F_SEGMENT |= F_SEGMENT;   PORT_G_SEGMENT |= G_SEGMENT;   PORT_C_SEGMENT |= C_SEGMENT;   PORT_D_SEGMENT |= D_SEGMENT<br />#define CYFRA_6  PORT_A_SEGMENT |= A_SEGMENT;    PORT_F_SEGMENT |= F_SEGMENT;   PORT_E_SEGMENT |= E_SEGMENT;   PORT_D_SEGMENT |= D_SEGMENT;   PORT_C_SEGMENT |= C_SEGMENT;   PORT_G_SEGMENT |= G_SEGMENT<br />#define CYFRA_7  PORT_A_SEGMENT |= A_SEGMENT;    PORT_B_SEGMENT |= B_SEGMENT;   PORT_C_SEGMENT |= C_SEGMENT;<br />#define CYFRA_8  PORT_A_SEGMENT |= A_SEGMENT;    PORT_B_SEGMENT |= B_SEGMENT;   PORT_C_SEGMENT |= C_SEGMENT;   PORT_D_SEGMENT |= D_SEGMENT;   PORT_E_SEGMENT |= E_SEGMENT;   PORT_F_SEGMENT |= F_SEGMENT;   PORT_G_SEGMENT |= G_SEGMENT<br />#define CYFRA_9  PORT_A_SEGMENT |= A_SEGMENT;    PORT_B_SEGMENT |= B_SEGMENT;   PORT_C_SEGMENT |= C_SEGMENT;   PORT_D_SEGMENT |= D_SEGMENT;   PORT_F_SEGMENT |= F_SEGMENT;   PORT_G_SEGMENT |= G_SEGMENT<br />#define KROPKAPORT_H_SEGMENT |= H_SEGMENT<br />#define KROPKA_TOGPORT_H_SEGMENT ^= H_SEGMENT<br /><br />#define WYGAS_SEGMENTY    PORT_A_SEGMENT &amp;= ~A_SEGMENT;     PORT_B_SEGMENT &amp;= ~B_SEGMENT;    PORT_C_SEGMENT &amp;= ~C_SEGMENT;    PORT_D_SEGMENT &amp;= ~D_SEGMENT;    PORT_E_SEGMENT &amp;= ~E_SEGMENT;    PORT_F_SEGMENT &amp;= ~F_SEGMENT;    PORT_G_SEGMENT &amp;= ~G_SEGMENT;  PORT_H_SEGMENT &amp;= ~H_SEGMENT<br /><br /><br />#else// DEFINICJE ZAŁĄCZANA SEGMENTóW STANEM NISKIM<br />#define CYFRA_0PORT_A_SEGMENT &amp;= ~A_SEGMENT;PORT_B_SEGMENT &amp;= ~B_SEGMENT;PORT_C_SEGMENT &amp;= ~C_SEGMENT;PORT_D_SEGMENT &amp;= ~D_SEGMENT;PORT_E_SEGMENT &amp;= ~E_SEGMENT;   PORT_F_SEGMENT &amp;= ~F_SEGMENT<br />#define CYFRA_1PORT_B_SEGMENT &amp;= ~B_SEGMENT;PORT_C_SEGMENT &amp;= ~C_SEGMENT<br />#define CYFRA_2PORT_A_SEGMENT &amp;= ~A_SEGMENT;PORT_B_SEGMENT &amp;= ~B_SEGMENT;   PORT_G_SEGMENT &amp;= ~G_SEGMENT;   PORT_E_SEGMENT &amp;= ~E_SEGMENT;   PORT_D_SEGMENT &amp;= ~D_SEGMENT<br />#define CYFRA_3PORT_A_SEGMENT &amp;= ~A_SEGMENT;PORT_B_SEGMENT &amp;= ~B_SEGMENT;   PORT_C_SEGMENT &amp;= ~C_SEGMENT;   PORT_D_SEGMENT &amp;= ~D_SEGMENT;   PORT_G_SEGMENT &amp;= ~G_SEGMENT<br />#define CYFRA_4PORT_F_SEGMENT &amp;= ~F_SEGMENT;PORT_G_SEGMENT &amp;= ~G_SEGMENT;   PORT_B_SEGMENT &amp;= ~B_SEGMENT;   PORT_C_SEGMENT &amp;= ~C_SEGMENT<br />#define CYFRA_5PORT_A_SEGMENT &amp;= ~A_SEGMENT;PORT_F_SEGMENT &amp;= ~F_SEGMENT;   PORT_G_SEGMENT &amp;= ~G_SEGMENT;   PORT_C_SEGMENT &amp;= ~C_SEGMENT;   PORT_D_SEGMENT &amp;= ~D_SEGMENT<br />#define CYFRA_6PORT_A_SEGMENT &amp;= ~A_SEGMENT;   PORT_F_SEGMENT &amp;= ~F_SEGMENT;   PORT_E_SEGMENT &amp;= ~E_SEGMENT;   PORT_D_SEGMENT &amp;= ~D_SEGMENT;   PORT_C_SEGMENT &amp;= ~C_SEGMENT;   PORT_G_SEGMENT &amp;= ~G_SEGMENT<br />#define CYFRA_7PORT_A_SEGMENT &amp;= ~A_SEGMENT;   PORT_B_SEGMENT &amp;= ~B_SEGMENT;   PORT_C_SEGMENT &amp;= ~C_SEGMENT;<br />#define CYFRA_8PORT_A_SEGMENT &amp;= ~A_SEGMENT;   PORT_B_SEGMENT &amp;= ~B_SEGMENT;   PORT_C_SEGMENT &amp;= ~C_SEGMENT;   PORT_D_SEGMENT &amp;= ~D_SEGMENT;   PORT_E_SEGMENT &amp;= ~E_SEGMENT;   PORT_F_SEGMENT &amp;= ~F_SEGMENT;   PORT_G_SEGMENT &amp;= ~G_SEGMENT<br />#define CYFRA_9PORT_A_SEGMENT &amp;= ~A_SEGMENT;   PORT_B_SEGMENT &amp;= ~B_SEGMENT;   PORT_C_SEGMENT &amp;= ~C_SEGMENT;   PORT_D_SEGMENT &amp;= ~D_SEGMENT;   PORT_F_SEGMENT &amp;= ~F_SEGMENT;   PORT_G_SEGMENT &amp;= ~G_SEGMENT<br />#define KROPKAPORT_H_SEGMENT &amp;= ~H_SEGMENT<br />#define KROPKA_TOGPORT_H_SEGMENT ^= H_SEGMENT<br /><br />#define WYGAS_SEGMENTY    PORT_A_SEGMENT |= A_SEGMENT;     PORT_B_SEGMENT |= B_SEGMENT;    PORT_C_SEGMENT |= C_SEGMENT;    PORT_D_SEGMENT |= D_SEGMENT;    PORT_E_SEGMENT |= E_SEGMENT;    PORT_F_SEGMENT |= F_SEGMENT;    PORT_G_SEGMENT |= G_SEGMENT;  PORT_H_SEGMENT |= H_SEGMENT<br /><br />#endif<br /><br /><br /><br /><br />/*******************************************************************************************************************************<br /> *<br /> *  **********************  POWOLANIE ZMIENNYCH<br /> *<br /> * ****************************************************************************************************************************/<br /><br />volatile uint8_t<br /><br />#if LICZBA_CYFERBLATOW&gt;5<br />szosta,<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;4<br />piata,<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;3<br />czwarta,<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;2<br />trzecia,<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;1<br />druga,<br />#endif<br />pierwsza,<br />#endif<br /><br />flag_sek, sek, god, min;<br /><br /><br /><br /><br />//*****************************************************************************************************************************<br /><br />   /*  MAIN  */<br /><br />// ****************************************************************************************************************************<br /><br />int main(void) {<br /><br />#if LICZBA_CYFERBLATOW<br /><br /><br /><br />/*---------------------------------------------------------<br /><br />  INICJALIZACJA WYSWIETLACZA<br /><br />  ---------------------------------------------------*/<br /><br /><br /> /*----WYJSCIA NA CYFERBLATY----*/<br /><br />DDR_CYFERBLAT_1 |= CYFERBLAT_1;<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;1<br />DDR_CYFERBLAT_2 |= CYFERBLAT_2;<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;2<br />DDR_CYFERBLAT_3 |= CYFERBLAT_3;<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;3<br />DDR_CYFERBLAT_4 |= CYFERBLAT_4;<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;4<br />DDR_CYFERBLAT_5 |= CYFERBLAT_5;<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;5<br />DDR_CYFERBLAT_6 |= CYFERBLAT_6;<br />#endif<br /><br />#if LICZBA_CYFERBLATOW<br /><br />/*----WYJŚCIA SEGMENTÓW LED-----*/<br /><br />DDR_A_SEGMENT |= A_SEGMENT;<br />DDR_B_SEGMENT |= B_SEGMENT;<br />DDR_C_SEGMENT |= C_SEGMENT;<br />DDR_D_SEGMENT |= D_SEGMENT;<br />DDR_E_SEGMENT |= E_SEGMENT;<br />DDR_F_SEGMENT |= F_SEGMENT;<br />DDR_G_SEGMENT |= G_SEGMENT;<br />DDR_H_SEGMENT |= H_SEGMENT;<br />#endif<br /><br />/*----USTAWIENIA TIMERA---------*/<br /><br />TCCR0 |= (1 &lt;&lt; CS00) | (1 &lt;&lt; CS01); /* preskaler = 256*/<br />TIMSK |= (1 &lt;&lt; TOIE0);/* zezwolenie na przerwanie od przepelnienia*/<br />sei();/* globalne zezwolenie na przerwania*/<br /><br /><br /><br />//************************************************************************************<br /><br />                        /* PĘTLA GŁÓWNA   */<br /><br />//************************************************************************************<br />while (1) {<br /><br />if (flag_sek)<br /> {<br /> flag_sek = 0;<br /> if (sek &lt; 59) {sek++;}<br /> else {<br />  sek = 0;<br />  if (min &lt; 59) {min++;}<br />  else {<br />   min = 0;<br />   if (god &lt; 24) {god++;}<br />   else {god = 0;}<br />   }<br />  }<br /> }<br /><br />   /*----WARTOŚCI DO WYŚWIETLENIA NA LED----*/<br /><br />#if LICZBA_CYFERBLATOW// jeżeli liczba cyfr na wyswietlaczu &gt; 0<br /><br />pierwsza = (sek % 10);// pierwsza cyfra<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;1// jeżeli liczba cyfr na wyswietlaczu &gt; 1<br />druga = sek / 10;// druga cyfra<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;2// jeżeli liczba cyfr na wyswietlaczu &gt; 2<br />trzecia = (min % 10);<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;3// jeżeli liczba cyfr na wyswietlaczu &gt; 3<br />czwarta =   min / 10;<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;4// jeżeli liczba cyfr na wyswietlaczu &gt; 4<br />piata =   (god % 10);<br />#endif<br />#if LICZBA_CYFERBLATOW&gt;5// jeżeli liczba cyfr na wyswietlaczu &gt; 5<br />szosta = god / 10;<br />#endif<br /><br />} // KONIEC PETLI GLOWNEJ*********************************************************<br /><br />} // KONIEC MAIN**********************************************************************<br /><br /><br /><br /><br /><br />//************************************************************************************<br /><br />                               /* PRZERWANIE */<br /><br />// ***********************************************************************************<br />ISR(TIMER0_OVF_vect) { /*przerwanie 500 razy na sekundę*/<br /><br /> TCNT0 = 5;/* &lt;---- timer zlicza od tej wartości - do 255-  */<br />   /* wywołuje to przerwanie i znowu zaczyna od tej wartości*/<br />   /*czyli  oscylator-8MHz / preskaler-64 / licznik zlicza 250=255-5  / jeszcze nasze &quot;zliczanie&quot;-0--499-&gt;500 = 1 Hz :)   */<br /><br /><br />static uint16_t zliczanie = 0; // licznik przerwań<br /><br />if (zliczanie)// ta zmienne jest dekrementowana 500 razy na sekunde,<br /> {<br /> zliczanie--;<br /> }<br />else<br /> { // wiec co sekunde osiaga 0 i trzeba znowu wpisac do niej 499<br /> zliczanie = 499;<br /> flag_sek++;// inkrementowanie flagi co sekundę . Można wpisywac 1 - (Ja inkrementuję bo gdy niechcący jakąś kocią funkcją - np. do obsługi klawiszy zablokuję pętlę na dłużej niż 2 wywołania flagi, to po odblokowaniu zsumuje ilośc pominiętch i doda kilka sekund)<br /> }<br /><br /><br /><br /><br /><br /><br />#if LICZBA_CYFERBLATOW<br /><br />static uint8_t kolejny_cyferblat;// 1 &gt; 2(jeżeli załączona) &gt; 3(jeżeli załączona) &gt; 4(jeżeli załączona) &gt; 5(jeżeli załączona) &gt; 6(jeżeli załączona)<br /><br />kolejny_cyferblat++;// w następnym przerwaniu nastepna cyfra<br />if (kolejny_cyferblat &gt; LICZBA_CYFERBLATOW)// zliczanie do określonej ilości cyfr do wyświetlenia-( gdy wyświetlacz z dwoma cyframi to gdy jest więcej niż 2, powróci do 1 .<br />kolejny_cyferblat = 1;// ponownie pierwsza cyfra na wyświetlaczu.<br /><br /><br />//----GASZENIE WYSWIETLACZA----<br />WYGAS_CYFERBLATY<br />;<br />WYGAS_SEGMENTY<br />;<br /><br />//----WYSWIETLANIE CYFR NA CYFERBLATACH ;)<br /><br />if (kolejny_cyferblat == 1) {// gdy czas na pierwsza cyfre -<br /><br />CYFERBLAT_1_ON;// zalacz pierwsza anode-katode<br /><br />if (pierwsza == 0) {CYFRA_0;}// gdy pierwsza cyfra jest 0 // zalacz segmenty dla cyfry 0<br />else if (pierwsza == 1) {CYFRA_1;}<br />else if (pierwsza == 2) {CYFRA_2;}<br />else if (pierwsza == 3) {CYFRA_3;}<br />else if (pierwsza == 4) {CYFRA_4;}<br />else if (pierwsza == 5) {CYFRA_5;}<br />else if (pierwsza == 6) {CYFRA_6;}<br />else if (pierwsza == 7) {CYFRA_7;}<br />else if (pierwsza == 8) {CYFRA_8;}<br />else if (pierwsza == 9) {CYFRA_9;}<br />}<br /><br />#endif<br /><br /><br />#if LICZBA_CYFERBLATOW &gt;1<br />else if (kolejny_cyferblat == 2) {<br /><br />CYFERBLAT_2_ON;<br /><br /><br /><br />if (druga == 0){CYFRA_0;}<br />else if (druga == 1) {CYFRA_1;}<br />else if (druga == 2) {CYFRA_2;}<br />else if (druga == 3) {CYFRA_3;}<br />else if (druga == 4) {CYFRA_4;}<br />else if (druga == 5) {CYFRA_5;}<br />else if (druga == 6) {CYFRA_6;}<br />else if (druga == 7) {CYFRA_7;}<br />else if (druga == 8) {CYFRA_8;}<br />else if (druga == 9) {CYFRA_9;}<br />}<br />#endif<br /><br /><br />#if LICZBA_CYFERBLATOW &gt;2<br />else if (kolejny_cyferblat == 3) {<br /><br /> if (sek % 2 == 1) {KROPKA_TOG;}// &lt;---mryganie kropka co 2 sek<br /><br />CYFERBLAT_3_ON;<br /><br />if (trzecia == 0) {CYFRA_0;}<br />else if (trzecia == 1) {CYFRA_1;}<br />else if (trzecia == 2) {CYFRA_2;}<br />else if (trzecia == 3) {CYFRA_3;}<br />else if (trzecia == 4) {CYFRA_4;}<br />else if (trzecia == 5) {CYFRA_5;}<br />else if (trzecia == 6) {CYFRA_6;}<br />else if (trzecia == 7) {CYFRA_7;}<br />else if (trzecia == 8) {CYFRA_8;}<br />else if (trzecia == 9) {CYFRA_9;}<br />}<br />#endif<br /><br /><br />#if LICZBA_CYFERBLATOW &gt;3<br />else if (kolejny_cyferblat == 4) {<br /><br />CYFERBLAT_4_ON;<br /><br />if (czwarta == 0) {CYFRA_0;}<br />else if (czwarta == 1) {CYFRA_1;}<br />else if (czwarta == 2) {CYFRA_2;}<br />else if (czwarta == 3) {CYFRA_3;}<br />else if (czwarta == 4) {CYFRA_4;}<br />else if (czwarta == 5) {CYFRA_5;}<br />else if (czwarta == 6) {CYFRA_6;}<br />else if (czwarta == 7) {CYFRA_7;}<br />else if (czwarta == 8) {CYFRA_8;}<br />else if (czwarta == 9) {CYFRA_9;}<br />}<br />#endif<br /><br /><br />#if LICZBA_CYFERBLATOW &gt;4<br />else if (kolejny_cyferblat == 5) {<br />CYFERBLAT_5_ON;<br /><br />if (piata == 0) {CYFRA_0;}<br />else if (piata == 1) {CYFRA_1;}<br />else if (piata == 2) {CYFRA_2;}<br />else if (piata == 3) {CYFRA_3;}<br />else if (piata == 4) {CYFRA_4;}<br />else if (piata == 5) {CYFRA_5;}<br />else if (piata == 6) {CYFRA_6;}<br />else if (piata == 7) {CYFRA_7;}<br />else if (piata == 8) {CYFRA_8;}<br />else if (piata == 9) {CYFRA_9;}<br />}<br />#endif<br /><br /><br />#if LICZBA_CYFERBLATOW &gt;5<br />else if (kolejny_cyferblat == 6) {<br />CYFERBLAT_6_ON;<br /><br />if (sek % 4 == 1) {KROPKA_TOG;}<br /><br />if (szosta == 0) {CYFRA_0;}<br />else if (szosta == 1) {CYFRA_1;}<br />else if (szosta == 2) {CYFRA_2;}<br />else if (szosta == 3) {CYFRA_3;}<br />else if (szosta == 4) {CYFRA_4;}<br />else if (szosta == 5) {CYFRA_5;}<br />else if (szosta == 6) {CYFRA_6;}<br />else if (szosta == 7) {CYFRA_7;}<br />else if (szosta == 8) {CYFRA_8;}<br />else if (szosta == 9) {CYFRA_9;}<br />}<br />#endif<br /><br />} // KONIEC PRZERWANIA[/syntax]<br /><br />Pozdrawiam i miłej rozkminki.  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Tylko nie obsmarujcie mnie za mocno.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 16 wrz 2016, o 17:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-16T16:07:24+01:00</updated>
<published>2016-09-16T16:07:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168864#p168864</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168864#p168864"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168864#p168864"><![CDATA[
Witam &quot;Harry&quot;,<br />Tu się chyba nie zrozumieliśmy. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Ja próbowałem umieścić w tablicy dziewięć elementów.<br />Problem był w tym że nie potrafię umieścić w tablicy całych dyrektyw zawierających nazwy portów i pinów tak by potem je wykorzystać przy odczycie.<br />np.<br />pierwszym elementem musiałoby być takie makro w całości bo to jest reprezentacja cyfry &quot;0&quot; na wyświetlaczu:<br />[syntax=c]PORT_A_SEGMENT &amp;= ~A_SEGMENT;  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_C_SEGMENT &amp;= ~C_SEGMENT;  PORT_D_SEGMENT &amp;= ~D_SEGMENT;  PORT_E_SEGMENT &amp;= ~E_SEGMENT;  PORT_F_SEGMENT &amp;= ~F_SEGMENT[/syntax]<br />Gdyby nawet ten jeden element tablicy rozbić na poszczególne polecenia, - no właśnie - polecenia a nie zmienne <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br />to i tak jest problem bo jak w tablicy używać poleceń - i jak potem wypchnąć z tablicy do pętli taki jej element?<br />.np.  &quot;PORTD &amp;=~(1&lt;&lt;PD0)&quot; zawierający nazwę <span style="text-decoration: underline">PORTU</span>.<br /><br />int tab[0]={PORTD &amp;=~(1&lt;&lt;PD0)};Przecież to nie zadziała. - <br /><br />jeżeli teraz w programie spróbuje wywołać taki element tablicy- to niby jak.?<br />[syntax=c]tab&#91;0&#93;; // ?<br /><br />cyfra = tab&#91;0&#93;; // ?<br />cyfra;<br /><br />napis = tab&#91;0&#93;; // ?<br />napis;[/syntax]<br />gdyby nawet to jeszcze bardziej rozdzielić, <br />[syntax=c]char tab&#91;&#93;={&quot;PORTD&quot;,&quot;|=(1&lt;&lt;3)&quot;};[/syntax]<br />to i tak nie zadziała wywołanie w pętli bo jak?<br />[syntax=c]tab&#91;0&#93;;tab&#91;1&#93;; // ??[/syntax]<br />nie podmieni się na polecenia.<br /><br />To nie zadziała, podobnie jak próby sklejania PORT  z  literą np. B - nie wykorzystując do tego celu makr upraszczających.<br />Jeżeli czegoś tu nie wiem to bardzo chętnie się nauczę. Możliwe że są jakieś sposoby.<br /><br />A może o czymś innym piszemy.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 16 wrz 2016, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harry]]></name></author>
<updated>2016-09-16T11:01:01+01:00</updated>
<published>2016-09-16T11:01:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168830#p168830</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168830#p168830"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168830#p168830"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />Harry napisał(a):<br />A niby czemu nie? Przecież tablice są indexowane właśnie od zera.<br /><br />No tak, ale ja w tym nowszym kodzie mam takie coś w definicjach, a one zawierają wpisy np.: PORTD &amp;=~(1&lt;&lt;PD0);...itd. z przesunięciem nie ma problemy umieścić w tablicy, ale co z PORT_ ?:<br />[syntax=c]#define CYFRA_0  PORT_A_SEGMENT &amp;= ~A_SEGMENT;  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_C_SEGMENT &amp;= ~C_SEGMENT;  PORT_D_SEGMENT &amp;= ~D_SEGMENT;  PORT_E_SEGMENT &amp;= ~E_SEGMENT;  PORT_F_SEGMENT &amp;= ~F_SEGMENT<br />    #define CYFRA_1  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_C_SEGMENT &amp;= ~C_SEGMENT<br />    #define CYFRA_2  PORT_A_SEGMENT &amp;= ~A_SEGMENT;  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_G_SEGMENT &amp;= ~G_SEGMENT;  PORT_E_SEGMENT &amp;= ~E_SEGMENT; PORT_D_SEGMENT &amp;= ~D_SEGMENT[/syntax]<br />jak to wkitrać w tablicę ? muszę coś innego kurcze wykombinować.<br /><br />------------------------ [ Dodano po: 17 minutach ]<br /><br />Ogólnie mówiąc próbujemy tak napisać program żeby można było dowolnie konfigurować każdy PIN wyświetlacza. np katoda segment A będzie na PD0 a segment B na PB1 ? a anody np 4, też w różnych miejscach - nie koniecznie na jednym porcie 0,1,2,3 .<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />Przecież dla preprocesora to bez różnicy, kompilator i tak zamieni tak jak powinno być, równie dobrze mógłbyś to napisać tak:<br /><br />[syntax=c]#define CYFRA_0 (1&lt;&lt;PD1)<br />#define STALA_NR_1 CYFRA 0 <br />#define STALA_NR_2 STALA_NR_1 <br />#define STALA_NR_3 STALA_NR_2 <br />#define STALA_NR_4 STALA_NR_3[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14685">Harry</a> — 16 wrz 2016, o 11:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-16T00:34:50+01:00</updated>
<published>2016-09-16T00:34:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168817#p168817</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168817#p168817"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168817#p168817"><![CDATA[
Hejka,<br />Wojtku, ta nowsza wersja V.2 czeka na Ciebie, od wczoraj. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Myślę jednak że w celach edukacyjnych,<br />znacznie łatwiejszy do zrozumienia i załapania zasady działania wyświetlacza LED jest ten pierwszy program V.1 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />,<br />z anodami na jednym porcie i katodami też na jednym porcie w kolejności od 0.<br /><br />Gdyby się okazało że już wiesz o co chodzi to zrobimy kilka kroków do przodu bo wstawię tu - LED_V2. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Co prawda kod pozostawia jeszcze wiele do życzenia, bo muszę się sporo nauczyć i wprawić w konstruowaniu algorytmów.<br />Nie mniej jednak działa.<br />Można w nim dowolnie wybierać piny i porty A, B, C, D, oraz ilość cyferblatów (cyfr na wyświetlaczu) tzn. do 6-ciu,<br />a także ustawiać czy wysterowanie jest stanem niskim czy wysokim zarówno segmentów jak i wspólnych anod-katod.<br />Łatwo będzie dostosować do np. tranzystorów sterujących PNP lub NPN, gdyby zaszła potrzeba wzmocnienia wyjścia. <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><br /><br />A ja biorę się za pisanie V.3, bo w V.2 jest np. zbyt wiele operacji w przerwaniu i mi się to nie podoba.<br />Wypadałoby także pouczyć się optymalizacji, a to już nie będzie takie chop-siup. <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br />Zobaczę co mi z tego wyjdzie. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Pozdrawiam Darek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 16 wrz 2016, o 00:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T22:36:44+01:00</updated>
<published>2016-09-11T22:36:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168610#p168610</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168610#p168610"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168610#p168610"><![CDATA[
Wojtku,<br />Coś jeszcze... ja podłączyłem pod anody wyświetlacza uc. więc załączam je stanem wysokim.<br />A u Ciebie jeżeli jest sterowanie przez PNP to musisz stanem niskim załączać, a wysokim wyłączać.<br />TEN WPIS :<br />[syntax=c]#define A_1_ON PORT_ANODY |= ANODA_1<br />#define A_2_ON PORT_ANODY |= ANODA_2<br />#define A_3_ON PORT_ANODY |= ANODA_3<br />#define A_4_ON PORT_ANODY |= ANODA_4<br /> <br />#define WYGAS_ANODY PORT_ANODY &amp;=~(ANODA_1 | ANODA_2 | ANODA_3 | ANODA_4)[/syntax]<br />ZAMIEŃ NA :<br />[syntax=c]#define A_1_ON PORT_ANODY &amp;=~ ANODA_1<br />#define A_2_ON PORT_ANODY &amp;=~ ANODA_2<br />#define A_3_ON PORT_ANODY &amp;=~ ANODA_3<br />#define A_4_ON PORT_ANODY &amp;=~ ANODA_4<br /> <br />#define WYGAS_ANODY PORT_ANODY  |= ANODA_1 | ANODA_2 | ANODA_3 | ANODA_4[/syntax]<br />możliwe że dlatego nic nie świeciło. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />A ja pomyślę nad tym nowszym kodem, -bo już zauważyłem w nim przeoczenia. <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br /><div class="quotetitle">Harry napisał(a):</div><div class="quotecontent"><br />A niby czemu nie? Przecież tablice są indexowane właśnie od zera.<br /></div><br />No tak, ale ja w tym nowszym kodzie mam takie coś w definicjach, a one zawierają wpisy np.:  PORTD &amp;=~(1&lt;&lt;PD0);...itd. z przesunięciem nie ma problemy umieścić w tablicy, ale co z PORT_ ?:<br />[syntax=c]#define CYFRA_0  PORT_A_SEGMENT &amp;= ~A_SEGMENT;  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_C_SEGMENT &amp;= ~C_SEGMENT;  PORT_D_SEGMENT &amp;= ~D_SEGMENT;  PORT_E_SEGMENT &amp;= ~E_SEGMENT;  PORT_F_SEGMENT &amp;= ~F_SEGMENT<br />#define CYFRA_1  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_C_SEGMENT &amp;= ~C_SEGMENT<br />#define CYFRA_2  PORT_A_SEGMENT &amp;= ~A_SEGMENT;  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_G_SEGMENT &amp;= ~G_SEGMENT;  PORT_E_SEGMENT &amp;= ~E_SEGMENT; PORT_D_SEGMENT &amp;= ~D_SEGMENT[/syntax]<br />jak to wkitrać w tablicę ? muszę coś innego kurcze wykombinować.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 17 minutach ]</span></strong><br /><br />Ogólnie mówiąc próbujemy tak napisać program żeby można było dowolnie konfigurować każdy PIN wyświetlacza. np katoda segment A będzie na PD0 a segment B na PB1 ? a anody np 4, też w różnych miejscach - nie koniecznie na jednym porcie 0,1,2,3 .<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=11549">Daro69</a> — 11 wrz 2016, o 22:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harry]]></name></author>
<updated>2016-09-11T22:30:24+01:00</updated>
<published>2016-09-11T22:30:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168609#p168609</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168609#p168609"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168609#p168609"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />Sam jeszcze nie wiem jak bym to dalej rozpisał, ale w tablicę to już CYFRA_0 nie dam rady wkitrać. <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br /></div><br />A niby czemu nie? Przecież tablice są indexowane właśnie od zera.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14685">Harry</a> — 11 wrz 2016, o 22:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T21:26:19+01:00</updated>
<published>2016-09-11T21:26:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168604#p168604</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168604#p168604"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168604#p168604"><![CDATA[
Zauważ że te czarne - to są zakomentowane. Po prostu jeszcze z nimi nic nie zrobiłem.<img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Tak skopiowałem kawałek kodu do wglądu razem z kawałkiem nie przerobionym.<br />I się zatrzymałem bo się zastanawiam czy dobrą drogę obrałem. Obawiam się że w ten sposób zasypie kod zapisami,<br />i stanę na rozdrożu. Z tą możliwością wyboru pojedynczych pinów w ustawieniach.<br />W definicjach PINÓW...anodz jest ich u mnie sześć, bo myślałem o wyświetlaniu także sekund. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Czyli godziny, minuty, sekundy.<br />Na razie zegarek zamiast pokazywać sekundy - mryga kropką.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 wrz 2016, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-11T20:50:34+01:00</updated>
<published>2016-09-11T20:50:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168602#p168602</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168602#p168602"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168602#p168602"><![CDATA[
Dlaczego część kodu w  DEFINICJJACH WYSWIETLANIA CYFR NA RÓŻNYCH PINACH I PORTACH jest na czarno , a część na zielono? tam jest jakiś błąd??  po takim kodzie, to łatwo można przyswoić nowe wiadomości.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />Nie za dużo tych definicji zrobiłeś (DEFINICJE PINOW PORTOW I DDROW Z ANODAMI)? dlaczego sześć pozycji, a nie cztery? bierzesz pod uwagę większy wyświetlacz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 11 wrz 2016, o 20:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T19:15:48+01:00</updated>
<published>2016-09-11T19:15:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168590#p168590</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168590#p168590"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168590#p168590"><![CDATA[
<div class="quotetitle">wojciechgorzolka napisał(a):</div><div class="quotecontent"><br />jeszcze raz się za to wezmę od podstaw, czyli lutowanko<br /></div><br />To dobrze bo zobacz co zacząłem pisać, i ile tego greźmolenia się robi. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />/**************************************************<br /> * <br /> *   DEFINICJE PINOW PORTOW I DDROW Z ANODAMI<br /> * <br /> **************************************************/<br />#define ANODA_1 (1&lt;&lt;PB0)<br />#define PORT_A_1 PORTB<br />#define DDR_A_1 DDRB<br /><br />#define ANODA_2 (1&lt;&lt;PD7)<br />#define PORT_A_2 PORTD<br />#define  DDR_A_2 DDRD<br /><br />#define ANODA_3 (1&lt;&lt;PD6)<br />#define PORT_A_3 PORTD<br />#define  DDR_A_3 DDRD<br /><br />#define ANODA_4 (1&lt;&lt;PD5)<br />#define PORT_A_4 PORTD<br />#define  DDR_A_4 DDRD<br /><br />#define ANODA_5 (1&lt;&lt;PD4)<br />#define PORT_A_5 PORTD<br />#define  DDR_A_5 DDRD<br /><br />#define ANODA_6 (1&lt;&lt;PD3)<br />#define PORT_A_6 PORTD<br />#define  DDR_A_6 DDRD<br />/*************************************************<br /> * <br /> *    DEFINICJE PORTÓW Z KATODAMI<br /> * <br /> * ************************************************/<br /><br />#define DDR_KATODY DDRC<br />#define PORT_KATODY PORTC<br /><br />/*************************************************<br /> * <br /> *    DEFINICJE ZAŁĄCZANIA ANOD<br /> * <br /> * ************************************************/<br /><br />#define A_1_ON PORT_A_1 |= ANODA_1<br />#define A_2_ON PORT_A_2 |= ANODA_2<br />#define A_3_ON PORT_A_3 |= ANODA_3<br />#define A_4_ON PORT_A_4 |= ANODA_4<br />#define A_5_ON PORT_A_5 |= ANODA_5<br />#define A_6_ON PORT_A_6 |= ANODA_6<br /><br />#define WYGAS_ANODY PORT_A_1 &amp;= ~ANODA_1;   PORT_A_2 &amp;= ~ANODA_2;   PORT_A_3 &amp;= ~ANODA_3;   PORT_A_4 &amp;= ~ANODA_4;   PORT_A_5 &amp;= ~ANODA_5;  PORT_A_6 &amp;= ~ANODA_6<br /><br />/*************************************************<br /> * <br /> *    DEFINICJE PINOW I PORTÓW Z SEGMENTAMI<br /> * <br /> * ************************************************/<br /><br />#define A_SEGMENT (1&lt;&lt;PD0)       /* _ A_ */<br />#define B_SEGMENT (1&lt;&lt;PD1)       /* F___B */<br />#define C_SEGMENT (1&lt;&lt;PD2)       /*_ _G___*/<br />#define D_SEGMENT (1&lt;&lt;PD3)       /*_E___C_*/<br />#define E_SEGMENT (1&lt;&lt;PD4)       /*___D__    H*/<br />#define F_SEGMENT (1&lt;&lt;PD5)<br />#define G_SEGMENT (1&lt;&lt;PD6)<br />#define H_SEGMENT (1&lt;&lt;PD7)<br /><br />#define PORT_A_SEGMENT PORTD <br />#define PORT_B_SEGMENT PORTD  <br />#define PORT_C_SEGMENT PORTD   <br />#define PORT_D_SEGMENT PORTD  <br />#define PORT_E_SEGMENT PORTD      <br />#define PORT_F_SEGMENT PORTD<br />#define PORT_G_SEGMENT PORTD<br />#define PORT_H_SEGMENT PORTD<br /><br />/*************************************************<br /> * <br /> *    DEFINICJE WYSWIETLANIA CYFR NA RÓŻNYCH PINACH I PORTACH<br /> * <br /> * ************************************************/<br /><br />#define CYFRA_0  PORT_A_SEGMENT &amp;= ~A_SEGMENT;  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_C_SEGMENT &amp;= ~C_SEGMENT;  PORT_D_SEGMENT &amp;= ~D_SEGMENT;  PORT_E_SEGMENT &amp;= ~E_SEGMENT;  PORT_F_SEGMENT &amp;= ~F_SEGMENT<br />#define CYFRA_1  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_C_SEGMENT &amp;= ~C_SEGMENT<br />#define CYFRA_2  PORT_A_SEGMENT &amp;= ~A_SEGMENT;  PORT_B_SEGMENT &amp;= ~B_SEGMENT;  PORT_G_SEGMENT &amp;= ~G_SEGMENT;  PORT_E_SEGMENT &amp;= ~E_SEGMENT; PORT_D_SEGMENT &amp;= ~D_SEGMENT<br />//#define CYFRA_3  (A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | G_SEGMENT)<br />//#define CYFRA_4  (F_SEGMENT | G_SEGMENT | B_SEGMENT | C_SEGMENT)<br />//#define CYFRA_5  (A_SEGMENT | F_SEGMENT | G_SEGMENT | C_SEGMENT | D_SEGMENT)<br />//#define CYFRA_6  (A_SEGMENT | F_SEGMENT | E_SEGMENT | D_SEGMENT | C_SEGMENT | G_SEGMENT)<br />//#define CYFRA_7  (A_SEGMENT | B_SEGMENT | C_SEGMENT)<br />//#define CYFRA_8  (A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | E_SEGMENT | F_SEGMENT | G_SEGMENT)<br />//#define CYFRA_9  (A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | F_SEGMENT | G_SEGMENT)<br />//#define CZYSC  |=(A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | E_SEGMENT | F_SEGMENT | G_SEGMENT)<br /><br />//uint8_t tab&#91;&#93; =<br />//{<br />//CYFRA_0,<br />//CYFRA_1,[/syntax]<br />Sam jeszcze nie wiem jak bym to dalej rozpisał, ale w tablicę to już CYFRA_0 nie dam rady wkitrać. <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br /> Pewnie kombinował bym coś z tym zrobić. Albo zmienić podejście - inny algorytm. <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br />Dlatego dużo łatwiej jest ogarnąć to na jednym porcie ANODY a na innym katody. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Pozdrawiam Darek.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 14 minutach ]</span></strong><br /><br />odnoszę wrażenie że zaczynam błądzić.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 wrz 2016, o 19:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-11T18:09:34+01:00</updated>
<published>2016-09-11T18:09:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168587#p168587</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168587#p168587"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168587#p168587"><![CDATA[
no widzisz, wychodzi moje niedoświadczenie. dziękuję za kod w prywatnej wiadomości. jeszcze raz się za to wezmę od podstaw, czyli lutowanko <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 11 wrz 2016, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T17:28:23+01:00</updated>
<published>2016-09-11T17:28:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168585#p168585</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168585#p168585"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168585#p168585"><![CDATA[
Dobrze jest najpierw rozplanować i przemyśleć które piny do czego będą, bo potem mogą być konflikty gdy się okaże że płytka zlutowana, wykorzystany port B, a trzeba dać zewnętrzny kwarc na PB6 i PB7. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 wrz 2016, o 17:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-11T15:45:11+01:00</updated>
<published>2016-09-11T15:45:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168584#p168584</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168584#p168584"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168584#p168584"><![CDATA[
to prawda. podłączyłem ten mój układ, jak na razie tylko z jednym tranzystorem i po wgraniu Twojego kodu niestety cisza, nie działa. coś chyba źle polutowałem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 11 wrz 2016, o 15:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T15:36:24+01:00</updated>
<published>2016-09-11T15:36:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168583#p168583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168583#p168583"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168583#p168583"><![CDATA[
NIE. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />Bo producent nie przewiduje jakim napięciem je zasilisz, więc produkuje bez, z gołymi ledami i trzeba samemu je dopasować do własnych potrzeb. Bo co by było gdyby jeden projekt przewidywał 5V a inny 3.5V.- wydłubywać ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 wrz 2016, o 15:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-11T15:30:40+01:00</updated>
<published>2016-09-11T15:30:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168582#p168582</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168582#p168582"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168582#p168582"><![CDATA[
rezystory powinny być w mojej obudowie już fabrycznie zamontowane?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 11 wrz 2016, o 15:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T14:23:43+01:00</updated>
<published>2016-09-11T14:23:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168576#p168576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168576#p168576"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168576#p168576"><![CDATA[
<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />dlatego w próbnym programiku zasugerowałem 8 katod na D, i 4 anody na C.<br />Pomyślałem że przyda się wolne PB6 i PB7 na dokładniejszy stabilniejszy i szybszy ewentualny kwarc  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />A zegarek już sobie tyka.<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> TYK... TYK...TYK...  ....<br /><br />edit.........<br />co do rezystorów to na ~99,9% przypadków, powinny być  <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=11549">Daro69</a> — 11 wrz 2016, o 14:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-11T14:06:14+01:00</updated>
<published>2016-09-11T14:06:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168575#p168575</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168575#p168575"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168575#p168575"><![CDATA[
tak, osiem, ponieważ to są rezystory które idą do diod segmentów. chyba tam muszą być <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, bo w wyświetlaczu ich chyba nie ma , no chyba ,że są w obudowie i nie wziąłem tego pod uwagę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />w sumie to mogłem to zrobić na całym porcie B<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 11 wrz 2016, o 14:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T12:44:29+01:00</updated>
<published>2016-09-11T12:44:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168571#p168571</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168571#p168571"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168571#p168571"><![CDATA[
Da się. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br />Na czas programowania trzeba odpiąć te trzy kabelki wyświetlacza z mosi miso sck, albo zabezpieczyć żeby żeby nie zakłócały swoim obciążeniem wejść/wyjść programatora.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 13 minutach ]</span></strong><br /><br />a, .. i przede wszystkim od programatora wpinaj prosto w nogi nie za rezystorami czasem.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 18 minutach ]</span></strong><br /><br />Troszkę sobie utrudniasz jak na początek,<br />bo osiem rezystorów widzę : PB1, PB2, PB3, PB4, PB5,.....PC0, PC1, PC2.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 wrz 2016, o 12:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-11T11:47:34+01:00</updated>
<published>2016-09-11T11:47:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168569#p168569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168569#p168569"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168569#p168569"><![CDATA[
No tak. a Czy to znaczy ,że tych pinów nie mogę używać do wyświetlacza?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 11 wrz 2016, o 11:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-11T11:44:43+01:00</updated>
<published>2016-09-11T11:44:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168568#p168568</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168568#p168568"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168568#p168568"><![CDATA[
cześc,<br />chyba jest mały problem <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br />podłączyłeś rezystory do zasilania ledziaka na pinach PB3, PB4, PB5 to przecież w ATmega8 jest MOSI MISO CSK. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><a href="https://obrazkiforum.atnel.pl/11549/d5b98fe377996191a51a26e813ef76e7.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/11549/d5b98fe377996191a51a26e813ef76e7.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 wrz 2016, o 11:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-11T10:15:20+01:00</updated>
<published>2016-09-11T10:15:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168566#p168566</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168566#p168566"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168566#p168566"><![CDATA[
Układ do nauki multipleksowania prawie gotowy, jeszcze tylko muszę dolutować jeden segment i będzie cacunia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Zastanawia mnie jedna rzecz, nie wiem czy czegoś źle nie polutowałem, bo gdy chcę zaprogramować atmegę8, to mogę to zrobić gdy wyświetlacz nie jest podłączony wspólną katodą do pinu numer 22 czyli GND. podczas wgrywania wsadu wyskakuje komunikat rc=-1, a gdy ten pin nie jest podłączony , to zaprogramować się da. jest na to jakiś sposób?<br /><br /><a href="https://obrazkiforum.atnel.pl/14082/d9b029e012e1b3bf1d8c87fee5677f5b.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/14082/d9b029e012e1b3bf1d8c87fee5677f5b.jpg" alt="Obrazek" /></a><br /><br />zaraz zaczynam zabawę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  <img src="https://forum.atnel.pl/images/smilies/icon_twisted.gif" alt=":twisted:" title="Szalony" />  <img src="https://forum.atnel.pl/images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="Pan Zielony" />  <img src="https://forum.atnel.pl/images/smilies/icon_twisted.gif" alt=":twisted:" title="Szalony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 11 wrz 2016, o 10:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-10T11:38:24+01:00</updated>
<published>2016-09-10T11:38:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168536#p168536</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168536#p168536"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168536#p168536"><![CDATA[
mam jeszcze pytanie. Oglądałem poradnik z rtc-ds3231. i chciałbym się upewnić,że cały wsad programu z poradnika jest w atmedze, tak? a ten mały scalaczek ds3231 jest tylko konfigurowany?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 10 wrz 2016, o 11:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-10T11:23:54+01:00</updated>
<published>2016-09-10T11:23:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168534#p168534</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168534#p168534"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168534#p168534"><![CDATA[
OK,Poczekam . <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Przygotowałem cd bo w tygodniu mogę mieć krucho z czasem.<br />U mnie już wyświetlają się godziny i minuty.<br />Ale tak jak pisałem te kody to tak raczej poglądowo co jak mniej więcej działa, <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />mimo że są sprawne. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Od tego robala nabawiłem się chyba kompleksów,  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> no i muszę coś z tym zrobić. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />chyba wiem, zaleję go sokiem. <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" />   <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br />A potem zabiorę się za analizowanie każdego z osobna pod lupą.  <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=11549">Daro69</a> — 10 wrz 2016, o 11:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2016-09-10T09:17:46+01:00</updated>
<published>2016-09-10T09:17:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168529#p168529</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168529#p168529"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168529#p168529"><![CDATA[
Darku , dzięki za kody, właśnie je przyswajam, póki co nie podawaj więcej, ponieważ najpierw te muszę ogarnąć. Wczoraj lutowałem układ z Atmegą8 na płytce z segmentami i dzisiaj skupię się na zajęciach praktycznych. Nie posiadam ATB, tak więc lutuję na płytce uniwersalenj. <br />Z góry dziękuję za tak wyczerpujące Twoje zaangażowanie. <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=14082">wojciechgorzolka</a> — 10 wrz 2016, o 09:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-10T00:49:55+01:00</updated>
<published>2016-09-10T00:49:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168519#p168519</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168519#p168519"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168519#p168519"><![CDATA[
OK, jestem. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />piszemy dalej. No może nie tak jak nasz wzorcowy kolega z łamigłówki z robalem,to było MISTRZOSTWO ŚWIATA,<br />ale tak żeby może na prostych poleceniach łatwo było zrozumieć co się dzieje.<br />Jeżeli już znudziło Ci się mruganie wyświetlacza od pierwszego do ostatniego cyferblatu,<br />a mam nadzieję że tak, to dopiszemy jeszcze kilka linijek.<br />1) zauważysz w kodzie dodatkowe definicje, - do pinów - z katodami do wyświetlania cyfr.<br />2) definicje np. &quot;CYFRA_0&quot;. to są segmenty-piny które odpowiadają za wyświetlanie segmentów na wyświetlaczu. Są wspólne dla wszystkich cyferblatów. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> hie.. ale se nazwałem.<br />3) powołane zmienne : pierwsza, druga, ... to będą wyświetlane cyfry na pierwszej pozycji, drugiej, ...<br />4) Jest jeszcze coś. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  <strong>ta...bli...ca...</strong> do przechowywania i wyciągania z niej segmentów ktore mają się zapalać przy danych cyfrach. zakładam że skoro bawimy się wyświetlaczem to już wiesz co to jest. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  pewnie tak.<br /><br />Zamysł jest taki: cyfry które chcemy wyświetlić maja jakąś wartość od 0 do 9.<br />za pomocą tych wartości będziemy wyświetlać kolejne elementy tablicy.<br />Czyli: dla zmiennej pierwsza np. = 2, wyświetli się element drugi z tablicy w którym są ukryte wyświetlające się wartości segmentów dla cyfry 2. tab[2] . dla cyfry 0 tab[0].....<br />oczywiście nie będziemy tu wpisywać cyferek 1, 5, 0, 3.... tylko zmienną, która przyjmując różne wartości będzie wybierała z tablicy kolejne elementy. Gdy będzie miała wartość 4 to wybierze element czwarty.<br />A oto i moja sieczka.  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define ANODA_1 (1&lt;&lt;PC0)<br />#define ANODA_2 (1&lt;&lt;PC1)<br />#define ANODA_3 (1&lt;&lt;PC2)<br />#define ANODA_4 (1&lt;&lt;PC3)<br /><br />#define DDR_ANODY DDRC<br />#define PORT_ANODY PORTC<br /><br />#define DDR_KATODY DDRD<br />#define PORT_KATODY PORTD<br /><br />#define A_1_ON PORT_ANODY |= ANODA_1<br />#define A_2_ON PORT_ANODY |= ANODA_2<br />#define A_3_ON PORT_ANODY |= ANODA_3<br />#define A_4_ON PORT_ANODY |= ANODA_4<br /><br />#define WYGAS_ANODY PORT_ANODY &amp;=~(ANODA_1 | ANODA_2 | ANODA_3 | ANODA_4)<br /><br />#define A_SEGMENT (1&lt;&lt;PD0)       /* _ A_ */<br />#define B_SEGMENT (1&lt;&lt;PD1)       /* F___B */<br />#define C_SEGMENT (1&lt;&lt;PD2)       /*_ _G___*/<br />#define D_SEGMENT (1&lt;&lt;PD3)       /*_E___C_*/<br />#define E_SEGMENT (1&lt;&lt;PD4)       /*___D__    H*/<br />#define F_SEGMENT (1&lt;&lt;PD5)<br />#define G_SEGMENT (1&lt;&lt;PD6)<br />#define H_SEGMENT (1&lt;&lt;PD7)<br /><br />#define CYFRA_0  (A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | E_SEGMENT | F_SEGMENT)<br />#define CYFRA_1  (B_SEGMENT | C_SEGMENT)<br />#define CYFRA_2  (A_SEGMENT | B_SEGMENT | G_SEGMENT | E_SEGMENT | D_SEGMENT)<br />#define CYFRA_3  (A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | G_SEGMENT)<br />#define CYFRA_4  (F_SEGMENT | G_SEGMENT | B_SEGMENT | C_SEGMENT)<br />#define CYFRA_5  (A_SEGMENT | F_SEGMENT | G_SEGMENT | C_SEGMENT | D_SEGMENT)<br />#define CYFRA_6  (A_SEGMENT | F_SEGMENT | E_SEGMENT | D_SEGMENT | C_SEGMENT | G_SEGMENT)<br />#define CYFRA_7  (A_SEGMENT | B_SEGMENT | C_SEGMENT)<br />#define CYFRA_8  (A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | E_SEGMENT | F_SEGMENT | G_SEGMENT)<br />#define CYFRA_9  (A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | F_SEGMENT | G_SEGMENT)<br />#define CZYSC  |=(A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | E_SEGMENT | F_SEGMENT | G_SEGMENT| H_SEGMENT)<br /><br />uint8_t tab&#91;&#93; =<br />{<br />CYFRA_0,<br />CYFRA_1,<br />CYFRA_2,<br />CYFRA_3,<br />CYFRA_4,<br />CYFRA_5,<br />CYFRA_6,<br />CYFRA_7,<br />CYFRA_8,<br />CYFRA_9<br />};<br /><br />volatile uint8_t pierwsza;<br />volatile uint8_t druga;<br />volatile uint8_t trzecia;<br />volatile uint8_t czwarta;<br /><br />int main(void)<br />{<br /><br />DDR_ANODY |= ANODA_1 | ANODA_2 | ANODA_3 | ANODA_4;<br />DDR_KATODY |= A_SEGMENT | B_SEGMENT | C_SEGMENT | D_SEGMENT | E_SEGMENT | F_SEGMENT | G_SEGMENT | H_SEGMENT;<br /><br />/*ustawienie timer0*/<br />TCCR0 |= (1 &lt;&lt; CS02); /* preskaler = 256*/<br />TIMSK |= (1 &lt;&lt; TOIE0); /* zezwolenie na przerwanie od przepelnienia*/<br />sei();<br />/*globalne zezwolenie na przerwania*/<br /><br />while (1)<br />{<br /><br />pierwsza = 0;<br />druga = 1;<br />trzecia = 2;<br />czwarta = 3;<br /><br />}<br />}<br /><br />ISR(TIMER0_OVF_vect)<br />{ /*przerwanie 125 razy na sekundę*/<br />TCNT0 = 5; /*timer zlicza od tej wartości - do 255- wywołuje to przerwanie i znowu zaczyna od tej wartości<br /> czyli  oscylator-8MHz / preskaler-256 / licznik zlicza 250 / jeszcze nasze &quot;zliczanie&quot;-125 = 1 Hz :)        */<br /><br />static uint8_t zliczanie = 0;<br />static uint8_t kolejnosc_anod;<br /><br />kolejnosc_anod++;<br />if (kolejnosc_anod &gt; 3)<br />kolejnosc_anod = 0;<br /><br />if (zliczanie)/*ta zmienne jest dekrementowana 125 razy na sekunde, */<br />{<br />zliczanie--;<br /><br />}<br />else<br />{ /*wiec co sekunde osiaga 0 i trzeba znowu wpisac do niej 124*/<br />zliczanie = 124;<br /><br />WYGAS_ANODY;<br />PORT_KATODY CZYSC;<br />if (kolejnosc_anod == 0)<br />{<br />A_1_ON;<br />PORT_KATODY &amp;= ~tab&#91;pierwsza&#93;;<br />}<br />else<br />if (kolejnosc_anod == 1)<br />{<br />A_2_ON;<br />PORT_KATODY &amp;= ~tab&#91;druga&#93;;<br />}<br />else<br />if (kolejnosc_anod == 2)<br />{<br />A_3_ON;<br />PORT_KATODY &amp;= ~tab&#91;trzecia&#93;;<br />}<br />else<br />if (kolejnosc_anod == 3)<br />{<br />A_4_ON;<br />PORT_KATODY &amp;= ~tab&#91;czwarta&#93;;<br />}<br />}<br /><br />}[/syntax]<br />cdn  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 10 wrz 2016, o 00:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-09-08T23:28:09+01:00</updated>
<published>2016-09-08T23:28:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168416#p168416</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168416#p168416"/>
<title type="html"><![CDATA[Re: wyświetlacz fluorescencyjny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16164&amp;p=168416#p168416"><![CDATA[
No jestem, jestem. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Trochę późno, ale tak jak obiecałem. np. ATmega8- 8MHz, Timer0, przerwanie OVF.(od przepełnienia- bo to ten najsłabszy timer)<br />Nie wiem jak Ci idzie multipleksowanie z BB. Czy wszystko jasne, czy próbujesz wykorzystać gotowca z płyty i go ogarnąć.<br />Coś może ułatwi taki wstęp do zrozumienia multipleksowania.<br />Specjalnie w zwolnionym tempie 1sek.<br />Jak sobie podepniesz to pod anody, a na katody dowolne wyswietlacza 7-segm. podasz masę, to już masz sekwencyjne sterowanie anodami.<br />Jeżeli już coś z tego kojarzysz to lepiej używaj Mirkowego sposobu, bo ja z wiadomych względów nie mogę go tu przedstawić więc napisałem taki zakręcony przykładzik.<br />Potem w takt zmiany zasilania anod trzeba zmieniać cyfry które mają być wyświetlane.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define ANODA_1 (1&lt;&lt;PC0)<br />#define ANODA_2 (1&lt;&lt;PC1)<br />#define ANODA_3 (1&lt;&lt;PC2)<br />#define ANODA_4 (1&lt;&lt;PC3)<br /><br />#define DDR_ANODY DDRC<br />#define PORT_ANODY PORTC<br /><br />#define A_1_ON PORT_ANODY |= ANODA_1<br />#define A_2_ON PORT_ANODY |= ANODA_2<br />#define A_3_ON PORT_ANODY |= ANODA_3<br />#define A_4_ON PORT_ANODY |= ANODA_4<br /><br />#define WYGAS_ANODY PORT_ANODY &amp;=~(ANODA_1 | ANODA_2 | ANODA_3 | ANODA_4)<br /><br /><br /><br /><br />int main(void) {<br /><br />DDR_ANODY |=ANODA_1|ANODA_2|ANODA_3|ANODA_4;<br />/*ustawienie timer0*/<br />TCCR0 |= (1&lt;&lt;CS02);/* preskaler = 256*/<br />TIMSK |= (1&lt;&lt;TOIE0);/* zezwolenie na przerwanie od przepelnienia*/<br />    sei();           /*globalne zezwolenie na przerwania*/<br /><br />while(1){<br /><br /><br /><br />        }<br />}<br /><br />ISR(TIMER0_OVF_vect)<br />{ /*przerwanie 125 razy na sekundę*/<br />TCNT0 = 5; /*timer zlicza od tej wartości - do 255- wywołuje to przerwanie i znowu zaczyna od tej wartości<br /> czyli  oscylator-8MHz / preskaler-256 / licznik zlicza 250 / jeszcze nasze &quot;zliczanie&quot;-125 = 1 Hz :)        */<br /><br />static uint8_t zliczanie = 0;<br />if (zliczanie)/*ta zmienne jest dekrementowana 125 razy na sekunde, */<br />{<br />zliczanie--;<br />}<br />else<br />{  /*wiec co sekunde osiaga 0 i trzeba znowu wpisac do niej 125*/<br />zliczanie = 125; <br />static uint8_t kolejnosc_anod;<br /><br />kolejnosc_anod++;<br />if (kolejnosc_anod &gt; 3) kolejnosc_anod = 0;<br /><br />WYGAS_ANODY;<br />if (kolejnosc_anod == 0)<br />A_1_ON;<br />else<br />if (kolejnosc_anod == 1)<br />A_2_ON;<br />else<br />if (kolejnosc_anod == 2)<br />A_3_ON;<br />else<br />if (kolejnosc_anod == 3)<br />A_4_ON;<br /><br />}<br /><br />}[/syntax]Dziś zdążyłem tylko tyle. <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br />jutro mam znowu kocioł w pracy i po też. <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 8 wrz 2016, o 23:28</p><hr />
]]></content>
</entry>
</feed>