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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-12-08T13:42:34+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1885&amp;mode</id>
<entry>
<author><name><![CDATA[alkan0id]]></name></author>
<updated>2012-12-08T13:42:34+01:00</updated>
<published>2012-12-07T14:49:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20441#p20441</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20441#p20441"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20441#p20441"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />sei używasz ZAWSZE. sei nie odblokowuje wszystkich przerwań hurtowo tak, że wszystkie już mogą działać... do przerwań są tak jakby dwa szeregowe przełączniki, jeden to globalny sei (włącznik dla wszystkich), a drugi włącznik to odpowiedni rejestr dla każdego z przerwań<br /></div><br />No rozumiem to działa jak iloczyn logiczny, oba warunki muszą być spełnione aby móc obsługiwać przerwanie. Właśnie tego nie mogłem nigdzie doczytać. <br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />F_CPU NIE DEFINIUJESZ w plikach, ale w ustawieniach projektu!<br /></div><br />Ja tego nie wymyśliłem, ale chyba nie pierwszy raz się z tym spotykasz więc nie jest to mój wymysł. Teraz będę wiedział co i jak gdy sobie doczytam.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Z tego co wiem to ma być ISR(TIMER1_OVF_vect), a nie ISR(TIMER1_OVF_VECT). Wielkość liter w prawie wszystkich językach programowania ma duże znaczenie!<br /></div><br />Wiem, że wielkość liter ma znaczenie ale uznałem, że skoro nie ma błędu informującego tym, że nie istnieje coś takiego jak &quot;TIMER1_OVF_VECT&quot; to jest ok. <br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Dokładnie do takich celów proszę zakładać nowy temat.<br /></div><br />Jeśli nie ma możliwości ciągnięcia tego wątku w tym temacie, istnieje możliwość wydzielenia odpowiedzi i utworzenie nowego?<br /><br />Port C jest ustawiony w stan wysoki więc wygląda na to, że wszystko działa.<br /><br />Mam jeszcze jedno pytanie. Potrzebuje ten timer do generowania sygnału PWM o trzech różnych częstotliwościach, ze zmianą współczynnika wypełnienia ( stosunek trwania stanu wysokiego do okresu). Wiem o istnieniu funkcji PWM w atmedze i nawet byłem skłonny zastosować to rozwiązanie ale wole sobie napisać swoją funkcję pwm na przerwaniach, która z tego co wiem działa w taki sam sposób jak ta wbudowana. Pytanie jest następujące mogę generować naraz dwa sygnały PWM o różnych częstotliwościach i o różnych współczynnikach wypełnienia, na jednej atmedze? Chodzi mi o to, że czasem może się zdarzyć tak, że nastąpi przerwanie przerwania. Główny kod programu posłuży jedynie do odbioru bitów po ISP i prostego przeliczania wartości otrzymanych na współczynnik wypełnienia.<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />(1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;4|1&lt;&lt;5)<br /></div><br />Tak komputer widzi to w ten sam sposób, ale tylda('~') poprzedzająca to wyrażenie spowoduje jego zanegowanie. <br />wyrażenie (1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;4|1&lt;&lt;5) da nam<br />nr bitu 7 6 5 4 3 2 1 0<br />.         0 0 1 1 1 1 1 1<br />zanegowanie tego wyrażenia daje<br />.        1 1 0 0 0 0 0 0 <br />czyli zmienia się stan poszczególnych bitów na przeciwny.<br />Chociaż w sumie w zależności od budowy układu segment może zapalać 1 lub 0 więc możesz o tym wiedzieć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=714">alkan0id</a> — 7 gru 2012, o 14:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[magicgoti]]></name></author>
<updated>2012-12-07T14:45:39+01:00</updated>
<published>2012-12-07T14:45:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20439#p20439</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20439#p20439"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20439#p20439"><![CDATA[
Witam pytanie mam mianowicie w moim nieszczęsnym &quot;programie&quot; tablica z liczbami wygląda tak:<br /><br />[syntax=c]<br />char cyfry[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};[/syntax]<br /><br />A znalazłem takie coś, co jest bardziej zrozumiałe i logicznie bo definiuje zapalone segmenty dla każdej z liczb:<br /><br />[syntax=c]<br />uint8_t cyfry[10]=<br />{<br />~(1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;4|1&lt;&lt;5),                  //0<br />~(1&lt;&lt;1|1&lt;&lt;2),                                                   //1 <br />~(1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;3|1&lt;&lt;4|1&lt;&lt;6),                          //2<br />~(1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;6),                          //3<br />~(1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;5|1&lt;&lt;6),                                  //4<br />~(1&lt;&lt;0|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;5|1&lt;&lt;6),                          //5<br />~(1&lt;&lt;0|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;4|1&lt;&lt;5|1&lt;&lt;6),                  //6<br />~(1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;5),                                  //7<br />~(1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;4|1&lt;&lt;5|1&lt;&lt;6),         //8<br />~(1&lt;&lt;0|1&lt;&lt;1|1&lt;&lt;2|1&lt;&lt;3|1&lt;&lt;5|1&lt;&lt;6),                 //9<br />~(),<br />};[/syntax]<br /><br />I teraz pytanko czy procesor widzi tak samo oba zapisy?<br /><br />I jeszcze małe pytanko co do przerwań trzeba w kodzie definiować rejestr OCRx? Zawsze trzeba to liczyć ?<br />I jak to jest z tym odświeżaniem w tym  wypadku 250hz jak to się ustawia? <br />np mamy F_CPU 10240000Hz<br /><br />[syntax=c]<br />TCCR0 |=  (1&lt;&lt;WGM01);                    //ustawienie trybu CTC<br />TCCR0 |=  (1&lt;&lt;CS02) | (&lt;&lt;CS00);       // ustawienie preskalera na 1024<br />TIMSK |= (1&lt;&lt;OCIE0) ;                       // zezwolenie na przerwania<br />OCR0 = 40;                                       // 10240000 / 1024 / 250 = 40[/syntax]<br /><br /><br />Z góry dzięki za pomoc pozdrawiam <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=710">magicgoti</a> — 7 gru 2012, o 14:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-07T09:58:05+01:00</updated>
<published>2012-12-07T09:58:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20385#p20385</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20385#p20385"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20385#p20385"><![CDATA[
Dokładnie do takich celów proszę zakładać nowy temat. <span style="color: #0040FF">Ale uczulam, na tym forum nie chcę widzieć w kodach programów</span><br /><br /><strong><span style="font-size: 200%; line-height: normal"><span style="color: #FF0000"><em>#define F_CPU xxxxxxxx</em></span></span></strong><br /><br /><span style="color: #0040FF">tego NIGDY nie piszemy w kodzie programu.</span><br /><br />a poza tym tak jak kolega wyżej pisał:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">TIMSK|=(1&lt;&lt;TOIE1);</div><br /><br />tym zezwalasz tzn dajesz możliwość żeby timer generował jedno ze swoich przerwań (chociaż nazwę wektora źle wpisujesz) poczytaj to:<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/03/eclipse-jak-szybko-sprawdzic-np-nazwy.html" >http://mirekk36.blogspot.com/2012/03/ec ... nazwy.html</a><!-- m --><br /><br />ale nie można zapomnieć o GLOBALNYM odblokowaniu przerwań, czyli<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">sei();</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 gru 2012, o 09:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[alkan0id]]></name></author>
<updated>2012-12-07T12:49:22+01:00</updated>
<published>2012-12-07T02:22:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20375#p20375</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20375#p20375"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20375#p20375"><![CDATA[
Witam. <br />Nie chce zakładać nowego tematu a ten w zasadzie jest podobny do mojego więc zapytam tutaj.<br />Co jest wymagane do odblokowania przerwań pochodzących od licznika 1 i ich przechwycenia. Przerwanie powinno pochodzić z przepełnienia licznika bądź porównania jego stanu z pewną wartością.<br /><br />[syntax=c]<br />        sei();// globalne odblokowanie przerwań(jak odblokowuje przerwanie poprzez TIMSK to muszę też tego używać?)<br />DDRC=0xff; // odblokowanie portu c<br />TIMSK|=(1&lt;&lt;TOIE1); // odblokowanie przerwania od przepełnienia licznika T1<br />TCCR1B|=(1&lt;&lt;CS12); // ustawienie preskalera na 256 <br />[/syntax]<br />[syntax=c]<br />ISR(TIMER1_OVF_VECT) // wektor przepełnienia(przerwanie od porównywania wartości licznika to zdaje chyba TIMER1_COMPB)<br />{<br />        PORTC=0xff;<br />}<br />[/syntax]<br />Z tego co tam wyczytałem to powinno działać, a nie działa. Wszystkie biblioteki są dodane.<br />[syntax=c]#include &lt;util/delay.h&gt;<br />#include&lt;avr/io.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br />#define F_CPU 16000000;<br />[/syntax]<br />Domyślam się również, że jak chce wykorzystywać przerwanie które porównuje wartości, to tą porównywaną wartość również muszę gdzieś wpisać ale to już sobie znajdę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=714">alkan0id</a> — 7 gru 2012, o 02:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2012-12-06T13:57:50+01:00</updated>
<published>2012-12-06T13:57:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20281#p20281</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20281#p20281"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20281#p20281"><![CDATA[
W takim wypadku masz trzy wyjścia:<br />1. Szukać w necie kursów języka C (ja straciłem 6miesęcy na takich kursach a i tak nic z nich nie rozumiałem) wiec nie polecam<br />2. Przyspieszyć kupno I cz. książki Pana Mirka i zabrać się za czytanie. Polecam<br />3. Tak jak kolega powyżej wspomniał poproś moda o przeniesienie do rybnego.<br /><br />Każdy kurs w internecie ma inny styl pisania programów w C. Każdy autor takich kursów internetowych pisze je na swój sposób. Dlatego jeśli weźmiesz kawałek kodu z jednego i z drugiego i połączysz to prawdopodobne że nic z tego nie będzie. Trzeba uczyć się tylko z jednego źródła. Ważne są podstawy bo jeżeli będziesz je znał to wtedy dopiero możesz rozpatrywać inne projekty kursy i przerabiać na swój styl.<br />Sam widzisz ze w takim krótkim kodzie co podałeś ile błędów i niejasności. Musielibyśmy całą I cz. książki przepisać tutaj żebyś wiedział o co chodzi i wtedy mógł zrobić samemu. Pisanie programów to nie takie łatwe jak się wydaje <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=288">Janadamis</a> — 6 gru 2012, o 13:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-05T23:30:22+01:00</updated>
<published>2012-12-05T23:30:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20226#p20226</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20226#p20226"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20226#p20226"><![CDATA[
<div class="quotetitle">magicgoti napisał(a):</div><div class="quotecontent"><br />No ale rozumiem ze zamianiajać SIGNAL() na ISR i wywalając delay z przerwania to i tak kod i tak sam w sobie nie ma po prostu  sensu ? :&gt;<br /></div><br /><br />No niestety - nadal ten kod nie ma nic wspólnego z multipleksowaniem - w ogóle nie ma .... ale sam widzisz ile tych błędów się nawarstwiło przez pisanie kodu tak na podstawie tylko jakichś tam obserwacji a bez zrozumienia podstaw.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 gru 2012, o 23:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[magicgoti]]></name></author>
<updated>2012-12-05T22:28:05+01:00</updated>
<published>2012-12-05T22:28:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20224#p20224</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20224#p20224"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20224#p20224"><![CDATA[
No rzeczywiście to opóźnienie wewnątrz przerwania to moja głupota no i oczywiście nie wiedza, co do funkcji obsługi przerwań ok zapamiętam. Sporo znalazłem w necie kodów z uzyciem SIGNAL() dlatego tak napisałem.<br /><br />No ale rozumiem ze zamianiajać SIGNAL() na ISR i wywalając delay z przerwania to i tak kod i tak sam w sobie nie ma po prostu  sensu ? :&gt;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=710">magicgoti</a> — 5 gru 2012, o 22:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-05T22:14:52+01:00</updated>
<published>2012-12-05T22:14:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20222#p20222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20222#p20222"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20222#p20222"><![CDATA[
No to widzisz, kolega wyżej dobrze ci podpowiedział - że nie używa się SIGNAL() tylko ISR() i to postaraj się sobie zapamiętać a już będziesz troszkę do przodu. Druga rzecz - to też jak kolega wyżej napisał - NIGDY ale to NIGDY nie stosuj żadnych _delay_xx wewnątrz jakichkolwiek przerwań ok ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 gru 2012, o 22:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[magicgoti]]></name></author>
<updated>2012-12-05T21:35:47+01:00</updated>
<published>2012-12-05T21:35:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20219#p20219</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20219#p20219"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20219#p20219"><![CDATA[
Tak też myślałem po prostu w sumie we wtorek zacząłem &quot;uczyć&quot; się C jako że nie było czasu uczyć się od podstaw, a trzeba było napisać od razu program najpierw zapalający diodę, potem jeszcze coś i teraz to musiałem zacząć od d..y strony, że tak powiem ;p<br />Jakoś pewnie przebrnę przez te laboratoria, a do końca miesiąca mam nadzieję, będę już miał książkę u siebie. Kod powstał na podstawie wniosków przeglądając inne kody, wpisy, pdf'y. Jak widać nie wyszło ;p<br /><br />Co do funkcji obsługi przerwań, pozwiedzano mi na zajęciach, że mam użyć SIG_OFERFLOW, które razem wygrzebaliśmy z plików WinAvr io.h czy tam m128.h<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=710">magicgoti</a> — 5 gru 2012, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2012-12-05T21:36:54+01:00</updated>
<published>2012-12-05T21:34:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20218#p20218</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20218#p20218"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20218#p20218"><![CDATA[
delay 300ms w przerwaniu ??? No super to ci zabija procka na amen. Pokaż też w której linijce programu masz wystawienie na portc stanów odpowiadających konkretnej cyfrze. Zadeklarowałeś licznik jako tablicę char'ów a później podstawiasz pod licznik wartość int. Kompilator nie sypnął błędami ani warningami? Ponadto używasz nie zalecanej deklaracji funkcji obsługi przerwania powinno być:<br />[syntax=c]<br />ISR(TIMER0_OVF_vect)<br />{<br />}<br />[/syntax]<br />Jak chcesz gotowca poproś moda o przeniesienie do rybnego.<br /><br />No i kol. Mirek był szybszy w komentażu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 5 gru 2012, o 21:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-05T21:28:48+01:00</updated>
<published>2012-12-05T21:28:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20216#p20216</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20216#p20216"/>
<title type="html"><![CDATA[Re: Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20216#p20216"><![CDATA[
No witamy na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ale niestety nie mam dobrych wieści - bo w odpowiedzi na twoje końcowe pytanie niestety odpowiedź jest prosta - to nie ma żadnego sensu <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> w ogóle ....<br /><br />po prostu widać, że nie znasz jeszcze podstaw i np próba wytłumaczenia ci tutaj jak zrobić multipleksowanie - przekracza moje umiejętności .... tłumaczenia. Gdybym miał ci nawet kurs przyśpieszony zrobić i naziemny - to i tak TRZEBA byłoby zacząć od totalnych podstaw. Mam nadzieję, że nie odbierzesz tego jako zjechanie czy coś.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 gru 2012, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[magicgoti]]></name></author>
<updated>2012-12-05T22:38:06+01:00</updated>
<published>2012-12-05T20:44:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20210#p20210</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20210#p20210"/>
<title type="html"><![CDATA[Atmega128 /C /Prosty Licznik (newbie)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1885&amp;p=20210#p20210"><![CDATA[
Jako, że jest to mój pierwszy post na forum także Witam wszystkich <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Od jakiegoś czasu już przeglądam forum ale jakoś okazji do rejestracji nie było, dziś przyszła, długo się zastanawiałem czy tworzyć ten topić czy nie bo zostanę zjechany <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> albo co gorzej trafie do lochów.<br /> Zainteresowałem się tematem avr i c jakiś czas temu ale z powodu braku czasu odłożyłem zakup książki i atb autorstwa pana Mirka jednakże trochę się zmieniło i muszę nauczyć się C już nie z powodu chęci, a wymagań na studiach, dlatego też jeszcze w tym miesiącu zrobię sobie prezent i zamówię książki i pewnie płytkę. Książki jeszcze nie mam, a już muszę trochę umieć i napotkałem parę problemów. Są to bardzo proste rzeczy no ale cóż każdy kiedyś zaczynał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Mam do zrobienia program, który na jednym wyświetlaczu będzie prosty licznik, na drugim wyświetlaczy led 7 segmentowym znak wciśnięty z klawiatury matrycowej. Do drugiej części programu ciężko mi się wg zabrać chociaż widziałem jakiś topic SunRivera na temat obsługi takiej klawiatury muszę się przyjrzeć może uda mi się coś zrozumieć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />A więc prosty programik, który będzie wyświetlał liczby z przedziału [0 , 9] po kolei oczywiście:<br />[syntax=c] <br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />char cyfry[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};       <br /><br />void main(void)<br />{<br /> int i;<br /><br /> DDRC=0xFF;<br /><br />while (1)<br />      {<br />       for(i=0;i&lt;10;i++)    <br />        {<br />         PORTC=cyfry[i];<br />         delay_ms(300);<br />        }<br />      }<br />}  <br /><br />[/syntax]<br /><br /><br /><br />Ale niestety ma to być na przerwaniach, a o tym nie mam zielnego pojęcia, coś tam poczytałem co znalazłem i średnio to zrozumiałem, ale wykodziłem takie cudo:<br /><br /><br /><br />[syntax=c]<br />#include &lt;avr/io.h&gt; <br />#include &lt;avr/interrupt.h&gt; <br /><br />char licznik[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};<br /><br />void main()<br /><br />{<br /><br />DDRC = ffh; //konfiguracja portu jako wyjścia<br /><br />TCCR0 |= (1&lt;&lt;CS00) | (1&lt;&lt;CS02); //ustawienie preskalera na 1024<br /><br />TIMSK |= 1&lt;&lt;TOIE0; //włączenie przerwania od przepełnienia licznika<br /><br />sei(); //globalne włączenie przerwań<br /><br />while() <br />   {<br />   }<br /><br />}<br />ISR(SIG_OVERFLOW0) //początek funkcji obsługi przerwania<br /><br />{<br />licznik++; //zwiększenie o 1<br /><br />if(licznik &gt; 9) <br />{<br />licznik = 0; //wyzerowanie licznika<br />}<br />}<br /><br />[/syntax]<br /><br /><br />To moje cudo niestety nie działa i niestety teraz nie mam jak sprawdzić innych możliwości ponieważ nie mam żadnego mirkokontrolera w domu, dopiero jutro będę mógł podejść do laboratorium i skorzystać z płytki.<br />Ma wg jakikolwiek sens ten mój kod z użyciem przerwań ? Z góry dzięki za pomoc pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #FF0000">Nie żebym był wredny czy coś , ale mam dosyć poprawiania znaczników kodów źródłowych  --- SunRiver<br />wy edytuj i zobacz jak ma być umieszczane !!</span>sory! <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=710">magicgoti</a> — 5 gru 2012, o 20:44</p><hr />
]]></content>
</entry>
</feed>