<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=6863&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-04-25T05:27:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6863&amp;mode</id>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-25T05:27:53+01:00</updated>
<published>2014-04-25T05:27:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79114#p79114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79114#p79114"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79114#p79114"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />Dobrze kombinujesz.<br />Można taką konwersję zrobić na wiele sposobów np. używając funkcji div.<br />Albo jeszcze prościej co podpowiedział mi kiedyś oczywiście Mirek <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> A co doceniłbyś np. przy konieczności konwersji liczby np 6 pozycyjnej. <br />Na razie zmontuj układ i zobacz jak działa, żeby nie wrzucać nadmiernie nowych tematów do tego zagadnienia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br />Ok, dzisiaj powinien już zapukać listonosz z brakującymi częściami i będę montował. Zobaczę jak działa.  Do tego momentu dużo mi pomogliście za co bardzo wam dziękuję <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=3947">DamCos</a> — 25 kwi 2014, o 05:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-24T19:42:34+01:00</updated>
<published>2014-04-24T19:42:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79087#p79087</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79087#p79087"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79087#p79087"><![CDATA[
Dobrze kombinujesz.<br />Można taką konwersję zrobić na wiele sposobów np. używając funkcji div.<br />Albo jeszcze prościej co podpowiedział mi kiedyś oczywiście Mirek <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> A co doceniłbyś np. przy konieczności konwersji liczby np 6 pozycyjnej. <br />Na razie zmontuj układ i zobacz jak działa, żeby nie wrzucać nadmiernie nowych tematów do tego zagadnienia <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=1589">sq8dsr</a> — 24 kwi 2014, o 19:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-24T18:59:42+01:00</updated>
<published>2014-04-24T18:59:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79080#p79080</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79080#p79080"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79080#p79080"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />Robisz tak:<br />Wspólne katody wyświetlaczy łączysz z masą (do GND bez rezystora, rezystory będą w obwodach segmentów)<br />Segmenty łączysz sobie z rejestrami, dla każdego disp oddzielnie:<br />QA -- rezystor -- segment A<br />QB -- rezystor -- Segment B<br />...<br />Dla każdego rejestru tak samo. Czyli mamy łącznie 24 połączenia przez 24 rezystory.<br /><br /><br />Tworzysz sobie tablice wzorów znaków (aktywny stan to stan WYSOKI)<br />[syntax=c]// tablica wzorów znaków<br /> uint8_t znak&#91;&#93; = {<br />0x3F,// 0<br />0x06,// 1<br />0x5B,// 2<br />0x4F,// 3<br />0x66,// 4<br />0x6D,// 5<br />0x7D,// 6<br />0x27,// 7<br />0x7F,// 8<br />0x6F,// 9<br />}[/syntax]<br /><br />Tworzysz tablicę zawartości pozycji:<br />[syntax=c]// tablica zawartości pozycji<br />uint8_t cy&#91;3&#93;; //3 elementy bo mamy 3 pozycje disp.<br /><br />//Tablicę te będziemy napełniać zawartością pozycji<br />// np. liczba 647<br />// cy&#91;2&#93; = 6;<br />// cy&#91;1&#93; = 4;<br />// cy&#91;0&#93; = 7;[/syntax]<br /><br />Robimy funkcję do wysyłania przez SPI. (oczywiście wcześniej inicjujemy moduł SPI)<br />[syntax=c]void led_disp(void) {<br /><br />SPDR = znak&#91;cy&#91;2&#93;&#93;;//wysłanie danych do trzeciego disp<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); //czekanie na zakończenie wysyłania<br /><br />SPDR = znak&#91;cy&#91;1&#93;&#93;;//wysłanie danych do drugiego disp<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); //czekanie na zakończenie wysyłania<br /><br />SPDR =znak&#91;cy&#91;0&#93;&#93;;//wysłanie danych do pierwszego disp<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); //czekanie na zakończenie wysyłania<br /><br />PORTB |= (1&lt;&lt;CS);// Zatrzaśnięcie latch'a<br />PORTB &amp;= ~(1&lt;&lt;CS);<br /><br />}[/syntax]<br /><br /><br />Czy rozumiesz ten przykład ?<br /></div><br /><br />Tak, rozumiem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />A jeśli chciałbym  wysłać int funkcją np. Void led_write(int liczba); to muszę rozłożyć liczbę trzycyfrową na liczbę setek, dzies i jedności dla każdego pojedynczego wysw i ja to se wykombinowalem tak:<br />[syntax=c]int setki, dzies, jedn;<br /><br />void led_write(int liczba){<br /><br />setki = liczba / 100;<br />dzies = (liczba / 10) - (setki *10);<br />jedn = liczba - ((liczba / 10) * 10);[/syntax]<br />Są ro liczby int wiec myślę,  że przecinki i ułamki zostaną zignorowane. <br /><br />A jeśli liczba będzie dwucyfrowa to:<br />[syntax=c]int setki, dzies, jedn;<br /><br />void led_write(int liczba){<br /><br />if(liczba &lt; 100) setki = 0;<br />else if(liczba &gt;= 100) setki = liczba / 100;<br />if(liczba &lt; 10) dzies = 0;<br />else if(liczba &gt;= 10) dzies = (liczba / 10) - (setki *10);<br />jedn = liczba - ((liczba / 10) * 10);[/syntax]<br />  Teoretycznie wszystko powinno działać, mógłby ktoś z was sprawdzić to i ocenić?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3947">DamCos</a> — 24 kwi 2014, o 18:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-24T15:32:25+01:00</updated>
<published>2014-04-24T15:32:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79064#p79064</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79064#p79064"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79064#p79064"><![CDATA[
Robisz tak:<br />Wspólne katody wyświetlaczy łączysz z masą (do GND bez rezystora, rezystory będą w obwodach segmentów)<br />Segmenty łączysz sobie z rejestrami, dla każdego disp oddzielnie:<br />QA -- rezystor -- segment A<br />QB -- rezystor -- Segment B<br />...<br />Dla każdego rejestru tak samo. Czyli mamy łącznie 24 połączenia przez 24 rezystory.<br /><br /><br />Tworzysz sobie tablice wzorów znaków (aktywny stan to stan WYSOKI)<br />[syntax=c]// tablica wzorów znaków<br /> uint8_t znak&#91;&#93; = {<br />0x3F,// 0<br />0x06,// 1<br />0x5B,// 2<br />0x4F,// 3<br />0x66,// 4<br />0x6D,// 5<br />0x7D,// 6<br />0x27,// 7<br />0x7F,// 8<br />0x6F,// 9<br />}[/syntax]<br /><br />Tworzysz tablicę zawartości pozycji:<br />[syntax=c]// tablica zawartości pozycji<br />uint8_t cy&#91;3&#93;; //3 elementy bo mamy 3 pozycje disp.<br /><br />//Tablicę te będziemy napełniać zawartością pozycji<br />// np. liczba 647<br />// cy&#91;2&#93; = 6;<br />// cy&#91;1&#93; = 4;<br />// cy&#91;0&#93; = 7;[/syntax]<br /><br />Robimy funkcję do wysyłania przez SPI. (oczywiście wcześniej inicjujemy moduł SPI)<br />[syntax=c]void led_disp(void) {<br /><br />SPDR = znak&#91;cy&#91;2&#93;&#93;;//wysłanie danych do trzeciego disp<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); //czekanie na zakończenie wysyłania<br /><br />SPDR = znak&#91;cy&#91;1&#93;&#93;;//wysłanie danych do drugiego disp<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); //czekanie na zakończenie wysyłania<br /><br />SPDR =znak&#91;cy&#91;0&#93;&#93;;//wysłanie danych do pierwszego disp<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); //czekanie na zakończenie wysyłania<br /><br />PORTB |= (1&lt;&lt;CS);// Zatrzaśnięcie latch'a<br />PORTB &amp;= ~(1&lt;&lt;CS);<br /><br />}[/syntax]<br /><br /><br />Czy rozumiesz ten przykład ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 24 kwi 2014, o 15:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-24T15:02:12+01:00</updated>
<published>2014-04-24T15:02:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79061#p79061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79061#p79061"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79061#p79061"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">DamCos napisał(a):</div><div class="quotecontent">Masz rację, dlatego ograniczam się tylko do 3 wyświetlaczy<br /></div><br /><br />Czyli rozumiem, że chcesz zrobić 3 pozycyjny (000 -&gt; 999) wyświetlacz NIEMULTIPLEKSOWANY.<br />Jeśli ma być bez multipleksowania to faktycznie 3 rejestry (jeden na każdą pozycję).<br /><br />Napisz jeszcze czy wyświetlacze są WA czy WK</div><br /><br />Wspólna katoda<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3947">DamCos</a> — 24 kwi 2014, o 15:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-24T14:28:37+01:00</updated>
<published>2014-04-24T14:28:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79058#p79058</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79058#p79058"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79058#p79058"><![CDATA[
<div class="quotetitle">DamCos napisał(a):</div><div class="quotecontent"><br />Masz rację, dlatego ograniczam się tylko do 3 wyświetlaczy<br /></div><br /><br />Czyli rozumiem, że chcesz zrobić 3 pozycyjny (000 -&gt; 999) wyświetlacz NIEMULTIPLEKSOWANY.<br />Jeśli ma być bez multipleksowania to faktycznie 3 rejestry (jeden na każdą pozycję).<br /><br />Napisz jeszcze czy wyświetlacze są WA czy WK<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 24 kwi 2014, o 14:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-24T14:24:22+01:00</updated>
<published>2014-04-24T14:24:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79056#p79056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79056#p79056"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79056#p79056"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">DamCos napisał(a):</div><div class="quotecontent">Tyle, że każda liczba musi byc niezależna, bo jeśli mogę na potrójny wyświetlacz wpisać max. 999 to nie będę pisał 999 kombinacji, tylko 10 dla kazdej cyfry.<br /></div><br /><br />A jak będziesz miał 8 pozycji wyświetlacza?<br />To dasz 8 rejestrów do każdego? <br />No pewnie, że można tak zrobić. Tylko, że to straszna komplikacja układu. A jak pozycji będzie jeszcze więcej...<br /><br />Wiesz co to multipleksowanie?<br />Na 2 sztukach 74595 możesz obsłużyć osiem wyświetlaczy 7 seg. Jeden rejestr dajesz na wspólne anody (osiem wyświetlaczy = osiem wyjść rejestru). Drugi dajesz na segmenty (8 segmentów A do H = 8 wyjść rejestru.)<br />Rejestry łączysz w kaskadę<br /><br />Najpierw wysyłasz kod znaku (cyfry). Trafia on do pierwszego rejestru (tego od wspólnych anod) i go zapełnia. NIE AKTYWUJESZ ZASTRZASKU. Tylko szybciutko wysyłasz drugi bajt (ten który zawiera informację o włączonej anodzie 1 z 8). Jako, że rejestry połączone są w kaskadę Pierwszy bajt, który jest już pierwszym rejestrze, zostaje przez następny bajt przesunięty do drugiego rejestru. Dzięki temu mamy sytuację o którą nam chodzi. W rejestrze pierwszym mamy informację, która wspólna anoda jest aktywna, a wzorzec cyfry mamy w drugim rejestrze (tym który steruje segmenty). Teraz nadszedł czas na &quot;kłapnięcie&quot; zatrzaskiem OBU rejestrów jednocześnie. Na wyjściach kostek pojawiają się oczekiwane przez nas stany logiczne. Wyświetlacz zostaje wysterowany.<br />Ale nie cały. Tylko jedna jego pozycja. Następnie operację powtarzamy dla kolejnej pozycji. Wysyłamy odpowiadający jej kod znaku (cyfry) i bajt zapalający kolejną anodę (jednocześnie gaszący tę która jest aktywna obecnie). Aktywujemy zatrzask i na kolejnej pozycji pojawia się kolejna cyfra. Powtarzamy te operację tyle razy ile mamy pozycji wyświetlacza. Po osiągnięciu ostatniej pozycji wracamy na pierwszą. I tak w kółko.<br />Oczywiście pełny cykl mus być wykonany przynajmniej 25 razy na sekundę. Wtedy, dzięki bezwładności oka, zobaczymy palącą się na odpowiedniej pozycji odpowiednią cyfrę.<br /><br />W Blue booku masz dokładnie opisany mechanizm multipleksowania. Co prawda bez rejestrów przesuwnych, ale to w sumie tylko drobne ulepszenie. Prześledź ten mechanizm, bo poza obsługą SPI, jest to dokładnie do samo.</div><br />Masz rację,  dlatego ograniczam się tylko do 3 wyświetlaczy <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Spoko, bbulebooka mam, wciąż sie uczę <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=3947">DamCos</a> — 24 kwi 2014, o 14:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-24T14:03:56+01:00</updated>
<published>2014-04-24T14:03:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79050#p79050</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79050#p79050"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79050#p79050"><![CDATA[
<div class="quotetitle">DamCos napisał(a):</div><div class="quotecontent"><br />Tyle, że każda liczba musi byc niezależna, bo jeśli mogę na potrójny wyświetlacz wpisać max. 999 to nie będę pisał 999 kombinacji, tylko 10 dla kazdej cyfry.<br /></div><br /><br />A jak będziesz miał 8 pozycji wyświetlacza?<br />To dasz 8 rejestrów do każdego? <br />No pewnie, że można tak zrobić. Tylko, że to straszna komplikacja układu. A jak pozycji będzie jeszcze więcej...<br /><br />Wiesz co to multipleksowanie?<br />Na 2 sztukach 74595 możesz obsłużyć osiem wyświetlaczy 7 seg. Jeden rejestr dajesz na wspólne anody (osiem wyświetlaczy = osiem wyjść rejestru). Drugi dajesz na segmenty (8 segmentów A do H = 8 wyjść rejestru.)<br />Rejestry łączysz w kaskadę<br /><br />Najpierw wysyłasz kod znaku (cyfry). Trafia on do pierwszego rejestru (tego od wspólnych anod) i go zapełnia. NIE AKTYWUJESZ ZASTRZASKU. Tylko szybciutko wysyłasz drugi bajt (ten który zawiera informację o włączonej anodzie 1 z 8). Jako, że rejestry połączone są w kaskadę Pierwszy bajt, który jest już pierwszym rejestrze, zostaje przez następny bajt przesunięty do drugiego rejestru. Dzięki temu mamy sytuację o którą nam chodzi. W rejestrze pierwszym mamy informację, która wspólna anoda jest aktywna, a wzorzec cyfry mamy w drugim rejestrze (tym który steruje segmenty). Teraz nadszedł czas na &quot;kłapnięcie&quot; zatrzaskiem OBU rejestrów jednocześnie. Na wyjściach kostek pojawiają się oczekiwane przez nas stany logiczne. Wyświetlacz zostaje wysterowany.<br />Ale nie cały. Tylko jedna jego pozycja. Następnie operację powtarzamy dla kolejnej pozycji. Wysyłamy odpowiadający jej kod znaku (cyfry) i bajt zapalający kolejną anodę (jednocześnie gaszący tę która jest aktywna obecnie). Aktywujemy zatrzask i na kolejnej pozycji pojawia się kolejna cyfra. Powtarzamy te operację tyle razy ile mamy pozycji wyświetlacza. Po osiągnięciu ostatniej pozycji wracamy na pierwszą. I tak w kółko.<br />Oczywiście pełny cykl mus być wykonany przynajmniej 25 razy na sekundę. Wtedy, dzięki bezwładności oka, zobaczymy palącą się na odpowiedniej pozycji odpowiednią cyfrę.<br /><br />W Blue booku masz dokładnie opisany mechanizm multipleksowania. Co prawda bez rejestrów przesuwnych, ale to w sumie tylko drobne ulepszenie. Prześledź ten mechanizm, bo poza obsługą SPI, jest to dokładnie do samo.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 24 kwi 2014, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-24T08:59:58+01:00</updated>
<published>2014-04-24T08:59:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79033#p79033</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79033#p79033"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79033#p79033"><![CDATA[
<div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Jak masz 3 układy 595 połączone szeregowo to rozwijasz to w taki sam sposób jak z SPI_Send_8 powstało SPI_Send_16. 0x6D077F to kolejne wysłanie (uint8_t)0x006D077F = 0x7F potem (uint8_t)(0x006D077F&gt;&gt;8) = (uint8_t)0x00006D07 = 0x07 i (uint8_t)(0x006D077F&gt;&gt;16) = (uint8_t)0x0000006D = 0x6D. Jak temat liczb nie jest do końca jasny to zajrzyj do poradników Mirka np. <!-- m --><a class="postlink" href="http://www.mirekk36.blogspot.com/2014/03/liczby-szesnastkowe-hexadecymalne.html" >http://www.mirekk36.blogspot.com/2014/0 ... malne.html</a><!-- m --><br /><br />[syntax=c]void SPI_Send_24(uint32_t data24){<br /> <br />        /* data:<br />         * są to 3 bajty wysyłane poprzez SPI<br />         * zapisujemy je w dowolny sposób: dziesiętnie, binarnie, lub szesnastkowo<br />         */<br /> <br />        SPDR = data24;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /> <br />        SPDR = data24&gt;&gt;8;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /><br />        SPDR = data24&gt;&gt;16;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /> <br />        PORT |= (1&lt;&lt;LT);<br />        PORT &amp;= ~(1&lt;&lt;LT);<br />}[/syntax]<br /></div><br /><br /><br />Ok, popróbuje wszystkich podanych sposobów i zobaczę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3947">DamCos</a> — 24 kwi 2014, o 08:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-04-24T08:24:54+01:00</updated>
<published>2014-04-24T08:24:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79030#p79030</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79030#p79030"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79030#p79030"><![CDATA[
Jak masz 3 układy 595 połączone szeregowo to rozwijasz to w taki sam sposób jak z SPI_Send_8 powstało SPI_Send_16. 0x6D077F to kolejne wysłanie (uint8_t)0x006D077F = 0x7F potem (uint8_t)(0x006D077F&gt;&gt;8) = (uint8_t)0x00006D07 = 0x07 i (uint8_t)(0x006D077F&gt;&gt;16) = (uint8_t)0x0000006D = 0x6D. Jak temat liczb nie jest do końca jasny to zajrzyj do poradników Mirka np. <!-- m --><a class="postlink" href="http://www.mirekk36.blogspot.com/2014/03/liczby-szesnastkowe-hexadecymalne.html" >http://www.mirekk36.blogspot.com/2014/0 ... malne.html</a><!-- m --><br /><br />[syntax=c]void SPI_Send_24(uint32_t data24){<br /> <br />        /* data:<br />         * są to 3 bajty wysyłane poprzez SPI<br />         * zapisujemy je w dowolny sposób: dziesiętnie, binarnie, lub szesnastkowo<br />         */<br /> <br />        SPDR = data24;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /> <br />        SPDR = data24&gt;&gt;8;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /><br />        SPDR = data24&gt;&gt;16;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /> <br />        PORT |= (1&lt;&lt;LT);<br />        PORT &amp;= ~(1&lt;&lt;LT);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 24 kwi 2014, o 08:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-24T07:17:29+01:00</updated>
<published>2014-04-24T07:17:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79023#p79023</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79023#p79023"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=79023#p79023"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />Nie wiem jaki wyświetlacz. Ale ja to robię tak:<br />Wysyłam dwa bajty:<br />1: wzorzec bitowy dla cyfry na wyświetlaczu (to jest jeden bajt)<br />2. wzorzec bitowy dla zapalenia odpowiedniej anody (też jeden bajt)<br />Wyświetlacz jest 7seg przy ośmiu pozycjach.<br /></div><br />Chodzi mi o wyświetlacz 7 segementowy. Ósma jest kropka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /> Jeśli mam podłączone segmenty wyswietlacza od A do H razem z wyjsciami rejesteu od Qa do Qh więc przesyłanym bajtem będzie kombinacja zapalania anod wyświetlacza.  Tyle, że każda liczba musi byc niezależna,  bo jeśli mogę na potrójny wyświetlacz wpisać max. 999 to nie będę pisał 999 kombinacji, tylko 10 dla kazdej cyfry. <br />A druga sprawa to to, że nawet jak skleję te liczby hex np. Do postaci 6D077F (na wyświetlaczu pojawi się 578) to przecież muszę wysłać SPI_Send_8(0x6D077F). Więc jak dołożyć prefix &quot;0x&quot;<br /> Czy w jakiejś bibliotece typu stdlib.h jest narzędzie do konwersji systemów liczbowych?<br /><br />+mirekk36<br />Czyli mogę wysłać 0x00007F, potem 0x0007 a potem 0x6D?<br /><br />Jestem początkujący i jeszcze ten temat nie jest do końca jasny.<br /><br />Pozdrawiam <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=3947">DamCos</a> — 24 kwi 2014, o 07:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-23T20:39:02+01:00</updated>
<published>2014-04-23T20:39:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78991#p78991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78991#p78991"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78991#p78991"><![CDATA[
Nie wiem jaki wyświetlacz. Ale ja to robię tak:<br />Wysyłam dwa bajty:<br />1: wzorzec bitowy dla cyfry na wyświetlaczu (to jest jeden bajt)<br />2. wzorzec bitowy dla zapalenia odpowiedniej anody (też jeden bajt)<br />Wyświetlacz jest 7seg przy ośmiu pozycjach.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 23 kwi 2014, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-04-23T20:28:48+01:00</updated>
<published>2014-04-23T20:28:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78986#p78986</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78986#p78986"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78986#p78986"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A wie ktoś może jak zlepić ze sobą trzy wartości hex w jedną i wysłać jako argumeng funkcji SPI_Send_8()?<br /></div><br /><br />Panowie, ale co za problem trzy razy wywołać tę funkcję z kolejnym argumentem ? wtedy nie ważne czy chcesz wysłać 3, 4 czy może i 27 bajtów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 kwi 2014, o 20:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-04-23T20:26:18+01:00</updated>
<published>2014-04-23T20:26:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78984#p78984</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78984#p78984"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78984#p78984"><![CDATA[
<div class="quotetitle">DamCos napisał(a):</div><div class="quotecontent"><br />A wie ktoś może jak zlepić ze sobą trzy wartości hex w jedną<br /></div><br />Ja bym to zrobił za pomocą struktury i unii w ten sposób<br />[syntax=c]typedef union<br />{<br />uint8_t tab&#91;3&#93;;<br />struct<br />{<br />uint8_t setki;<br />uint8_t dzies;<br />uint8_t jedn;<br />};<br /><br />}TCYFRY;<br /><br />TCYFRY cyfry;[/syntax]<br /><br />Działa to w ten sposób, że tablica tab[3] i zmienne setki, dzies i jedn nakładają się na siebie. Jeśli do tych zmiennych wpiszesz jakieś wartości to te same wartości będą miały poszczególne komórki tablicy. <br />Teraz tylko wystarczy do zmiennych przypisywać wartości, jakie maja się wyświetlać na wyświetlaczu a do rejestrów przesuwnych wysyłać po kolei zawartość tablicy.<br /><br />Zmienne i tablica będą się nakładać w ten sposób:<br />tab[0] == setki<br />tab[1] == dzies<br />tab[2] == jedn<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 23 kwi 2014, o 20:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-23T19:02:47+01:00</updated>
<published>2014-04-23T19:02:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78965#p78965</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78965#p78965"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78965#p78965"><![CDATA[
<div class="quotetitle">matrix napisał(a):</div><div class="quotecontent"><br />No coś4 Ty. To jest rejestr przesuwny. Wsuwanie danych przepycha te co już w nim są. A bynajmniej ja to tak rozumuję.<br /></div><br />A wie ktoś może jak zlepić ze sobą trzy wartości hex w jedną i wysłać jako argumeng funkcji SPI_Send_8()?<br />Np<br />[syntax=c]uint8_t setki = 0x56, dzies = 0x6D, jedn = 0x6F;<br /><br />//i żeby wysłać<br /><br />SPI_Send_8(0x566D6F)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3947">DamCos</a> — 23 kwi 2014, o 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-04-23T18:55:24+01:00</updated>
<published>2014-04-23T18:55:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78963#p78963</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78963#p78963"/>
<title type="html"><![CDATA[Re: [C][74HC595] Wrzucanie do rejestru bez zmiany poprzednie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78963#p78963"><![CDATA[
No coś Ty. To jest rejestr przesuwny. Wsuwanie danych przepycha te co już w nim są. A bynajmniej ja to tak rozumuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 23 kwi 2014, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DamCos]]></name></author>
<updated>2014-04-23T18:38:59+01:00</updated>
<published>2014-04-23T18:38:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78960#p78960</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78960#p78960"/>
<title type="html"><![CDATA[[C][74HC595] Wrzucanie do rejestru bez zmiany poprzedniego.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6863&amp;p=78960#p78960"><![CDATA[
Witam,<br /><br />Czy istnieje możliwość, aby przesłać jeden bajt do rejestru przesuwnego, a potem przesłać drugi bajt bez zaczepiania tego, co było w pierwszym rejestrze. Mianowicie chodzi mi o podłączenie wyświetlacza 7 segmentowego poprzez właśnie tej układ (74HC595), a mój problem polega na tym, że nie mogę skleić dwóch wartości heksadecymalnych dla setek i dziesiątek do jednego przesyłu danych.<br />Czyli chodzi o to, żeby najpierw przesłać setki, potem dziesiątki nie zmieniając ilości setek itd.<br />oto kawałek kodu odpowiedzialnego za transmisję SPI:<br />[syntax=c]void SPI_Send_8(uint8_t data8){<br /><br />/* data:<br /> * jest to bajt wysyłany poprzez SPI<br /> * zapisujemy go w dowolny sposób: dziesiętnie, binarnie, lub szesnastkowo<br /> * np: liczba dziesiętna 53<br /> * binarnie: 0b110101<br /> * szesnastkowo: 0x35<br /> */<br /><br />SPDR = data8;<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /><br />PORT |= (1&lt;&lt;LT);<br />PORT &amp;= ~(1&lt;&lt;LT);<br />}<br /><br /><br />void SPI_Send_16(uint16_t data16){<br /><br />/* data:<br /> * są to 2 bajty wysyłane poprzez SPI<br /> * zapisujemy je w dowolny sposób: dziesiętnie, binarnie, lub szesnastkowo<br /> * np: liczba dziesiętna 53 oraz 25<br /> * binarnie: 0b0011010100011001<br /> * szesnastkowo: 0x3519<br /> */<br /><br />SPDR = data16;<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /><br />SPDR = data16&gt;&gt;8;<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br /><br />PORT |= (1&lt;&lt;LT);<br />PORT &amp;= ~(1&lt;&lt;LT);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3947">DamCos</a> — 23 kwi 2014, o 18:38</p><hr />
]]></content>
</entry>
</feed>