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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-08-08T13:59:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22254&amp;mode</id>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T13:59:37+01:00</updated>
<published>2019-08-08T13:59:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221109#p221109</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221109#p221109"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221109#p221109"><![CDATA[
dziękuję za pomoc. zasiadam do lektury:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 8 sie 2019, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T13:40:39+01:00</updated>
<published>2019-08-08T13:40:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221107#p221107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221107#p221107"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221107#p221107"><![CDATA[
nie wiem czy dobrze myśłę, ale łądowarkę/przetworniczkę  aku można by chyba zrobić po za zegarkiem, wtedy tego układu przetworniczki nie musiałbym lutować na płytce zegarka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 8 sie 2019, o 13:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T13:34:11+01:00</updated>
<published>2019-08-08T13:34:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221105#p221105</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221105#p221105"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221105#p221105"><![CDATA[
myślałem o układzie rtc, ale on jest sporych rozmiarów. Z układu rtc myślałem,ąby tylko pobierać przerwanie co sekundę, bo z tego co pamiętam jest ten układ bardzo dokłądny i mało podatny na temperaturę. Dzięuję za te cenne podpowiedzi. Bardzo się przydają <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <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=14082">wojciechgorzolka</a> — 8 sie 2019, o 13:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T13:18:50+01:00</updated>
<published>2019-08-08T13:18:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221103#p221103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221103#p221103"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221103#p221103"><![CDATA[
znalazłęm taki :<br />Oryginalny akumulator - bateria do latarek JETBEAM MINI-1, MINI-2 o pojemności 70mAh 3,7V kompatybilny z latarkami MECARMY Illuminex<br /><br />Specyfikacja techniczna:<br /><br />Typ: Akumulator litowo-jono<br />Napięcie(V): 3.7V <br />Pojemność: 70mAh<br />Wymiary: 10mm x 18mm<br />Zabezpieczenie PCB: brak<br />Przeznaczenie: Latarki LED<br /><br />wymiary ma całkiem ok. Nie wiem czy pojemność będzie odpowiednia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jeśli wytrzyma 1-2 dni , to i tak będzie dobrze. I tak jesteśmy nauczeni,że komórki ładujemy codziennie <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=14082">wojciechgorzolka</a> — 8 sie 2019, o 13:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T13:09:13+01:00</updated>
<published>2019-08-08T13:09:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221101#p221101</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221101#p221101"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221101#p221101"><![CDATA[
jest mała, ale do mojego zegarka jest zbyt gigantyczna <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=14082">wojciechgorzolka</a> — 8 sie 2019, o 13:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T12:55:41+01:00</updated>
<published>2019-08-08T12:55:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221099#p221099</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221099#p221099"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221099#p221099"><![CDATA[
w sumie masz rację, tylko zależy mi, żdeby ten akumulator miał małe wymiary i żeby b ył w kształcie cylindra, czyli okragły. hmm... a poza tym nie mam w ogóle doświadczenia z akumulatorami o jakich piszesz. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> nie wiem jak je ładować itp. Jeśłi zastosuję aku, to zaoszczędzę pieniądzę na ciągłym kupowaniu baterii. Tak więc chyba jeszcze przemyślę sprawę zasilania. Poszukam poradników na temat łądowania i korzystania z aku. Chyba nawet w poradniku Pana Mirka odnośnie  przetworniczki liona była mowa o ładowaniu aku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 8 sie 2019, o 12:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T12:28:14+01:00</updated>
<published>2019-08-08T12:28:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221097#p221097</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221097#p221097"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221097#p221097"><![CDATA[
W opisie sprzedawcy jest informacja,że ten moduł pobiera 350uA. zegarek mam zamiar zasilać z baterii A27 12V. niestety jeszcze nie wiem jak dokładnie policzyć na jak długo wystarczy mi bateria. To wszystko zależy jak często będę włączał segmenty. ciężko ocenić. Myślę,że tego dowiem się dopiero po skończeniu całęgo zegarka. Domyślam się, że zasilanie długo nie wytrzyma, ale nie o to w tym projekcie chodzi. Chodzi bardziej o naukę programowania i satysfakcja z ukończonego zegarka <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=14082">wojciechgorzolka</a> — 8 sie 2019, o 12:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-08T09:21:06+01:00</updated>
<published>2019-08-08T09:21:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221093#p221093</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221093#p221093"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=221093#p221093"><![CDATA[
Hej. Dla ładu i porządku wrzycam jeszcze raz pierwszy film z działania zegarka na zestawie ATB, oraz drugi film, w którym wykorzystałem alcelerometr analogowy GY-61. Zostanie on urzyty w moim projekcie do chwilowego włączania zegarka na ręce. Zastąpię nim wersję kulki, która miała włączać na kilka sekund wyświetlacz siedmiosegmentowy.<br />Kod który wykorzystałem do oprogramowania modułu alcelerometru to jest  prosty fragment kodu z BB dotyczący przetwornika ADC. Napięcie odniesienia to 5V. Wydaje mi się,że w tym projekcie nie ma potrzeby stosowania niższego napięcia odniesienia, ponieważ dokładność pomiarów z napięcia VCC w zupełności mi wystarczy (tak mi się wydaje).<br />Mam nadzieję,żę toopanuję.<br /><br />działanie zegarka<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 />działanie akcelerometru<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 /><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=14082">wojciechgorzolka</a> — 8 sie 2019, o 09:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-05T10:59:48+01:00</updated>
<published>2019-08-05T10:59:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220995#p220995</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220995#p220995"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220995#p220995"><![CDATA[
Darek jeszcze trochę. Widzę w internetach,że jest jeszcze coś takiego jak akcelerometr. Może uda mi się go zamienić z kulką zmieniającą zmienne do włączania wyświetlacza. Projekt już trochę trwa, ale cały czas nad nim pracuję ( w wolnych chwilach) <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=14082">wojciechgorzolka</a> — 5 sie 2019, o 10:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2019-08-03T22:59:14+01:00</updated>
<published>2019-08-03T22:59:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220957#p220957</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220957#p220957"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220957#p220957"><![CDATA[
Ło Panie, <br />aleś rozciągnął ten kod, na całą stronę. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />mienią mi się w oczach zmienne - tykanie1, tykanie2, tykanie3......zmienna1, zmienna2, zmienna3....flaga1, flaga2, flaga3...... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Ciekawy jestem efektu finalnego - (na ręku). <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> — 3 sie 2019, o 22:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-08-03T10:23:33+01:00</updated>
<published>2019-08-03T10:23:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220931#p220931</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220931#p220931"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=220931#p220931"><![CDATA[
<a href="https://youtu.be/5sXX5Ll9sBQ"  class="postlink">https://youtu.be/5sXX5Ll9sBQ</a><br />Cześć. kolejna część mojego projektu zegarka na rękę.<br />Pierwszy raz publikuję film, więc nie wiem czy sam film będzie dobrze dodany.<br /><br />Zegarek niejako działa w tle. czyli wszystkie segmenty są wygaszone. Dwa pierwsze klawisze będą zamienione stykami, które będą zwierane metalową kulką. Kulka będzie miałą za zadanie zmienić stan dwóch zmiennych z 0 na 1(tą część kodu muszę jeszcze mocno dopracować). Zmiana wartośći zmiennych powinna nastąpić po skierowaniu zegarka przed twarz, oraz przy delikatnym obrocie nadgarstka. Po tej czynności wyświetlacz włączy się na kilka sekund, po czy wyłączy się. <br />Takie są założena, a czy tak będzie faktycznie, to zobaczę jak zaprojektuję płytkę PCB <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />:):)<br /><br />Ustawianie zegarka odbywa się tylko dwoma klawiszami na zestawie atb i tak będzie też w finalnej wersji.  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />A o to wstępny kod. Dodam tylko ,że jeszcze nie jest napisany zgodnie z zasadami. Ale na szybko chcialem się pochwalić działającym kodem. w najbliższym czasie wszystkie linijki wyrównam i dodam komentarze. TO jest mój pierwszy działający kod z wyświetlaczem, timerami bez delaya. Sporo tu jeszcze pozmieniam, poniewż wprowadzę funkcje dla lepszej czytelności kodu, oraz wskaźniki  aby program płynniej działał. <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br /><br /><br />#define KLAWISZ_1 (1&lt;&lt;PB0)//KLAWISZE DO USTWIANIA ZEGRAKA<br />#define KLAWISZ_2 (1&lt;&lt;PB1)//KLAWISZE DO USTAWIANIA ZEGARKA<br />#define STYK_1 (1&lt;&lt;PB6)//STYK DO KULKI WŁĄCZAJĄCEJ WYŚWIETLACZ<br />#define STYK_2 (1&lt;&lt;PB7)//STYK DO KULKI WŁĄCZAJĄCEJ WYŚWIETLACZ<br /><br />#define KEY_DOWN_1 !(PINB &amp; STYK_1)//makro sprawdzające czy jest stan niski<br />#define KEY_DOWN_2 !(PINB &amp; STYK_2)//makro sprawdzające czy jest stan niski<br /><br />#define LED_DATA PORTC //port z podłączonymi segmentami<br />#define LED_DATA_DIR DDRC<br />#define ANODY_PORT PORTA<br />#define ANODY_DIR DDRA<br /><br />#define CA1 (1&lt;&lt;PA0) //CA1 oznacza bit nr 0 portu B<br />#define CA2 (1&lt;&lt;PA1) //CA1 oznacza bit nr 1 portu B<br />#define CA3 (1&lt;&lt;PA2) //CA1 oznacza bit nr 2 portu B<br />#define CA4 (1&lt;&lt;PA3) //CA1 oznacza bit nr 3 portu B<br /><br />//definicje bitów dla poszczególnych segmentów LED<br />#define SEG_A (1&lt;&lt;0)<br />#define SEG_B (1&lt;&lt;1)<br />#define SEG_C (1&lt;&lt;2)<br />#define SEG_D (1&lt;&lt;3)<br />#define SEG_E (1&lt;&lt;4)<br />#define SEG_F (1&lt;&lt;5)<br />#define SEG_G (1&lt;&lt;6)<br />#define SEG_DP (1&lt;&lt;7)<br /><br />#define LED_PIN (1&lt;&lt;PD0) //definicja pinu , do którego podłączona jest dioda<br />#define LED_TOG PORTD ^= LED_PIN //makrodefinicja- zmiana stanu diody<br />#define LED_PIN_ON PORTD &amp;= ~LED_PIN  //włączenie diody LED<br />#define LED_PIN_OFF PORTD |= LED_PIN  //wyłączenie diody LED<br /><br />#define LED_PIN1 (1&lt;&lt;PD1) //definicja pinu , do którego podłączona jest dioda<br />#define LED_TOG1 PORTD ^= LED_PIN1 //makrodefinicja- zmiana stanu diody<br />#define LED_PIN_ON1 PORTD &amp;= ~LED_PIN1  //włączenie diody LED<br />#define LED_PIN_OFF1 PORTD |= LED_PIN1  //wyłączenie diody LED<br /><br />#define LED_PIN2 (1&lt;&lt;PD2) //definicja pinu , do którego podłączona jest dioda<br />#define LED_TOG2 PORTD ^= LED_PIN2 //makrodefinicja- zmiana stanu diody<br />#define LED_PIN_ON2 PORTD &amp;= ~LED_PIN2  //włączenie diody LED<br />#define LED_PIN_OFF2 PORTD |= LED_PIN2 //wyłączenie diody LED<br /><br />#define LED_PIN3 (1&lt;&lt;PD3) //definicja pinu , do którego podłączona jest dioda<br />#define LED_TOG3 PORTD ^= LED_PIN3 //makrodefinicja- zmiana stanu diody                     dioda testowa od kulki<br />#define LED_PIN_ON3 PORTD &amp;= ~LED_PIN3  //włączenie diody LED<br />#define LED_PIN_OFF3 PORTD |= LED_PIN3 //wyłączenie diody LED<br /><br />volatile uint16_t Timer1 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer2 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer3 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer4 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer5 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer6 ;       /* timery programowe 200Hz */// timer testowy kulki<br />volatile uint16_t Timer7 ; //przerwa między wyświetlanymi segmentami<br /><br />volatile uint8_t cy1;<br />volatile uint8_t cy2;<br />volatile uint8_t cy3;<br />volatile uint8_t cy4;<br /><br />void aktualne_ustawienia (void);<br />void ustawienia_wartosci_cyfr (void);<br />void zegarek (void);<br />void wlaczanie_segmentow (void);<br /><br />uint8_t kokos=0;<br />uint8_t kolejna_anoda=0;<br /><br />uint8_t zmienna1;<br />uint8_t zmienna2;<br />uint8_t zmienna3;<br />uint8_t zmienna4;<br /><br />uint8_t tykanie1;<br />uint8_t tykanie2;<br />uint8_t tykanie3;<br />uint8_t tykanie4;<br />//uint8_t tykanie5;<br /><br />uint8_t pauza1=0;<br />uint8_t pauza2=0;<br />uint8_t pauza3=0;<br /><br />int16_t kulka; //zmienna odpowiedzialna za czas w którym jest wyświetlona godzina<br />uint8_t kulka1;<br />uint8_t kolejny=0;<br /><br />uint8_t key_lock1;<br />uint8_t key_lock2;<br />uint8_t key_lock3; //zmienna od kulki GÓRNA<br />uint8_t key_lock4; //zmienna od kulki DOLNA<br /><br />uint8_t flaga1;<br />uint8_t flaga2;<br />uint8_t flaga3;//zmienna od kulki GÓRNA<br />uint8_t flaga4;//zmienna od kulki DOLNA<br />uint8_t flaga5=0;<br />uint8_t flaga6=0;<br />uint8_t kulka1; //zmienna dotycząca włączającej kulki<br /><br />const uint8_t cyfry&#91;11&#93; PROGMEM = {<br /><br />        ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),                 // 0<br />        ~(SEG_B|SEG_C),                                                                 // 1<br />        ~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),                               // 2<br />        ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),                               // 3<br />        ~(SEG_B|SEG_C|SEG_F|SEG_G),                                             // 4<br />        ~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),                               // 5<br />        ~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),                 // 6<br />        ~(SEG_A|SEG_B|SEG_C|SEG_F),                                             // 7<br />        ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),   // 8<br />        ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),                 // 9<br />        0xFF,                                                                                   // NIC (puste miejsce)<br />};<br /><br /><br />int main( void ) {<br /><br />    DDRB &amp;= ~(KLAWISZ_1);<br />    PORTB |= KLAWISZ_1;<br />    DDRB &amp;= ~(KLAWISZ_2);<br />    PORTB |= KLAWISZ_2;<br /><br />        DDRB &amp;= ~(STYK_1);<br />        PORTB |= STYK_1;<br /><br />        DDRB &amp;= ~(STYK_2);<br />    PORTB |= STYK_2;<br /><br />        DDRD |= LED_PIN; //kierunek pinu PC7 - wyjściowy<br />        PORTD |= LED_PIN; //wyłączenie diody LED<br /><br />        DDRD |= LED_PIN1; //kierunek pinu PC7 - wyjściowy<br />        PORTD |= LED_PIN1; //wyłączenie diody LED<br /><br />        DDRD |= LED_PIN2; //kierunek pinu PC7 - wyjściowy<br />        PORTD |= LED_PIN2; //wyłączenie diody LED<br /><br />        DDRD |= LED_PIN3; //kierunek pinu PC7 - wyjściowy             dioda testowa  od kulki<br />        PORTD |= LED_PIN3; //wyłączenie diody LED<br /><br />        LED_DATA_DIR = 0xFF; //wszystie piny portu A jako wyjścia - KATODY<br />        LED_DATA = 0xFF; // wygaszenie wszystkich katod-stan wysoki<br />        // 4piny portu B jako WYJŚCIA (anody)<br />        ANODY_DIR |= CA1 | CA2 | CA3 | CA4;<br />        //wygaszenie wszystkich wyświetlaczy (anod)<br />        ANODY_PORT |= CA1 | CA2 | CA3 | CA4;<br /><br /><br /><br />          LED_TOG2;<br />          _delay_ms(100);<br />          LED_TOG2;<br />          _delay_ms(100);<br />          LED_TOG2;<br />          _delay_ms(100);<br />          LED_TOG2;<br /><br />    /*ustawienie timer0*/<br />    TCCR0 |= ( 1&lt;&lt;WGM01 );  // TRYB CTC<br />    TCCR0 |= ( 1&lt;&lt;CS02 );   //PRESKALER = 256<br />    OCR0 = 215;                     // PODZIAŁ PRZEZ 215 (REJ. PORÓWNANIA)<br />    TIMSK |= ( 1&lt;&lt;OCIE0 );  //ZEZWOLENIE NA PRZERWANIE COMPARE MATCH<br /><br /><br /><br /><br /><br /><br />    sei();           /*globalne zezwolenie na przerwania*/<br />    _delay_ms(200);<br /><br />    while ( 1 ) {<br /><br /><br /><br /><br />        if( KEY_DOWN_1){// styk numer 1<br />                LED_PIN_ON2;<br />                flaga5=1;<br /><br />        }<br />        else{<br />                LED_PIN_OFF2;<br /><br />        }<br />        //---------------------------------------<br />        if( KEY_DOWN_2){// styk numer 2<br />                LED_PIN_ON1;<br />                flaga6=1;<br /><br /><br />        }<br />        else{<br />                LED_PIN_OFF1;<br /><br />        }<br />        //-------------------------------------------------------------------------------------------<br /><br /><br /><br />        //timer migania diory wzbudzony kulką<br />        if(zmienna3){<br />                kulka++;<br />                if(kulka==15000){<br />                        kulka1++; //od tego miejsca zlicza z większymi odstępami<br />                        if((flaga5==1)&amp;&amp;(flaga6==1)){<br /><br /><br /><br /><br />                                if(kulka1&lt;=4){//8<br />                                        //LED_PIN_ON3;<br /><br />                                        ANODY_DIR |= CA2;<br />                                        ANODY_DIR |= CA1;<br /><br />                                        kokos=1;<br /><br />                                        ANODY_DIR |= CA4;<br />                                        ANODY_DIR |= CA3;<br /><br />                                }<br />                                        if(kulka1&gt;6){//10<br />                                                kulka1=0;<br />                                                flaga5=0;<br />                                                flaga6=0;<br />                                                kokos=0;<br /><br />                                        }<br />                                //}<br /><br />                        }<br /><br />                        kolejna_anoda=1;<br /><br />                }<br />        }<br /><br /><br />        zegarek();<br />        aktualne_ustawienia();<br />        ustawienia_wartosci_cyfr();<br /><br />//-----------------ustawienie tykania sekundnika (diody)----------------------------<br />if(flaga1==0){<br />        if(!Timer5){<br /><br />                LED_TOG;<br />                Timer5=250;<br />        }<br /><br />}<br />if(flaga1&gt;0){<br />        LED_PIN_ON;<br />}<br /><br />//-------------------------------------------------<br />//      if(flaga1==0){<br />//              ANODY_DIR = 0x00;<br />//      }<br /><br /><br /><br /><br /><br />if(kokos==0){<br /><br />        if(flaga1==1){ //miganie segmentem 4<br />                if (!Timer3){<br />                        Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />                        LED_TOG1;<br />                        Timer1=500;<br />                        ANODY_DIR ^= (CA4);<br />                        cy4=tykanie1;<br />                }<br />        }<br />                else{<br />                        //ANODY_DIR |= (CA4);<br />                        ANODY_DIR &amp;= ~(CA4);<br /><br />                }<br />//-------------------------------------------------<br />        if(flaga1==2){ //miganie segmentem 3<br />                if (!Timer3){<br />                        Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />                        LED_TOG1;<br />                        Timer1=500;<br />                        ANODY_DIR ^= (CA3);<br />                        cy3=tykanie2;<br />                }<br />        }<br />                else{<br />                        //ANODY_DIR |= (CA3);<br />                        ANODY_DIR &amp;= ~(CA3);<br />                }<br />//--------------------------------------------------<br />        if(flaga1==3){ //miganie segmentem<br />                if (!Timer3){<br />                        Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />                        LED_TOG1;<br />                        Timer1=500;<br />                        ANODY_DIR ^= (CA2);<br />                        cy2=tykanie3;<br />                }<br />        }<br />                else{<br />                        //ANODY_DIR |= (CA2);<br />                        ANODY_DIR &amp;= ~(CA2);<br />                }<br />//--------------------------------------------<br />        if(flaga1==4){ //miganie segmentem<br />                if (!Timer3){<br />                        Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />                        LED_TOG1;<br />                        Timer1=500;<br />                        ANODY_DIR ^= (CA1);<br />                        cy1=tykanie4;<br />                }<br />        }<br />                else{<br />                        //ANODY_DIR |= (CA1);<br />                        ANODY_DIR &amp;= ~(CA1);<br />                }<br />        }<br /><br />    }<br />}<br />//------------- koniec pętli wlile i main(void)-----------------------------------------<br /><br />void aktualne_ustawienia (void)<br />{<br />     if( !key_lock1 &amp;&amp; !(PINB &amp; KLAWISZ_1 ) )<br />     {<br />      key_lock1=1;<br /><br />      // reakcja na PRESS (wcinięcie przycisku)<br /><br />      flaga1++;<br />      if(flaga1&gt;4){<br />          flaga1=0;<br />      }<br />     }<br />          else if( key_lock1 &amp;&amp; (PINB &amp; KLAWISZ_1 ) )<br />         key_lock1++;<br />}<br />//-------ustawienia wartoście cyfr-------------------<br />void ustawienia_wartosci_cyfr (void){<br />    if( !key_lock1 &amp;&amp; !(PINB &amp; KLAWISZ_2 ) )<br />    {<br />     key_lock2=1;<br /><br />     // reakcja na PRESS (wcinięcie przycisku)<br />     if (!Timer3){<br />                                Timer3=40;<br />     if(flaga1==1){<br />         tykanie1++;<br />         if(tykanie1&gt;9){<br />                 tykanie1=0;<br />                 }<br />         }<br />                         if(flaga1==2){<br />                                 tykanie2++;<br />                                 if(tykanie2&gt;9){<br />                                         tykanie2=0;<br />                                         }<br />                                 }<br />//---------------------------------------------------<br />                                         if(flaga1==3){<br />                                                 if(tykanie4==0){<br />                                                 tykanie3++;<br />                                                 if(tykanie3&gt;9){<br />                                                         tykanie3=0;<br />                                                         }<br />                                                 }<br /><br /><br />                                                         if(tykanie4==1){<br />                                                                 tykanie3++;<br />                                                                 if(tykanie3&gt;9){<br />                                                                         tykanie3=0;<br />                                                                 }<br />                                                         }<br /><br /><br />                                                                 if(tykanie4==2){<br />                                                                         tykanie3++;<br />                                                                         if(tykanie3&gt;4){<br />                                                                                 tykanie3=0;<br />                                                                         }<br />                                                                 }<br />        //------------------------------------------------<br />                                                                         }<br />                                                                         if(flaga1==4){<br />                                                                                 tykanie4++;<br />                                                                                 if(tykanie4&gt;2){<br />                                                                                         tykanie4=0;<br />                                                                                         }<br />                                                                                 }<br />                                 }<br />     //<br />    }<br />         else if( key_lock2 &amp;&amp; (PINB &amp; KLAWISZ_2 ) )<br />        key_lock2++;<br /><br />}<br /><br /><br /><br />//----------mechanizm zegarka---------------------<br />void zegarek (void){<br />        if( !Timer1 ){<br />                        Timer1=12500;// 250 jeśli sekundy i minuty.12500 jeśłi minuty i godziny<br />                        tykanie1++;<br />                        LED_TOG;<br /><br />                        if(tykanie1&gt;9){<br />                                tykanie1=0;<br />                                tykanie2++;<br />                        }<br />                                if(tykanie2&gt;5){<br />                                        tykanie1=0;<br />                                        tykanie2=0;<br />                                        tykanie3++;<br />                                }<br />                                        if(tykanie3&gt;9){<br />                                                tykanie1=0;<br />                                                tykanie2=0;<br />                                                tykanie3=0;<br />                                                tykanie4++;<br />                                        }<br />                                                if((tykanie4==2)&amp;&amp;(tykanie3&gt;3)){<br />                                                        tykanie4=0;<br />                                                        tykanie3=0;<br />                                                }<br />                        cy4=tykanie1;<br />                        cy3=tykanie2;<br />                        cy2=tykanie3;<br />                        cy1=tykanie4;<br />            }<br /><br />}<br /><br />//-----------------------------------------------------------<br /><br /><br /><br />ISR(TIMER0_COMP_vect){<br /><br />        //zmienna do przełączania kolejno anod wyświetlacza<br />        static uint8_t licznik = 1;<br />        //cykliczne przełączanie w każdym przerwaniu<br />        //anod każdego wyświetlacza (wartoś jest negowana aby krążyło zero)<br />        ANODY_PORT = ~licznik;<br /><br />        //gdy zapalony wyświetlacz 1, podaj stan zmiennej c1<br />        if(licznik == 1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );<br />        //gdy zapalony wyświetlacz2, podaj stan zmiennej c2<br />        else if (licznik ==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );<br />        //gdy zapalaony wyświetlacz 3, podaj stan zmiennej c3<br />        else if(licznik == 4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );<br />        //gdy zapalony wyświetlacz 4, podaj stan zmiennej cy4<br />        else if(licznik == 8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );<br />        //operacje cyklicznego przesuwania bitu zapalającego anody w zmiennej licznik<br />        licznik &lt;&lt;= 1; //przesunięcie zawartosci bitów licznika o 1 w lewo<br />        if(licznik&gt;8) licznik = 1; // jeśli licznik większy niż 8, to ustaw na 1<br /><br />           uint16_t n;//zmienna timera programowego<br /><br />            n = Timer1;             /* 200Hz Timer1 */<br />            if (n) Timer1 = --n;<br />            n = Timer2;             /* 200Hz Timer1 */<br />            if (n) Timer2 = --n;<br />            n = Timer3;             /* 200Hz Timer1 */<br />            if (n) Timer3 = --n;<br />            n = Timer4;             /* 200Hz Timer1 */<br />            if (n) Timer4 = --n;<br />            n = Timer5;             /* 200Hz Timer1 */<br />            if (n) Timer5 = --n;<br />            n = Timer6;             /* 200Hz Timer1 */ //timer testowy kulki<br />            if (n) Timer6 = --n;<br /><br />                zmienna1++;<br />                if(zmienna1==199){<br />                        zmienna1=0;//-----------------&lt;&lt;&lt;&lt;&lt;&lt; darek<br />                        zmienna2++;<br />                        zmienna3++;<br />                        zmienna4++;<br />                        if(zmienna2&gt;0){<br />                                zmienna2=0;<br />                        }<br /><br />                }<br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14082">wojciechgorzolka</a> — 3 sie 2019, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2019-05-15T21:22:25+01:00</updated>
<published>2019-05-15T21:22:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219033#p219033</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219033#p219033"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219033#p219033"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />A dlaczego miałby zostać usunięty ? kompletnie nie rozumiem<br /></div><br />hie hie,....<br />Mirku...<br />choćby dlatego że bo Wojtek  wkleil nie aktualne komentaże.<br />hie hie.. <br />ale widzę że już poprawił. <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> — 15 maja 2019, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-05-15T20:46:05+01:00</updated>
<published>2019-05-15T20:46:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219030#p219030</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219030#p219030"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219030#p219030"><![CDATA[
już poprawiłem i zaktualizowałem kod <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=14082">wojciechgorzolka</a> — 15 maja 2019, o 20:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2019-05-15T20:34:43+01:00</updated>
<published>2019-05-15T20:34:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219028#p219028</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219028#p219028"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219028#p219028"><![CDATA[
Panie kolego Wojtek, <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />zdcyduj się Wojtkiu na częstotliwości i na ilość inkrementacji w przerwaniu.<br />do 100? do 200? do 255? jak to jest. ? <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> — 15 maja 2019, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-05-15T19:16:46+01:00</updated>
<published>2019-05-15T19:16:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219025#p219025</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219025#p219025"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219025#p219025"><![CDATA[
<div class="quotetitle">wojciechgorzolka napisał(a):</div><div class="quotecontent"><br />Panie Mirku, chodziło mi oto,że użyłem tam kody z książki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />Panie kolego chodzi o to aby na forach nie udostępniać bibliotek z książek a nie tam jakichś swoich własnych programów main.c napisanych na podstawie książki<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 maja 2019, o 19:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-05-15T18:40:42+01:00</updated>
<published>2019-05-15T18:40:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219024#p219024</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219024#p219024"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219024#p219024"><![CDATA[
Panie Mirku, chodziło mi oto,że użyłem tam kody z książki <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=14082">wojciechgorzolka</a> — 15 maja 2019, o 18:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-05-15T17:40:35+01:00</updated>
<published>2019-05-15T17:40:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219023#p219023</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219023#p219023"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219023#p219023"><![CDATA[
Nie rozumiem <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=14082">wojciechgorzolka</a> — 15 maja 2019, o 17:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[akenes]]></name></author>
<updated>2019-05-15T17:25:37+01:00</updated>
<published>2019-05-15T17:25:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219022#p219022</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219022#p219022"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219022#p219022"><![CDATA[
Działaj, działaj Panie bo limit &quot;chłytów marketingowych&quot;  wyczerpany <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=17388">akenes</a> — 15 maja 2019, o 17:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-05-15T16:16:27+01:00</updated>
<published>2019-05-15T16:16:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219019#p219019</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219019#p219019"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219019#p219019"><![CDATA[
Kod testuję na zestawie ATB. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Docelowo będzie zegarek na rękę z druku 3D <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=14082">wojciechgorzolka</a> — 15 maja 2019, o 16:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-05-15T15:09:41+01:00</updated>
<published>2019-05-15T15:09:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219017#p219017</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219017#p219017"/>
<title type="html"><![CDATA[Re: podstawowa wersja zegarka z wyświetlaczem siedmiosegment]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219017#p219017"><![CDATA[
<div class="quotetitle">wojciechgorzolka napisał(a):</div><div class="quotecontent"><br />jeśli Pan Mirek uważa, że nie powinienem tego kodu prezentować na forum, to się nie pogniewam jak zostanie usunięty.<br /></div><br />A dlaczego miałby zostać usunięty ? kompletnie nie rozumiem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 maja 2019, o 15:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojciechgorzolka]]></name></author>
<updated>2019-05-15T20:29:37+01:00</updated>
<published>2019-05-15T13:09:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219015#p219015</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219015#p219015"/>
<title type="html"><![CDATA[podstawowa wersja zegarka z wyświetlaczem siedmiosegmentowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22254&amp;p=219015#p219015"><![CDATA[
Hej. <br />W te deszczowe dni wzięło mnie na zegarek z wyświetlaczem siedmio-segmentowy. Wypociłem wstępną wersję, która będzie dopracowana. Zegarek śmiga, jednak docelowo będę w kodzie robił sporo poprawek, oraz zmienne chcę zastąpić zmiennymi wskaźnikowymi. Nie wiem czy mi się uda, ponieważ nie jestem biegły we wskaźnikach. Ale kodem się pochwalę. Wzorowałem się na kodzie z BB, tak więc, jeśli Pan Mirek uważa, że nie powinienem tego kodu prezentować na forum, to się nie pogniewam jak zostanie usunięty.<br />Brakuje jeszcze sporo komentarzy w kodzie, ale na dniach uzupełnię. Pozdrawiam  kolegów i koleżanki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />A oto mój kod:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 9 maj 2019<br /> *      Author: amaru<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br /><br />#define KLAWISZ_1 (1&lt;&lt;PB0)<br />#define KLAWISZ_2 (1&lt;&lt;PB1)<br /><br />#define LED_DATA PORTC //port z podłączonymi segmentami<br />#define LED_DATA_DIR DDRC<br />#define ANODY_PORT PORTA<br />#define ANODY_DIR DDRA<br /><br />#define CA1 (1&lt;&lt;PA0) //CA1 oznacza bit nr 0 portu B<br />#define CA2 (1&lt;&lt;PA1) //CA1 oznacza bit nr 1 portu B<br />#define CA3 (1&lt;&lt;PA2) //CA1 oznacza bit nr 2 portu B<br />#define CA4 (1&lt;&lt;PA3) //CA1 oznacza bit nr 3 portu B<br /><br />//definicje bitów dla poszczególnych segmentów LED<br />#define SEG_A (1&lt;&lt;0)<br />#define SEG_B (1&lt;&lt;1)<br />#define SEG_C (1&lt;&lt;2)<br />#define SEG_D (1&lt;&lt;3)<br />#define SEG_E (1&lt;&lt;4)<br />#define SEG_F (1&lt;&lt;5)<br />#define SEG_G (1&lt;&lt;6)<br />#define SEG_DP (1&lt;&lt;7)<br /><br />#define LED_PIN (1&lt;&lt;PD0) //definicja pinu , do którego podłączona jest dioda<br />#define LED_TOG PORTD ^= LED_PIN //makrodefinicja- zmiana stanu diody<br />#define LED_PIN_ON PORTD &amp;= ~LED_PIN  //włączenie diody LED<br />#define LED_PIN_OFF PORTD |= LED_PIN  //wyłączenie diody LED<br /><br />#define LED_PIN1 (1&lt;&lt;PD1) //definicja pinu , do którego podłączona jest dioda<br />#define LED_TOG1 PORTD ^= LED_PIN1 //makrodefinicja- zmiana stanu diody<br />#define LED_PIN_ON1 PORTD &amp;= ~LED_PIN1  //włączenie diody LED<br />#define LED_PIN_OFF1 PORTD |= LED_PIN1  //wyłączenie diody LED<br /><br />volatile uint16_t Timer1 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer2 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer3 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer4 ;       /* timery programowe 200Hz */<br />volatile uint16_t Timer5 ;       /* timery programowe 200Hz */<br /><br />volatile uint8_t cy1;<br />volatile uint8_t cy2;<br />volatile uint8_t cy3;<br />volatile uint8_t cy4;<br /><br />void aktualne_ustawienia (void);<br />void ustawienia_wartosci_cyfr (void);<br />void zegarek (void);<br /><br />uint8_t zmienna1;<br />uint8_t zmienna2;<br />uint8_t zmienna3;<br />uint8_t zmienna4;<br /><br />uint8_t tykanie1;<br />uint8_t tykanie2;<br />uint8_t tykanie3;<br />uint8_t tykanie4;<br />//uint8_t tykanie5;<br /><br />uint8_t pauza1=0;<br />uint8_t pauza2=0;<br />uint8_t pauza3=0;<br /><br />uint8_t key_lock1;<br />uint8_t key_lock2;<br /><br />uint8_t flaga1;<br />uint8_t flaga2;<br /><br />const uint8_t cyfry&#91;11&#93; PROGMEM = {<br /><br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),// 0<br />~(SEG_B|SEG_C),// 1<br />~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),// 2<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),// 3<br />~(SEG_B|SEG_C|SEG_F|SEG_G),// 4<br />~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),// 5<br />~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 6<br />~(SEG_A|SEG_B|SEG_C|SEG_F),// 7<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 8<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),// 9<br />0xFF,// NIC (puste miejsce)<br />};<br /><br /><br />int main( void ) {<br /><br />    DDRB &amp;= ~(KLAWISZ_1);<br />    PORTB |= KLAWISZ_1;<br />    DDRB &amp;= ~(KLAWISZ_2);<br />    PORTB |= KLAWISZ_2;<br /><br />DDRD |= LED_PIN; //kierunek pinu PC7 - wyjściowy<br />PORTD |= LED_PIN; //wyłączenie diody LED<br /><br />DDRD |= LED_PIN1; //kierunek pinu PC7 - wyjściowy<br />PORTD |= LED_PIN1; //wyłączenie diody LED<br /><br />LED_DATA_DIR = 0xFF; //wszystie piny portu A jako wyjścia - KATODY<br />LED_DATA = 0xFF; // wygaszenie wszystkich katod-stanwysoki<br />// 4piny portu B jako WYJŚCIA (anody)<br />ANODY_DIR |= CA1 | CA2 | CA3 | CA4;<br />//wygaszenie wszystkich wyświetlaczy (anod)<br />ANODY_PORT |= CA1 | CA2 | CA3 | CA4;<br /><br /><br />    /*ustawienie timer0*/<br />    TCCR0 |= ( 1&lt;&lt;WGM01 );  // TRYB CTC<br />    TCCR0 |= ( 1&lt;&lt;CS02 );   //PRESKALER = 256<br />    OCR0 = 215;    // PODZIAŁ PRZEZ 215 (REJ. PORÓWNANIA)<br />    TIMSK |= ( 1&lt;&lt;OCIE0 );  //ZEZWOLENIE NA PRZERWANIE COMPARE MATCH<br /><br /><br /><br />//    cy1 = zmienna2;<br />//    cy2 = 2;<br />//    cy3 = 3;<br />//    cy4 = 4;<br /><br /><br /><br />    sei();           /*globalne zezwolenie na przerwania*/<br />    _delay_ms(200);<br /><br />    while ( 1 ) {<br /><br /><br /><br />    zegarek();<br />    aktualne_ustawienia();<br />    ustawienia_wartosci_cyfr();<br />//-----------------ustawienie tykania sekundnika (diody)----------------------------<br />if(flaga1==0){<br />if(!Timer5){<br />LED_TOG;<br />Timer5=250;<br />}<br /><br />}<br />if(flaga1&gt;0){<br />LED_PIN_ON;<br />}<br /><br />//-------------------------------------------------<br /><br />    if(flaga1==1){ //miganie segmentem 4<br />    if (!Timer3){<br />    Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />    LED_TOG1;<br />    Timer1=500;<br />    ANODY_DIR ^= (CA4);<br />    cy4=tykanie1;<br />    }<br />    }<br />else{<br />ANODY_DIR |= (CA4);<br />}<br />//-------------------------------------------------<br />    if(flaga1==2){ //miganie segmentem 3<br />    if (!Timer3){<br />    Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />    LED_TOG1;<br />    Timer1=500;<br />    ANODY_DIR ^= (CA3);<br />    cy3=tykanie2;<br />    }<br />    }<br />else{<br />ANODY_DIR |= (CA3);<br />}<br />//--------------------------------------------------<br />    if(flaga1==3){ //miganie segmentem<br />    if (!Timer3){<br />    Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />    LED_TOG1;<br />    Timer1=500;<br />    ANODY_DIR ^= (CA2);<br />    cy2=tykanie3;<br />    }<br />    }<br />else{<br />ANODY_DIR |= (CA2);<br />}<br />//--------------------------------------------<br />    if(flaga1==4){ //miganie segmentem<br />    if (!Timer3){<br />    Timer3=10;// tu ustawiam szybkośc migania segmentu przy zmianie wartości<br />    LED_TOG1;<br />    Timer1=500;<br />    ANODY_DIR ^= (CA1);<br />    cy1=tykanie4;<br />    }<br />    }<br />else{<br />ANODY_DIR |= (CA1);<br />}<br /><br /><br />    }<br />}<br />//------------- koniec pętli wlile i main(void)-----------------------------------------<br /><br />void aktualne_ustawienia (void)<br />{<br />     if( !key_lock1 &amp;&amp; !(PINB &amp; KLAWISZ_1 ) )<br />     {<br />      key_lock1=1;<br /><br />      // reakcja na PRESS (wcinięcie przycisku)<br /><br />      flaga1++;<br />      if(flaga1&gt;4){<br />      flaga1=0;<br />      }<br />     }<br />          else if( key_lock1 &amp;&amp; (PINB &amp; KLAWISZ_1 ) )<br />         key_lock1++;<br />}<br />//-------ustawienia wartoście cyfr-------------------<br />void ustawienia_wartosci_cyfr (void){<br />    if( !key_lock1 &amp;&amp; !(PINB &amp; KLAWISZ_2 ) )<br />    {<br />     key_lock2=1;<br /><br />     // reakcja na PRESS (wcinięcie przycisku)<br />     if (!Timer3){<br />         Timer3=40;<br />     if(flaga1==1){<br />     tykanie1++;<br />     if(tykanie1&gt;9){<br />     tykanie1=0;<br />      }<br />      }<br /> if(flaga1==2){<br /> tykanie2++;<br /> if(tykanie2&gt;9){<br /> tykanie2=0;<br /> }<br /> }<br />//---------------------------------------------------<br /> if(flaga1==3){<br /> if(tykanie4==0){<br /> tykanie3++;<br /> if(tykanie3&gt;9){<br /> tykanie3=0;<br /> }<br /> }<br /><br /><br /> if(tykanie4==1){<br /> tykanie3++;<br /> if(tykanie3&gt;9){<br /> tykanie3=0;<br /> }<br /> }<br /><br /><br /> if(tykanie4==2){<br /> tykanie3++;<br /> if(tykanie3&gt;4){<br /> tykanie3=0;<br /> }<br /> }<br />//------------------------------------------------<br /> }<br /> if(flaga1==4){<br /> tykanie4++;<br /> if(tykanie4&gt;2){<br /> tykanie4=0;<br /> }<br /> }<br /> }<br />     //<br />    }<br />         else if( key_lock2 &amp;&amp; (PINB &amp; KLAWISZ_2 ) )<br />        key_lock2++;<br /><br />}<br /><br /><br /><br />//----------mechanizm zegarka---------------------<br />void zegarek (void){<br />if( !Timer1 ){<br />    Timer1=12500;// 250 jeśli sekundy i minuty.12500 jeśłi minuty i godziny<br />    tykanie1++;<br />    LED_TOG;<br /><br />    if(tykanie1&gt;9){<br />    tykanie1=0;<br />    tykanie2++;<br />    }<br />    if(tykanie2&gt;5){<br />    tykanie1=0;<br />    tykanie2=0;<br />    tykanie3++;<br />    }<br />    if(tykanie3&gt;9){<br />    tykanie1=0;<br />    tykanie2=0;<br />    tykanie3=0;<br />    tykanie4++;<br />    }<br />    if((tykanie4==2)&amp;&amp;(tykanie3&gt;3)){<br />    tykanie4=0;<br />    tykanie3=0;<br />    }<br />    cy4=tykanie1;<br />    cy3=tykanie2;<br />    cy2=tykanie3;<br />    cy1=tykanie4;<br />        }<br /><br />}<br /><br />ISR(TIMER0_COMP_vect){<br /><br />//zmienna do przełączania kolejno anod wyświetlacza<br />static uint8_t licznik = 1;<br />//cykliczne przełączanie w każdym przerwaniu<br />//anod każdego wyświetlacza (wartoś jest negowana aby krążyło zero)<br />ANODY_PORT = ~licznik;<br /><br />//gdy zapalony wyświetlacz 1, podaj stan zmiennej c1<br />if(licznik == 1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );<br />//gdy zapalony wyświetlacz2, podaj stan zmiennej c2<br />else if (licznik ==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );<br />//gdy zapalaony wyświetlacz 3, podaj stan zmiennej c3<br />else if(licznik == 4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );<br />//gdy zapalony wyświetlacz 4, podaj stan zmiennej cy4<br />else if(licznik == 8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );<br />//operacje cyklicznego przesuwania bitu zapalającego anody w zmiennej licznik<br />licznik &lt;&lt;= 1; //przesunięcie zawartosci bitów licznika o 1 w lewo<br />if(licznik&gt;8) licznik = 1; // jeśli licznik większy niż 8, to ustaw na 1<br /><br />   uint16_t n;//zmienna timera programowego<br /><br />    n = Timer1;             /* 200Hz Timer1 */<br />    if (n) Timer1 = --n;<br />    n = Timer2;             /* 200Hz Timer1 */<br />    if (n) Timer2 = --n;<br />    n = Timer3;             /* 200Hz Timer1 */<br />    if (n) Timer3 = --n;<br />    n = Timer4;             /* 200Hz Timer1 */<br />    if (n) Timer4 = --n;<br />    n = Timer5;             /* 200Hz Timer1 */<br />    if (n) Timer5 = --n;<br /><br />zmienna1++;<br />if(zmienna1==199){<br />                   zmienna1=0;<br />zmienna2++;<br />zmienna3++;<br />zmienna4++;<br />if(zmienna2&gt;0){<br />zmienna2=0;<br />}<br /><br />}<br /><br /><br />}[/syntax]<br /><br /><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=14082">wojciechgorzolka</a> — 15 maja 2019, o 13:09</p><hr />
]]></content>
</entry>
</feed>