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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-18T13:27:26+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=6392&amp;mode</id>
<entry>
<author><name><![CDATA[Bedi]]></name></author>
<updated>2014-03-18T13:27:26+01:00</updated>
<published>2014-03-18T13:27:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74818#p74818</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74818#p74818"/>
<title type="html"><![CDATA[Re: ADC-odczyt wartosci Atmega8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74818#p74818"><![CDATA[
P.Mirku jak nie poprawie jak poprawie od rana do wieczora siedzę i grzebie w kodzie jednak teraz się przekonałem że wystarczy brak jednego nawiasu klamrowego i cały kod leży .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2806">Bedi</a> — 18 mar 2014, o 13:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-16T20:19:23+01:00</updated>
<published>2014-03-16T20:19:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74624#p74624</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74624#p74624"/>
<title type="html"><![CDATA[Re: ADC-odczyt wartosci Atmega8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74624#p74624"><![CDATA[
<div class="quotetitle">Bedi napisał(a):</div><div class="quotecontent"><br />Tak wiem tutaj styl jest naganny po prostu to taki testowy plik gdzie wklejałem inne itp i dlatego tak wyszło staram się tylko uruchomić  ADC  ale  nie startuje i nie wiem gdzie błąd<br /></div><br /><br />No to sam widzisz że pośpiech nie popłaca - więc popraw ten kod ... czy mam rozumieć że nie poprawisz ? pomimo że masz podpowiedź gdzie są błędy ? bo tak trochę nie rozumiem teraz tej wypowiedzi<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 mar 2014, o 20:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bedi]]></name></author>
<updated>2014-03-16T20:17:30+01:00</updated>
<published>2014-03-16T20:17:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74623#p74623</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74623#p74623"/>
<title type="html"><![CDATA[Re: ADC-odczyt wartosci Atmega8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74623#p74623"><![CDATA[
Tak wiem tutaj styl jest naganny po prostu to taki testowy plik gdzie wklejałem inne itp i dlatego tak wyszło staram się tylko uruchomić  ADC  ale  nie startuje i nie wiem gdzie błąd<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2806">Bedi</a> — 16 mar 2014, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-16T19:59:35+01:00</updated>
<published>2014-03-16T19:59:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74621#p74621</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74621#p74621"/>
<title type="html"><![CDATA[Re: ADC-odczyt wartosci Atmega8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74621#p74621"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />To prawdopodobnie niema znaczenia<br /></div><br /><br />ma ma znaczenie - bo jak widać cały kod jest takimi kwiatkami usiany <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />dlatego proponuję autorowi naprawdę przysiąść nad doprowadzeniem kodu do porządku i poprawnych wcięć a być może się okaże że kod ruszy z kopyta <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... dlatego wciąż w książce piszę o DOBRYM stylu programowania<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 mar 2014, o 19:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-03-16T19:57:01+01:00</updated>
<published>2014-03-16T19:57:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74620#p74620</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74620#p74620"/>
<title type="html"><![CDATA[Re: ADC-odczyt wartosci Atmega8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74620#p74620"><![CDATA[
To prawdopodobnie niema znaczenia ale w tych miejscach co zaznaczyłem masz niepotrzebne klamry.<br />Prawdopodobnie zostały po jakimś if-ie lub pętli.<br /><br />[syntax=c]ISR(TIMER2_COMP_vect){<br /> <br /> <br />    { &lt;-----Tutaj<br />      if(++cnt&gt;99) {                         // gdy licznik ms &gt; 99 (minęła 1 sekunda)<br />              sec_flag= 1;                       // ustaw flagę tyknięcia sekundy<br />              {<br />              sec++;                             // zwiększ licznika sekund o 1<br />              if(sec&gt;59)                         // jeśli ilość sekund &gt; 59 to wyzeruj licznik sekund<br />                      { sec = 0;<br />                      min++;                         // zwiększ licznik minut o 1<br />              if(min&gt;59) {<br />                      min = 0;                       // jeśli ilość minut &gt; 59 to wyzeruj licznik minut<br />                   }<br />                      }<br />              cnt = 0;                           // wyzeruj licznik setnych ms<br />      }<br />    } &lt;-----Tutaj<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 16 mar 2014, o 19:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-16T19:56:18+01:00</updated>
<published>2014-03-16T19:56:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74619#p74619</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74619#p74619"/>
<title type="html"><![CDATA[Re: ADC-odczyt wartosci Atmega8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74619#p74619"><![CDATA[
masz komunikat:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />main.c:(.text+0xe6): undefined reference to `fan_ster'<br /></div><br /><br />nie wiem jak ty robisz wcięcia - ale po tym co widać na forum to można oczopląsu jednak dostać <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> a wtedy trudno znaleźć takie np kwiatki <br /><br />[syntax=c]while(ADCSRA &amp; (1&lt;&lt;ADSC));<br />                                                                                        pomiar=ADC;}[/syntax]<br /><br />prawda ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 mar 2014, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bedi]]></name></author>
<updated>2014-03-16T19:44:13+01:00</updated>
<published>2014-03-16T19:44:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74616#p74616</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74616#p74616"/>
<title type="html"><![CDATA[ADC-odczyt wartosci Atmega8A]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6392&amp;p=74616#p74616"><![CDATA[
Witam <br /><br />Mam problem z odczytam wartości ADC na pinie PC5  z racji ze jest to moje pierwsze ADC opieram się na podobnym programie &gt;&gt; <br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic4366.html" >topic4366.html</a><!-- l --><br /><br /><br />Jeszcze jeden mankament to że przy pliku mam znaczek x na czerwono a nic nie podkreśla w programie (ECLIPSE INDYGO) tak jak by nie było błędu <br />dodaje konsole <br /><br /><br />[syntax=c]/*<br /><br /><br /><br /><br />/*<br /> * main.c<br /> *<br /> *  Created on: 12-03-2014<br /> *      Author: MATEUSZ<br /> */<br /><br /><br />    #include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br /><br /><br />    /* ### DEFINICJA PINÓW DLA DIODY LED I WENTYLATORA ### */<br />    #define LED (1&lt;&lt;PB0)                       // definicja pinu do którego podłączona dioda LED<br />    #define FAN (1&lt;&lt;PD5)                       // definicja pinu do którego podłączony jest wentylator<br /><br />    /* ### MAKRODEFINICJE DLA DIODY LED I WENTYLATORA ### */<br />    #define LED_OFF PORTB &amp;= ~LED             // makrodefinicja wyłączenia diody LED<br />    #define LED_TOG PORTB ^= LED              // makrodefinicja zmiana stanu diody LED<br /><br />    #define FAN_ON PORTD |= FAN              // makrodefinicja włączenia wentylatora<br />    #define FAN_OFF PORTD &amp;= ~FAN            // makrodefinicja wyłączenia wentylatora<br /><br /><br />#define KEY_PIN2 (1&lt;&lt;PD6)// pin do którego podłączony jest klawisz NC-noemalnie zwarty<br />#define KEY_NC (PIND &amp; KEY_PIN2)// sprawdzanie czy klawisz NC rozwarty<br /><br />uint8_t key_lock;<br /><br />#define KEY_PIN (1&lt;&lt;PD7)// pin do którego podłączony jest klawisz NO-normalnie otwarty<br />#define KEY_NO !(PIND &amp; KEY_PIN)// sprawdzanie czy klawisz NO zwarty<br /><br /><br /><br /><br /><br />    /* ### DEKLARACJE ZMIENNYCH ### */<br />    volatile uint8_t cnt=0;                    // zmienna licznika 10ms<br />    volatile uint8_t sec_flag;                // flaga tyknięcia Timera0 co 1 sekundę<br />    volatile uint8_t sec;                      // licznik sekund 0-59<br />    volatile uint8_t min;                      // licznik minut 0-59<br /><br />    volatile uint16_t  pomiar=0;               // zmienna na potrzeby pomiaru z ADC<br /><br />    volatile uint8_t fan_state;                // typ wyliczeniowy dla badania stanu wentylatora<br />    enum {fan_off, fan_goes_to_off, fan_on};<br /><br />    /* ### DEKLARACJE FUNKCJI  ### */<br />                       // deklaracja funkcji zmiany stanu wentylatora odnośnie pomiaru z ADC<br /><br /><br />    void fan_ster (void);                      // deklaracja funkcji zmiany stanu wentylatora odnośnie pomiaru z ADC<br /><br /><br /><br />    /* ### INICJALIZACJA ### */<br /><br />    int main (void) {<br /><br /><br /><br /><br /><br />// ustawienie timera<br /><br /><br />                TCCR2 |= (1&lt;&lt;WGM21); // ustawienie trybu pracy timera na CTC<br /><br /><br />                TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21) | (1&lt;&lt;CS20);// ustawienie pleskalera na 1024  ( 8 000 000 /1024 = 7812,5Hz<br /><br /><br /><br />                OCR2 = 78;// podział przez 78 rejestru porownaia   7812,5/78 = około 100Hz a to odpowiada 10ms<br /><br /><br />                TIMSK |= (1&lt;&lt;OCIE2); // zezwolenie na przerwania COMPARE MATCH<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />                /* ### INICJALIZACJA ADC  ### */<br /><br />               ADCSRA |= (1&lt;&lt;ADEN); // właczenie ADC<br /><br /><br />               ADCSRA |= (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1);         // ustawienie preskaler`a podziału przez: 64 i włączenie pomiaru<br /><br /><br /><br />               ADMUX |= (1&lt;&lt;REFS1) | (1&lt;&lt;REFS0 );                             // wybur wewnetrznego zrodla odniesienia 2,56V<br /><br /><br />               ADMUX |= (1&lt;&lt;MUX2) | (1&lt;&lt;MUX0); // wybur pinu pomiaru PC5)<br /><br /><br /><br />                                   ADCSRA |= (1&lt;&lt;ADEN); // włączenie adc<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />                DDRD &amp;= ~KEY_PIN;  // ustawienie portu jako wejscie dla klawisza NO<br />                PORTD |= KEY_PIN;// programowe podciągnięcie do VCC<br /><br /><br /><br />                DDRD &amp;= ~KEY_PIN2;// ustawienie portu jako wejscie dla klawisza NC<br />                PORTD |= KEY_PIN2;//programowe podciągnięcie do VCC<br /><br /><br /><br /><br /><br /><br />                    // diody LED<br />                    DDRB |= LED;<br />                    DDRD |= FAN;        // kierunki PIN i FAN jako wyjściowe<br />                    LED_OFF;                // wyłączenie diody LED<br />                    FAN_OFF;                // wyłączenie wentylatora<br /><br /><br />                    //włączenie przerwań<br />                    sei();<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />                                              while(1) {<br />                                                      if (sec_flag) {                                         // sprawdza flagę tyknięcia sekundy<br />                                                                              if(0 == sec%3) LED_TOG;             // zmień stan diody<br /><br />                                                                              if(1 == sec%3) {<br /><br /><br /><br /><br /><br />                                                                              //pomiar z ADC<br /><br /><br />                                                                              ADCSRA |=  (1&lt;&lt;ADSC); //start pomiar<br /><br /><br /><br />                                                                                    while(ADCSRA &amp; (1&lt;&lt;ADSC));<br />                                                                                        pomiar=ADC;}<br /><br /><br /><br />                                                                      if(2 == sec%3) fan_ster();           //  włącza lub wyłacza przekaźnika na podstawie pomiaru z ADC<br /><br />                                                      }<br />                                                          sec_flag = 0;<br /><br />                              }<br />                      }<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />    /* ### USTAWIENIE LICZNIKA SEKUND I MINUT NA TIMER 0 ### */<br /><br /><br />                        // procedura posługi timera przerwanie<br /><br />                        ISR(TIMER2_COMP_vect){<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />    {<br />      if(++cnt&gt;99) {                         // gdy licznik ms &gt; 99 (minęła 1 sekunda)<br />              sec_flag= 1;                       // ustaw flagę tyknięcia sekundy<br />              {<br />              sec++;                             // zwiększ licznika sekund o 1<br />              if(sec&gt;59)                         // jeśli ilość sekund &gt; 59 to wyzeruj licznik sekund<br />                      { sec = 0;<br />                      min++;                         // zwiększ licznik minut o 1<br />              if(min&gt;59) {<br />                      min = 0;                       // jeśli ilość minut &gt; 59 to wyzeruj licznik minut<br />                   }<br />                      }<br />              cnt = 0;                           // wyzeruj licznik setnych ms<br />      }<br />    }<br />    }<br /><br /><br />    /* ### DEFINICJE FUNKCJI ### */<br /><br /><br /><br />    // definicja funkcji sterowania wentylatorem<br />    void fan_ster (void) {<br />                    if (pomiar&gt;10)                                        // sprawdza warunek pomiaru, jeśli &gt;400 to włącz wentylator<br />                            {<br />                                    FAN_ON;                                        // włączenie wentylatora<br />                                    fan_state = fan_on;                            // stan wentylatora - wentylator włączony<br />                                    }<br />                    if (pomiar&lt;10 &amp;&amp; fan_state == fan_on) {               // sprawdza warunek pomiaru, jeśli &lt;400 i wentylator włączony to przejdź do wyłączania<br />                           fan_state = fan_goes_to_off;<br />                           min = 0;                                        //  zerowanie licznika minut<br />                           sec = 0;                                        //  zerowanie licznika sekund<br />                               }<br />                           if(fan_state == fan_goes_to_off){<br />                               if(sec==5){                                 // po upłynięciu ok. 4-5 minut wyłącz wentylator<br />                                       fan_state = fan_off;                    // stan wentylatora - wentylator wyłączony<br />                                       FAN_OFF;                                // wyłącz wentylator<br /><br />                               }<br />                           }<br />    }<br />                        }[/syntax]<br /><br />[syntax=c]/*<br /><br />**** Build of configuration Release for project adc ****<br /><br />make all <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=8000000UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />Finished building: ../main.c<br /> <br />Building target: adc.elf<br />Invoking: AVR C Linker<br />avr-gcc -Wl,-Map,adc.map -mmcu=atmega8 -o &quot;adc.elf&quot;  ./main.o   <br />./main.o: In function `main':<br />main.c:(.text+0xe6): undefined reference to `fan_ster'<br />make: *** &#91;adc.elf&#93; Error 1<br /><br />**** Build Finished ****[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2806">Bedi</a> — 16 mar 2014, o 19:44</p><hr />
]]></content>
</entry>
</feed>