<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=30&amp;t=3095&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-05-13T23:24:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=3095&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-13T23:24:27+01:00</updated>
<published>2013-05-13T23:24:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36881#p36881</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36881#p36881"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36881#p36881"><![CDATA[
<div class="quotetitle">bolciu napisał(a):</div><div class="quotecontent"><br />rzecz w tym że sprawdzałem i w programie nie ma takiego bitu dla atmega8<br /></div><br /><br />A no to jak sprawdzałeś to już sobie odpowiedziałeś sam na pytanie że problem nie jest związany z tym fusebitem bo ATmega8 go nie ma <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">bolciu napisał(a):</div><div class="quotecontent"><br />nie zmienia to faktu że u mnie portc w dalszym ciagu nie dziala<br /></div><br /><br />No i ciężko cokolwiek pomóc dokąd nie pokażesz schematu albo zdjęcia płytki - bo masz babola w sprzęcie. Ciekawe np czy podłączyłeś prawidłowo zasilanie procka  tak w ogóle?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 maja 2013, o 23:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bolciu]]></name></author>
<updated>2013-05-13T23:04:51+01:00</updated>
<published>2013-05-13T23:04:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36880#p36880</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36880#p36880"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36880#p36880"><![CDATA[
rzecz w tym że sprawdzałem i w programie nie ma takiego bitu dla atmega8<br /><br />nie zmienia to faktu że u mnie portc w dalszym ciagu nie dziala<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1293">bolciu</a> — 13 maja 2013, o 23:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-13T07:18:55+01:00</updated>
<published>2013-05-13T07:18:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36816#p36816</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36816#p36816"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36816#p36816"><![CDATA[
ale powiedz czy trudno odpalić program mkAvrCalculator i sprawdzić czy masz tam bit JTAGEN ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> zajrzyj do niego ok ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />w ogóle wejdź na mój blog i zobacz pierwszy lepszy poradnik dla początkującego w każdym prawie mowa o tym programie a nawet w książce masz o nim<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 maja 2013, o 07:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bolciu]]></name></author>
<updated>2013-05-12T22:49:36+01:00</updated>
<published>2013-05-12T22:49:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36813#p36813</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36813#p36813"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36813#p36813"><![CDATA[
Urodziło mi się nowe pytanie.<br /><br />Czy w atmega8 jest jakaś blokada portuC?<br />Bawiąc się kombinacjami diód i ich migotaniem w dziwny sposób zauważyłem, że diody podłączone do portów B i D działają natomiast wszystko podłączone do portu C nie działa.<br /><br />Jest jakaś naturalna przyczyna?<br /><br />Edit:<br /><br />W książce chyba znalazłem odpowiedź. Strona 364 JTAGEN. Nie działąją niektóre piny portu C w atmega16 i 32<br />Czy tyczy się to też atmega8?<br />I czy mając USBASP mogę ten bit skasować?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1293">bolciu</a> — 12 maja 2013, o 22:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-12T14:46:39+01:00</updated>
<published>2013-05-12T14:46:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36780#p36780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36780#p36780"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36780#p36780"><![CDATA[
no tak jak masz wiecej niz jeden wyswietlacz to najczesciej stosuje sie juz multipleksowanie w razie czego w ksiazce masz przyklad<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 maja 2013, o 14:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bolciu]]></name></author>
<updated>2013-05-12T12:51:29+01:00</updated>
<published>2013-05-12T12:51:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36760#p36760</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36760#p36760"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36760#p36760"><![CDATA[
Dziękuję bardzo zaraz przestudiuję żeby dokładnie zrozumieć  jak to działa.<br /><br />Kolejny krok to zakup trzech tranzystorów żeby podłączyć trzy wyświetlacze i możliwość liczenie 300 -&gt; 0.<br /><br />Rozumiem, że do takiego przykładu mam podchodzić jak do multiplexowania w niebieskiej książce?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1293">bolciu</a> — 12 maja 2013, o 12:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[vol_up]]></name></author>
<updated>2013-05-12T11:44:05+01:00</updated>
<published>2013-05-12T11:44:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36751#p36751</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36751#p36751"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36751#p36751"><![CDATA[
kolego wypróbuj może to :[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 11-05-2013<br /> *      Author: Bolo<br /> *      corrected by: vol_up<br /> */<br /><br />//------------------------ dołączenie potrzebnych plików nagłówkowych<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />//----------------------------- definicje dla preprocesora --------------------------------------<br /><br />#define LED_DATA PORTD //---------------- portD z podłączonym wyswietlaczem siedmiosegmentowym<br />#define LED_DATA_DIR DDRD //----------------- rejestr kierunku portu<br /><br />#define SEG_A ( 1&lt;&lt; 0 ) //------------ segment A na pinie PD0<br />#define SEG_B ( 1&lt;&lt; 1 ) //------------ segment B na pinie PD1<br />#define SEG_C ( 1&lt;&lt; 2 ) //------------ segment C na pinie PD2<br />#define SEG_D ( 1&lt;&lt; 3 ) //------------ segment D na pinie PD3<br />#define SEG_E ( 1&lt;&lt; 4 ) //------------ segment E na pinie PD4<br />#define SEG_F ( 1&lt;&lt; 5 ) //------------ segment F na pinie PD5<br />#define SEG_G ( 1&lt;&lt; 6 ) //------------ segment A na pinie PD6<br /><br />#define KEY_PIN ( 1&lt;&lt; PB0 ) //---------- Microswitch podłączony do PB0<br />#define KEY_DOWN !( PINB &amp; KEY_PIN )<br /><br />//------------------------------ koniec definicji dla preprocesora -------------------------------<br /><br />// Tablica z kombinacją kodów zapisana w pamięci stałej<br />const uint8_t cyfry&#91;10&#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 />};<br /><br />// pętla główna programu<br /><br />int main (void)<br />{<br />//inicjalizacja<br /><br />uint8_t i = 1 ; //------------------------------ wartoć początkowa zmiennej i<br /><br />DDRB &amp;= KEY_PIN; //----------------------------- kierunek pinu PB0 - wejściowy<br />PORTB |= KEY_PIN; //---------------------------- podciągnięcie pinu do VCC<br /><br />LED_DATA_DIR = 0xFF;//-------------------------- wszystkie piny portu D jako WYJŚCIA<br />LED_DATA = pgm_read_byte( &amp;cyfry&#91;0&#93; ); //------- przy starcie programu na wyświetlaczu pojawi się 0<br /><br /><br />//główna pętla programu<br /><br />while(1)<br />{<br />if( KEY_DOWN ) //---------------------------- jeli wcinięty przycisk<br />{<br />_delay_ms(80); //------------------------ odczekujemy aż ustaną drgania styku<br /><br />if( KEY_DOWN ) //------------------------ jeśli nadal wcinięty przycisk<br /><br />{<br />// w tym warunku sprawdzamy najpierw ilość wciśnięć przycisku. Jeżeli jest mniej lub równo 9 to<br />// odczytujemy kod z tablicy z pod pozycji na którą wskazuje zmienna i<br />if (i &lt;= 9)<br />{<br />LED_DATA = pgm_read_byte( &amp;cyfry&#91;i&#93; );<br />i = i + 1 ; //----------------- lub i++ ; ( zwiększamy zmienną i o 1 )<br />}<br />// jeśli wciśniemy przycisk 10-ty raz to do zmiennej LED_DATA wczytujemy z tablicy kod z pozycji 0<br />// ( w tym przypadku jest to cyfra 0 ) i do zmiennej i przypisujemy jedynkę.<br />else<br />{<br />LED_DATA = pgm_read_byte( &amp;cyfry&#91;0&#93; );<br />i = 1 ;<br />}<br />_delay_ms(200);<br /><br />}<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=789">vol_up</a> — 12 maja 2013, o 11:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bolciu]]></name></author>
<updated>2013-05-12T11:19:20+01:00</updated>
<published>2013-05-12T11:19:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36745#p36745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36745#p36745"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36745#p36745"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ale temat wraca jak bumerang troszke ostatnio<br /><br />przede wszystkim jaki masz wyswietlacz ? i jak podlaczony ? jakis schemat ???<br /><br />bo o tym nic nie napisales , tylko nie obrazaj sie zaraz ze pytam o schemat bo kilka dni temu tak bylo na forum z innym kolega a wlasnie sie okazalo ze ma calkiem inne polaczenia niz wynika to z kodow z ksiazki .... a oczywiscie problemu szukal tez tylko w kodzie<br /><br />to jest elektronika a nie program na pc wiec schemat to podstawa ok?<br /></div><br /><br />Panie Mirku nie zarejestrowałem się na tym forum żeby się obrażać tylko czegoś się nauczyć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Zresztą podobnie jest z wydanymi pieniędzmi, nie kupiłem książki żeby rozpaić nią w piecu a elektroniki na śniadanie nie zjem.<br /><br />Schematu chwiliowo nie ma bo dopiero po przeczytaniu Pana posta zabieram się za instalację Eagle'a i przegądaniu Pana tutorialu na youtubie odnośnie rysowania schematów.<br /><br />Mogę napisać tylko, że wyświetlacz jest siedmiosegmentowy  LSD056BUE-105 (jedna cyfra ze wspólną anodą) katody podłączone do Portu D (od PD0 do PD6 kropki nie używam) przez rezystory 220R natomiast anoda połączona do GND<br />Wiem, że bez schematu to czysta gadanina i też mi się za taki sposób dostanie, ale nadrobię braki po jakimś najprostszym opanowaniu eagla.<br /><br /><div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Skoro tablica cyfry znajduje się w pamięci programu (użyte PROGMEM) to należy skorzystać ze specjalnej funkcji do odczytu z tej pamięci:<br />[syntax=c]LED_DATA = pgm_read_byte( &amp;cyfry&#91;i&#93; );[/syntax]<br /></div><br /><br />No tak jak byk napisane na stroniw 200. Tylko dlatego, że argumentem funkcjisystemowej jest adres bajtu lub wskaźnik...<br /><br /><div class="quotetitle">vol_up napisał(a):</div><div class="quotecontent"><br />tak na początek w linii kodu nr. 27 z definicji wynika, że klawisz podpinasz do PB0 a w komentarzu, że do PB1<br /></div><br />faktycznie komentarz błędny już poprawione<br /><br /><div class="quotetitle">vol_up napisał(a):</div><div class="quotecontent"><br />Następnie w pierwszym warunku IF w linii kodu nr. 66 zerujesz zmienną i a w następnym warunku IF zwiększasz o 1. Z tego wynika, że za każdym razem kiedy wciśniesz klawisz zmienna i będzie miała wartość 1.<br /></div><br />ok już zrozumiałem co się w kodzie działo i dlaczego cały czas zero się wyświetlało <br /><br />[/quote=&quot;vol_up&quot;]W linii kodu nr. 56 definiujesz zmienną i jako int ( rezerwujesz w pamięci RAM 2 bajty ) a można użyć uint8_t ( rezerwujesz tylko 1 bajt ) a  dodatkowo należało by ją na samym początku zainicjować w tym konkretnym przypadku zerem ( poczytaj niebieska książka str. 71 do 74 ) [syntax=c]uint8_t i = 1 ;[/syntax][/quote]<br /><br />No tak było pisane o szanowaniu zasobów też poprawione.<br /><br />Serdecznie dziękuję po waszych podpowiedziach dokonałem modyfikacji i działa tak jak powinno po naciśnięciu przycisku cyfry zmieniają się od 0 do 9 (tu musiałem jeszcze dodać warunek i&lt;10 bo po cyfrze 9 wyświetlało jakieś krzaki przy dalszym palcowaniu przycisku.<br /><br />No i działający kod poniżej<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 11-05-2013<br /> *      Author: Bolo<br /> */<br /><br />// dołączenie potrzebnych plików nagłówkowych<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />// definicje dla preprocesora<br /><br />#define LED_DATA PORTD              //port D z podłączonym wyswietlaczem siedmiosegmentowym<br />#defineLED_DATA_DIR DDRD           //kierunek rejestru ustawiony na wyjscia<br /><br />#define SEG_A (1&lt;&lt;0)//segment A na pinie PD0<br />#define SEG_B (1&lt;&lt;1)//segment B na pinie PD1<br />#define SEG_C (1&lt;&lt;2)//segment C na pinie PD2<br />#define SEG_D (1&lt;&lt;3)//segment D na pinie PD3<br />#define SEG_E (1&lt;&lt;4)//segment E na pinie PD4<br />#define SEG_F (1&lt;&lt;5)//segment F na pinie PD5<br />#define SEG_G (1&lt;&lt;6)//segment A na pinie PD6<br /><br />#define KEY_PIN (1&lt;&lt;PB0)//Microswitch podłączony do PB0<br />#define KEY_DOWN ! (PINB &amp; KEY_PIN)<br /><br />uint8_t cyfry&#91;10&#93; PROGMEM =//Tablica z kombinacją kodów zapisana w pamięci stałej<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 />};<br /><br /><br />// pętla główna programu<br /><br />int main (void)<br />{//klamra rozpoczynająca pętlę główną main<br /><br />//inicjalizacja<br /><br />    LED_DATA_DIR = 0xFF;   // wszystkie piny portu D jako WYJŚCIA<br />LED_DATA = 0xFF;// wygaszenie wyswietlacza<br />DDRB &amp;= KEY_PIN;<br />PORTB |= KEY_PIN;<br />uint8_t i = 0;<br /><br />    //główna pętla programu<br /><br />    while(1)<br />    {//klamra rozpoczynająca pętlę główną programu<br /><br />    if( KEY_DOWN )<br />    {<br />    _delay_ms(80);//programowa eliminacja drgan styków<br />     if( KEY_DOWN &amp;&amp; i&lt;10 )<br /><br />    {<br />    LED_DATA = pgm_read_byte( &amp;cyfry&#91;i&#93; );<br />    _delay_ms(200);<br />    i=i+1;<br />    }<br /><br />    }<br /><br />    }//klamra kończąca pętlę główną programu<br /><br /><br />}//klamra kończąca pętlę główną main[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1293">bolciu</a> — 12 maja 2013, o 11:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[vol_up]]></name></author>
<updated>2013-05-12T08:59:28+01:00</updated>
<published>2013-05-12T08:59:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36735#p36735</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36735#p36735"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36735#p36735"><![CDATA[
tak na początek w linii kodu nr. 27 z definicji wynika, że klawisz podpinasz do PB0 a w komentarzu, że do PB1<br /><br />Następnie w pierwszym warunku IF w linii kodu nr. 66 zerujesz zmienną i a w następnym warunku IF zwiększasz o 1. Z tego wynika, że za każdym razem kiedy wciśniesz klawisz zmienna i będzie miała wartość 1.<br /><br />W linii kodu nr. 56 definiujesz zmienną i jako int ( rezerwujesz w pamięci RAM 2 bajty ) a można użyć uint8_t ( rezerwujesz tylko 1 bajt ) a  dodatkowo należało by ją na samym początku zainicjować w tym konkretnym przypadku zerem ( poczytaj niebieska książka str. 71 do 74 ) [syntax=c]uint8_t i = 1 ;[/syntax]<br /> tak jak napisał Krauser linia kodu nr. 70 jest błędna powinno być [syntax=c]LED_DATA = pgm_read_byte( &amp;cyfry&#91;i&#93; );[/syntax] ( poczytaj na ten temat niebieska książka str. 199-200 )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=789">vol_up</a> — 12 maja 2013, o 08:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-05-12T08:44:56+01:00</updated>
<published>2013-05-12T08:44:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36733#p36733</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36733#p36733"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36733#p36733"><![CDATA[
Skoro tablica cyfry znajduje się w pamięci programu (użyte PROGMEM) to należy skorzystać ze specjalnej funkcji do odczytu z tej pamięci:<br />[syntax=c]LED_DATA = pgm_read_byte( &amp;cyfry&#91;i&#93; );[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 12 maja 2013, o 08:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-12T05:54:01+01:00</updated>
<published>2013-05-12T05:54:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36730#p36730</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36730#p36730"/>
<title type="html"><![CDATA[Re: Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36730#p36730"><![CDATA[
ale temat wraca jak bumerang troszke ostatnio<br /><br />przede wszystkim jaki masz wyswietlacz ? i jak podlaczony ? jakis schemat ???<br /><br />bo o tym nic nie napisales , tylko nie obrazaj sie zaraz ze pytam o schemat bo kilka dni temu tak bylo na forum z innym kolega a wlasnie sie okazalo ze ma calkiem inne polaczenia niz wynika to z kodow z ksiazki .... a oczywiscie problemu szukal tez tylko w kodzie<br /><br />to jest elektronika a nie program na pc wiec schemat to podstawa ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 maja 2013, o 05:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bolciu]]></name></author>
<updated>2013-05-12T02:11:04+01:00</updated>
<published>2013-05-12T02:11:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36728#p36728</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36728#p36728"/>
<title type="html"><![CDATA[Dłubanina Bolcia]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3095&amp;p=36728#p36728"><![CDATA[
Witam,<br /><br />Mam już niebieską książkę, niestety nie mam elementów które są tam wykożystywane i staram się dostosować zadania do tego co mam w domu.<br /><br />Mam problem z którym jakoś nie potrafię sobie poradzić. Dla większości sprawa prosta:<br /><br />-Atmega8<br />-microswitch podłączony do portu B<br />-wyświetlacz siedmiosegmentowy podłączony do portu D<br /><br />Chciałbym osiągnąć zmianę cyfry na wyświetlaczu o jeden w górę po naciśnięciu przycisku mój kod poniżej<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 11-05-2013<br /> *      Author: Bolo<br /> */<br /><br />// dołączenie potrzebnych plików nagłówkowych<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />// definicje dla preprocesora<br /><br />#define LED_DATA PORTD              //port D z podłączonym wyswietlaczem siedmiosegmentowym<br />#defineLED_DATA_DIR DDRD           //kierunek rejestru ustawiony na wyjscia<br /><br />#define SEG_A (1&lt;&lt;0)//segment A na pinie PD0<br />#define SEG_B (1&lt;&lt;1)//segment B na pinie PD1<br />#define SEG_C (1&lt;&lt;2)//segment C na pinie PD2<br />#define SEG_D (1&lt;&lt;3)//segment D na pinie PD3<br />#define SEG_E (1&lt;&lt;4)//segment E na pinie PD4<br />#define SEG_F (1&lt;&lt;5)//segment F na pinie PD5<br />#define SEG_G (1&lt;&lt;6)//segment A na pinie PD6<br /><br />#define KEY_PIN (1&lt;&lt;PB0)//Microswitch podłączony do PB1<br />#define KEY_DOWN ! (PINB &amp; KEY_PIN)<br /><br />uint8_t cyfry&#91;10&#93; PROGMEM =//Tablica z kombinacją kodów zapisana w pamięci stałej<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 />};<br /><br /><br />// pętla główna programu<br /><br />int main (void)<br />{//klamra rozpoczynająca pętlę główną main<br /><br />//inicjalizacja<br /><br />    LED_DATA_DIR = 0xFF;   // wszystkie piny portu D jako WYJŚCIA<br />LED_DATA = 0xFF;// wygaszenie wyswietlacza<br />DDRB &amp;= KEY_PIN;<br />PORTB |= KEY_PIN;<br />int i;<br /><br />    //główna pętla programu<br /><br />    while(1)<br />    {//klamra rozpoczynająca pętlę główną programu<br /><br />    if( KEY_DOWN )<br />    {<br />    _delay_ms(80);//programowa eliminacja drgan styków<br />    i=0;<br />    if( KEY_DOWN )<br /><br />    {<br />    LED_DATA = cyfry&#91;i&#93;;<br />    _delay_ms(200);<br />    i=i+1;<br />    }<br /><br />    }<br /><br />    }//klamra kończąca pętlę główną programu<br /><br /><br />}//klamra kończąca pętlę główną main[/syntax]<br /><br />Wg książki tablicę można odczytywać podając nr pozycji którą chcemy odczytać. Czyli to co chciałbym zrobić to<br />naciskam przycisk -&gt; na wyświetlaczu pojawia się pozycja 0 -&gt; i zwiększa się o jeden -&gt; naciskam przycisk -&gt; na wyświetlaczu pojawia się pozycja 1 -&gt; i zwieksza się o 1 itd.<br /><br />Niestety w chwili obecnej przetestowałem for, while, if i jakoś nie idzie. Najbliżej byłem gdy po naciśnięciu przycisku na wyświetlaczu widniało 0...3...8...3...8 itd<br /><br />domyślam się, że mam zwaloną inkrementację i tu proszę o pomoc, każda krytyka mile widziana<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1293">bolciu</a> — 12 maja 2013, o 02:11</p><hr />
]]></content>
</entry>
</feed>