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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22605&amp;mode</id>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2019-10-17T14:34:33+01:00</updated>
<published>2019-10-17T14:34:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222534#p222534</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222534#p222534"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222534#p222534"><![CDATA[
Kolego  JarekB<br />Ta struktura działa dzięki za pomoc  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 17 paź 2019, o 14:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-10-11T19:55:47+01:00</updated>
<published>2019-10-11T19:55:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222433#p222433</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222433#p222433"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222433#p222433"><![CDATA[
Z tym asemblerem to po prostu skopiowałem to co zrobił kompilator <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Czasem gdy chcę coś sprawdzić to tam zaglądam.<br />Widać że wartości są przepisywane do rejestrów.<br />Nie znam assemblera ale pewne rzeczy można z tego pliku wywnioskować nawet nie znając go<br />Skompiluj program i zajrzyj do niego<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 11 paź 2019, o 19:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2019-10-11T19:23:23+01:00</updated>
<published>2019-10-11T19:23:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222432#p222432</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222432#p222432"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222432#p222432"><![CDATA[
Wywołuje ją w pętli głównej programu while (1){<br />i za komentowane if ( alarm [0] . pokaz_alarm_ptr ) alarm[0] <br />oraz if ( alarm [1] . pokaz_alarm_ptr ) alarm[1]<br /><br />Ale nie mogą zrobić poprawki w kodzie w pierwszym poście <br />bo czas miną na edycję<br />a nie chcę mnożyć listingów <br /><br />możesz mi powiedzieć czy wartości które są wpisywane do struktury <br />są w zmiennych strukturalnych zapisywane ?<br />np. w strukturze zmienna o nazwie ( godz )<br />będzie pamiętała ustawienie wartości <br />dla np. zegar 1 ustaw godz = 22<br />a dla zegar 2 ustaw godz = 13<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />Ale żeś sypnął asemblerem  <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=18503">miki53</a> — 11 paź 2019, o 19:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-10-11T18:48:05+01:00</updated>
<published>2019-10-11T18:48:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222431#p222431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222431#p222431"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222431#p222431"><![CDATA[
A gdzie wywołujesz funkcje ? :[syntax=c]init_alarm();[/syntax]Nie widzę tego w kodzie.<br />Poczyściłem z ciekawości z komentarzy Twój kod skompilowałem  [syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />typedef struct TALARM {<br />    uint8_t godz;<br />    uint8_t min;<br />    uint8_t sek;<br />    void ( * pokaz_alarm_ptr )( struct TALARM * wsk ); // TO JEST WSKAŻNIK NA FUNKCJĘ<br />}TALARM;<br /><br />TALARM  alarm&#91;2&#93;;<br /><br />void test (void);<br /><br />void pokaz_alarm( TALARM * wsk ) {<br />    wsk -&gt; godz = 22;<br />    wsk -&gt; min = 15;                <br />    wsk -&gt; sek = 30;<br />}<br /> <br />void pokaz_alarm1( TALARM * wsk ) {<br /><br />    wsk -&gt; godz = 12;<br />    wsk -&gt; min = 5;<br />    wsk -&gt; sek = 120;                                <br />}<br />                           <br />void init_alarm( void ) {                                                       <br />    alarm&#91;0&#93; . pokaz_alarm_ptr = ( void* )pokaz_alarm;<br />    alarm&#91;1&#93; . pokaz_alarm_ptr = ( void* )pokaz_alarm1;<br />}    <br /><br />int main( void ) {<br /><br />    init_alarm();<br />    test();<br />    while ( 1 ) {<br /><br />        if ( alarm &#91;0&#93; . pokaz_alarm_ptr ) alarm&#91;0&#93; . pokaz_alarm_ptr( &amp;alarm&#91;0&#93; );<br />        if ( alarm &#91;1&#93; . pokaz_alarm_ptr ) alarm&#91;1&#93; . pokaz_alarm_ptr( &amp;alarm&#91;1&#93; );<br />    }<br />}<br /><br />void test (void) {<br />    DDRA =   alarm&#91;1&#93;. sek;<br />}[/syntax]<br /><br />No i popatrzyłem w plik .lss (nie mam podpiętego wyświetlacza) no ale widać że coś się dzieje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Żyć nie umierać<br />Wskaźniki się wskaźnikują zmienne przypisują <br />[syntax=c]000000a8 &lt;pokaz_alarm1&gt;:<br />  a8:    fc 01           movw    r30, r24<br />  aa:    8c e0           ldi    r24, 0x0C    ; 12<br />  ac:    80 83           st    Z, r24<br />  ae:    85 e0           ldi    r24, 0x05    ; 5<br />  b0:    81 83           std    Z+1, r24    ; 0x01<br />  b2:    88 e7           ldi    r24, 0x78    ; 120<br />  b4:    82 83           std    Z+2, r24    ; 0x02<br />  b6:    08 95           ret<br /><br />000000b8 &lt;init_alarm&gt;:<br />  b8:    8c e4           ldi    r24, 0x4C    ; 76<br />  ba:    90 e0           ldi    r25, 0x00    ; 0<br />  bc:    90 93 04 01     sts    0x0104, r25<br />  c0:    80 93 03 01     sts    0x0103, r24<br />  c4:    84 e5           ldi    r24, 0x54    ; 84<br />  c6:    90 e0           ldi    r25, 0x00    ; 0<br />  c8:    90 93 09 01     sts    0x0109, r25<br />  cc:    80 93 08 01     sts    0x0108, r24<br />  d0:    08 95           ret<br /><br />000000d2 &lt;test&gt;:<br />  d2:    80 91 07 01     lds    r24, 0x0107<br />  d6:    8a bb           out    0x1a, r24    ; 26<br />  d8:    08 95           ret<br /><br />000000da &lt;main&gt;:<br />  da:    0e 94 5c 00     call    0xb8    ; 0xb8 &lt;init_alarm&gt;<br />  de:    0e 94 69 00     call    0xd2    ; 0xd2 &lt;test&gt;<br />  e2:    e0 91 03 01     lds    r30, 0x0103<br />  e6:    f0 91 04 01     lds    r31, 0x0104        <br />  ea:    30 97           sbiw    r30, 0x00    ; 0<br />  ec:    19 f0           breq    .+6          ; 0xf4 &lt;main+0x1a&gt;<br />  ee:    80 e0           ldi    r24, 0x00    ; 0<br />  f0:    91 e0           ldi    r25, 0x01    ; 1<br />  f2:    09 95           icall<br />  f4:    e0 91 08 01     lds    r30, 0x0108<br />  f8:    f0 91 09 01     lds    r31, 0x0109<br />  fc:    30 97           sbiw    r30, 0x00    ; 0<br />  fe:    89 f3           breq    .-30         ; 0xe2 &lt;main+0x8&gt;<br /> 100:    85 e0           ldi    r24, 0x05    ; 5<br /> 102:    91 e0           ldi    r25, 0x01    ; 1<br /> 104:    09 95           icall<br /> 106:    ed cf           rjmp    .-38         ; 0xe2 &lt;main+0x8&gt;<br /><br />00000108 &lt;_exit&gt;:<br /> 108:    f8 94           cli<br /><br />0000010a &lt;__stop_program&gt;:<br /> 10a:    ff cf           rjmp    .-2          ; 0x10a &lt;__stop_program&gt;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 11 paź 2019, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2019-10-11T17:21:48+01:00</updated>
<published>2019-10-11T17:21:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222428#p222428</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222428#p222428"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222428#p222428"><![CDATA[
Koledzy możecie mi wytłumaczyć co od czego jest zależne <br />w moim przykładzie struktury <br /><br />czy zmienne strukturalne są napełniane wartościami z ustawień w funkcji <br /><br />void pokaz_alarm( TALARM * wsk )<br />w której wpisuję do zmiennych wsk -&gt; godz = 22;<br /><br />kiedy w pętli while wywołuję funkcję   init_alarm (  );<br />to wyświetlają mi się same zera tak jakby zmienne strukturalne były puste czyli same zera<br />tak jakby nic do niej nie było wpisane <br />mimo że do nich wpisuję wartości przez   wsk -&gt; godz = 22;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 11 paź 2019, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2019-10-11T11:58:48+01:00</updated>
<published>2019-10-11T11:58:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222425#p222425</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222425#p222425"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222425#p222425"><![CDATA[
Panie Mirku <br /><br /> <div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />... o ile jest sens w ogóle w ten sposób to wyświetlać ?<br /></div><br /><br />Moje przemyślenia są następujące <br />Jak będę mógł wyświetlić to co wpisuję w funkcjach  void pokaz_alarm(TALARM * wsk ) oraz void pokaz_alarm1 (TALARM * wsk )<br />a odczyt będzie z<br />typedef struct {<br />        uint8_t godz;<br />        uint8_t min;<br />        uint8_t sek;<br />        void (* pokaz_alarm_ptr)(void * wsk); // Z TEGO MIEJSCA <br />    }TALARM;<br /> to będę wiedział że wpisywane wartości są odczytywane z struktury a nie z samej funkcji <br />jeśli są z samej funkcji to wcale nie jest powiedziane że struktura działa<br /><br />Poza tym jeśli będę mógł je wyświetlić na LCD to i te wartości mogę przerabiać do innych<br />celów nie tylko do wyświetlania ale i sterowania wyjściami itp. <br />Ale najpierw muszę się dowiedzieć jak je z tam tond wydostać<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 11 paź 2019, o 11:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-10-11T07:05:48+01:00</updated>
<published>2019-10-11T07:05:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222422#p222422</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222422#p222422"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222422#p222422"><![CDATA[
Napisałem Ci kawałek kodu jak można wypełnić czasówki. Analogicznie możesz wyświetlić zawartość struktury.[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />typedef struct TTIME {          <br />    uint8_t gg;<br />    uint8_t mm;<br />    uint8_t ss;<br />}TTIME;<br /><br />TTIME alarm&#91;5&#93;;<br /><br />void ustaw_czasy( uint8_t ktory, uint8_t gg,   uint8_t mm,     uint8_t ss );<br />int main( void ) {     <br />   ustaw_czasy (1,12,24,33);              <br />   ustaw_czasy (2,8,00,00);   <br />   // i tak dalej <br />                                  <br />    while ( 1 ) {<br />    }<br />}<br />void ustaw_czasy( uint8_t ktory, uint8_t gg,   uint8_t mm,     uint8_t ss ) {<br />    alarm&#91;ktory&#93;.gg = gg;<br />    alarm&#91;ktory&#93;.mm = mm;<br />    alarm&#91;ktory&#93;.ss = ss;                                                                                              <br />}[/syntax]<br /><br />Nie wywoływałbym funkcji ze struktury do wyświetlenia czasów. Tak jak napełnianie jej pól, tak i wyświetlanie można zrealizować jedną funkcją poza strukturą. Tak sobie myślę (ale to moje przemyślenia) że funkcja w strukturze ma sens wtedy gdy jest specyficzna dla każdej struktury struktury.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 11 paź 2019, o 07:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-10-10T19:17:26+01:00</updated>
<published>2019-10-10T19:17:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222421#p222421</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222421#p222421"/>
<title type="html"><![CDATA[Re: Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222421#p222421"><![CDATA[
Nie będzie mirek krzyczał <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale może ktoś coś podpowie ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... o ile jest sens w ogóle w ten sposób to wyświetlać ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 paź 2019, o 19:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2019-10-10T18:11:05+01:00</updated>
<published>2019-10-10T18:11:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222419#p222419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222419#p222419"/>
<title type="html"><![CDATA[Prośba  jak wyświetlić zawartość struktury na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22605&amp;p=222419#p222419"><![CDATA[
Wybaczcie że męczę temat struktur ale kiedy wydaje mi się że już coś łapię<br />to znowu coś idzie nie tak <br />Podaję kod z poradnika pt.Gra snejk <br />Mirek  będzie na mnie krzyczał że taki długi kod  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  ale jest to na temat  <br />i krótsza wersja nie miała by sensu ( tak myślę )<br /><br />pytanie JAK WYŚWIETLIĆ NA LCD WARTOŚCI WPISANE DO STRUKTURY Z FUNKCJI<br />            void pokaz_alarm( TALARM * wsk )  ORAZ    void pokaz_alarm1( TALARM * wsk )<br /><br /><br /><br />[syntax=c]typedef struct {<br />        uint8_t godz;<br />        uint8_t min;<br />        uint8_t sek;<br />        void (* pokaz_alarm_ptr)(void * wsk); // TO JEST WSKAŻNIK NA FUNKCJĘ<br />    }TALARM;<br /><br />    TALARM  alarm&#91;2&#93;;<br /><br /><br /><br />// ** ODWOŁYWANIE SIĘ DO PÓL STRUKTURY PRZEZ WSKAŻNIK ( FUNKCJA DLA URZĄDZENIA 1 ) ***<br />    void pokaz_alarm( TALARM * wsk ){<br /><br />    wsk -&gt; godz = 22;<br />    wsk -&gt; min = 15;<br />    wsk -&gt; sek = 30;<br /><br />    }<br />// ************************************************************************************<br /><br />// ** ODWOŁYWANIE SIĘ DO PÓL STRUKTURY PRZEZ WSKAŻNIK ( FUNKCJA DLA URZĄDZENIA 2 ) ***<br />      void pokaz_alarm1( TALARM * wsk ){<br /><br />        wsk -&gt; godz = 12;<br />    wsk -&gt; min = 5;<br />        wsk -&gt; sek = 35;<br /><br /><br />     }<br />// ************************************************************************************<br /><br />// W TEJ FUNKCJI ODWOŁUJEMY SIĘ DO ZAWARTOŚCI OBU FUNKCJI ( CZYLI MOŻEMY WYWOŁAĆ ZAWARTOŚĆ DWÓCH FUNKCJI ZA POMOCĄ JEDNEJ )<br /><br />      void init_alarm ( void ) {<br /><br />      alarm&#91;0&#93; . pokaz_alarm_ptr = ( void*)pokaz_alarm;<br /><br />      alarm&#91;1&#93; . pokaz_alarm_ptr = ( void*)pokaz_alarm1;<br />      }<br /><br /><br /><br />#endif<br /><br /><br />// główna pętla programu<br />while(1) {<br /><br />#if STRUKTURY == 2<br /><br />// odwołuję się do pierwszego elementu tablicy wywołuję funkcję po przez wskażnik (.) wywołuję funkcję w kturej jest<br />// wskażnik na strukturę<br /><br />// |  sprawdzamy czy wskażnik na  | w tym miejscu wywołuję  |tu podaję   |<br />// |  strukturę nie jest zerowy  | funkcję                 |argument wskażnik na strukturę |<br />if ( alarm &#91;0&#93; . pokaz_alarm_ptr ) alarm&#91;0&#93; . pokaz_alarm_ptr (&amp;alarm&#91;0&#93;);//sprawdzamy czy wskażnik na funkcję jest nie zerowy<br />// TAK SAMO SPRAWDZAMY DRUGĄ FUNKCJĘ<br />if ( alarm &#91;1&#93; . pokaz_alarm_ptr ) alarm&#91;1&#93; . pokaz_alarm_ptr (&amp;alarm&#91;1&#93;);//sprawdzamy czy wskażnik na funkcję jest nie zerowy<br /><br /><br /><br /><br />// *** ALARM nr1 *******************<br />// lcd_cls();<br />lcd_locate(0,0);<br />if( alarm &#91;0&#93;.godz &lt;9 ) lcd_char('0');<br />lcd_int( alarm &#91;0&#93;.godz );<br />lcd_char(':');<br />if( alarm &#91;0&#93;.min &lt; 9 ) lcd_char('0');<br />lcd_int( alarm &#91;0&#93;.min );<br />lcd_char(':');<br />if( alarm &#91;0&#93;.sek &lt; 9 ) lcd_char('0');<br />lcd_int( alarm &#91;0&#93;.sek );<br /><br />// *** ALARM nr2 ******************<br />lcd_locate(1,0);<br />if( alarm &#91;1&#93;.godz &lt;9 ) lcd_char('0');<br />lcd_int( alarm &#91;1&#93;.godz );<br />lcd_char(':');<br />if( alarm &#91;1&#93;.min &lt; 9 ) lcd_char('0');<br />lcd_int( alarm &#91;1&#93;.min );<br />lcd_char(':');<br />if( alarm &#91;1&#93;.sek &lt; 9 ) lcd_char('0');<br />lcd_int( alarm &#91;1&#93;.sek );[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 10 paź 2019, o 18:11</p><hr />
]]></content>
</entry>
</feed>