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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-05-02T20:34:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=22218&amp;mode</id>
<entry>
<author><name><![CDATA[mario2015]]></name></author>
<updated>2019-05-02T20:34:10+01:00</updated>
<published>2019-05-02T20:34:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218714#p218714</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218714#p218714"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218714#p218714"><![CDATA[
No i ten nieszczęsny delay w tej funkcji:<br />[syntax=c]//definicja funkcji drgania styków<br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br /> <br />{<br />        if( ! ( PINB &amp; klawisz) ) //czy przycisk wsisniety ???<br />        {<br />                _delay_ms(80);        //czas drgania styków<br /> <br />             //nadal wciśniety - wystaw 1<br />                if( ! ( PINB &amp; klawisz) ) return 1;<br /> <br /> <br />        }<br /><br />        return 0;  //jeśli nie wystaw 0<br /> <br />}[/syntax]<br />Czas drgania styków realizuje się w trochę inny sposób aby nie robić sobie dodatkowych problemów.<br />Zajrzyj np. tu <a href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html"  class="postlink">http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html</a><br />Wyrzuć tego okropnego delay-a.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8867">mario2015</a> — 2 maja 2019, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2019-05-02T08:38:17+01:00</updated>
<published>2019-05-02T08:38:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218687#p218687</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218687#p218687"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218687#p218687"><![CDATA[
Uzywasz delay i w każdym obiegu wstrzymujesz program na 500ms. Odmierzanie czasu zastąp to jakimś timerem.<br />Na YT jest poradnik Mirka nt timerów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 2 maja 2019, o 08:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gregor126p]]></name></author>
<updated>2019-05-02T08:20:01+01:00</updated>
<published>2019-05-02T08:20:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218686#p218686</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218686#p218686"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218686#p218686"><![CDATA[
Dziękuje problem rozwiązany. Mam jeszcze jedno pytanie do kolegów bo to mój pierwszy bardziej rozbudowany program. Gdy program był napisany tylko załącz, wyłącz (PD6) zmiana stanu odbywała się błyskawicznie. Odkąd rozbudowałem o funkcje pomiaru na ADC i wyświetlania napisów na LCD przyciski muszę trzymać około 1s żeby zmienić stan wyjścia. Czy taki jest już urok mikroprocesorów że działają linia po linii? Jak można by to usprawnić?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10796">gregor126p</a> — 2 maja 2019, o 08:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2019-05-02T07:35:15+01:00</updated>
<published>2019-05-02T07:35:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218685#p218685</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218685#p218685"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218685#p218685"><![CDATA[
No pewnie ze chodzilo o dwa. Zjadlo jeden <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=11828">jez2000</a> — 2 maja 2019, o 07:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2019-05-02T06:13:52+01:00</updated>
<published>2019-05-02T06:13:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218681#p218681</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218681#p218681"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218681#p218681"><![CDATA[
&lt; czy &lt;&lt; powinno być? <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=1546">micky</a> — 2 maja 2019, o 06:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lex_]]></name></author>
<updated>2019-05-01T22:50:57+01:00</updated>
<published>2019-05-01T22:50:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218676#p218676</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218676#p218676"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218676#p218676"><![CDATA[
@jez2000 dobrze Ci podpowiedział. Musisz używać jakiejś flagi typu bool albo nawet int choć to przerost formy. Nigdzie nie widze zmian tej zmiennej nawiasem mówiąc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2676">Lex_</a> — 1 maja 2019, o 22:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gregor126p]]></name></author>
<updated>2019-05-01T22:30:14+01:00</updated>
<published>2019-05-01T22:30:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218675#p218675</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218675#p218675"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218675#p218675"><![CDATA[
Niestety napisanie funkcji w ten sposób nadal skutkuje ciągłym Napisem WYL.<br />[syntax=c_mac] lcd_locate(3,-4);<br />  lcd_str_P(tab3);<br /><br />     if(PIND &amp; (1&lt;PD6)){<br /> lcd_locate(3,8);<br />  lcd_str_P (tab5);<br />  }<br /> else {<br /> lcd_locate(3,8);<br />     lcd_str_P (tab4);<br /> }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10796">gregor126p</a> — 1 maja 2019, o 22:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2019-05-01T22:21:30+01:00</updated>
<published>2019-05-01T22:21:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218674#p218674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218674#p218674"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218674#p218674"><![CDATA[
[syntax=c]if(PIND &amp; (1&lt;PD6))[/syntax]<br /><br />Albo jakas zmienna powołaj którą bedziesz zmieniac w zaleznosci od przycisku. <br /><br />Ale zauwaz, ze u Ciebie ( pomijajac to ze to nie jest zmienna tylko definicja preprocesora ) ty nigdzie nie zmieniasz jej wartosci<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 1 maja 2019, o 22:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gregor126p]]></name></author>
<updated>2019-05-01T22:18:46+01:00</updated>
<published>2019-05-01T22:18:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218673#p218673</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218673#p218673"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218673#p218673"><![CDATA[
Hm... To jak inaczej zdefiniować funkcje if żeby kiedy na PD6 jest 0  było na LCD WYL. a kiedy 1  było ZAL. ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10796">gregor126p</a> — 1 maja 2019, o 22:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2019-05-01T22:13:54+01:00</updated>
<published>2019-05-01T22:13:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218672#p218672</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218672#p218672"/>
<title type="html"><![CDATA[Re: Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218672#p218672"><![CDATA[
#define  SYSTEM_PIN (1&lt;&lt;PD6)<br />To zawsze bedzie prawdą. Nie zmienia sie na 0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 1 maja 2019, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gregor126p]]></name></author>
<updated>2019-05-01T21:33:03+01:00</updated>
<published>2019-05-01T21:33:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218671#p218671</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218671#p218671"/>
<title type="html"><![CDATA[Brak zmiany napisu na LCD.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22218&amp;p=218671#p218671"><![CDATA[
Mam problem z program . Chciałem aby na wyświetlaczu LCD w czwartej Lini zapalał się napis ZAL. kiedy SYSTEM_PIN =1 a WYL. kiedy SYSTEM_PIN = 0. Niestety mimo zmiany stanu z niskiego na wysoki SYSTEM_PIN napis na ekranie widnieje wciąż WYL. W czym tkwi problem. Jak Powinno wygladac kod. wyświetlania czwartej LINI?<br /><br />[syntax=c_mac]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br /><br /><br />#define  SYSTEM_PIN (1&lt;&lt;PD6)                   // definicja pinu do uruchamiania systemu<br />#define  SYSTEM_ON PORTD |= SYSTEM_PIN         // makrodefinicja - włączania systemu<br />#define  SYSTEM_OFF PORTD &amp;= ~SYSTEM_PIN       // makrodefinicja - wyłączania systemu<br /><br />//Przyciski<br />#define KEYSTART_PIN (1&lt;&lt;PB7)       //definicja przycisku START<br />#define KEYSTOP_PIN (1&lt;&lt;PB6)        //definicja przycisku STOP<br /><br /><br /><br /><br />uint8_t klawisz_wcisniety (uint8_t klawisz);    //deklaracja funkcji<br /><br /><br /><br />//deklaracja funkcji do pomiaru na kanałach ADC<br />uint16_t pomiar (uint8_t kanal);<br /><br />//Zmiane do zapisu pomiaru wartosci ADC wejśc<br />volatile uint32_t adc1;<br />volatile uint32_t adc2;<br />volatile uint32_t adc3;<br />volatile uint32_t adc4;<br /><br /><br />//Napisy do wyświetlenia na LCD<br /><br />#define EEMEM __attribute__((section(&quot;.eeprom&quot;)))<br /><br />const char PROGMEM tab1[] = {&quot;Energia&quot;};<br />const char PROGMEM tab2[] = {&quot;Ladowanie&quot;};<br />const char PROGMEM tab3[] = {&quot;Aw. zasil.&quot;};<br />const char PROGMEM tab4[] = {&quot;ZAL.&quot;};<br />const char PROGMEM tab5[] = {&quot;WYL.&quot;};<br />const char PROGMEM tab6[] = {&quot;Nap. Aku.&quot;};<br /><br /><br />const uint8_t znak_slo[] PROGMEM = {32,4,21,10,10,21,4,32};// wzór znaku śłońca w pamięci FLASH<br /><br />uint8_t znak_L[] = {16,16,18,20,24,16,31,0};// wzór znaku litery Ł w pamięci RAM<br /><br />// Zmiene do obliczeń napeicia (podział na czesci całe i ułamkowe)<br />uint8_t cz1_d, cz1_u,cz2_d, cz2_u,cz3_d, cz3_u;<br /><br />char v1[3];<br /><br />//Głowna funkcja programu<br />int main (void) {<br /><br /><br />//****Inicializacja*****//<br />DDRD |= SYSTEM_PIN;                         //kierunek pinu PD4<br />PORTD &amp;= ~SYSTEM_PIN;                       //wyłaczenie systemu<br /><br />//ustawienie pinów wejscia przycisków<br />DDRB &amp;= ~ ( KEYSTART_PIN | KEYSTOP_PIN);<br />//podciaganie programowe pinów do VCC<br />PORTB |= KEYSTART_PIN | KEYSTOP_PIN;<br /><br /><br /><br />//Inicializacja wyświetlacza lcd<br />lcd_init();<br /><br />//Wybór napiecia odneisienia 5V<br />ADMUX |= (1&lt;&lt;REFS0);<br /><br />//Uruchomienei przetwornika ADC oraz ustawienei prasklera na 64<br />ADCSRA |= (1&lt;&lt;ADEN)| (1&lt;&lt;ADPS1) | (1&lt;&lt;ADPS0);<br /><br /><br />while(1) {<br /><br />if ( klawisz_wcisniety ( KEYSTART_PIN ) ) SYSTEM_ON;<br />if ( klawisz_wcisniety ( KEYSTOP_PIN ) ) SYSTEM_OFF;<br /><br /><br />//Czyszczenie zawrtości lcd<br />lcd_cls();<br /><br />///////////////////////////////////////////////////////Przeliczenia wartości ADC na napeicie//////////////////////////////////////////<br /><br />//DLA wejscia PC1<br />adc1=(pomiar(1)*48UL*12UL);<br />cz1_d = adc1/10000;<br />cz1_u = (adc1/100) % 100;<br /><br /><br />//DLA wejscia PC2<br />adc2=(pomiar(2)*48UL*12UL);<br />cz2_d = adc2/10000;<br />cz2_u = (adc2/100) % 100;<br /><br />//DLA wejscia PC3<br />adc3=(pomiar(3)*48UL*12UL);<br />cz3_d = adc3/10000;<br />cz3_u = (adc3/100) % 100;<br /><br /><br />adc4=(pomiar(4));<br /><br /><br />////////////////////////////////////////////////////////Ekran LCD////////////////////////////////////////<br /><br /><br />                                         //Wyświetlenie pierwszej Lini na LCD<br />     lcd_locate(0,0);<br />     lcd_str_P(tab1);<br />     lcd_defchar_P(0x83, znak_slo);<br />     lcd_locate(0,8);<br />     lcd_str(&quot;\x83&quot;);<br />//Wyświetlenie wynkiu pomiaru PC1<br />     lcd_locate(0,10);<br /> lcd_int (cz1_d);<br /> lcd_str (&quot;.&quot;);<br /> lcd_int (cz1_u);<br /> lcd_str (&quot;V&quot;);<br /><br /><br /><br />                                        //Wyświetlenie drugiej Lini na LCD<br />lcd_locate(1,0);<br />lcd_str_P(tab6);<br /><br />//Wyświetlenie wynkiu pomiaru PC2<br /> lcd_locate(1,34);<br /> lcd_int (cz2_d);<br /> lcd_str (&quot;.&quot;);<br /> lcd_int (cz2_u);<br /> lcd_str (&quot;V&quot;);<br /><br /><br /><br />                                       //Wyświetlenie trzeciej Lini na LCD<br /><br /> lcd_locate(2,-4);<br /> lcd_str_P(tab2);<br /> lcd_defchar(0x80, znak_L);<br /> lcd_locate(2,-4);<br /> lcd_str(&quot;\x80&quot;);<br />//Wyświetlenie wynkiu pomiaru PC3<br /> lcd_locate(2,6);<br /> lcd_int (cz3_d);<br /> lcd_str (&quot;.&quot;);<br /> lcd_int (cz3_u);<br /> lcd_str (&quot;A&quot;);<br /><br /><br /><br /><br /><br />                                        //Wyświetlenie czwartej Lini na LCD<br /><br /> lcd_locate(3,-4);<br />  lcd_str_P(tab3);<br /><br /> if (SYSTEM_PIN){<br /> lcd_locate(3,8);<br />  lcd_str_P (tab5);<br />  }<br /> else {<br /> lcd_locate(3,8);<br />     lcd_str_P (tab4);<br /> }<br /><br /><br />_delay_ms(500);<br /><br /><br />}<br /><br />}<br />//definicja funkcji drgania styków<br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br /><br />{<br />if( ! ( PINB &amp; klawisz) ) //czy przycisk wsisniety ???<br />{<br />_delay_ms(80);        //czas drgania styków<br /><br />             //nadal wciśniety - wystaw 1<br />if( ! ( PINB &amp; klawisz) ) return 1;<br /><br /><br />}<br /><br />return 0;  //jeśli nie wystaw 0<br /><br />}<br /><br /><br /><br />//Definicja funkcji króra dkonuje pomiaru ADC<br />uint16_t pomiar(uint8_t kanal) {<br /><br /><br />//Ustawienie kanału na którym jest wykonuwany pomiar<br />ADMUX = (ADMUX &amp; 0xF8) | kanal;<br /><br />//Uruchomienie pomiaru<br />ADCSRA |= (1&lt;&lt;ADSC);<br />//Oczekiwania na zakoczenie pomiaru - bit ADSC=1,<br />while(ADCSRA &amp; (1&lt;&lt;ADSC));<br />//Koniec pomiaru -bit ADSC=0<br />//Zapisanie wyniku w rejestrze ADCH i ADCL<br />return ADCW; //ADCW --&gt; Para rejestrów ADCH i ADCL<br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10796">gregor126p</a> — 1 maja 2019, o 21:33</p><hr />
]]></content>
</entry>
</feed>