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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-07-31T10:25:00+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21031&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-07-26T16:05:31+01:00</updated>
<published>2018-07-26T16:05:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210158#p210158</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210158#p210158"/>
<title type="html"><![CDATA[Re: MENU NA SZYBKO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210158#p210158"><![CDATA[
Zrób dodatkową zmienną, która będzie pośrednikiem z adc i traktuj ją jako zwykły rejestr. Prościej się chyba nie da.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 26 lip 2018, o 16:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lasota]]></name></author>
<updated>2018-07-26T13:34:48+01:00</updated>
<published>2018-07-26T13:34:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210154#p210154</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210154#p210154"/>
<title type="html"><![CDATA[Re: MENU NA SZYBKO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210154#p210154"><![CDATA[
mkmenu gen byłby okej tylko nie wiem jak to przerobić na 3 przyciski które są odczytywane z adc<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;lcd44780.h&quot;<br /><br />#define ANODA1 (1&lt;&lt;PD2)<br />#define ANODA2 (1&lt;&lt;PD3)<br />#define ANODA3 (1&lt;&lt;PD4)<br />#define DANA (1&lt;&lt;PB0)<br />#define ZEGAR (1&lt;&lt;PB1)<br />#define MASKA_ANODY (ANODA1|ANODA2|ANODA3)<br />#define ANODY_DIR DDRD<br />#define ANODY_PORT PORTD<br />#define REJ_DIR DDRB<br />#define REJ_PORT PORTB<br /><br />//PRZYPISANIE WARTOSCI ZNAKOW<br />#define ZNAK_0 0x3<br />#define ZNAK_1 0x9F<br />#define ZNAK_2 0x25<br />#define ZNAK_3 0xD<br />#define ZNAK_4 0x99<br />#define ZNAK_5 0x49<br />#define ZNAK_6 0x41<br />#define ZNAK_7 0x1F<br />#define ZNAK_8 0x1<br />#define ZNAK_9 0x9<br />#define ZNAK_A 0x11<br />#define ZNAK_B 0xC1<br />#define ZNAK_C 0x63<br />#define ZNAK_D 0x85<br />#define ZNAK_E 0x61<br />#define ZNAK_F 0x71<br />#define ZNAK_H 0x91<br />#define ZNAK_L 0xE3<br />#define ZNAK_P 0x31<br />#define ZNAK_U 0x83<br />#define ZNAK_NIC 0xFF<br />#define ZNAK_MYSLNIK 0xFD<br />#define timer_start 186// POCZATKOWA WARTOSC TIMERA<br /><br /><br />//11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111<br />//DEFINICJE ZAKRESOW DLA PRZYCISKOW<br />#define KEY_UP_MIN 238<br />#define KEY_UP_MAX 250<br />#define KEY_START_MIN 321<br />#define KEY_START_MAX 333<br />#define KEY_DOWN_MIN 596<br />#define KEY_DOWN_MAX 608<br />#define KEY_F_MIN 692<br />#define KEY_F_MAX 704<br />#define KEY_START_F_MIN 734<br />#define KEY_START_F_MAX 746<br />#define KEY_START_DOWN_F_MIN 814<br />#define KEY_START_DOWN_F_MAX 826<br />#define KLAWISZ_NIEZDEFINIOWANY 220<br />volatile uint8_t KEY_UP_LICZNIK = 0;<br />volatile uint8_t KEY_START_LICZNIK = 0;<br />volatile uint8_t KEY_DOWN_LICZNIK = 0;<br />volatile uint8_t KEY_F_LICZNIK = 0;<br />volatile uint8_t KEY_START_UP_LICZNIK = 0;<br />volatile uint8_t KEY_START_F_LICZNIK = 0;<br />volatile uint8_t KEY_START_DOWN_F_LICZNIK = 0;<br />//22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222<br />uint8_t wartosc_przycisku = 0;<br />uint8_t CYFRA1 = ZNAK_0;<br />uint8_t CYFRA2 = ZNAK_0;<br />uint8_t CYFRA3 = ZNAK_0;<br /><br />#define Suchy_pomiar_przed_CO 0<br />#define Pomiar_temp_CO 1<br />#define Suchy_pomiar_przed_POWROTU 2<br />#define Pomiar_temp_POWROTU 3<br />#define Suchy_pomiar_klawiszy 4<br />#define Pomiar_klawiszy 5<br />#define ADC_max_dla_temperatury 630 //tu juz powyzej 106 stopni<br />#define ADC_min_dla_temperatury 327 //daje to temperature -50 stopni<br />#define ADC_wartosc_odejmowana_do_8bit 400<br />#define Ilosc_pomiarow_ADC_dla_temp 16<br />#define Ilosc_pomiarow_ADC_dla_klawiszy 100<br />#define Licznik_wartosc_poczatkowa 0<br />//flagi do przerwania od pomiaru ADC<br />volatile uint8_t Aktualny_pomiar_ADC = Pomiar_temp_CO;<br />volatile uint16_t licznik = Licznik_wartosc_poczatkowa;<br />//zmienna do odczytu klawiatury<br />volatile uint16_t klawiatura = 0;<br /><br /><br />volatile uint8_t cnt=1;//ZMIENNA UZYWANA W PRZERWANIU<br />uint8_t i;<br />uint8_t zmienna;<br /><br />//44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444<br />uint16_t pommiar(uint8_t kanal);<br />void send_byte(uint8_t zmienna){<br />for(i=0; i&lt;8; i++) {<br />   if( zmienna &amp; 1){<br />   REJ_PORT |= DANA;//2 USTAW 1 DIODA NIE SWIECI<br />   REJ_PORT |= ZEGAR;//3 ZEGAR ZBOCZE NARASTAJACE<br />   REJ_PORT ^= ZEGAR;//4 ZEGAR ZBOCZE OPADAJACE<br />   }<br />   else{<br />   REJ_PORT &amp;=~ DANA;//2 USTAW 0 DIODA SWIECI<br />   REJ_PORT |= ZEGAR;//3 ZEGAR ZBOCZE NARASTAJACE<br />   REJ_PORT ^= ZEGAR;//4 ZEGAR ZBOCZE OPADAJACE<br />   }<br />   zmienna &gt;&gt;= 1;<br />}<br />}<br />//55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555<br />//OBSLUGA MENU<br /><br />void obsluga_menu (uint8_t poziom_menu){<br />switch(poziom_menu){<br />case 1:<br />CYFRA1=ZNAK_0;<br />CYFRA2=ZNAK_1;<br />CYFRA3=ZNAK_NIC;//diody led<br />break;<br /><br />case 2:<br />CYFRA1=ZNAK_0;<br />CYFRA2=ZNAK_2;<br />CYFRA3=ZNAK_NIC;//diody led<br />break;<br /><br />case 3:<br />CYFRA1=ZNAK_0;<br />CYFRA2=ZNAK_3;<br />CYFRA3=ZNAK_NIC;//diody led<br />break;<br /><br />case 4:<br />CYFRA1=ZNAK_0;<br />CYFRA2=ZNAK_4;<br />CYFRA3=ZNAK_NIC;//diody led<br />break;<br />case 5:<br />CYFRA1=ZNAK_0;<br />CYFRA2=ZNAK_5;<br />CYFRA3=ZNAK_NIC;//diody led<br />break;<br />case 6:<br />CYFRA1=ZNAK_0;<br />CYFRA2=ZNAK_6;<br />CYFRA3=ZNAK_NIC;//diody led<br />break;<br /><br />default:<br />break;<br />}<br />}<br /><br />int main(void){<br />lcd_init();<br /><br />//KONFIGURACJA WE/WYJ<br /><br />ANODY_DIR |= ANODA1 | ANODA2 | ANODA3;<br />ANODY_PORT |= ANODA1 | ANODA2 | ANODA3;<br />REJ_DIR |= DANA | ZEGAR;//PB0 I PB1 JAKO WYJSCIA<br /><br />//OBSLUGA TIMERA 0<br /><br />OCR0 = 72;//preskaler 1024, F_CPU = 7372800, OCR0A = 72 daje przerwanie co 10ms<br />TCCR0 |= (1&lt;&lt;WGM21);//Tryb CTC- zerowanie licznika po przekroczeniu OCRA<br />TCCR0 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21) | (1&lt;&lt;CS20);//wlaczenie timera, prescaler 1024<br /><br />//OBSŁUGA TIMERA 2 OD OBSLUGI REJESTRU PRZESUWNEGO<br /><br />TIMSK |= (1&lt;&lt;TOIE2);//Przerwanie overflow (przepełnienie timera)<br />TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21) | (1&lt;CS20);//PRESKALER 1024<br />TCNT2 = timer_start;<br /><br />//KONFIGURACJA ADC<br /><br />ADMUX |= (1&lt;&lt;REFS0);//NAPIECIE ODNIESIENA VCC<br />ADCSRA |= (1&lt;&lt;ADEN) | (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1);<br /><br />sei();<br /><br />while(1) {<br />pommiar(0);<br />lcd_int(wartosc_przycisku);<br />obsluga_menu(wartosc_przycisku);<br />_delay_ms(60);<br />lcd_cls();<br />}<br />}<br /><br /><br />uint16_t pommiar(uint8_t kanal){<br />ADMUX = (ADMUX &amp; 0xF8) | kanal;<br />ADCSRA |= (1&lt;&lt;ADSC);<br />while(1){<br />switch(Aktualny_pomiar_ADC)<br /><br />case Pomiar_klawiszy:<br />licznik++;<br />klawiatura = ADCW;<br />if(klawiatura &gt; KEY_UP_MIN &amp;&amp; klawiatura &lt; KEY_UP_MAX){<br />wartosc_przycisku = 1;<br />return 1;<br />}<br />else if(klawiatura &gt; KEY_START_MIN &amp;&amp; klawiatura &lt; KEY_START_MAX){<br />wartosc_przycisku = 2;<br />return 2;<br />}<br />else if(klawiatura &gt; KEY_DOWN_MIN &amp;&amp; klawiatura &lt; KEY_DOWN_MAX){<br />wartosc_przycisku = 3;<br />return 3;<br />}<br />else if(klawiatura &gt; KEY_F_MIN &amp;&amp; klawiatura &lt; KEY_F_MAX){<br />wartosc_przycisku = 4;<br />return 4;<br />}<br />else if(klawiatura &gt; KEY_START_F_MIN &amp;&amp; klawiatura &lt; KEY_START_F_MAX){<br />wartosc_przycisku = 5;<br />return 5;<br />}<br />else if(klawiatura &gt; KEY_START_DOWN_F_MIN &amp;&amp; klawiatura &lt; KEY_START_DOWN_F_MAX){<br />wartosc_przycisku = 6;<br />return 6;<br />}<br />else{<br />return 0;<br />}<br />        }<br />}<br /><br />//77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777<br />//PROCEDURA OBSLUGI PRZERWANIA OD TIMERA 2<br />ISR(TIMER2_OVF_vect){<br />TCNT2 = timer_start;<br /><br /><br />if(cnt==1)<br />{<br />ANODY_PORT |= ANODA2 | ANODA3;<br />send_byte(CYFRA1);<br />ANODY_PORT &amp;=~ ANODA1;<br />}<br />else if(cnt==2)<br />{<br />ANODY_PORT |= ANODA1 | ANODA3;<br />send_byte(CYFRA2);<br />ANODY_PORT &amp;=~ ANODA2;<br />}<br />else if(cnt==3)<br />{<br />ANODY_PORT |= ANODA1 | ANODA2;<br />send_byte(CYFRA3);<br />ANODY_PORT &amp;=~ ANODA3;//przy podlaczeniu do bazy tranzystora zmienic na &quot;1&quot;<br />}<br /><br />cnt++;// ZWIEKSZENIE CNT DO PRZELACZANIA WYSWIETLACZY<br />if (cnt&gt;3) cnt=1;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19262">Lasota</a> — 26 lip 2018, o 13:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-07-25T19:04:14+01:00</updated>
<published>2018-07-25T19:04:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210124#p210124</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210124#p210124"/>
<title type="html"><![CDATA[Re: MENU NA SZYBKO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210124#p210124"><![CDATA[
witam,<br /><div class="quotetitle">Lasota napisał(a):</div><div class="quotecontent"><br />lecz na poziomie na którym aktualnie się znajduje ogarnięcie struktur itp jest dość trudne i niezrozumiałe lecz potrzebuję jak najszybciej mieć gotowe urządzenie.<br /></div><br />jeżeli potrzebujesz bez zrozumienia, to jest problem - pomocny będzie materiał pod wskazanym przez Mirka <a href="https://youtu.be/z8ZH2LPYAuk"  class="postlink"><span style="text-decoration: underline"><strong>linkiem</strong></span></a>.<br />Jeżeli chcesz by ktoś pomógł Tobie w przebrnięciu przez jakieś proste menu, to szczegóły oraz kod który do tej pory skonstruowałeś, jak najbardziej mile widziany.<br />pozdrawiam.<br />chyba że już nie aktualne, Ctrl C -&gt; Ctrl V.  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 25 lip 2018, o 19:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-07-25T06:10:31+01:00</updated>
<published>2018-07-25T06:10:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210114#p210114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210114#p210114"/>
<title type="html"><![CDATA[Re: MENU NA SZYBKO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210114#p210114"><![CDATA[
Też polecam MkMenu - soft jak najbardziej ogarnia robotę. Obejrzyj poradniki Mirka to się wyklaruje co i jak.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 25 lip 2018, o 06:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-07-24T11:35:32+01:00</updated>
<published>2018-07-24T11:35:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210092#p210092</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210092#p210092"/>
<title type="html"><![CDATA[Re: MENU NA SZYBKO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210092#p210092"><![CDATA[
nie oglądał kolega tego rozwiązania ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><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><br /><br />i kolejnych odcinków ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 24 lip 2018, o 11:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lasota]]></name></author>
<updated>2018-07-31T10:25:00+01:00</updated>
<published>2018-07-24T10:54:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210090#p210090</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210090#p210090"/>
<title type="html"><![CDATA[MENU NA SZYBKO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21031&amp;p=210090#p210090"><![CDATA[
Witam, potrzebuję przerobić program do mojego sterowniczka by posiadał funkcję menu. Czytałem książkę, forum lecz na poziomie na którym aktualnie się znajduje ogarnięcie struktur itp jest dość trudne i niezrozumiałe lecz potrzebuję jak najszybciej mieć gotowe urządzenie. będę wdzięczny osobie która znajdzie czas i pomoże w dokończeniu projektu. Aktualny program oraz więcej szczegółów mogę umieścić jak zajdze taka potrzeba.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19262">Lasota</a> — 24 lip 2018, o 10:54</p><hr />
]]></content>
</entry>
</feed>