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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-30T20:36:50+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11839&amp;mode</id>
<entry>
<author><name><![CDATA[Lexander]]></name></author>
<updated>2015-05-30T20:36:50+01:00</updated>
<published>2015-05-30T20:36:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130436#p130436</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130436#p130436"/>
<title type="html"><![CDATA[Re: Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130436#p130436"><![CDATA[
@up<br />Przecież takie jest założenie, jedynek ma być tyle, ile jest kropek. Jeżeli dana wejściowa do funkcji ma 3 kropki, to przy tych 8 przebiegach pętli powinna ona trzykrotnie inkrementować zmienną. Problem w tym, że dla jednej kropki jedynek jest 6.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10045">Lexander</a> — 30 maja 2015, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-05-30T08:11:17+01:00</updated>
<published>2015-05-30T08:11:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130380#p130380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130380#p130380"/>
<title type="html"><![CDATA[Re: Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130380#p130380"><![CDATA[
Nic dziwnego w tym nie ma, że w zmiennej dot pojawiają się dodatkowe jedynki. W funkcji showNum(int8_t liczba[8]), w pętli for następuje wielokrotne przesunięcie jedynki w zmiennej dot. Jednak dodatkowo po wybraniu &quot;kropki&quot; - wartość case 46 w instrukcji switch - zwiększasz dot o 1 (dot++). Zatem pojawiają sie dodatkowe jedynki w zależności od ilości kropek i pozycji na której występują, które też są przesuwane w następnych obiegach pętli for.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 30 maja 2015, o 08:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-05-30T07:54:06+01:00</updated>
<published>2015-05-30T07:54:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130379#p130379</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130379#p130379"/>
<title type="html"><![CDATA[Re: Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130379#p130379"><![CDATA[
<div class="quotetitle">Lexander napisał(a):</div><div class="quotecontent"><br />Ten krok już wykonałem, wciąż nie rozumiem dziwnego zachowania tego bitu, mógłby ktoś przeanalizować ten kod ze mną?<br /></div><br />Kto lubi cofać się ? A jednak trzeba wrócić się do konfiguracji sprzętu  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />[syntax=c]int8_t digit&#91;&#93; =<br />{       //numbers Piny a-g wyświetlacza podłączone są odpowiednio do portu PB0-PB7<br />0b10000001, //zero - masz g,f,e,d,c,b,a,DP - ma byc DP,g,f,e,d,c,b,a<br />// Coś tam, coś tam<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 30 maja 2015, o 07:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lexander]]></name></author>
<updated>2015-05-29T21:44:54+01:00</updated>
<published>2015-05-29T21:44:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130367#p130367</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130367#p130367"/>
<title type="html"><![CDATA[Re: Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130367#p130367"><![CDATA[
Ten krok już wykonałem, wciąż nie rozumiem dziwnego zachowania tego bitu, mógłby ktoś przeanalizować ten kod ze mną? Konkretnie funkcja showNum do case 46.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10045">Lexander</a> — 29 maja 2015, o 21:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jerrylu]]></name></author>
<updated>2015-05-29T16:32:46+01:00</updated>
<published>2015-05-29T16:32:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130357#p130357</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130357#p130357"/>
<title type="html"><![CDATA[Re: Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130357#p130357"><![CDATA[
Wklej proszę kod poprawnie, bo teraz, to jakaś masakra wyszła <br />i komu będzie się chciało to odszyfrowywać...<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 31 minutach ]</span></strong><br /><br />Przede wszystkim zmień deklaracje, tak, jak napisał Ci Janusz17.<br />int8_t i int na uint8_t<br />Wystarczy Ci zakres 0-255.<br />Dopiero dalej szukaj.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8719">jerrylu</a> — 29 maja 2015, o 16:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lexander]]></name></author>
<updated>2015-05-29T15:12:20+01:00</updated>
<published>2015-05-29T15:12:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130354#p130354</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130354#p130354"/>
<title type="html"><![CDATA[Re: Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130354#p130354"><![CDATA[
@janusz<br />ciekawe, nie wiedziałem tego wcześniej<br /><br />Niemniej jednak u mnie bity są przesuwane w lewo, a jedynek jest zdecydowany nadmiar<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10045">Lexander</a> — 29 maja 2015, o 15:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-05-29T10:16:30+01:00</updated>
<published>2015-05-29T10:16:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130346#p130346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130346#p130346"/>
<title type="html"><![CDATA[Re: Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130346#p130346"><![CDATA[
Chwilowo nie widać kodu, ale z opisu problemu wynika, że tą zmienną przechowującą dane gdzie mają być wyswietlane kropki - masz zapewne zadeklarowaną jako typ ze znakiem (pewnie int8_t). W przypadku przesuwania bitowego w prawo liczby ze znakiem, w wolne miejsca będzie wpisywana taka wartość jak była w najstarszym bicie przesuwanej zmiennej. Czyli np.:[syntax=c]int8_t zmienna = 0b10001111;<br />// po przesunięciu w prawo o 3 bity będzie następująca:<br />zmienna = (zmienna &gt;&gt; 3);<br />zmienna == 0b11110001;<br /><br />// natomiast:<br />uint8_t zmienna = 0b10001111;<br />// po przesunięciu w prawo o 3 bity da taki wynik:<br />zmienna = (zmienna &gt;&gt; 3);<br />zmienna == 0b00010001;[/syntax]<br /><br />Przy przesuwaniu w lewo nie ma znaczenia czy zmienna jest int czy uint - zawsze uzupełniana jest zerami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 29 maja 2015, o 10:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lexander]]></name></author>
<updated>2015-05-29T16:35:02+01:00</updated>
<published>2015-05-28T21:38:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130318#p130318</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130318#p130318"/>
<title type="html"><![CDATA[Problem z kropką w 4-cyfrowym wyświetlaczu 7-segmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11839&amp;p=130318#p130318"><![CDATA[
witajcie, jestem początkujący w C i postanowiłem napisać program, który wyświetli na 4-cyfrowym segmentowym wyświetlaczu informację z 8-elementowej tablicy. W tej tablicy mogą być cyfry, niektóre litery i niektóre znaki specjalne, w tym kropka. Mimo czterech pól wyświetlacza zdecydowałem się zastosować tablicę 8 (a nie 4) elementów, gdyż zakładam, że można do niej wrzucić tekst: &quot;A.C.E.F.&quot;, który by wyświetlił podane litery, oraz zapalił wszystkie kropki między nimi. Cyfry, litery i znaki wyświetlają się prawidłowo. Problem mam z kropką, na którą przeznaczyłem oddzielną zmienną. Moją intencją jest utworzenie takiej zmiennej dot (tak ją nazwałem), żeby po wprowadzeniu np. &quot;0.uP.A&quot; miała wartość 0b00001010, co powinno oznaczać, że w drugiej i czwartej cyfrze od prawej na wyświetlaczu powinna się świecić kropka. Funkcja analizująca zmienną i wyświetlająca kropki we właściwych miejscach na podstawie zmiennej dot działa prawidłowo, jednak sama zmienna przyjmuje dziwne wartości, na przykład dla &quot;A.&quot; zmienna ma wartość 0b11111100. Bity w zmiennej są wielokrotnie przesuwane, ale w puste miejsca powinny wskakiwać zera, nie wiem dlaczego w tej zmiennej jest tyle jedynek, skoro powinna pojawić się jedna. Proszę o pomoc.<br /><br />Piny a-g wyświetlacza podłączone są odpowiednio do portu PB0-PB7<br />Piny A1-A4 są podłączone przez tranzystory odpowiednio do portu PC0-PC4<br /><br />KOD:<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 />int8_t fourDigit&#91;4&#93;;<br />int8_t dot;<br /><br />int8_t digit&#91;&#93; =<br />{//numbers<br />0b10000001, //zero<br />0b11110011, //one<br />0b01001001, //two<br />0b01100001, //three<br />0b00110011, //four<br />0b00100101, //five<br />0b00000101, //six<br />0b10110001, //seven<br />0b00000001, //eight<br />0b00100001, //nine<br />//signs<br />0b11111111, //empty &#91;10&#93;<br />0b11111110, //dot &#91;11&#93;<br />0b01111111, //minus &#91;12&#93;<br />0b00111001, //* as a degree sign &#91;13&#93;<br />//letters<br />0b00010001, //A &#91;14&#93;<br />0b10001101, //C &#91;15&#93;<br />0b00001101, //E &#91;16&#93;<br />0b00011101, //F &#91;17&#93;<br />0b10000101, //G &#91;18&#93;<br />0b00010011, //H &#91;19&#93;<br />0b11000011, //J &#91;20&#93;<br />0b10001111, //L &#91;21&#93;<br />0b00011001, //P &#91;22&#93;<br />0b10000011, //U &#91;23&#93;<br />0b00000111, //b &#91;24&#93;<br />0b01001111, //c &#91;25&#93;<br />0b01000011, //d &#91;26&#93;<br />0b00001001, //e &#91;27&#93;<br />0b00010111, //h &#91;28&#93;<br />0b10011111, //l &#91;29&#93;<br />0b01010111, //n &#91;30&#93;<br />0b01000111, //o &#91;31&#93;<br />0b00110001, //q &#91;32&#93;<br />0b01011111, //r &#91;33&#93;<br />0b11000111, //u &#91;34&#93;<br />0b00100011, //y &#91;35&#93;<br /><br />//signs again<br />0b01101101, //error sign &#91;36&#93;<br />};<br /><br />void showNum(int8_t liczba&#91;8&#93;)<br />{<br />int8_t dgn=0; //digit number<br />dot=0;<br />for(int i=0; i&lt;8; i++)<br />{<br />dot&lt;&lt;=1;<br />switch (liczba&#91;i&#93;)<br />{<br />case 0: //null<br />fourDigit&#91;dgn&#93;=digit&#91;10&#93;;<br />break;<br />case 32: //spacebar<br />fourDigit&#91;dgn&#93;=digit&#91;10&#93;;<br />break;<br />case 42: //* as a degree sign<br />fourDigit&#91;dgn&#93;=digit&#91;13&#93;;<br />break;<br />case 45: //minus<br />fourDigit&#91;dgn&#93;=digit&#91;12&#93;;<br />break;<br />case 46: //dot<br />dot++;<br />break;<br />case 65: //A<br />fourDigit&#91;dgn&#93;=digit&#91;14&#93;;<br />break;<br />case 67: //C<br />fourDigit&#91;dgn&#93;=digit&#91;15&#93;;<br />break;<br />case 69: //E<br />fourDigit&#91;dgn&#93;=digit&#91;16&#93;;<br />break;<br />case 70: //F<br />fourDigit&#91;dgn&#93;=digit&#91;17&#93;;<br />break;<br />case 71: //G<br />fourDigit&#91;dgn&#93;=digit&#91;18&#93;;<br />break;<br />case 72: //H<br />fourDigit&#91;dgn&#93;=digit&#91;19&#93;;<br />break;<br />case 74: //J<br />fourDigit&#91;dgn&#93;=digit&#91;20&#93;;<br />break;<br />case 76: //L<br />fourDigit&#91;dgn&#93;=digit&#91;21&#93;;<br />break;<br />case 80: //P<br />fourDigit&#91;dgn&#93;=digit&#91;22&#93;;<br />break;<br />case 85: //U<br />fourDigit&#91;dgn&#93;=digit&#91;23&#93;;<br />break;<br />case 98: //b<br />fourDigit&#91;dgn&#93;=digit&#91;24&#93;;<br />break;<br />case 99: //c<br />fourDigit&#91;dgn&#93;=digit&#91;25&#93;;<br />break;<br />case 100: //d<br />fourDigit&#91;dgn&#93;=digit&#91;26&#93;;<br />break;<br />case 101: //e<br />fourDigit&#91;dgn&#93;=digit&#91;27&#93;;<br />break;<br />case 104: //h<br />fourDigit&#91;dgn&#93;=digit&#91;28&#93;;<br />break;<br />case 108: //l<br />fourDigit&#91;dgn&#93;=digit&#91;29&#93;;<br />break;<br />case 110: //n<br />fourDigit&#91;dgn&#93;=digit&#91;30&#93;;<br />break;<br />case 111: //o<br />fourDigit&#91;dgn&#93;=digit&#91;31&#93;;<br />break;<br />case 113: //q<br />fourDigit&#91;dgn&#93;=digit&#91;32&#93;;<br />break;<br />case 114: //r<br />fourDigit&#91;dgn&#93;=digit&#91;33&#93;;<br />break;<br />case 117: //u<br />fourDigit&#91;dgn&#93;=digit&#91;34&#93;;<br />break;<br />case 121: //y<br />fourDigit&#91;dgn&#93;=digit&#91;35&#93;;<br />break;<br /><br />default:<br />fourDigit&#91;dgn&#93;=digit&#91;36&#93;;<br />}<br /><br /><br />if ((liczba&#91;i&#93;&gt;=48) &amp;&amp; (liczba&#91;i&#93;&lt;=57))<br />{<br /><br />fourDigit&#91;dgn&#93;=digit&#91;liczba&#91;i&#93;-48&#93;;<br /><br />}<br /><br />if (liczba&#91;i&#93; !=46)<br />{<br />dgn++; //avoiding moving to the next digit while meeting dot<br />}<br />}<br />}<br /><br /><br />int main()<br />{<br /><br />DDRB =0xFF;<br />DDRC =0xFF;<br />PORTB=0xFF;<br /><br />//dostepne znaki:  -*Ab CcdE eFGH hJLl noPq rUuy<br /><br />PORTC=1;<br /><br />char tekst&#91;8&#93;=&quot;A.&quot;;<br />showNum(tekst);<br /><br />while (1)<br />{<br />PORTC=1;<br />for (int i=0; i&lt;4; i++)<br />{<br />PORTB = fourDigit&#91;i&#93;;<br /><br />if (!(dot &amp; (1 &lt;&lt; i))) PORTB--;<br /><br />_delay_ms(1);<br />PORTC&lt;&lt;=1;<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10045">Lexander</a> — 28 maja 2015, o 21:38</p><hr />
]]></content>
</entry>
</feed>