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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-11-17T16:56:23+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=21576&amp;mode</id>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-11-17T16:56:23+01:00</updated>
<published>2018-11-17T16:56:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213817#p213817</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213817#p213817"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213817#p213817"><![CDATA[
jeżeli zrezygnujesz z nieparzystych sekund, to zmieścisz się w 2x8bit. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />fakt że dokładność spadnie przy zapisie 0/-1sek. :/ srednio -0,5s. <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=11549">Daro69</a> — 17 lis 2018, o 16:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grzeniu 73]]></name></author>
<updated>2018-11-17T15:09:53+01:00</updated>
<published>2018-11-17T15:09:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213812#p213812</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213812#p213812"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213812#p213812"><![CDATA[
&quot;To też jest jakieś wyjście, zakładając że w tej dodatkowej zmiennej będziesz miał spakowane bity AM/PM z kilku zmiennych, jednak podobnie jak napisałem wyżej, skomplikuje to nieco kod zapisu/odczytu, bo będziesz musiał odczytać/zapisać najpierw 12-godzinną zmienną, po czym znaleźć i odczytać/zapisać odpowiedni bit z odpowiedniego bajtu zawierającego bity określające AM/PM. &quot;<br />Tak myślałem o wykorzystaniu wszystkich bitow w bajcie wtedy nie marnuje sie miejsca. W bascom zapis i odczyt konkretnego bitu jest bardzo prosty, zresztą jak wszystko inne <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Policzyłem sobie wszystko ,flag_bit  poupychałem sobie w Byte i wystarczy mi miejsca na zapis Long , zrobiłem to w najprostszy sposób czyli mnożne to sobie żeby uzyskać czas w sekundach. Zmieszczę sie w 1KB eeprom.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1519">grzeniu 73</a> — 17 lis 2018, o 15:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-11-17T10:28:56+01:00</updated>
<published>2018-11-17T10:28:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213808#p213808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213808#p213808"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213808#p213808"><![CDATA[
Niestety prawa arytmetyki binarnej są nieubłagane. W celu uzyskania 84600 unikalnych kombinacji bitów trzeba użyć minimum 17 bitów i żadne sztuczki tu nie pomogą. Jako że mikrokontroler i jego pamięci wewnętrzne operują ośmiobitowymi bajtami, trzeba użyć minimum 3 bajty, czyli 24 bity, tracąc po 7 bitów (prawie 30%) na jedną zmienną. Jednym ze sposobów na zaoszczędzenie miejsca w pamięci jest wykorzystanie niewykorzystanych bitów jednej zmiennej do zapamiętania fragmentu kolejnej zmiennej. Oczywiście jest to wykonalne, ale nieco komplikuje kod związany z zapisem i odczytem (jego napisanie i przetestowanie wymaga więcej czasu, a dodatkowo zwiększa ryzyko wystąpienia błędów) oraz wydłuża czas dostępu do takich zmiennych (przed zapisem jak i po odczycie danych z pamięci bity trzeba odpowiednio wypozycjonować). Nie wiem, czy przy obecnych cenach mikrokontrolerów warto się z tym bawić (zamiast użyć uc z odpowiednią pojemnością pamięci). Trzeba by było to sobie dokładnie przekalkulować biorąc pod uwagę wszystkie plusy i minusy, uwzględniając oczywiście rozmiar serii, bo nawet mały zysk jednostkowy przy dużej ilości może okazać się opłacalny.<br /><br /><div class="quotetitle">grzeniu 73 napisał(a):</div><div class="quotecontent"><br />Jedak można zapisać sobie jakaś zmienna dodatkowa i w niej ustawiać jeden bit żeby zaznaczyć rano czy popołudniu. Przy takim podejściu można zaoszczędzić,bo zliczamy tylko do 12:00 prawie polowe eeproma i w miarę prosty zapis, odczyt.<br /></div><br />To też jest jakieś wyjście, zakładając że w tej dodatkowej zmiennej będziesz miał spakowane bity AM/PM z kilku zmiennych, jednak podobnie jak napisałem wyżej, skomplikuje to nieco kod zapisu/odczytu, bo będziesz musiał odczytać/zapisać najpierw 12-godzinną zmienną, po czym znaleźć i odczytać/zapisać odpowiedni bit z odpowiedniego bajtu zawierającego bity określające AM/PM. Czyli również oszczędność pojemności kosztem komplikacji kodu i czasu dostępu do zmiennych, choć może dla Ciebie to rozwiązanie będzie czytelniejsze.<br /><br /><div class="quotetitle">grzeniu 73 napisał(a):</div><div class="quotecontent"><br />W przeciwnym wypadku można zapisać po prostu trzy zmienne byte z H,M,S<br /></div><br />... nadal jednak korzystasz tylko z 17 bitów (5 bitów godziny, 6 bitów minuty i 6 bitów sekundy) zużywając 24 bity w pamięci, chociaż przy okazji upraszcza to zapis i odczyt. Chyba najprostsze byłoby użycie 32-bitowego typu podstawowego (w 8bit AVR jest to typ <strong><em>long</em></strong>), jednak tu marnotrawstwo pamięci wyniesie ok. 47%.<br /><br />Podsumowując moim zdaniem <strong>najbardziej optymalnie</strong> będzie jednak zapisywać to za pomocą trzech bajtów: godziny minuty i sekundy, a w razie potrzeby zmienić mikrokontroler na taki z większą pojemnością EEPROM (maksymalna dostępna w 8bit AVR to chyba 4096 bajtów, czyli 1024 zmiennych <strong><em>long</em></strong>).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 17 lis 2018, o 10:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tprzemko]]></name></author>
<updated>2018-11-17T09:50:40+01:00</updated>
<published>2018-11-17T09:50:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213806#p213806</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213806#p213806"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213806#p213806"><![CDATA[
Witam<br /><div class="quotetitle">tprzemko napisał(a):</div><div class="quotecontent"><br />Witam<br />Do zapisu 12h wystarczy 43200 (A8C0). Od godziny 12 dodawaj jakąś wartość np. 0x1000. Jeśli liczba większa od A8C0 + Twoja stała, odejmujesz stałą i masz czas <br />Pozdrawiam<br /></div><br /><br />Nie pracuj z tym formatem, jego używaj tylko do zapisu w pamięci eeprom. Napisz funkcję która przy zapisie danych robi odpowiednią konwersje godziny do tak &quot;spakowanego&quot; zapisu i tak samo do odczytu. <br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4743">tprzemko</a> — 17 lis 2018, o 09:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grzeniu 73]]></name></author>
<updated>2018-11-17T08:32:19+01:00</updated>
<published>2018-11-17T08:32:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213800#p213800</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213800#p213800"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213800#p213800"><![CDATA[
<div class="quotetitle">tprzemko napisał(a):</div><div class="quotecontent"><br />Witam<br />Do zapisu 12h wystarczy 43200 (A8C0). Od godziny 12 dodawaj jakąś wartość np. 0x1000. Jeśli liczba większa od A8C0 + Twoja stała, odejmujesz stałą i masz czas <br />Pozdrawiam<br /></div><br />Niestety to sie nie sprawdzi ,bo jak zacznie liczyć po południu od nowa od 1 to dodanie stałej nic nie da ,bo wcześniej czy później i tak sie spotka z wcześniejszym zapisem chyba ze stała byłaby większa niz 43200. Jedak można zapisać sobie jakaś zmienna dodatkowa i w niej ustawiać jeden bit żeby zaznaczyć rano czy popołudniu. Przy takim podejściu można zaoszczędzić,bo zliczamy tylko do 12:00 prawie polowe eeproma i w miarę prosty zapis, odczyt.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1519">grzeniu 73</a> — 17 lis 2018, o 08:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grzeniu 73]]></name></author>
<updated>2018-11-16T21:55:55+01:00</updated>
<published>2018-11-16T21:55:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213796#p213796</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213796#p213796"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213796#p213796"><![CDATA[
<div class="quotetitle">tprzemko napisał(a):</div><div class="quotecontent"><br />Witam<br />Do zapisu 12h wystarczy 43200 (A8C0). Od godziny 12 dodawaj jakąś wartość np. 0x1000. Jeśli liczba większa od A8C0 + Twoja stała, odejmujesz stałą i masz czas <br />Pozdrawiam<br /></div><br /><br />A sprawdzę sobie. Wypadało,by tez żeby ta liczba obliczona byla caly czas większa,bo wtedy można zastosować przy porównaniu &gt;= i przy starcie systemu od razu procek wie jak ustawić przekaźnik. W przeciwnym wypadku można zapisać po prostu trzy zmienne byte z H,M,S i po prostu porównywać. D<br /><br /> Może coś z tego wyjdzie. To nie jest produkcja seryjna ,a parę sztuk ,bardziej o to chodzi,ze niby takie proste,a ciężko na to wpaść <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. <br />Dzięki za podpowiedzi . Szukałem sporo w necie i nie było ani jednego tematu na ten temat <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />,az dziw ze nikt tego nie potrzebował, albo nie miał z tym problemu <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=1519">grzeniu 73</a> — 16 lis 2018, o 21:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tprzemko]]></name></author>
<updated>2018-11-16T21:13:43+01:00</updated>
<published>2018-11-16T21:13:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213794#p213794</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213794#p213794"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213794#p213794"><![CDATA[
Witam<br />Do zapisu 12h wystarczy 43200 (A8C0). Od godziny 12 dodawaj jakąś wartość np. 0x1000. Jeśli liczba większa od A8C0 + Twoja stała, odejmujesz stałą i masz czas <br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4743">tprzemko</a> — 16 lis 2018, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-11-16T20:46:05+01:00</updated>
<published>2018-11-16T20:46:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213793#p213793</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213793#p213793"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213793#p213793"><![CDATA[
Zakładając, że wystarczy dobowy zakres zmiennych (86400 sekund), na zapisanie jednej zmiennej potrzebnych jest 17 bitów.<br />Gdyby te dane nieco ścisnąć, na zapisanie 130 zmiennych potrzebnych by było:<br />( 130 * 17 ) / 8 = 276,25 bajtów (czyli należy przyjąć 277)<br /><br />Oczywiście procedury odczytu/zapisu takich skompresowanych danych byłyby nieco bardziej skomplikowane i ich wykonanie trwałoby na pewno nieco dłużej, niż w przypadku zwykłych zmiennych czterobajtowych.<br /><br />Nie wiem, czy można i w jaki sposób napisać to w Bascomie, ale w C lub ASM jest to na pewno możliwe.<br /><br />Nie wiem jednak, czy gra jest warta świeczki (czyli wysiłek wart zysku), bo różnica w cenie mikrokontrolera o odpowiedniej pojemności EEPROM nie będzie raczej porażająco duża (chyba, że chodzi o produkcję wielkoseryjną).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 16 lis 2018, o 20:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grzeniu 73]]></name></author>
<updated>2018-11-16T18:58:14+01:00</updated>
<published>2018-11-16T18:58:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213790#p213790</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213790#p213790"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213790#p213790"><![CDATA[
No z BDC wyjdą 3 byte jeśli dobrze to ogarniam. Niestety musza byc &quot;cale &quot; sekundy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> policzylem sobie jak zajme 4 byte na jeden &quot;czas&quot; to wychodzi trochę ponad 500 byte  w eeprom plus coś jeszcze to w mega 324 powinienem sie zmieścić ona chyba ma 1Kb.<br />No cóż zostawię przeliczanie na sekundy i będę zapisywał jako LONG. To chyba najbardziej pewny sposób do porównywania później.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1519">grzeniu 73</a> — 16 lis 2018, o 18:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-11-16T18:50:44+01:00</updated>
<published>2018-11-16T18:50:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213789#p213789</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213789#p213789"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213789#p213789"><![CDATA[
jak by nie było, to masz 86400 kombinacji dziennie do zapisu w najbardziej oszczędnym sposobie zapisu.<br />sek*min*godz.  to przekracza pamięć 2 bajtów.<br />!! a może wystarczą dziesiątki sekund, a jednostki że tak napiszę _ ' z marszu zerować zawsze'.<br />wtedy ilość zajętości bitów wystarczy uint16_t lub 2x uint8_t. (dwa bajty), ?<br />taka myśl. <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=11549">Daro69</a> — 16 lis 2018, o 18:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-11-16T17:55:15+01:00</updated>
<published>2018-11-16T17:55:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213786#p213786</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213786#p213786"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213786#p213786"><![CDATA[
<div class="quotetitle">grzeniu 73 napisał(a):</div><div class="quotecontent"><br />O kurcze zealota do rana tego nie rozkoduje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . To dla mnie magiczny jezyk <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />Ależ Kolega się myli <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Też mi się wydaje zwykle, że to jakieś magiczne sprawy, ale jak człowiek, szczególnie ten zdesperowany, przysiądzie i poświęci czas to załapie, szkoda, że zwykle tego czasu nie ma <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=16487">Zealota</a> — 16 lis 2018, o 17:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grzeniu 73]]></name></author>
<updated>2018-11-16T17:42:07+01:00</updated>
<published>2018-11-16T17:42:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213784#p213784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213784#p213784"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213784#p213784"><![CDATA[
Na apce w telefonie ustawiam sobie czasy włączenia i wyłączenia i wysyłam to do atmegi ta musi to zapisac do eeprom i później już proste porównuje ten czas ustawiony z aktualnym i ustawiam flagę 1 lub 0<br />Bardzo ładnie to działa gdy sie przeliczy to na sekundy ale to sa 4 bajty. A wszystkiego razem mam na razie 130 zmiennych do zapisu. Jak nie znajdę lepszego sposobu to dam większy procek żeby wystarczyło eeproma.<br />O kurcze zealota do rana tego nie rozkoduje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . To dla mnie magiczny jezyk <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Ale napotkałem sie na  &quot;timestamp&quot; jak szukałem w necie rozwiązań ,ale w sumie w miam przypadku to to samo co przeliczenie na sekundy.<br />Co do BCD to nie pomyślałem o tym zaraz pomyśle nad tym<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1519">grzeniu 73</a> — 16 lis 2018, o 17:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-11-16T17:33:35+01:00</updated>
<published>2018-11-16T17:33:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213783#p213783</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213783#p213783"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213783#p213783"><![CDATA[
<div class="quotetitle">grzeniu 73 napisał(a):</div><div class="quotecontent"><br />Witam!<br />Od paru dni próbuje znaleźć jakieś rozsądne rozwiązanie zapisu czasu(godziny ) Jako jedna liczbę dwubajtowa.<br />Godziny i minuty to żaden problem, bo wystarczy godziny * 60 +minuty, ale ja mam jeszcze sekundy. I poległem na tym. Mozna policzyć, która to sekunda dnia ale to juz wyjdzie po za dwa bajty. Może ktoś przerabiał juz temat i podpowie cos.<br /></div><br />Powinieneś zainteresować się pojęciem &quot;timestamp&quot;.<br />Kłopot polega na tym, że potrzeba do tego 4 bajtów (32bit) i wtedy kodujesz nie tylko minuty czy godziny, ale również datę od 1 styczna 1970. Nie pamiętam czy w toolchainie do AVR są odpowiednie funkcje, ale do takich STM32 jest dostarczana biblioteka &lt;time.h&gt;, gdzie można znaleźć struktury i funkcje do konwersji z i do formatu timestamp.<br />Jeśli zdefiniujemy i zainicjujemy sobie sobie jakąś liczbę 32 bit:<br />[syntax=c]uint32_t timeStamp = 0;[/syntax]<br />to będzie ona oznaczać datę i godzinę 1 stycznia 1970, 00:00:00. Każde zwiększenie jej wartości o 1, to przypływ czasu o 1 s. Zatem 1 stycznia 2019 roku, o godzinie 00:00:00 odpowiada timeStamp = 1546300800.<br />Można korzystać tez z konwertera online:<br /><!-- m --><a class="postlink" href="https://www.unixtimestamp.com/index.php" >https://www.unixtimestamp.com/index.php</a><!-- m --><br /><br />Ja korzystam z tego np do wszelkiej maści zegarków.<br />Nie wiem jak jesteś zaawansowany, ale może pomoże Ci taki przykład kodu:<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 dayofweek;<br />uint8_t day;<br />uint8_t month;<br />uint8_t year;<br />};<br />} T_DATETIME;<br />const T_DATETIME defaultLocalTimestamp = { {0, 0, 0, 1, 1, 1, 18} };<br /><br />void RTC_Get_Time( uint8_t *hh, uint8_t *mm, uint8_t *ss ) {<br />struct tm ts;<br />time_t timeStamp = Get_Timestamp();<br /><br />localtime_r( &amp;timeStamp, &amp;ts );<br /><br />*hh = ts.tm_hour;<br />*mm = ts.tm_min;<br />*ss = ts.tm_sec;<br />}<br />void RTC_Get_Date( uint8_t *year, uint8_t *month, uint8_t *day, uint8_t *dayOfWeek ) {<br />struct tm ts;<br />time_t timeStamp = Get_Timestamp();<br /><br />localtime_r( &amp;timeStamp, &amp;ts );<br /><br />*dayOfWeek = ts.tm_wday;<br />*day = ts.tm_mday;<br />*month = ts.tm_mon;<br />*year = ts.tm_year;<br />}<br />void RTC_Set_Time( uint8_t hh, uint8_t mm, uint8_t ss ) {<br />struct tm ts;<br /><br />setDateTime.hh = hh;<br />setDateTime.mm = mm;<br />setDateTime.ss = ss;<br />}<br />void RTC_Set_Date( uint8_t year, uint8_t month, uint8_t day, uint8_t dayOfWeek ) {<br />struct tm ts;<br /><br />setDateTime.year= year;<br />setDateTime.month= month;<br />setDateTime.day= day;<br />setDateTime.dayofweek= dayOfWeek;<br />}<br />void RTC_Set_DefaultTimeDate( void ) {<br />struct tm ts;<br />time_t timeStamp;<br />ts.tm_sec = 0;<br />ts.tm_min = 10;<br />ts.tm_hour = 13;<br />ts.tm_mday = 1;<br />ts.tm_mon = 1;<br />ts.tm_year = 18;<br />timeStamp = mktime( &amp;ts );<br />}<br />T_DATETIME * RTC_Return_Time( void ) {<br />struct tm ts;<br />static T_DATETIME dateTime;<br /><br />time_t timestamp = Get_Timestamp();<br />localtime_r( &amp;timestamp, &amp;ts );<br /><br /> dateTime.ss = ts.tm_sec;<br /> dateTime.mm = ts.tm_min;<br /> dateTime.hh = ts.tm_hour;<br /> return &amp;dateTime;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 16 lis 2018, o 17:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-11-16T17:07:59+01:00</updated>
<published>2018-11-16T17:07:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213781#p213781</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213781#p213781"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213781#p213781"><![CDATA[
Do liczenia minut i godzin zapewne wykorzystujesz jakiś timer, który i tak drobi ten czas, więc wykorzystaj ten fakt i &quot;ukradnij&quot; z niego sekundy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Przeliczenie tego to prosta matematyka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 16 lis 2018, o 17:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-11-16T15:46:23+01:00</updated>
<published>2018-11-16T15:46:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213778#p213778</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213778#p213778"/>
<title type="html"><![CDATA[Re: Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213778#p213778"><![CDATA[
nie ma sposobu, (nie znam).<br />wypada zwiększyć liczbę na więcej bitową lub łączyć bajty. Same sekundy(60) to 6 bitów, minuty to kolejne 6, godziny zmieścisz w kolejnych 5, to już 17-bit. a gdzie jeszcze dni...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 16 lis 2018, o 15:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grzeniu 73]]></name></author>
<updated>2018-11-16T14:57:06+01:00</updated>
<published>2018-11-16T14:57:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213776#p213776</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213776#p213776"/>
<title type="html"><![CDATA[Zapis czasu jako jedna liczbe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21576&amp;p=213776#p213776"><![CDATA[
Witam!<br />Od paru dni próbuje znaleźć jakieś rozsądne rozwiązanie zapisu czasu(godziny ) Jako jedna liczbę dwubajtowa.<br />Godziny i minuty to żaden problem, bo wystarczy godziny * 60 +minuty, ale ja mam jeszcze sekundy. I poległem na tym. Mozna policzyć która to sekunda dnia ale to juz wyjdzie po za dwa bajty. Może ktoś przerabiał juz temat i podpowie cos.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1519">grzeniu 73</a> — 16 lis 2018, o 14:57</p><hr />
]]></content>
</entry>
</feed>