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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-05-15T13:49:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1092&amp;mode</id>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-05-15T13:49:19+01:00</updated>
<published>2012-05-15T13:49:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6716#p6716</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6716#p6716"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6716#p6716"><![CDATA[
Kwestia dobrania odpowiednich rezystorów, sam ostatnio z tym walczyłem projektując JumboLEDa, na wyświetlaczach 120mm, gdzie jeden segment jest złożony z bodajże 4-5ledów. Multiplexerowanie a świeci aż oczy bolą <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 15 maja 2012, o 13:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-14T21:42:03+01:00</updated>
<published>2012-05-14T21:42:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6710#p6710</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6710#p6710"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6710#p6710"><![CDATA[
wiesz kolego , ja tez potrafię namotać strasznie wiec się nie martw.<br />Nie musisz więc przepraszać , po prostu im precyzyjniej zadasz pytanie tym precyzyjniejszą dostaniesz odpowiedź <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=58">SunRiver</a> — 14 maja 2012, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2012-05-14T21:31:48+01:00</updated>
<published>2012-05-14T21:31:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6708#p6708</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6708#p6708"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6708#p6708"><![CDATA[
Sam program w miarę szybko napisałem - dwie, trzy próby i chodzi, oprócz tego minusa. Chciałem coś zrobić od zera, może za szybko? - nie ważne. Chodziło mi o straty na impulsie, w końcu musi on być podzielony na tyle, ile jest cyfr, dobrze mówię? Dobra, napisze czytelniej program, zrobię schemat i dam znać wkrótce. Tymczasem przepraszam Panów za kłopot <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />A śmieją się ze mnie że moje pismo odręczne tylko ja jestem w stanie rozczytać - cóż chyba nie tylko pismo... <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=381">mesho</a> — 14 maja 2012, o 21:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-05-14T21:12:39+01:00</updated>
<published>2012-05-14T21:12:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6703#p6703</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6703#p6703"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6703#p6703"><![CDATA[
SunRiver ma rację kolego - zdecydowanie lepiej zrobić to poprzez multipleksowanie ale z buforowaniem za pomocą np tranzystorów itp...<br /><br />Ok - no statycznie też można - ale fakt, że w tym celu musiałeś totalnie zmienić program .... w porównaniu tego do książki - tyle że sam widzisz - ty się orientujesz ale osoba postronna już nie za bardzo <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> - tym bardziej że schematu nie ma ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 maja 2012, o 21:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-14T20:57:06+01:00</updated>
<published>2012-05-14T20:57:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6697#p6697</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6697#p6697"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6697#p6697"><![CDATA[
no ale po co ....   przecież wystarczy podawać przez tranzystory + na wyświetlacze , a segmenty zapalać masą z pinów, na rany koguta <br />czemu tak sobie komplikujesz życie ,  zgaduję że tu poknociłeś bo schematu niema, multiplex zawsze dobrze działa i to nawet z 8 wyświetlaczami <br />że o matrycach 8x8 nie wspomnę  i niema kłopotów ze świeceniem i wyświetlaniem czegokolwiek -- więc bez urazy <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=58">SunRiver</a> — 14 maja 2012, o 20:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2012-05-14T20:51:09+01:00</updated>
<published>2012-05-14T20:51:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6692#p6692</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6692#p6692"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6692#p6692"><![CDATA[
Co to to nie... Nie będą świecić jak te co są podłączone na stałe. Znam wytrzymałość prądową megi. Każdy segment zapalam jednym tranzystorem npn, plus jest podłączony na stałe. Dużo tranzystorów, ale myślę że warto.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 14 maja 2012, o 20:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-14T20:48:23+01:00</updated>
<published>2012-05-14T20:48:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6691#p6691</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6691#p6691"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6691#p6691"><![CDATA[
kolego ... a czy pomyślałeś z czego wynika różnica świecenia ??<br /><br />na pewno nie z multipleksowania a ze sposobu w jaki zapewne podłączyłeś wyświetlacze ....  bo pewnie sterujesz je bezpośrednio z procka <br />a ten biedaczek ma twoim zdaniem wyrobić prądowo z zasilaniem 2ch wyświetlaczy ?? <br /><br />a wystarczą 3 tranzystorki i nagle wyświetlacze świeca jak trzeba i to wszystkie <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=58">SunRiver</a> — 14 maja 2012, o 20:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2012-05-14T20:42:51+01:00</updated>
<published>2012-05-14T20:42:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6689#p6689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6689#p6689"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6689#p6689"><![CDATA[
Minus oddzielnie z tego względu że mam dwie pełne cyfry i jedną samą kreskę. Wygaszanie nie wiem do końca jak wykonać bo nie pomieściłem wszystkich segmentów cyfry jedności na jednym porcie. Fakt kod jest pomieszany, ale orientuje się w nim jakoś.<br /><br />Wstępnie wyświetlacz miał być multipleksowany, ale różnica w świeceniu była widoczna, więc zrezygnowałem z tej opcji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 14 maja 2012, o 20:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-05-14T20:14:42+01:00</updated>
<published>2012-05-14T20:14:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6686#p6686</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6686#p6686"/>
<title type="html"><![CDATA[Re: Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6686#p6686"><![CDATA[
Normalnie nie wiem w ogóle o co chodzi w tym kodzie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> po co to całe gaszenie ???? toż wystarczy wpisać kod pustego znaku - kolega strasznie to przekombinował tzn nie do końca zrozumiał ćwiczenie z multipleksowania wyświetlaczy LED.<br /><br />wystarczy sobie zdefiniować pod np kodem 10 pusty znak czyli wszystkie segmenty wygaszone - przecież nawet jest to w przykładzie w książce ..... a tu kolega robi jakieś kombinacje super alpejskie .... i miesza wszystko<br /><br />nie a przecież jest prosta zmienna subzero od której zależy czy jest minus czy go nie ma<br /><br /><br />zatem można sobie zdefiniować kolejny znak np pod kodem 11 - gdzie będzie zapalony tylko segment F i wpisać ten kod do zmiennej cy1 albo kod 10 jeśli ma być pusto bez znaku minus<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 maja 2012, o 20:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2012-05-14T19:47:09+01:00</updated>
<published>2012-05-14T19:47:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6684#p6684</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6684#p6684"/>
<title type="html"><![CDATA[Wyświetlanie minusa temp - DS18B20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1092&amp;p=6684#p6684"><![CDATA[
Witam!<br /><br />Zmagam się od jakiegoś z problemem minusa temperatury w termometrze na wyświetlaczu 7 segmentowym niemultipleksowanym, ze względu na to, że chciałem uzyskać pełną moc ledów ale do rzeczy. <br /><br />Korzystam z Atmegi8 taktowanej wewnętrznym oscylatorem 8MHz. Program na początku mierzy temp, gasi ledy i zapala wynik pomiaru. <br /><br />Funkcja <strong>init_led();</strong> ustawia wszystkie potrzebne piny jako wyjścia. <br />Funkcja <strong>clean_led();</strong> wygasza wszystkie segmenty obu cyfr. <br /><br />Bibliotekę DS18b20 posiadam z książki (a właściwie z CD) Pana Mirosława Kardasia. W przypadku gdy temperatura jest mniejsza od zera, ma zapalić znak ,,-&quot;. Jednakże zapala się tylko przy temp -1, przy -2 już kreski minusa nie ma. W czym robię błąd? Poniżej wklejony cały kod programu, trochę chaotyczny ale staram się pisać jak najpoprawniej.<br /><br /><a href="http://pastebin.com/teJcptRx"  class="postlink">http://pastebin.com/teJcptRx</a><br /><br /><br />Pozdrawiam<br /><br />Oj syntax nie zauważyłem <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><br />[syntax=c]<br />/*<br /> * main.c<br /> *<br /> *  Utworzone dnia: 2012-04-22<br /> *  Autor: Mesho<br /> *  E-mail: <!-- e --><a href="mailto:czester.waleczny@gmail.com">czester.waleczny@gmail.com</a><!-- e --><br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdint.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;1Wire/ds18x20.h&quot; //obsluga czujnika temperatury<br />#include &quot;piny.h&quot;<br />uint8_t czujniki_cnt;//czujniki<br />uint8_t subzero, cel, cel_fract_bits;//wyniki pomiaru<br />uint16_t pm, pm1; //pomiar z fotorezystora<br /><br /><br />//zmienne pomocnicze do wyswietlania temperatury<br />uint8_t cy1, cy2;<br />//funkcja gaszenia wszystkich ledów<br />void clean_led(void);<br />void init_led(void);<br />//pomiar ADC do fotorezystora<br />uint16_t pomiar(uint8_t kanal);<br /><br /><br />int main(void)<br />{<br />//ustaw wszystkie wyjscia i inne<br />    init_led();<br />//wygaszenie ledów<br />clean_led();<br />//poszukiwanie czujników<br />czujniki_cnt = search_sensors();<br /><br />    while(1)<br />    {<br />              czujniki_cnt = search_sensors();<br />              _delay_ms(50);<br />              DS18X20_start_meas( DS18X20_POWER_PARASITE, NULL );<br />              _delay_ms(750);<br />              if( DS18X20_OK == DS18X20_read_meas(gSensorIDs[0], &amp;subzero, &amp;cel, &amp;cel_fract_bits) )<br />    {<br />                                    if(cel&gt;10) cy1 = cel/10;<br />                                    if(cel&lt;10) cy1 = 10; //jak temp&lt;10 nie wyswietlaj 0<br />    cy2 = cel%10; //znak jedności<br />    if(subzero) minus_on; //jezeli temperatura ponizej zera, zapal minus<br />    else minus_off;<br />        }<br /><br />              clean_led(); //gaszenie ledów<br />              //wyswietlanie cyfry dziesietnej<br />              switch(cy1)<br />              {<br />                case 1:<br />              PORTD = B1 | C1;<br />              break;<br />                case 2:<br />                  PORTD = A1 | B1 | G1| E1 | D1;<br />                  break;<br />                case 3:<br />               PORTD = A1 | B1 | G1 | C1 | D1;<br />               break;<br />                case 4:<br />                  PORTD = F1 | G1 | B1 | C1;<br />                  break;<br />                case 5:<br />                  PORTD = A1 | F1 | G1 | C1 |D1;<br />                  break;<br />                case 6:<br />                  PORTD = A1 | F1 | G1 | C1 | D1| E1;<br />                  break;<br />                case 7:<br />                  PORTD = A1 | B1 | C1;<br />                  break;<br />                case 8:<br />                  PORTD = A1 | B1 | C1 | D1 | E1 | F1 | G1;<br />                  break;<br />                case 9:<br />                  PORTD = A1 | B1 | C1 | D1 | F1 | G1;<br />                  break;<br />                case 0:<br />                  PORTD = A1 | B1 | C1 | D1 | E1 | F1;<br />                  break;<br />                case 10:<br />                  PORTD &amp;=  ~(A1 | B1 | C1 | D1 | E1 | F1 | G1);<br />                  break;<br />               }<br />              //wyswietlanie cyfry jednosci<br />              switch(cy2)<br />              {<br />                case 1:<br />                  PORTC = B2|C2;<br />                  break;<br />                case 2:<br />                  PORTC = A2 | B2 | E2 | D2;<br />                  PORTB = G2;<br />                  break;<br />                case 3:<br />                  PORTC = A2| B2 | C2 | D2;<br />                  PORTB = G2;<br />                  break;<br />                case 4:<br />                  PORTC = B2 | C2;<br />                  PORTB = G2 | F2;<br />                  break;<br />                case 5:<br />                  PORTC = A2 | C2 | D2;<br />                  PORTB = G2 | F2;<br />                  break;<br />                case 6:<br />                  PORTC = A2 | C2 | D2| E2;<br />                  PORTB = G2 | F2;<br />                  break;<br />                case 7:<br />                  PORTC = A2 | B2 | C2;<br />                  break;<br />                case 8:<br />                  PORTC = A2 | B2 | C2 | D2 | E2;<br />                  PORTB = G2|F2;<br />                  break;<br />                case 9:<br />                  PORTC = A2 | B2 | C2 | D2;<br />                  PORTB = G2|F2;<br />                  break;<br />                case 0:<br />                  PORTC = A2 | B2 | C2 | D2 | E2;<br />                  PORTB = F2;<br />                  break;<br />                case 10:<br />                    PORTC &amp;= ~(A2 | B2 | C2 | D2 | E2);<br />                    PORTB &amp;= ~(G2|F2);<br />                    break;<br />               }<br /><br /><br />              //czujnik zmierzchowy<br />              pm = pomiar(0);<br />              pm1 = 170;<br />              if(pm &gt; 320)<br />              {<br />              noc_off;<br />              noc2_off;<br />              }<br />              if(pm &lt; pm1)<br />              {<br />              noc_on;<br />              }<br /><br />    }<br />}<br /><br />//*********** Przygotowanie wyjsc i ADC ********//<br />void init_led(void)<br />{<br />//ustawienie ADC<br />        ADMUX |= ((1&lt;&lt;REFS0)| (1&lt;&lt;REFS1));<br />        ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);<br />        //ustawienie wszystkich ledów jako wyjścia<br />DDRD |=  A1 | B1 | C1 | D1 | E1 | F1 | G1;<br />        DDRC |= A2 | B2 | C2 | D2 | E2;<br />        DDRB |= G2|F2;<br />DDRB |= minus|noc|noc2; //znak minusa<br />//wygaszenie na początek<br />noc_off;<br />noc2_off;<br />minus_off;<br />}<br /><br />//*********** Gaszenie ledów *******************//<br />void clean_led(void)<br />{<br />PORTD &amp;=  ~(A1 | B1 | C1 | D1 | E1 | F1 | G1);<br />    PORTC &amp;= ~(A2 | B2 | C2 | D2 | E2);<br />    PORTB &amp;= ~(G2|F2);<br />}<br /><br />//********** Pomiar ADC ***********************//<br />uint16_t pomiar(uint8_t kanal)<br /><br />{<br />        ADMUX |= (ADMUX &amp; 0xF8) | kanal;<br /><br />        ADCSRA |= (1&lt;&lt;ADSC);<br /><br />        while( ADCSRA &amp; (1&lt;&lt;ADSC) );<br /><br />        return ADCW;<br /><br />}<br /><br /><br /><br /><br /><br />/*<br /> * piny.h<br /> *<br /> *  Utworzone dnia: 2012-05-11<br /> *  Autor: Mesho<br /> *  E-mail: <!-- e --><a href="mailto:czester.waleczny@gmail.com">czester.waleczny@gmail.com</a><!-- e --><br /> */<br /><br />#ifndef PINY_H_<br />#define PINY_H_<br /><br />//znak minusowej temperatury<br />#define minus (1&lt;&lt;PB1)<br />#define minus_on PORTB |= minus<br />#define minus_off PORTB &amp;= ~minus<br />#define minus_tog PORTB ^= minus<br /><br />//przełącznik zmierzchowy<br />#define noc (1&lt;&lt;PB2)<br />#define noc_on PORTB |= noc<br />#define noc_off PORTB &amp;= ~noc<br /><br />//drugi przełącznik zmierzchowy<br />#define noc2 (1&lt;&lt;PB3)<br />#define noc2_on PORTB |= noc2<br />#define noc2_off PORTB &amp;= ~noc2<br /><br /><br />//cyfra dziesiątek<br />#define A1 (1&lt;&lt;PD0)<br />#define B1 (1&lt;&lt;PD1)<br />#define C1 (1&lt;&lt;PD2)<br />#define D1 (1&lt;&lt;PD3)<br />#define E1 (1&lt;&lt;PD4)<br />#define F1 (1&lt;&lt;PD5)<br />#define G1 (1&lt;&lt;PD6)<br />//cyfra jednosci<br />#define A2 (1&lt;&lt;PC5)<br />#define B2 (1&lt;&lt;PC4)<br />#define C2 (1&lt;&lt;PC3)<br />#define D2 (1&lt;&lt;PC2)<br />#define E2 (1&lt;&lt;PC1)<br />#define F2 (1&lt;&lt;PB5)<br />#define G2 (1&lt;&lt;PB4)<br /><br /><br />#endif /* PINY_H_ */<br /><br />[/syntax]<br /><br /><strong><span style="color: #FF0000">echhhh...   no trzeba ten klawisz SYNTAX naprawić normalnie .....   SunRiver</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 14 maja 2012, o 19:47</p><hr />
]]></content>
</entry>
</feed>