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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-02T00:29:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=4645&amp;mode</id>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2013-11-02T00:29:21+01:00</updated>
<published>2013-11-02T00:29:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55106#p55106</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55106#p55106"/>
<title type="html"><![CDATA[Re: VFD na PT6318 - podstawowa biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55106#p55106"><![CDATA[
Witam.<br /><br />No i fajnie wyszło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> Czasem w ręce wpadają perełki takie jak ten scalak i wyświetlacz.<br /><br />A co do biblioteki to wysyłanie komend i danych rozwiązałem troszkę inaczej. Po to żeby ręcznie nie machać pinem STB.<br />Na początek funkcja wysyłająca jeden bajt:<br />[syntax=c]//funkcja wysyłająca jeden byte<br />static void tx_byte(uint8_t data)<br />{<br />uint8_t i=0;<br /><br />for(i=0; i &lt; 8; i++)<br />        {<br />if (data &amp; 0x01)<br />                {<br />DIN_HIGH;<br />}else{<br />DIN_LOW;<br />}<br /><br />data = (data &gt;&gt;1);<br />CLK_LOW;<br />CLK_HIGH;<br />}<br />}[/syntax]<br /><br />Funkcja wysyłająca komendę:<br />[syntax=c]//funkcja wysyłająca komendę<br />static void send_cmd(uint8_t cmd, uint8_t no_data)<br />{<br /><br />STB_LOW;<br />tx_byte(cmd);<br /><br />if ( no_data == 0 ) STB_HIGH;<br />}[/syntax]<br /><br />i funkcja wysyłająca dane:<br />[syntax=c]//funkcja wysyłające dane<br />static void send_data(uint8_t data, uint8_t no_data)<br />{<br /><br />tx_byte(data);<br /><br />if ( no_data == 0 ) STB_HIGH;<br />}[/syntax]<br /><br />Do tego zdefiniowane dwie stałe:<br />[syntax=c]#define NO_DATA0<br />#define NEXT_DATA1[/syntax]<br /><br />W kodzie wygląda to mniej więcej tak:<br />[syntax=c]send_cmd(komenda1, NO_DATA);//pierwsza komenda<br />send_cmd(komenda2, NO_DATA);<br />send_cmd(komenda3, NEXT_DATA);//ostatnia komenda<br />send_data(bajt1, NEXT_DATA);//pierwszy bajt danych<br />send_data(bajt2, NEXT_DATA);<br />send_data(bajt3, NO_DATA);//ostatni bajt danych[/syntax]<br /><br />Jedynie podczas odczytu stanu klawiszy lub klawiatury po ostatnim odebranym bajcie ręcznie ustawiam na linii STB stan wysoki.<br /><br />Może te moje wypociny komuś się przydadzą.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 2 lis 2013, o 00:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-11-01T17:08:19+01:00</updated>
<published>2013-11-01T17:08:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55056#p55056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55056#p55056"/>
<title type="html"><![CDATA[Re: VFD na PT6318 - podstawowa biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55056#p55056"><![CDATA[
Kurczaki, ale fajny ten sterownik! Nie dość, że ma jeszcze do tego wszystkiego 4 wejścia ogólnego przeznaczenia, to do tego obsługuje sprzętowo matrycę klawiszy 4x12 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Czyli biblioteka jeszcze się rozwinie:D<br /><br />Wygląda na to, że wystarczy po wysłaniu danych do wyświetlacza wysłać zapytanie o klawisze i dostajemy tablicę naciśniętych klawiszy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> do tego na płytce wlutowane są kondensatory filtrujące klawisze - czyli sprzętowy debouncing - miodzio! <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 1 lis 2013, o 17:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-11-01T16:00:17+01:00</updated>
<published>2013-11-01T16:00:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55048#p55048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55048#p55048"/>
<title type="html"><![CDATA[Re: VFD na PT6318 - podstawowa biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55048#p55048"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />WOW! co by tu dużo nie mówić - KAWAŁ dobrej roboty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... eeeh u mnie też czeka się i kurzy wiele takich wyświetlaczy na zagospodarowanie. Aż zazdroszczę, że miałeś teraz czas i możliwość się tym pobawić, wykorzystać.<br /></div><br /><br />Dzięki za miłe słówko <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Kiedyś już wymontowałem z zepsutego odtwarzacza samochodowego i się udało wykorzystać. Jeszcze do oprogramowania są paski wizualizacyjne oraz inne dodatkowe opcje, aczkolwiek nie wiem czy lepiej zrobić to w postaci funkcji osobnych (Np SetBar1(5) ), czy zostawić tak jak jest i w razie potrzeby wysyłać odpowiednie bajty przez SPI.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 1 lis 2013, o 16:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-01T15:46:12+01:00</updated>
<published>2013-11-01T15:46:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55046#p55046</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55046#p55046"/>
<title type="html"><![CDATA[Re: VFD na PT6318 - podstawowa biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55046#p55046"><![CDATA[
WOW! co by tu dużo nie mówić - KAWAŁ dobrej roboty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... eeeh u mnie też czeka się i kurzy wiele takich wyświetlaczy na zagospodarowanie. Aż zazdroszczę, że miałeś teraz czas i możliwość się tym pobawić, wykorzystać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 lis 2013, o 15:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-11-01T15:29:11+01:00</updated>
<published>2013-11-01T15:29:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55044#p55044</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55044#p55044"/>
<title type="html"><![CDATA[VFD na PT6318 - podstawowa biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4645&amp;p=55044#p55044"><![CDATA[
Witam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Ostatnio zmagałem się z wyświetlaczem VFD i udało mi się do niego dotrzeć (a przeleżał jakieś 2 lata). Przedstawiam moją krótką bibliotekę do obsługi wyświetlacza na tym driverze. Biblioteka jest dostosowana do mojego wyświetlacza BJ883GNK, ale nie powinno być wielkiego problemu z przepisaniem na inny.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/431/3f5fc22474d04653da00db9eaaa0354d.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/3f5fc22474d04653da00db9eaaa0354d.jpg" alt="Obrazek" /></a><br /><br />Biblioteka obsługuje tylko WIELKIE LITERY, gdyż u mnie VFD ma sterowanie 13 segmentami, a nie 16 tak jak jest normalnie (u mnie są połączone niektóre segmenty).<br /><a href="http://forum.atnel.pl/_obrazki/o/431/ff113f35cbce41b739d18c645ea8db5c.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/ff113f35cbce41b739d18c645ea8db5c.jpg" alt="Obrazek" /></a><br /><br />Do wyznaczenia znaków użyłem programu napisanego na szybko w BCB 6 (coś na wzór narzędzia do 7segment LED w mkCalc:<br /><a href="http://forum.atnel.pl/_obrazki/o/431/59730ae95ea6e0a20d121b3d596fc6e4.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/59730ae95ea6e0a20d121b3d596fc6e4.JPG" alt="Obrazek" /></a><br /><br />A tak to się prezentuje podłączone do ATB <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><a href="http://forum.atnel.pl/_obrazki/o/431/2663ee5bbcc4211a4f91ecee93274932.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/2663ee5bbcc4211a4f91ecee93274932.jpg" alt="Obrazek" /></a><br /><br /><br />[syntax=c]/*<br /> * mavfd.h<br /> *<br /> *  Created on: 01-11-2013<br /> *      Author: Mikołaj Andrzejewski - mikandrzej<br /> */<br /><br />/*<br /> * Biblioteka obsługi wyswietlacza VFD na sterowniku PT6318<br /> * Ekran: BJ883GNK<br /> * Procedury dostosowane do tego wyswietlacza, polecam korzystac z notą w ręku<br /> */<br /><br />#ifndef MAVFD_H_<br />#define MAVFD_H_<br /><br />#define SDIN PC0<br />#define SCLK PC1<br />#define SSTB PC3<br />#define CMD_0 PORTC &amp;= ~(1&lt;&lt;SSTB)<br />#define CMD_1 PORTC |= (1&lt;&lt;SSTB)<br />#define SCK_0 PORTC &amp;= ~(1&lt;&lt;SCLK)<br />#define SCK_1 PORTC |= (1&lt;&lt;SCLK)<br />#define MOSI_0 PORTC &amp;= ~(1&lt;&lt;SDIN)<br />#define MOSI_1 PORTC |= (1&lt;&lt;SDIN)<br /><br /><br />void InitVFDSpi(void);//Inicjalizacja SPI<br />void InitVFD(void);//Inicjalizacja sterownika<br />void SendVFDSpi( uint8_t bajt );// Wysłanie bajtu do sterownika<br />void SendCharVFD( uint8_t znak );  //wysłanie znaku do wyswietlacza<br />void SendStringVFD(char *s);//Wysłanie c-stringu do wyswietlacza - UWAGA! Funkcja od razu ustawia pierwszy znak<br /><br /><br />#endif /* MAVFD_H_ */[/syntax]<br /><br /><br />[syntax=c]/*<br /> * mavfd.c<br /> *<br /> *  Created on: 01-11-2013<br /> *      Author: Mikołaj Andrzejewski - mikandrzej<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;mavfd.h&quot;<br /><br /><br />volatile const uint16_t znaki_tab&#91;&#93; PROGMEM = {<br />      0b0001110100110011,   // 0<br />      0b0000000100010010,   // 1<br />      0b0001100011000011,   // 2<br />      0b0001000101000011,   // 3<br />      0b0000000111100010,   // 4<br />      0b0001000111100001,   // 5<br />      0b0001100111100001,   // 6<br />      0b0000000100000011,   // 7<br />      0b0001100111100011,   // 8<br />      0b0001000111100011,   // 9<br />      0b0000000000001000,   // :<br />      0b0000010000001000,   // ;<br />      0b0000001010010000,   // &lt;<br />      0b0001000011000000,   // =<br />      0b0000010001000100,   // &gt;<br />      0b0000010001000011,   // ?<br />      0b0001100001110011,   // @<br />      0b0000100111100011,   // A<br />      0b0001010111000111,   // B<br />      0b0001100000100001,   // C<br />      0b0001000100001011,   // D<br />      0b0001100010100001,   // E<br />      0b0000100010100001,   // F<br />      0b0001100101100001,   // G<br />      0b0000100111100010,   // H<br />      0b0001000000001001,   // I<br />      0b0001100100000010,   // J<br />      0b0000101010110000,   // K<br />      0b0001100000100000,   // L<br />      0b0000100100110110,   // M<br />      0b0000101100100110,   // N<br />      0b0001100100100011,   // O<br />      0b0000100011100011,   // P<br />      0b0001101100100011,   // Q<br />      0b0000101011100011,   // R<br />      0b0001000111100001,   // S<br />      0b0000000000001001,   // T<br />      0b0001100100100010,   // U<br />      0b0000110000110000,   // V<br />      0b0000111100100010,   // W<br />      0b0000011000010100,   // X<br />      0b0000001011100010,   // Y<br />      0b0001010000010001,   // Z<br />};<br /><br /><br />void InitVFDSpi(void) { // Ustawienie kierunków portów dla SPI<br />DDRC |= (1&lt;&lt;SDIN)|(1&lt;&lt;SCLK)|(1&lt;&lt;SSTB);<br />}<br /><br /><br />void InitVFD(void) { //Inicjalizacja wywietlacza<br />CMD_1; //sterownik traktuje jako komendę każdy (tylko!) pierwszy bajt bo nrygnięciu linią STB<br />CMD_0;<br />SendVFDSpi(0b00001101); // Command1 - 14znaków, 14 segmentów<br />CMD_1;<br />CMD_0;<br />SendVFDSpi(0b01000000); // Command2 - Normal mode, Inkrementacja adresu po bajcie, obsługa wyswietlacza<br />CMD_1;<br />CMD_0;<br />SendVFDSpi(0b10001111); // Command4 - Display ON, PWM 14/16<br />}<br /><br />void SendVFDSpi( uint8_t bajt ) {  //wysyla bajt do sterownika<br />uint8_t licznik=0x01;<br /><br />SCK_0; //tyknięcie zegarem SPI<br />while( licznik ) { //odliczanie 8 bitów w pętli<br />if( bajt &amp; licznik ) MOSI_1; //iloczyn bitowy celem sprawdzenia wartoci bitu<br />else MOSI_0;<br />SCK_1;<br />SCK_0;<br />licznik&lt;&lt;=1; //przesunięcie licznika w lewo (celem maskowania odpowiedniego bitu)<br />}<br />}<br /><br /><br />void SendCharVFD( uint8_t znak )  //wysyła pojedynczy znak do wyswietlacza<br />{<br />if(znak==' ') //jezeli spacja, to zostaw znak zgaszony<br />{<br />SendVFDSpi(0); //Trzy puste bajty (każdy znak w wyswietlaczu ma swoje 3 bajty w RAM sterownika)<br />SendVFDSpi(0);<br />SendVFDSpi(0);<br />} else<br />{//jezeli znak, to wyswietl go<br />SendVFDSpi(pgm_read_byte(&amp;znaki_tab&#91;znak-'0'&#93;)); //pobranie z tablicy z definicjami znakow mlodszej czesci<br />SendVFDSpi(pgm_read_word(&amp;znaki_tab&#91;znak-'0'&#93;)&gt;&gt;8); //pobranie starszej czesci<br />SendVFDSpi(0); //wyslanie nieznaczacego bajtu<br />}<br />}<br /><br />void SendStringVFD(char *s)// wysyła c-string do wyswietlacza<br />{<br />CMD_1; //mrygniecie pinem STB<br />CMD_0;<br />SendVFDSpi(0b11001100);  //Powrót na początek ekranu wpisywania<br />  register char c;<br />  while ((c = *s++)) SendCharVFD(c);// dopóki nie napotkasz 0 wysyłaj znak<br />}[/syntax]<br /><br /><br />I przykładowa obsługa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />[syntax=c]/*<br /> * main.c<br /> * 2013-11-01<br /> * Mikołaj Andrzejewski - mikandrzej<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &quot;MAVFD_PT6318/mavfd.h&quot;<br /><br /><br />int main(void) {<br />InitVFDSpi();<br />InitVFD();<br />SendStringVFD(&quot;MIKANDRZEJ&quot;);<br /><br />return 0;<br />}[/syntax]<br /><br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 1 lis 2013, o 15:29</p><hr />
]]></content>
</entry>
</feed>