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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-07-29T16:32:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7903&amp;mode</id>
<entry>
<author><name><![CDATA[hoolgarez182]]></name></author>
<updated>2014-07-29T16:32:15+01:00</updated>
<published>2014-07-29T16:32:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89353#p89353</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89353#p89353"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89353#p89353"><![CDATA[
Gdybym miał ten projekt tak na amen wykonać na płytce PCB to tak bym zrobił, ale w tym przypadku idzie się jakoś przyzwyczaić do tego efektu disko. Chociaż gorzej, gdy w pokoju jest zgaszone światło <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Ale.........  Wciągnęło mnie programowanie uC. Dłubię w Eclipse  od kilku dni i co raz więcej rzeczy staje się jasnych. Na próbę zassałem niebieską książkę z internetów i spodobała mi się bardzo. Zamówiłem dzisiaj zestaw TAURUS i nie mogę się doczekać kiedy przyjdzie:D Będę mógł iść dalej z materiałem zamiast tracić czas na łączenie obwodu na stykówce i dumanie nad tym czemu coś nie chodzi, a później się okazuje że wpiąłem kabelek nie do tego styku co trzeba bo błąd paralaksy się wkradł:D<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5239">hoolgarez182</a> — 29 lip 2014, o 16:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-07-29T15:17:48+01:00</updated>
<published>2014-07-29T15:17:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89344#p89344</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89344#p89344"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89344#p89344"><![CDATA[
Witam<br /><div class="quotetitle">hoolgarez182 napisał(a):</div><div class="quotecontent"><br />Dałem rezystor na anodę, żeby zaoszczędzić miejsce na płytce<br /></div><br />...a nie drażni Cię, że dla &quot;1&quot; cały wyświetlacz świeci jaśniutko a przy &quot;8&quot; znacznie ciemnieje?<br />Może te dodatkowe siedem rezystorów gdzieś upchasz.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 29 lip 2014, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hoolgarez182]]></name></author>
<updated>2014-07-28T21:52:33+01:00</updated>
<published>2014-07-28T21:52:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89296#p89296</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89296#p89296"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89296#p89296"><![CDATA[
Faktycznie. Raz, że &quot;utill&quot; a dwa to filmik &quot;Przerwania dla początkujących cz.1&quot; daje o sobie znać z tym dilejem w funkcji obsługującej przerwanie. <br /><br />Dzięki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Wyrzuciłem beepa z przerwania, a sygnalizację upływu czasu zrealizowałem trochę inaczej i śmiga.<br /><br />[syntax=c]/******************* FUNKCJA REZLIZOWANA PO PRZERWANIU Z TIMERA1 (zliczanie czasu) ************************************/<br />ISR(TIMER1_COMPA_vect)<br />{<br />jednostki++;<br /><br />if(jednostki &gt; 9) {jednostki = 0; dziesiatki++;}<br /><br />if(dziesiatki == 6 &amp;&amp; jednostki == 0)<br />{<br />TIMSK &amp;= ~(1&lt;&lt;OCIE1A); //zatrzymanie licznika czasu na 60<br />LED_PORT |= (LED1 | LED2 | LED3 | LED4);//zgaszenie LEDow<br /><br />dotkniecie = 9;<br /><br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5239">hoolgarez182</a> — 28 lip 2014, o 21:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-07-28T20:29:07+01:00</updated>
<published>2014-07-28T20:29:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89292#p89292</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89292#p89292"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89292#p89292"><![CDATA[
Powodem takiego zachowania jest funkcja beep() wewnątrz przerwania. W czasie obsługi jakiegoś przerwania blokowane są  inne przerwania. Twoja funkcja beep() wewnątrz przerwania trwa ok. 2,5 sekundy. Przez ten czas zablokowane jest przerwanie multipleksowania wyświetlacza. I dlatego po doliczeniu do 60 szwankuje ci wyświetlanie. <br /><br />Usuń funkcję beep() z przerwania i zobacz, że wyświetlanie zacznie działać poprawnie. <br /><br />Plik delay.h masz źle zainkludowany.<br />Zamiast [syntax=c]#include &lt;avr/delay.h&gt;[/syntax]<br />powinno być[syntax=c]#include &lt;util/delay.h&gt;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 28 lip 2014, o 20:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hoolgarez182]]></name></author>
<updated>2014-07-28T17:41:26+01:00</updated>
<published>2014-07-28T17:41:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89267#p89267</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89267#p89267"/>
<title type="html"><![CDATA[Prosta zabawka zręcznościowa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89267#p89267"><![CDATA[
Napisałem coś takiego. Nie mogę się doszukać czemu po tym jak zliczy do 60 zamiast od razu zatrzymać się na 60 przez chwilę wygasza segment dziesiątek i pokazuje jeszcze cyfrę 9 w jednościach. <br /><br />main.h<br />[syntax=c]#ifndef header_h<br />#define header_h<br /><br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br />/*************** segmenty 2,3 ****************************************************/<br />#define ANODA2 PORTB = (1&lt;&lt;PB7)<br />#define ANODA3 PORTB = (1&lt;&lt;PB6)<br /><br />#define DANE PORTD<br /><br /><br />/****************** ITERATORY DLA SEGMENTOW *************************************/<br /> extern volatile uint8_t dziesiatki;<br /> extern volatile uint8_t jednostki;<br /><br /><br />/*************** TABLICA Z LICZBAMI 0-9 ***************************/<br /><br />const uint8_t PROGMEM data&#91;&#93; = {<br />0x40,// 0<br />0x79,// 1<br />0x24,// 2<br />0x30,// 3<br />0x19,// 4<br />0x12,// 5<br />0x02,// 6<br />0x58,// 7<br />0x00,// 8<br />0x10,// 9<br />};<br /><br /><br /><br />/**************** DIODY LED, DRUT oraz BUZZER **************************************/<br />#define LED_PORT PORTC<br /><br />#define LED1 (1&lt;&lt;PC0)<br />#define LED2 (1&lt;&lt;PC1)<br />#define LED3 (1&lt;&lt;PC2)<br />#define LED4 (1&lt;&lt;PC3)<br /><br />#define DRUT 0b0100000<br />extern volatile uint8_t dotkniecie;<br /><br />#define BUZZER_ON PORTC |= (1&lt;&lt;PC4)<br />#define BUZZER_OFF PORTC &amp;= ~(1&lt;&lt;PC4)<br /><br /><br /><br /><br /><br /><br />void init(void);<br /><br />#endif[/syntax]<br /><br />inicjalizacja.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />void init(void)<br />{<br />/************************** KONFIGURACJA I/0 *******************************************************/<br />DDRB = 0b11000000;<br />DDRD = 0b01111111;<br />DDRC = 0b0011111;<br /><br />PORTC = 0b0100000;<br /><br /><br />/********************** KONFIGURACJA TIMERA0 OBSLUGUJACEGO WYSWIETLACZ ********************************/<br />TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); //preskaler 1024<br />TIMSK |= (1&lt;&lt;TOIE0); //zezwolenie na przerwanie od przepelnienia T0<br />TCNT0 = 179; //ustawienie wartosci poczatkowej TCNT0<br /><br /><br />/*************** KONFIGURACJA TIMERA1 OBSLUGUJACEGO ZLICZANIE CZASU *************************/<br />TCCR1B |=(1&lt;&lt;WGM12);<br />TCCR1B |= (1&lt;&lt;CS12);<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />OCR1A = 31249;<br /><br /><br /><br /><br />}[/syntax]<br /><br />main.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/delay.h&gt;<br /><br />#include &quot;main.h&quot;<br /><br />volatile uint8_t jednostki = 0;<br />volatile uint8_t dziesiatki = 0;<br />volatile uint8_t dotkniecie = 0;<br /><br /><br /><br />int main(void)<br />{<br />init(); //inicjalizacja<br /><br />sei();//globalne zezwolenie na przerwanie<br /><br /><br /><br /><br />/******************* PETLA GLOWNA PROGRAMU **************************************************************/<br />while(1)<br />{<br /><br />switch(dotkniecie)<br />{<br />case 1: LED_PORT |= LED1;<br />beep(1);<br />dotkniecie++;<br />break;<br /><br />case 3:LED_PORT |= LED2;<br />beep(1);<br />dotkniecie++;<br />break;<br /><br />case 5:LED_PORT |= LED3;<br />beep(1);<br />dotkniecie++;<br />break;<br /><br />case 7:LED_PORT |= LED4;<br />beep(1);<br />dotkniecie++;<br />break;<br /><br />case 9:TIMSK &amp;= ~(1&lt;&lt;OCIE1A);<br />beep(2);<br />dotkniecie++;<br />break;<br /><br />default: break;<br /><br /><br />}<br /><br />if(!(PINC &amp; DRUT))<br />{<br /><br />dotkniecie++;<br />_delay_ms(1000);<br /><br />}<br /><br />}<br /><br /><br /><br /><br /><br />}<br /><br /><br />/******************* FUNKCJA REZLIZOWANA PO PRZERWANIU Z TIMERA0 (obsluga wyswietlacza) **************************************/<br />ISR(TIMER0_OVF_vect)<br />{<br />static uint8_t licznik = 1;<br /><br /><br />if(licznik==1){ANODA3;}//aktywacja segmentu 3go<br />if(licznik==2){ANODA2;}//aktywacja segmentu 2go<br />licznik &lt;&lt;= 1;<br />if(licznik&gt;2){licznik = 1;}<br /><br />switch(licznik)<br />{<br />case 2:DANE = pgm_read_byte(&amp;data&#91;jednostki&#93;);//wyswietlenie jednostek<br />break;<br /><br />case 1:DANE = pgm_read_byte(&amp;data&#91;dziesiatki&#93;);//wyswietlenie dziesiatek<br />break;<br /><br />default: break;<br /><br />}<br /><br />TCNT0 = 176;//ustawienie TCNT0 na 179 po każdym wykonaniu przerwania<br /><br /><br />}<br /><br /><br />/******************* FUNKCJA REZLIZOWANA PO PRZERWANIU Z TIMERA1 (zliczanie czasu) ************************************/<br />ISR(TIMER1_COMPA_vect)<br />{<br />jednostki++;<br /><br />if(jednostki &gt; 9) {jednostki = 0; dziesiatki++;}<br /><br />if(dziesiatki == 6 &amp;&amp; jednostki == 0)<br />{<br />TIMSK &amp;= ~(1&lt;&lt;OCIE1A); //zatrzymanie licznika czasu na 60<br />LED_PORT |= (LED1 | LED2 | LED3 | LED4);//zgaszenie LEDow<br />beep(2);<br />dotkniecie = 10;<br /><br />}<br /><br />}<br /><br />void beep(uint8_t typ_beepa)<br /> {<br />uint8_t iterator1 = 0;<br />uint16_t iterator2 = 0;<br />switch(typ_beepa)<br />{<br />case 1:for(; iterator1 &lt; 80; iterator1++)<br />{<br />BUZZER_ON;<br />_delay_ms(10);<br />BUZZER_OFF;<br />}<br />iterator1 = 0;<br />break;<br /><br />case 2:for(; iterator2 &lt; 254 ; iterator2++)<br />{<br />BUZZER_ON;<br />_delay_ms(10);<br />BUZZER_OFF;<br />}<br />iterator2 = 0;<br />break;<br /><br />default: break;<br /><br /><br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5239">hoolgarez182</a> — 28 lip 2014, o 17:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hoolgarez182]]></name></author>
<updated>2014-07-28T11:28:26+01:00</updated>
<published>2014-07-28T11:28:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89238#p89238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89238#p89238"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89238#p89238"><![CDATA[
Co do rezystorów 100R zgadza się. Przez diody płynąłby wtedy maksymalny dopuszczalny prąd, a w sumie po co jeśli mają sygnalizować, a nie oświetlać pomieszczenie. Zmienione na 470R i zamiast 16mA, płynie 5mA <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dałem rezystor na anodę, żeby zaoszczędzić miejsce na płytce. Dobrałem go tak, żeby w przypadku świecenia tylko jednego z 7 segmentów nic mu się złego nie stało. <br /><br />Teraz  robię zabawkę. Wyświetlacz jest multipleksowany i wskazuje odliczanie do 60 sekund. Są 4 diody LED, które sygnalizują liczbę możliwych prób. W ciągu tych 60 sekund trzeba przeciągnąć kluczyk przez drut zawijas. Każde jego dotknięcie powoduje zgaszenie jednej diody LED. Jeśli nie zmieścimy się w czasie to też przegrana i wtedy wszystkie LEDy gasną. Dodam jeszcze buzzer i jakieś efekty specjalne <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Zobaczy się co z tego wyjdzie. Gdy skończę to wrzucę kod tutaj. Może się komuś przyda, a jeśli popełnię w kodzie jakieś błędy to mnie także wskazówki się przydadzą:)<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5239">hoolgarez182</a> — 28 lip 2014, o 11:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-07-28T00:27:19+01:00</updated>
<published>2014-07-28T00:27:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89206#p89206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89206#p89206"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89206#p89206"><![CDATA[
Witam<br />Ja w sprawie schematu:<br />-jeśli LED'y są typowo &quot;sygnalizacyjne&quot; to ich rezystory 100R są stosunkowo za małe; proponuję od 180R wzwyż.<br />-mógłbyś słownie opisać podłączenie wyświetlaczy LED - jeden rezystor na wspólną ANODĘ ??<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 28 lip 2014, o 00:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hoolgarez182]]></name></author>
<updated>2014-07-27T18:18:36+01:00</updated>
<published>2014-07-27T18:18:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89152#p89152</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89152#p89152"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=89152#p89152"><![CDATA[
Z tego co ja tu widzę to tak jest. Teraz, gdy wgrywa się program to &quot;zaskakuje&quot; on dopiero za którymś razem. Jeśli nie zaskoczy to realizowany jest poprzedni wgrany program:/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5239">hoolgarez182</a> — 27 lip 2014, o 18:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hoolgarez182]]></name></author>
<updated>2014-07-25T12:06:54+01:00</updated>
<published>2014-07-25T12:06:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88848#p88848</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88848#p88848"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88848#p88848"><![CDATA[
Rozebrałem układ w drobny mak. Wykonałem minimalne podłączenie atmegi8 żeby sprawdzić czy mkAVRCalculator go odczyta. I udało się <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Zmontowałem układ jeszcze raz i działa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Wychodzi na to, że coś gdzieś musiało zewrzeć. Dziwie się, że uC nadal działa. Był tak gorący, że nie szło się go dotknąć. Dziękuję za odpowiedź i nakierowanie na ten post. Dioda zabezpieczająca dodana <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=5239">hoolgarez182</a> — 25 lip 2014, o 12:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-07-25T11:21:35+01:00</updated>
<published>2014-07-25T11:21:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88839#p88839</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88839#p88839"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88839#p88839"><![CDATA[
<div class="quotetitle">PawelGaj napisał(a):</div><div class="quotecontent"><br />Jestem prawie pewien, że żywot procesora został skończony przez szpilkę z cewki przekaźnika. A wystarczyła 1 dioda 1N4841 i nie byłoby &quot;tragedii&quot; <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /></div><br /><br />Dokładnie - dlatego warto zaglądać na blog ... a w tym konkretnym przypadku szczególnie tutaj:<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/04/przekaznik-procesor-i-zakocenia.html" >http://mirekk36.blogspot.com/2012/04/pr ... cenia.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 25 lip 2014, o 11:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PawelGaj]]></name></author>
<updated>2014-07-25T11:16:01+01:00</updated>
<published>2014-07-25T11:16:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88837#p88837</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88837#p88837"/>
<title type="html"><![CDATA[Re: Spalony procesor po dodaniu instrukcji gaszenia diody LE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88837#p88837"><![CDATA[
Jestem prawie pewien, że żywot procesora został skończony przez szpilkę z cewki przekaźnika. A wystarczyła 1 dioda 1N4841 i nie byłoby &quot;tragedii&quot; <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=784">PawelGaj</a> — 25 lip 2014, o 11:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hoolgarez182]]></name></author>
<updated>2014-07-25T10:50:58+01:00</updated>
<published>2014-07-25T10:50:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88834#p88834</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88834#p88834"/>
<title type="html"><![CDATA[Spalony procesor po dodaniu instrukcji gaszenia diody LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7903&amp;p=88834#p88834"><![CDATA[
Witam. Dopiero zacząłem przygodę z programowaniem uC. Zmontowałem układ na płytce stykowej z wykorzystaniem atmega8 i napisałem program, który zlicza do 90 wyświetlając kolejne liczby, następnie zapala się dioda LED, znowu zlicza do 90 i znowu zapala się dioda LED. Dzieje się tak póki wszystkie 4 diody LED nie zostaną zaświecone. <br /><br />Dalej w ramach &quot;a co jeśli?&quot; podłączyłem przekaźnik 5V  sterowany tranzystorem npn  C945. Przekaźnik przez czas zliczania był załączony. Po czterokrotnym zliczeniu do 90 przekaźnik wyłączał się.<br /><br />Dołączyłem do PC5 diodę LED, żeby nauczyć się obsługi nieużywanych pinów portu C mino przesunięcia bitowego, które tam jest. Na początek dla sprawdzenia wpisałem zwykłe polecenie wyłączające diodę na koniec programu. Zaraz po wgraniu uC padł i przejął rolę grzejnika podłączanego na USB.<br /><br />Na czas programowania odłączałem zworkę J1, ponieważ cześć pinów portu B służy do programowania i przy próbie wgrania wsadu wyskakiwał błąd.<br /><br />Mam takie pytanio-prośbę w zasadzie. Chodzi mi o wytłumaczenie co zrobiłem źle. Czy uszkodzenie uC było spowodowane zbyt dużym prądem spływającym do niego ze wszystkich diod LED, czy w jakiś sposób tą ostatnią instrukcją, którą dodałem, a może jeszcze czymś innym? Zanim dodałem diodę do pinu PC5 mimo mojego kombinowana z kodem na wszystkie strony atmedze nic nie było.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/5239/0c648467306e997ce1d6a824759911d6.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5239/0c648467306e997ce1d6a824759911d6.jpg" alt="Obrazek" /></a><br /><br /><br />plik main.c<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LED.h&quot;<br /><br /><br />int main(void)<br />{<br />//licznik dla jednostek<br />uint8_t i=0;<br />//licznik dla dziesiatek<br />uint8_t j=0;<br /><br />//ustawienie wyjsc<br />DDRD = 0xFF;<br />DDRB = 0xFF;<br />DDRC = 0xFF;<br /><br />//LEDy nie swieca<br />LED_PORT = 0xFF;<br /><br />//segmenty nie swieca<br />SEG_1 = SEG_2 = 0xFF;<br /><br /><br /><br />while(1)<br />{<br /><br />if(!(PINC &amp; 0b00001111)) goto koniec; //jesli wszystkie 4 diody LED zapalone skok do &quot;koniec&quot;<br /><br />//iteracja jednostek<br />SEG_1 = pgm_read_byte(&amp;data&#91;i&#93;); <br />_delay_ms(100);<br />i++;<br />if(i &gt; 9) {i = 0; j++;}<br /><br />//iteracja dziesiatek<br />SEG_2 = pgm_read_byte(&amp;data&#91;j&#93;);<br />if(j==9 &amp;&amp; i==0) {j = 0; i = 0; LED_PORT &lt;&lt;= 1;}<br /><br />}<br /><br />koniec:<br /><br />//ustawienie stalej wartosci na segmentach<br />SEG_2 = pgm_read_byte(&amp;data&#91;9&#93;);<br />SEG_1 = pgm_read_byte(&amp;data&#91;0&#93;);<br /><br />PORTD |= ~(1&lt;&lt;PD7); //wylaczenie przekaznika - gdy zliczanie caly czas wlaczony<br /><br />//!!!!!!!!!!!!!!!!!! PO DODDANIU TEJ INSTRUKCJI uC dokonal zywota !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />PORTC |= (1&lt;&lt;PC5);//zgaszenie diody na PC5 <br /><br />}[/syntax] <br /><br />plik LED.h<br /><br />[syntax=c]#include &lt;avr/pgmspace.h&gt;<br /><br />//segment 1 i 2<br />#define SEG_1 PORTD<br />#define SEG_2 PORTB<br /><br />//PORTC dla diod LED<br />#define LED_PORT PORTC<br /><br />//poszczegolne diody LED podpiete do portu C<br />#define LED1 (1&lt;&lt;PC0)<br />#define LED2 (1&lt;&lt;PC1)<br />#define LED3 (1&lt;&lt;PC2)<br />#define LED4 (1&lt;&lt;PC3)<br /><br />//gaszenie i zaswiecanie diod LED<br />#define LED1_ON PORTC &amp;= ~LED1<br />#define LED1_OFF PORTC |= LED1<br />#define LED2_ON PORTC &amp;= ~LED2<br />#define LED2_OFF PORTC |= LED2<br />#define LED3_ON PORTC &amp;= ~LED3<br />#define LED3_OFF PORTC |= LED3<br />#define LED4_ON PORTC &amp;= ~LED4<br />#define LED4_OFF PORTC |= LED4<br /><br /><br />//tablica z liczbami do wysiwetlenia <br />//kropka caly czas wylaczona<br />//KONIEC to &quot;9&quot; i DP<br />const uint8_t PROGMEM  data&#91;&#93; = {<br />0xC0,// 0<br />0xF9,// 1<br />0xA4,// 2<br />0xB0,// 3<br />0x99,// 4<br />0x92,// 5<br />0x82,// 6<br />0xD8,// 7<br />0x80,// 8<br />0x90,// 9<br />0x10,//KONIEC<br />};[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5239">hoolgarez182</a> — 25 lip 2014, o 10:50</p><hr />
]]></content>
</entry>
</feed>