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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-09-26T13:53:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=22&amp;t=1592&amp;mode</id>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-09-26T13:53:32+01:00</updated>
<published>2012-09-26T13:53:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15985#p15985</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15985#p15985"/>
<title type="html"><![CDATA[Re: Matryca LED 5x7 pole odczytowe  15x7]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15985#p15985"><![CDATA[
MichalXY<br />Przerwania powinny być najkrótsze.<br />A co do duszków, jeśli źle jest kod napisany, to nawet jak dasz do przerwania to będziesz je miał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Tak czy siak, widzę, że więcej osób robi w przerwaniu (ja też tak zrobiłem i wszystko działało), myślałem tylko, że tak się robić  nie powinno <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=74">xamrex</a> — 26 wrz 2012, o 13:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-09-26T13:12:11+01:00</updated>
<published>2012-09-26T13:12:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15982#p15982</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15982#p15982"/>
<title type="html"><![CDATA[Re: Matryca LED 5x7 pole odczytowe  15x7]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15982#p15982"><![CDATA[
<strong>xamrex</strong> a czemu to nie jest dobry pomysł  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ? Zawsze masz pewność że nie będziesz miał &quot;duszków&quot; na wyświetlaczu  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Ogólnie to kiedyś muszę się za takie wyświetlacze zabrać  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<br /><br /><br />Dzięki Sun za artykuł  <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=226">MichalXY</a> — 26 wrz 2012, o 13:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-09-26T13:05:53+01:00</updated>
<published>2012-09-26T13:05:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15981#p15981</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15981#p15981"/>
<title type="html"><![CDATA[Re: Matryca LED 5x7 pole odczytowe  15x7]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15981#p15981"><![CDATA[
ho ho ho..<br />Ja miałem podobnie zrobioną moją matrycę (czyli prawie wszystko na przerwaniu, ale widzę, że kolega zaszalał i wszystko ma w przerwaniu)..<br />Nie jest to chyba dobry pomysł <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=74">xamrex</a> — 26 wrz 2012, o 13:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-09-25T15:24:13+01:00</updated>
<published>2012-09-25T15:24:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15930#p15930</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15930#p15930"/>
<title type="html"><![CDATA[Matryca LED 5x7 pole odczytowe  15x7]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1592&amp;p=15930#p15930"><![CDATA[
W sumie to na życzenie jednego z kolegów z forum <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Zgrozą było by nie spróbować zabawy mniejszymi matrycami 5x7 choć osobiście wole 8x8.<br />Tym razem pole odczytowe będzie się składać z 3 matryc 5x7 czyli uzyskamy obszar roboczy<br />o rozmiarze 15x7 punktów. <br /><br />Zastosowany mikrokontroler to ATmega8 , której fuse bits są ustawione w następujący sposób:<br />taktowanie moim ulubionym kwarcem 16Mhz <br />HFUSE = 0xC9<br />LFUSE = 0xFF<br />Układ pracuje w systemie kaskadowym  do sterowania 3ch matryc 5x7 zostały użyte <br />2 rejestry przesuwne 595 do sterowania 15 kolumnami oraz 1 ULN2003 do sterowania <br />7 wierszami. Taki układ pozwala na łatwe dołączenie kolejnych modułów 15x7.<br /><br />Schemat prezentuje się następująco:<br /><br /><a href="http://img835.imageshack.us/i/15x7ledmatrixschematic.jpg/"  class="postlink"><img src="http://img835.imageshack.us/img835/3840/15x7ledmatrixschematic.jpg" alt="Obrazek" /></a><br /><br />Program w zasadzie nie wymaga większego opisu efektem jego działania jest przewijany napis:<br /><br />Witam ! * SunRiver * <br /><br />Program został napisany w Eclipse Juno Hatsune Edition z Toolchainem  3.4 Atmela.<br />Prezentuje się następująco:<br /><br />[syntax=c]<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;string.h&gt;<br /> <br />#include &quot;font5x7.h&quot;<br /> <br /> <br />volatile PGM_P ptr=smallFont;<br /> <br />volatile uint16_t ii,iii;<br /> <br />//Wiadomość wyświetlana<br />volatile char string[]=&quot;Witam ! * SunRiver * &quot;;<br />volatile uint8_t len;<br /> <br /> <br />#define DISP_ROW_CNT 7<br />#define DISP_COL_CNT 15<br /> <br />/***************************************<br /> <br />Konfiguracja połaczen<br /> <br />****************************************/<br /> <br />#define HC595_PORT   PORTB<br />#define HC595_DDR    DDRB<br /> <br />#define HC595_DS_POS PB0<br />#define HC595_SH_CP_POS PB1<br />#define HC595_ST_CP_POS PB2<br /> <br />//-----------------------------------------------------------------------------------------------<br /> <br />void HC595Init()<br />{<br />HC595_DDR|=((1&lt;&lt;hc595_sh_cp_pos)|(1&lt;&lt;hc595_st_cp_pos)|(1&lt;&lt;hc595_ds_pos));<br />}<br /> <br />#define HC595DataHigh() (HC595_PORT|=(1&lt;&lt;hc595_ds_pos))<br />#define HC595DataLow() (HC595_PORT&amp;=(~(1&lt;&lt;hc595_ds_pos)))<br /> <br />void HC595Pulse()<br />{<br /> <br />HC595_PORT|=(1&lt;&lt;hc595_sh_cp_pos); high&lt;br=&quot;&quot;&gt;<br />HC595_PORT&amp;=(~(1&lt;&lt;hc595_sh_cp_pos)); low&lt;br=&quot;&quot;&gt;}<br /> <br />void HC595Latch()<br />{<br />//Pulse the Store Clock<br /> <br />HC595_PORT|=(1&lt;&lt;hc595_st_cp_pos); stan=&quot;&quot; hi&lt;br=&quot;&quot;&gt;   _delay_loop_1(1);<br /> <br />HC595_PORT&amp;=(~(1&lt;&lt;hc595_st_cp_pos)); stan=&quot;&quot; lo&lt;br=&quot;&quot;&gt;   _delay_loop_1(1);<br />}<br /> <br /> <br /> <br />void SelectRow(uint8_t r)<br />{<br />DDRD|=(0B11110111);<br />PORTD&amp;=(0B00001000);<br /> <br />switch(r)<br />{<br />case 6:<br />PORTD|=(1&lt;&lt;pd0);<br />break;<br />case 5:<br />PORTD|=(1&lt;&lt;pd1);<br />break;<br />case 4:<br />PORTD|=(1&lt;&lt;pd2);<br />break;<br />case 3:<br />PORTD|=(1&lt;&lt;pd4);<br />break;<br />case 2:<br />PORTD|=(1&lt;&lt;pd5);<br />break;<br />case 1:<br />PORTD|=(1&lt;&lt;pd6);<br />break;<br />case 0:<br />PORTD|=(1&lt;&lt;pd7);<br />break;<br />}<br />}<br /> <br />void main()<br />{<br />// Prescaler = FCPU/256<br />TCCR0|=((1&lt;&lt;cs02));<br /> <br />// Przerwanie od Timera<br />TIMSK|=(1&lt;&lt;toie0);<br /> <br />//Inicjacja Licznika<br />TCNT0=0;<br /> <br />//Wlaczenie przerwan<br />sei();<br /> <br />//Inicjacja 595<br />HC595Init();<br /> <br />//pobranie rozmiaru wiadomości<br />len=strlen(string);<br /> <br />ii=iii=0;<br /> <br /> <br />while(1)<br />{<br />}<br /> <br />}<br /> <br />ISR(TIMER0_OVF_vect)<br />{<br /> <br />// Przerwanie ISR inicjuje wyświetlanie<br /> <br />static uint8_t row;<br />static uint16_t cnt=0;<br /> <br />cnt++;<br /> <br /> <br />// Przewijanie<br />if(cnt == 29)<br />{<br />cnt =0;<br /> <br />ii++;<br />if(ii==5)<br />{<br />ii=0;<br />iii++;<br />if(iii&gt;len)<br />iii=0;<br />}<br /> <br />return;<br />}<br /> <br />//Dane w kolumnach<br />int8_t col;<br /> <br />int8_t chr = iii;<br />int8_t m=ii;<br /> <br />for(col=0;col&lt;disp_col_cnt;col++)<br />{<br />uint8_t data;<br /> <br />if(m!=5)<br />{<br />data=pgm_read_byte( ptr + ((string[chr]-' ')*5)+m);<br />}<br />else<br />{<br />data=0x00;<br />}<br /> <br />if((data &amp; (1&lt;&lt;row)))<br />HC595DataHigh();<br />else<br />HC595DataLow();<br /> <br />HC595Pulse();<br /> <br />m++;<br /> <br />if(m==6)<br />{<br />chr++;<br />m=0;<br /> <br />if(chr &gt;=len)<br />chr=0;<br />}<br /> <br />}<br /> <br />//Wybranie i aktywacja wierszy<br />SelectRow(row);<br />HC595Latch();<br /> <br />row++;<br />if(row==DISP_ROW_CNT)<br />{<br />//Jeśli coś jest w wierszu;<br />//powrót do pierwszego<br />row=0;<br />}<br />}<br />[/syntax]<br /><br />Miłej zabawy...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 25 wrz 2012, o 15:24</p><hr />
]]></content>
</entry>
</feed>