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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-01T15:10:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11555&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-05-01T15:10:54+01:00</updated>
<published>2015-05-01T15:10:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127970#p127970</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127970#p127970"/>
<title type="html"><![CDATA[Re: Konwersja-rzutowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127970#p127970"><![CDATA[
<div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />Najogólniej powiedziawszy jeżeli z prawej mamy &quot;większy&quot; typ zmiennej to należy ją rzutować.<br /></div><br />Dlaczego większy ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> inny ... to dobre słowo. Inny a nie większy<br /><br /><div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />Nie powinno być &quot;kasownik+i&quot;<br /></div><br />Oczywiście że powinno <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> sorki walnąłem się - już poprawiam - na szybko pisałem..... <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=54">mirekk36</a> — 1 maja 2015, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2015-05-01T15:08:35+01:00</updated>
<published>2015-05-01T15:08:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127968#p127968</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127968#p127968"/>
<title type="html"><![CDATA[Re: Konwersja-rzutowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127968#p127968"><![CDATA[
Czy rozumiem to pewny nie jestem. Najogólniej powiedziawszy jeżeli z prawej mamy &quot;większy&quot; typ zmiennej to należy ją rzutować. <br />W tym przypadku &quot;lecimy&quot; po strukturze bajt po bajcie to kasownik musi być jedno bajtowy. Jak zmienna year się zwiększy o 1 bajt to dodajemy w pętelce jeden obieg. W pętli &quot;for&quot; adres powinien być zwiększany o 1. Nie powinno być &quot;kasownik+i&quot; lub &quot;kasownik +=1&quot; zamiast &quot;kasownik+1&quot; ?<br /> Najważniejsze, że wiem co to w ogóle jest rzutowanie. Myślę, że zasadności jego stosowania nauczę się podczas pisania programów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 1 maja 2015, o 15:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-05-01T13:51:43+01:00</updated>
<published>2015-05-01T13:51:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127960#p127960</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127960#p127960"/>
<title type="html"><![CDATA[Re: Konwersja-rzutowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127960#p127960"><![CDATA[
Zobacz, gdybyś miał tylko taką strukturę:<br /><br />[syntax=c]typedef struct{<br />                uint8_t ss;<br />                uint8_t mm;<br />                uint8_t hh;<br />                uint8_t dayofwek;<br />                uint8_t day;<br />                uint8_t month;<br />                uint8_t year;<br />} TDATETIME;[/syntax]<br /><br />(bez unii) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... i taką zmienną<br /><br />[syntax=c]TDATETIME czas;[/syntax]<br /><br />i teraz sobie wyobraź że chciałbyś skasować szybko w jednej pętli for() po kolei wszystkie zmienne w tej strukturze ? to jak ? np tak:<br /><br />powołujemy sobie zmienną wskaźnikową<br /><br />[syntax=c]uint8_t * kasownik;[/syntax]<br /><br />a teraz dokonujemy rzutowania wskaźnikowego <br /><br />[syntax=c]kasownik = &amp;czas;[/syntax]<br /><br />ZONK! to nie wychodzi bo kompilator strasznie płacze ... i ma rację boć przecież kasownik to wskaźnik typu uint8_t a wskaźnik &amp;czas jest typu TDATETIME<br /><br />no ale my wiemy co chcemy dalej zrobić - więc zróbmy rzutowanie - jak ?<br /><br />hmmm no to co po prawej stronie musi być takiego samego typu jak to po lewej stronie tak ? no to siup!<br /><br />[syntax=c]kasownik = (uint8_t *)&amp;czas;[/syntax]<br /><br />TA DAAA!!! ... kompilator nie płacze - więc zabierzmy się do kasowania ochoczo<br /><br />[syntax=c]uint8_t i;<br />for( i=0; i&lt;7; i++ ) *(kasownik+i) = 0;[/syntax]<br /><br />i tym sposobem wyzerowaliśmy wszystkie pola struktury <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> A co by było gdyby zmienna year była typu uint16_t ? ... żadna tragedia, wtedy pętla wyglądałaby tak:<br /><br />[syntax=c]uint8_t i;<br />for( i=0; i&lt;8; i++ ) *(kasownik+i) = 0;[/syntax]<br /><br />mam nadzieję, że wiesz dlaczego taka różnica ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 maja 2015, o 13:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2015-05-01T13:30:49+01:00</updated>
<published>2015-05-01T13:30:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127958#p127958</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127958#p127958"/>
<title type="html"><![CDATA[Re: Konwersja-rzutowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127958#p127958"><![CDATA[
A już myślałem, że nastąpił ten moment, że potrzebne mi rzutowanie w programie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Dzięki panie Mirku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 1 maja 2015, o 13:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-05-01T12:11:32+01:00</updated>
<published>2015-05-01T12:11:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127950#p127950</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127950#p127950"/>
<title type="html"><![CDATA[Re: Konwersja-rzutowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127950#p127950"><![CDATA[
<div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />alarm_czas = (uint16_t)datetime.hh ...<br /></div><br /><br />A po co to rzutowanie ? nie jest tu potrzebne bo nastąpi niejawne rzutowanie, to tak jakbyś zrobił np coś takiego:<br /><br />[syntax=c]uint8_t a,b;<br />uint16_t c;<br /><br />c = a + b;[/syntax]<br /><br />tu nie trza żadnego rzutowania <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> załatwia to sam kompilator niejawnie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 maja 2015, o 12:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2015-05-01T09:58:07+01:00</updated>
<published>2015-05-01T09:58:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127931#p127931</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127931#p127931"/>
<title type="html"><![CDATA[Konwersja-rzutowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11555&amp;p=127931#p127931"><![CDATA[
Witam.<br />Do tej pory raczej nie używałem rzutowania na inny typ i chciałbym się upewnić, czy dobrze to robię.<br /><br />Tutaj mam zmienne z biblioteki do DS3231 datetime.hh oraz datetime.mm, czyli godzinę i minuty:<br />[syntax=c]typedef union{<br />uint8_t bytes&#91;7&#93;;<br />struct{<br />uint8_t ss;<br />uint8_t mm;<br />uint8_t hh;<br />uint8_t dayofwek;<br />uint8_t day;<br />uint8_t month;<br />uint8_t year;<br />};<br />}TDATETIME;<br />TDATETIME datetime;[/syntax]<br /><br /> W pliku main.c definiuję zmienną <br />[syntax=c]uint16_t alarm_czas;  //zmienna przetrzymuje godzinę i minuty w liczbie 16-bitowej[/syntax]<br /><br />I w końcu sedno sprawy, w pętli głównej przepisuję aktualny czas do tej zmiennej, aby porównywać ustawione<br />alarmy, które również zapisuję do zmiennych 16-bitowych:<br />[syntax=c]alarm_czas = (uint16_t)datetime.hh * 100 + datetime.mm;[/syntax]<br /><br />  Wszystko działa jak należy, ale czy jest poprawnie zapisane i czy w pewnych sytuacjach o których nie pomyślałem<br />nie nastąpi jakiś błąd? Czy zmienną datetime.mm również należy rzutować?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 1 maja 2015, o 09:58</p><hr />
]]></content>
</entry>
</feed>