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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-05-20T11:38:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2513&amp;mode</id>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-05-20T11:38:16+01:00</updated>
<published>2013-05-20T11:38:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=37362#p37362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=37362#p37362"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=37362#p37362"><![CDATA[
Już sobie poradziłem Problemem była zbyt wcześnie przepisana wartość.<br />  <br />[syntax=c]else Timer6=PRZ;//Jeśli Timer6 dojdzie do zera[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 20 maja 2013, o 11:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-05-20T08:59:45+01:00</updated>
<published>2013-05-20T08:59:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=37355#p37355</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=37355#p37355"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=37355#p37355"><![CDATA[
Hej  I  znów utknąłem. <br /><br />Chcę zrealizować funkcję o  nazwie beep, której  zadaniem będzie   ustawianie stanu wysokiego na jednym z portów w cyklicznych odstępach  czasu. <br />Używam piezo z generatorem,  a chcę uzyskać kilkukrotne &quot;piknięcia&quot;<br /><br /><br />Funkcję wywołuję w ten sposób:<br />[syntax=c]beep(5,50,50);[/syntax]<br />gdzie pierwszy argument określa ilość piknięć<br />drugi długość trwania piknięcia<br />a trzeci przerwę między piknięciami. <br />Zrobiłem taką funkcję:<br />[syntax=c]void beep(uint8_t ilosc, uint8_t dlugosc, uint8_t przerwaa )<br />{<br />ILO=ilosc;//Przepisuje wartość zmiennej  lokalnej  do zmiennej  Volatile  używanej  w przerwaniu  <br />DLU=dlugosc;//Przepisuje wartośćć zmiennej  długość  do zmiennej  Volatile <br />Timer5=DLU; // na start przypisuje  wartość zmiennej  DLU  do timera programowego<br />PRZ=przerwaa;//Przepisuje wartośćć zmiennej  przerwa  do zmiennej  Volatile<br />}[/syntax]<br />W przerwaniu  zaś, wykorzystuję to  w ten sposób<br /><br /><br />[syntax=c]if (ILO)//Wykonuj dopóki zmienna ILO  nie została  zmniejszona do zera <br />{<br />p=Timer5;//przypisuje wartość lokalnej zmiennej, wartość Timera5<br />if(p) Timer5 = --p;//Dopóki p ma wartość  zmniejszaj ją i taką wartość przypisz zmiennej Timer5<br />if (Timer5)// Dopóki zmienna Timer5 ma wartość <br />{<br />PORTA |= (1&lt;&lt;PA2);//ustaw stan wysoki na pinie portu<br />}<br />else Timer6=PRZ;//Jeśli Timer6 dojdzie do zera  <br />{<br />if (blok)//jeżeli blokada &gt;0 wykonaj co poniżej <br />{Timer6=PRZ;Prz//Jeśli Timer6 dojdzie do zera  to wpisz do zmiennej Timer6 wartość długości przerwy<br />blok2=1;//Odblokuj możliwoć kolejnego przypisania i  odblokowania tej częci<br />blok=0;}// zablokuj dalsze wykonywanie tego  warunku<br />}<br /><br />q=Timer6;//przypisuje wartość lokalnej zmiennej, wartość Timera6<br />if(q) Timer6 = --q;//Dopóki q ma wartość  zmniejszaj ją i taką wartość przypisz zmiennej Timer6<br />if (Timer6)// Dopóki zmienna Timer6 ma wartość <br />{<br />PORTA &amp;= ~(1&lt;&lt;PA2);//zeruj pin portu<br />}<br />else// jeśli Timer6 dojdzie do zera <br />{<br />if (blok2)//jeli odblokowane<br />{Timer5=DLU;//przypisz poprzedniemu  timerowi  wartoć trwania<br />ILO--;//zmniejsz iloć razy  wykonywania pętli o  jeden <br />blok2=0;//zablokuj  dalsze wykonywanie tej  pętli <br />blok=1;}// odblokuj  możliwoć  wykonywania pętli w  timerze powyżej<br />}<br />}[/syntax]<br /><br />Wszystko wydaje mi się przejrzyste, jednak  nie działa. Za każdym wywołaniem nie ustawia mi stanu wysokiego. <br />Może ktoś pomoże?  Dla pewności  wklejam jeszcze  deklaracje zmiennych  i  funkcji <br /><br />w przerwaniu <br />[syntax=c]static uint16_t p;<br />static uint16_t q;<br />static uint8_t blok=1;<br />static uint8_t blok2=0;[/syntax]<br /><br />w pliku nagłówkowym<br />[syntax=c]volatile uint8_t PRZ;<br />volatile uint8_t DLU;<br />volatile uint8_t ILO;<br />void beep(uint8_t ilosc,uint8_t dlugosc, uint8_t przerwaa );[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 20 maja 2013, o 08:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-08T11:10:11+01:00</updated>
<published>2013-04-08T11:10:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=33813#p33813</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=33813#p33813"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=33813#p33813"><![CDATA[
No właśnie tę super właściwość - czyli możliwość rejestracji &quot;w locie&quot; różnych funkcji do obsługi klawiszy , w zależności od kontekstu programu - pokazuję w poradniku VIDEO na temat SNAKE <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/12/wskazniki-struktury-callbacki-jazda-bez.html" >http://mirekk36.blogspot.com/2012/12/ws ... a-bez.html</a><!-- m --><br /><br />nie dość że tak można , to to jest własnie jedna z największych zalet takiego podejścia do programowania.<br /><br />Po co bezpośrednio odczytywać command - jeśli np wchodzisz sobie w menu uprzednio rejestrując nową obsługę klawiszy na potrzeby tegoż menu - i masz cmd czy tam command przekazany pięknie jako argument do tej funkcji.<br />Potem opuszczasz MENU i z powrotem rejestrujesz poprzednią funkcję obsługi klawiszy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... mam nadzieję że dostrzegasz tę ogromną zaletę callbacków i ich rejestracji<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 kwi 2013, o 11:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-04-08T10:18:18+01:00</updated>
<published>2013-04-08T10:18:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=33804#p33804</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=33804#p33804"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=33804#p33804"><![CDATA[
Jeśli przy użyciu  biblioteki IR_UNI z II książki  rejestruję funkcję <br />[syntax=c]register_ir_event_callback(moja_obsluga_ir);<br /><br />void moja_obsluga_ir(uint8_t address, uint8_t command,uint8_t key_time)<br />{<br />if (command==54) suma = faza2;<br />if (command==55) suma = faza1 + faza2;<br />if (command==21) suma = 200;<br />if (command==20) suma = 100;<br />if (command==52) suma = 250;<br />if (command==50) suma = 150;<br />if (command==28) suma = 300;<br />if (command==29) suma = 350;<br />}[/syntax]<br /><br /><br /><br /><br />a potem na przykład  wchodzę w menu i potrzebuję innego działania dla  tych  samych  przycisków pilota  to  nie mogę ponownie  zarejestrować  nowej  funkcji z innymi przypisanymi działaniami?<br />Nie mogę  też  bezpośrednio odczytać  wartości  command?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 8 kwi 2013, o 10:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-23T21:12:07+01:00</updated>
<published>2013-03-23T21:12:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=31503#p31503</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=31503#p31503"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=31503#p31503"><![CDATA[
Miał Mirek  rację, że  będę chciał coraz więcej  i  więcej. <br />Zdecydowałem się na obsługę swojego  zegara pilotem  RC5.<br />O dziwo  obsługa pilota pięknie się &quot;przyjęła&quot; w  moim programie, przy  pomocy  przycisków   zmieniam na razie  wartość zmiennej odpowiadającej  za wyświetlanie  godziny  i  temperatury.   Wszystko działa  natychmiastowo, bez żadnych opóźnień,  jestem  bardzo pozytywnie zaskoczony. <br /><br />Ale zrodziło się  następne pytanie, bo  chciałem wykorzystać  jeden przycisk, do  wejścia  w  menu, gdzie  będę mógł ustawić  godzinę i zapisać do PCFa. <br /><br />W funkcję MAIN  wpisałem to  tak:<br /><br />[syntax=c]if(Ir_key_press_flag) /* jeśli odebrano prawidłowe kody z pilota */<br />{<br />if( !address &amp;&amp; green==command ) /* jeśli wciśnięty konkretny przycik  */<br />{<br />suma = faza2;<br />}<br />if( !address &amp;&amp; red==command ) /* jeśli wciśnięty konkretny przycik  */<br />{<br />suma = faza1 +faza2;<br />}<br />if( !address &amp;&amp; 24==command ) /* jeśli wciśnięty konkretny przycik menu1 */<br />{<br />void menu1 (void);<br />}<br />/* wyzerowanie flagi odbioru oraz wartości odebranych kodów */<br />Ir_key_press_flag=0;<br />command=0xff;<br />address=0xff;<br />}[/syntax]<br /><br />Pierwsze dwa warunki działają, ale  jak widzicie, ostatni warunek  wywołuje funkcję  o  nazwie  menu1 do której  nic nie wysyłam, i  która  nic nie zwraca.  W tej  funkcji chcę  na początku  ustawić  dolne segmenty wszystkich  wyświetlaczy  a potem  wpisać  cyframi  godzinę i  minuty  a przy  wyjściu  wysłać to  poleceniem  TWI_write_buf (PCF8583_ADDR,0x01,4,bufor); do PCFa. <br />Jednak przy  naciśnięciu  przycisku na pilocie  funkcja  nie zostaje  wywołana  Sama funkcja   wygląda  tak:<br /><br />[syntax=c]void menu1 (void)<br />{<br />cyfra1=15;cyfra2=15;cyfra3=15,cyfra4=15;//ustawia dolne segmenty wywietlaczy<br />while(1)<br />{<br /><br /><br /><br />}<br /><br />}[/syntax]<br /><br />znajduje się w  pliku  menu.c, zadeklarowana jest  w pliku menu.h<br />plik menu.h  zainkludowany  jest  w pliku  main.c. <br />Według  mojego przekonania, po naciśnięciu  przycisku o  adresie &quot;24&quot; (samo wywołanie innego działania  przyciskiem 24 działa)  powinna zostać  wywołana funkcja  menu1 i  powinna wejść w  nieskończoną pętlę  while(1).  Jednak  tak  się  nie dzieje.  Próbowałem ustawić jakąś pułapkę - działanie i  wychodzi  na to, że  funkcja nie jest  wywoływana. Jestem przekonany, że   jest to znów jakaś moja nieuwaga, czytałem rozdział FUNKCJE*** w niebieskiej książce, nie natrafiłem na wskazówkę, może  to chwilowe zamroczenie i późna godzina....  dla tego proszę spójrzcie  fachowym okiem na te  krótkie kody.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 23 mar 2013, o 21:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-18T21:01:55+01:00</updated>
<published>2013-03-18T21:01:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30989#p30989</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30989#p30989"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30989#p30989"><![CDATA[
ale się uwziąłeś na tą funkcję i2cSetBitrate() <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... daj spokój - no bo powtarzam ci że bez niej w ogóle miałbyś kichę. A co do 100 czy nie 100 ..... to akurat jak poczytasz - hmmm gdziekolwiek na temat I2C to zobaczysz, że podstawowa i można powiedzieć najwolniejsza prędkość dla standardowych i starych układów I2C to 100kHz i tyle przecież ustawiasz. Ja rozumiem gdybyś ustawiał 200kHz albo 400kHz ... to można byłoby mieć słuszne obawy .... no ale jak mówię otwórz byle PDF byle scalaka I2C i poczytaj na początku z jaką prędkością na I2C on pracuje ... to wszystko ci się wyjaśni. Więc nie ten trop<br /><br />ale dalej - wyżej napisałem ci żebyś sprawdził głębiej gdzie się zawiesza - przecież masz dostęp do wnętrza funkcji TWI_write_buf() ..... to właśnie ona składa się z tych mniejszych o których wspomniałem wyżej więc trzeba wchodzić w matrixa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czyli coraz głębiej ale i tak na końcu dojdziesz pewnie do momentu na który zwróciłem uwagę a to oznacza że błąd też będzie związany z tym co mówiłem wcześniej .... <br /><br />i pewnie jak go odkryjesz - to będzie zaskoczenie że taka prozaiczna przyczyna była .... <br /><br />- coś na liniach SDA lub SCL<br />- coś nie tak z adresem układu docelowego<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />aaa... no dopiero teraz zobaczyłem że poszło - ale masz odpowiedź <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> dokładnie jak wyżej pisałem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 mar 2013, o 21:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-18T20:26:34+01:00</updated>
<published>2013-03-18T20:26:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30985#p30985</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30985#p30985"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30985#p30985"><![CDATA[
Dzięki  Mirku za wskazówki.  W pętli głównej  wiesza mi się   -  nie przechodzi  program za  tę linijkę:<br /><br />TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />Za tą linijką nic nie  pokazuje Tak jakby się tutaj zawieszało. <br /><br />Sądzę, że może to świadczyć o tym, że w tej funkcji &quot;COŚ&quot; oczekuje na odpowiedź a jej  nie dostaje. nie wiem, czy  dobrze dedukuję. <br /><br />Zrobiłem jeszcze jedno doświadczenie  zamiast  co sekundę  odczytywać  to  wkleiłem i co sekundę zapisuję<br /><br />TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />I tutaj na oscyloskopie  widzę wyraźnie transmisję nadawania <br /><br />Nie wiem ile rzeczywiście się zapisuje, ale to może świadczyć, że coś jest z adresem. Chociaż powinienem widzieć przebieg przy odbieraniu  nawet jeśli  adresy   by nie  trafiały.  Ech  Nie wiem co dalej.  <br /><br />Nie wiem też dalej czy ta wartość i2cSetBitrate(); jako 100 jest odpowiednia. Może tu się krztusi?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 30 minutach ]</span></strong><br /><br />Ech Poszło bezproblemowo  na adresie A0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 mar 2013, o 20:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-18T17:18:12+01:00</updated>
<published>2013-03-18T17:18:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30958#p30958</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30958#p30958"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30958#p30958"><![CDATA[
Nie odbierz mnie źle - wcale nie chodziło mi o to że np czepiasz się bibliotek albo nie .... po prostu głośno sobie myślę i podpowiadam.<br /><br />Ale ok .... DDRC nie trzeba ustawiać bo bit załączający I2C TWEN robi to automatycznie<br /><br /><br />Skoro masz 1Hz na wyjściu PCF'a to znaczy że zegarek sobie tyka radośnie<br /><br />Rozumiem że linie SDA i SCL tzn ich poziomy obserwujesz oscylem a nie miernikiem ? bo miernikiem mógłbyś nie zauważyć transmisji..<br /><br />może jeszcze być kwestia źle ustawionego adresu I2C dla PCF'a ja używam w zestawie<br /><br />#define PCF8583_ADDR 0xA2<br /><br />ale jeśli na oscylu nie widzisz żadnej aktywności na SCL i SDA to dziwne - bardzo dziwne - nie mniej jednak to może świadczyć nadal o sprzętowym problemie na I2C<br /><br />sprawdź czy nie wiesza ci się to na operacjach typu:<br /><br />while ( !(TWCR &amp; (1&lt;&lt;TWINT)));<br /><br />w funkcjach: TWI_read(), TWI_write() itp .... zwykłym debugerem jednodiodowym - bo jeśli się na nich wiesza czyli pętla działa w nieskończoność to znaczy już ponad wszelką wątpliwość że masz problem na linii I2C albo zły adres i nie ma potwierdzenia<br /><br />no ale musiałby być widoczny przebieg chociaż na SCL bo to master generuje przecież<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 mar 2013, o 17:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-18T16:27:30+01:00</updated>
<published>2013-03-18T16:27:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30955#p30955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30955#p30955"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30955#p30955"><![CDATA[
Bibliotek nawet mi nie wpadło do głowy, żeby się czepiać.  Chodziło mi  tylko o to, czy wartość  wpisana do i2cSetBitrate(); jako 100 jest odpowiednia. <br /><br />Na wyjściu INT mam zero i nie zmienia się. <br />Ale nie jestem pewien, czy sygnał tam nie pokazuje się dopiero przy wysłaniu  czegoś do PCFa. <br /><br /><br />Posprawdzam wszystko jeszcze raz.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />NIE pomyłka  Na wyjściu  INT  jest  sygnał 1Hz<br />Widać wyraźnie, że z procka nic nie wychodzi. <br />A czy przy sprzętowym TWI trzeba  ustawiać DDRC?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 mar 2013, o 16:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-18T16:14:39+01:00</updated>
<published>2013-03-18T16:14:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30954#p30954</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30954#p30954"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30954#p30954"><![CDATA[
Posłuchaj właśnie to bez i2cSetBitrate() byłby problem <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> po to on jest aby ustawić w rejestrach prawidłową prędkość I2C ..... to MUSI wręcz być przy taktowaniu 16MHz<br /><br />druga sprawa rejestry ATmega16 są .... I D E N T Y C Z N E ... jak w ATmega32, to są dokładnie takie same procki a różnią się TYLKO rozmiarami pamięci<br /><br />kody bibliotek z książki są na 10000% sprawdzone i działają .... więc pozostaje ci tylko problem sprzętowy niestety<br /><br />powiedz mi czy w ogóle wyjście INT twojego scalaka PCF działa prawidłowo - sprawdzałeś to tak w ogóle ? bo od tego trzeba zacząć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 mar 2013, o 16:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-18T16:07:31+01:00</updated>
<published>2013-03-18T16:07:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30952#p30952</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30952#p30952"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30952#p30952"><![CDATA[
tak oczywiście  jest podciągnięcie  do VCC 4,7K - książkowo <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Co do odczytu, to zamieściłem go  w warunku  IF  działającym z  przerwaniem sprzętowo / programowym co  kilkaset milisekund . Działa na pewno  bo  w ten sam sposób odczytuję DSa  Przedstawiony  kod  odrobinkę uprościłem dla przejrzystości, ale problem pozostaje nadal nawet w takiej formie  jak przedstawiłem, czyli  bez warunku.  <br />Nie  jestem pewny, ale może chodzi o to, że nazwy  rejestrów się trochę różnią w Atmedze 16 vs 32, choć myślę, że kompilator  by tego nie przeoczył. <br />Mimo wszystko myślę jednak, że to problem programowy  bo po wyjęciu PCFa z podstawki  i sprawdzeniu  SDA i SCL  nic się nie zmienia pomimo zapętlonego odczytu.<br /><br />A jak Mirku z  tym i2cSetBitrate(100); Czy  tu  coś powinno się zmienić względem mojego  rezonatora 16MHz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 mar 2013, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-18T14:50:27+01:00</updated>
<published>2013-03-18T14:50:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30949#p30949</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30949#p30949"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30949#p30949"><![CDATA[
Nie ma schematu ale dla pewności się dopytam - a masz rezystory podciągające I2C do VCC ? i jakie ?<br /><br />w pętli głównej odczytujesz w powyższym kodzie miliardy razy na sekundę PCF'a ? po co ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 mar 2013, o 14:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-18T13:14:57+01:00</updated>
<published>2013-03-18T13:14:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30947#p30947</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30947#p30947"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30947#p30947"><![CDATA[
Dodatkowo może ktoś spojrzeć na ten króciutki kod do komunikacji  TWI? Układ nie chce się komunikować. Biblioteki w całości  z książki  Mirka, jedynie zmodyfikowałem  to  że  nie wykorzystuję INT0  no  i  różnica taka, że  mam ATMEGĘ 16 taktowaną  16 MHz <br /><br />Sprawdzałem linię  SDA i SCL  i  na jednym mam cały  czas stan wysoki a na drugim cały  czas niski. <br />Nic  nie odczytuje. <br />No  i  nie wiem jak  ustawić  w moim przypadku   i2cSetBitrate Jest  na 100, bo  widziałem że  funkcja  sobie coś oblicza  z F_Osc <br />Dodam jeszcze dla pewności  że  A0 PCF'a mam podpięte do GND. <br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;d_led.h&quot;<br />#include &quot;1Wire/onewire.h&quot;<br />#include &quot;1Wire/crc8.h&quot;<br />#include &quot;1Wire/ds18x20.h&quot;<br />#include &quot;menu.h&quot;<br />#include &quot;i2c.h&quot;<br /><br />#define PCF8583_ADDR 0xA2<br /><br /><br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec);<br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd);<br /><br /><br />int main(void)<br />{<br />// definiujemy sobie dla polepszenia czytelności programu typ wyliczeniowy<br />// wskazujący nam później na odpowiednie indeksy w tablicy (buforze)<br />enum {ss=1, mm, hh};<br />uint8_t bufor[4];// rezerwacja bufora 4 bajty<br />uint8_t sekundy;<br />uint8_t minuty;<br />uint8_t godziny;<br /><br />d_led_init(); // inicjalizacja wyswietlacza led<br />i2cSetBitrate(100);<br />sei();//globalne zezwolenie na przerwania<br />// Ustawianie czasu na godzinę: 18:34:27<br />bufor[0] = 0;// setne części sekundy<br />bufor[1] = dec2bcd(27);// sekundy<br />bufor[2] = dec2bcd(34);// minuty<br />bufor[3] = dec2bcd(18);// godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamięci RAM naszego RTC<br />TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor );<br />while(1)<br />{<br />WI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />sekundy = bcd2dec( bufor[ss] );<br />minuty = bcd2dec( bufor[mm] );<br />godziny = bcd2dec( bufor[hh] );<br /><br />liczba = ((godziny*100)+minuty);<br />oblicz (liczba,0);<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 mar 2013, o 13:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-18T10:49:46+01:00</updated>
<published>2013-03-18T10:49:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30945#p30945</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30945#p30945"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30945#p30945"><![CDATA[
Mam kolejne pytanie. <br />Jako, że  ma to  być  termometr  z zegarem, wymyśliłem, że  będzie  on wyświetlał na przemian  godzinę  i  temperaturę z dwóch  czujników. Czyli łącznie 3 programy. <br /><br />Zrobiłem też programowo sprzętowy  timer  z książki Mirka, który  cyklicznie może  co określoną  wartość czasu  zmniejszać lub zwiększać jakieś zmienne.  Na tej  podstawie  chciałbym zrealizować  zmianę   programów  według  wcześniej  ustalonego trybu, Schematycznie przedstawiam to tak  <br /><br />1 Ustawiam: zmienną czas programu 1 na wartość 10 <br />                 zmienną czas programu 2 na wartość 15 <br />                 zmienną czas programu 3 na wartość 10 <br /><br />2. W funkcji Main w pętli  mam trzy bloki programów wywoływanych:<br /><br />                 Program1<br />                 Program2<br />                 Program3<br /><br />3. W przerwaniu   mam  cyklicznie odmierzaną długość czasu <br /><br /><br />Do głowy  przychodzi  mi  jedynie zrealizowanie to  na warunkach  IF  Czyli  w programie głównym  będzie  zapis tego typu:<br /><br />[syntax=c]if (program1)<br />{<br />}<br />if (program2)<br />{<br />}<br />if (program3)<br />{<br />}[/syntax]<br /><br />Jednak  znacznie to skomplikuje  warunkowanie w pętli przerwania.<br />[syntax=c]If  (program1)/ jeżeli zmienna program1 będzie większa od zera <br />{ program --}// zmniejszaj  zmienną  program  do  zera <br />else// jeśli  zmienna program osiągnie zero <br />{program2 = czas2}// przepisz  warość zmiennej czas2 do zmiennej program2 ale to muszę objąć kolejnym warunkiem, żeby wywołane zostało tylko jeden raz bo przecież powyższy  warunek else będzie się spełniał  przy  każdym wywołaniu przerwania i tym samym  program 2  się nigdy  nie skończy. <br /><br />if (program2)...............itd<br />[/syntax]<br /><br />Coś mi mówi, że można to  zrobić prościej, tylko nic innego  nie przychodzi  mi do głowy. <br />Jeśli  ma ktoś jakiś pomysł, to proszę o podpowiedź.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 mar 2013, o 10:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-03-12T12:08:07+01:00</updated>
<published>2013-03-12T12:08:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30453#p30453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30453#p30453"/>
<title type="html"><![CDATA[Re: Odp: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30453#p30453"><![CDATA[
W moim projekcje LargeLed gdzie litery mają ok 100mm użyłem UDN2987 w Dip do sterowania segmentami. Bardzo fajne te scalaczki nie trzeba kombinowac, zasilanie UDNa max 30V sterowanie TTL.<p>Statystyki: Napisane przez Gość — 12 mar 2013, o 12:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-11T21:54:00+01:00</updated>
<published>2013-03-11T21:54:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30428#p30428</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30428#p30428"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30428#p30428"><![CDATA[
UDN2981 jest rewelacyjny. Dojechałem do bardzo wysokiej częstotliwości przemiatania i ani śladu smużenia.  Zaczynam kolejne etapy układu. Mam nadzieję, że na koniec znajdzie się on w dziale gotowych projektów. Przeczołgało mnie trochę z tym wyświetlaniem. Dalej  liczę na Waszą pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 11 mar 2013, o 21:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-11T06:58:04+01:00</updated>
<published>2013-03-11T06:58:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30333#p30333</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30333#p30333"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30333#p30333"><![CDATA[
Próbowałem już  z taką konfiguracją Przyznam się, że wmontowałem nawet trzy potencjometry, żeby móc najlepiej  dobrać  te wartości  W żadnym zakresie ustawień nie zauważyłem polepszenia efektu. Wymontowałem też rezystory podciągające do +12  - układ też działał, nawet bez  zwiększenia efektu ducha.  Dzisiaj jadę  po  UDNa. To chyba ostateczne rozwiązanie Nie mogę znaleźć w  sieci dobrego  drivera.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 11 mar 2013, o 06:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-10T22:55:36+01:00</updated>
<published>2013-03-10T22:55:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30329#p30329</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30329#p30329"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30329#p30329"><![CDATA[
ja bym dał do bazy pierwszego NPN rezystor 2,2K, podobnie do bazy drugiego. A ten polaryzujący do +12V ok 10K albo i większy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 mar 2013, o 22:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-10T22:17:10+01:00</updated>
<published>2013-03-10T22:17:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30327#p30327</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30327#p30327"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30327#p30327"><![CDATA[
Zamieniłem BD140 na BC807 Duszek - jak był tak jest. Jakbyś Mirku spojrzał na  wartości  tych  rezystorów  Szczególnie na pierwszy  Wydaje mi się że 4,7 K  jest  optymalnym  w tym zastosowaniu  rozwiązaniem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 10 mar 2013, o 22:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-10T21:46:09+01:00</updated>
<published>2013-03-10T21:46:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30324#p30324</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30324#p30324"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30324#p30324"><![CDATA[
ale te BDxxx mają chyba bardzo małe wzmocnienie czy nie można dać jakiegoś zwykłego nawet SMD na 500mA albo i nawet zwyklaka na 100mA <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czy tam płynie więcej prądu szczególnie w trakcie multipleksowania ? Albo mosfeta ....<br /><br />i pewnie sprawa by się od razu poprawiła tak mi się wydaje - no i potwierdziło się to co mówiłem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 mar 2013, o 21:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-10T20:38:52+01:00</updated>
<published>2013-03-10T20:38:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30316#p30316</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30316#p30316"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30316#p30316"><![CDATA[
No i chyba mam rozwiązanie. Problemem może być  driver  anod, który  złożyłem z  dwóch  tranzystorów:<br />BC 547  steruje  BD138  tworząc zarazem inwerter i  konwerter napięć, według poniższego schematu:<br /><a href="http://forum.atnel.pl/_obrazki/o/786_2c90efa45a5ae9e9711e1b66fe592683.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/786_2c90efa45a5ae9e9711e1b66fe592683.jpg" alt="Obrazek" /></a><br />Na  nóżce procesora segmentu wyświetlającego &quot;ducha&quot;  sygnał jest  bardzo poprawny  a zbocze bardzo ostre:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/786_e8431a9ca1d4c94091142ffdbb84b8db.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/786_e8431a9ca1d4c94091142ffdbb84b8db.JPG" alt="Obrazek" /></a>......<a href="http://forum.atnel.pl/_obrazki/o/786_e7a288f3148122f3484ec937ea1490bd.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/786_e7a288f3148122f3484ec937ea1490bd.JPG" alt="Obrazek" /></a><br /><br />Sprawdziłem sygnał na tym samym kanale wyświetlacza, ale już na nóżce ANODY samego wyświetlacza i oto co ujrzałem:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/786_24c04deee8873a0192596356c09b8607.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/786_24c04deee8873a0192596356c09b8607.JPG" alt="Obrazek" /></a>.....<a href="http://forum.atnel.pl/_obrazki/o/786_f8c1254ae6e2f4b70031ec3d89c59c88.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/786_f8c1254ae6e2f4b70031ec3d89c59c88.JPG" alt="Obrazek" /></a><br /><br />Dziwi  mnie to, bo  według  kart  katalogowych  BC 547 ma częstotliwość graniczną  300 MHz a BD 140 może pracować przy  160 MHz.  Po dokładniejszych &quot;Badaniach  wyszło  że to  BD 140  tak &quot;opóźnia&quot;  Spróbuję  zamienić  je  na inny  typ. Mam nadzieję, że po wymianie efekt ustąpi. Na pewno się jeszcze odezwę.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 14 minutach ]</span></strong><br /><br />Może rzeczywiście coś jest  z rezystorami W razie czego podam  Od lewej  strony   pierwszy  rezystor  bazy  BC547  ma 4,7K drugi  rezystor  pionowy  podciągający  kolektor BC547 do plusa ma  wartość 4,7K  a  rezystor bazy  BD140    ma  wartość 3K.  Spróbuję  jeszcze   przed wymianą  tranzystorów  zwiększyć   wartość    rezystora kolektora  BC547  żeby  uzyskać  mniejszy prąd  a tym samym mam nadzieję, że odpowiedzi  będą  bardziej  dynamiczne.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 38 minutach ]</span></strong><br /><br />Jutro  zmienię to wszystko na UDN2981<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 10 mar 2013, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-10T20:26:13+01:00</updated>
<published>2013-03-10T20:26:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30312#p30312</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30312#p30312"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30312#p30312"><![CDATA[
Dobra to znaczy że masz coś nie tak ze sterowaniem tranzystorów - sprawdź wartości rezystorów - być może nie odcinają odpowiednio szybko - za wolno wchodzą w stan nasycenia itp .... nie ma już innej możliwości (tak mi się wydaje)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 mar 2013, o 20:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-10T19:22:30+01:00</updated>
<published>2013-03-10T19:22:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30303#p30303</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30303#p30303"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30303#p30303"><![CDATA[
Tak Powyłączałem wszystko Są tylko włączone niezbędne rejestry do podstawowej obsługi przerwania. Co do duszków to jak na zdjęciu poniżej. Przemiata  mi  z lewej  do prawej wyswietlacz 1,2,3,4   kiedy  na wyświetlaczu  3 jest wyświetlana cyfra &quot;0&quot;  to `zarys tego zera jest  widoczny  na wyświetlaczu  wcześniej  czyli  na 2 Tak samo z innymi cyframi.  Mam nadzieję, że  na zdjęciu co nieco  widać. Częstotliwość  przemiatania to około 200 - 300 Hz. Widać mruganie wyświetlacza. <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/786_b8b733847d5747c2a1c24a0724806707.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/786_b8b733847d5747c2a1c24a0724806707.JPG" alt="Obrazek" /></a><br /><br />Zaraz  jeszcze wyciągnę  armatę na muchę, czyli oscyloskop na  AVRa. Sprawdzę jak te sygnały  są  wygaszane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 10 mar 2013, o 19:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-10T18:49:29+01:00</updated>
<published>2013-03-10T18:49:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30296#p30296</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30296#p30296"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30296#p30296"><![CDATA[
No ale to wygląda dobrze teraz .... tak się robi właśnie - a jeśli nie działa jak piszesz i występują duszki hmmm .... a masz wyłączone te wszystkie inne PWMy programowe czy sprzętowe ?<br /><br />Poza tym napisz teraz dokładnie co masz na myśli o tej poświacie - że np na pustym wyświetlaczu występuje jakby słabe echo cyfry z poprzedniego bądź następnego wyświetlacza ?<br /><br />Zrób sobie do testu tak żeby np przy 4 wyświetlaczach ten drugi nie wyświetlał NIC , pierwszy niech wyświetla np JEDYNKĘ a trzeci DWÓJKĘ - i powiedz czy na tym drugim (pustym) jest duszek dwójki albo jedynki czy o coś innego chodzi ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 mar 2013, o 18:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2013-03-10T17:19:15+01:00</updated>
<published>2013-03-10T17:19:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30290#p30290</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30290#p30290"/>
<title type="html"><![CDATA[Re: Termometr z zegarem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2513&amp;p=30290#p30290"><![CDATA[
Zastosowałem się do  wskazówek Mirka, ale nadal poświata występuje  Także przy  małych  częstotliwościach  przemiatania.  Program wygląda teraz tak:<br /><br />[syntax=c]ISR (TIMER0_OVF_vect)<br />{<br />PORTB &amp;= ~(0b11111111);// wyłączam cały port katod<br />PORTD &amp;= ~(0b11111111);// wyłączam cały port  anod <br />static uint8_t licznik =1;// zmienna  do przełączania anod wyswietlacza<br />//=============odtąd  ustawiane są  porty  dla poszczególnych  wyświetlaczy================= <br />if (licznik==2)                                <br />{<br />LED_DATA =pgm_read_byte ( &amp;cyfry[cyfra1]);<br />if (kropka==1) LED_DATA |= 0b10000000;<br />}<br />else if (licznik ==4)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry[cyfra2]);<br />if (kropka==2) LED_DATA |= 0b10000000;<br />}<br />else if (licznik ==8)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry[cyfra3]);<br />if (kropka==3) LED_DATA |= 0b10000000;<br />}<br />else if (licznik ==1)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry[cyfra4]);<br />if (kropka==4) LED_DATA |= 0b10000000;<br />}<br />ANODY_PORT = licznik ;    //Dopiero tutaj po  ustawieniu katod  włączam anodę  wybranego wyświetlacza <br />licznik &lt;&lt;=1;<br />if (licznik &gt;8)  licznik = 1;}<br />[/syntax] <br /><br />Najpierw wyłączam wszystkie porty  (przypomnę  że i  katody i  anody  steruję  jedynkami)<br />Potem ustawiam  port  segmentów  czyli  katody<br />potem  zapalam anodę wybranego  wyświetlacza i  tak  kończy  się cykl przerwania <br /><br />Nie wiem, czy  ja czegoś jeszcze nie rozumiem, czy problem leży  gdzieś indziej. <br />Cała  sobota i  niedziela psu  w budę,  a ja nie mogę  opanować prostego wyświetlania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 10 mar 2013, o 17:19</p><hr />
]]></content>
</entry>
</feed>