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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-28T16:40:09+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10552&amp;mode</id>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-28T16:40:09+01:00</updated>
<published>2015-03-28T16:40:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=124882#p124882</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=124882#p124882"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=124882#p124882"><![CDATA[
Witam ponownie nie zakończyłem tego projektu ale napotkałem pewien problem i nie moge sobie z nim poradzić mianowicie wszytko jest niby dobrze napisane ale dioda która powinna zaswicic sie dopiero po klaśnięciu siwci od samego początku <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#define led1 PB0 //defincja diody podłaczonej do PB0<br />#define led_of PORTB &amp;= ~(1&lt;&lt;led1);<br />#define led_on PORTB|=(1&gt;&gt;led1);<br />#define led_tog PORTB^=(1&lt;&lt;led1);<br />void init_adc (void); //deklaracja funkcji<br /><br /><br />int main(void){<br /><br />DDRB |=(1&lt;&lt;led1); //ddrb jako wyjscie<br />init_adc();//inicjalizacja adc<br />uint16_t pomiar(uint8_t kanal); //deklaracja funkci pomiaru<br />uint32_t srednia=0;<br />uint8_t time=9;<br />while(1){<br />if(PINB &amp; (1&lt;&lt;PB0))//jeśli wejście jest w stanie wysokim<br />{<br />led_on;<br />}<br />else{<br />delay_ms(250);<br />pomiar(PC1);<br />    if((srednia&gt;500)&amp;&amp;(!(PINB&amp;(1&lt;&lt;PB0))))//jesli srednia bedzie wynoisła wiecej niz 500<br />    //oraz bedzie stan niski na tym pinie to ma zmienic stan na odwrotny<br />{<br />  led_tog;<br />}<br />    else led_of;<br /><br />}<br /><br />void init_adc (void){<br /><br />//==================ADC init=====================<br />ADMUX |=(1&lt;&lt;REFS0);//|(1&lt;&lt;REFS1); //Wybór napięcia odniesienia Vcc<br />ADCSRA |= (1&lt;&lt; ADEN);//Włączenie modułu ADC<br />ADCSRA |= (1&lt;&lt; ADPS1)|(1&lt;&lt; ADPS0);//(1&lt;&lt; ADPS0) //oraz prescalera na 8<br />ADMUX|=(1&lt;&lt;MUX0);//wybrano adc1<br />}<br /><br />uint16_t pomiar(uint8_t kanal){<br />ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />while(ADCSRA &amp; (1&lt;&lt;ADSC)); //czeka na zakończenie konwersji<br />return ADC;<br />srednia=srednia*time;<br />srednia=srednia+ADC;<br />srednia=srednia/(time+1);<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 28 mar 2015, o 16:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-20T09:52:09+01:00</updated>
<published>2015-03-20T09:52:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=123994#p123994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=123994#p123994"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=123994#p123994"><![CDATA[
witam mam juz gotowy problem ale mam problem bo dioda miga tylko raz na początku a później świeci  cały czas <br />[syntax=c]/*<br /> * pro2.c<br /> *<br /> *  Created on: 18 mar 2015<br /> *      Author: krzychuu<br /> */<br /><br /><br />/*<br /> * aa.c<br /> *<br /> *  Created on: 16 mar 2015<br /> *      Author: krzychuu<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /> #define led1 PB0 //defincja diody podłaczonej do PB0<br />//#define adc buf&#91;4&#93;;<br /><br />void init_ADC (void); //deklaracja funkcji<br />void timer_init(void);//deklaracja ustawien timera<br />unsigned int adc;<br /><br /> int main(void)<br />{<br /><br />            DDRB |=(1&lt;&lt;led1);  //ddrb jako wyjscie<br />            PORTB |= (1&lt;&lt;led1);<br /><br />            init_ADC();<br /><br />            sei();<br />            while(1)<br />            {<br />            ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />                       while(ADCSRA &amp; (1&lt;&lt;ADSC)); //pierwsze klasniecie<br />                       if(adc&gt;500){<br /><br />            timer_init();<br /><br />            }<br />            }<br />}<br /><br /><br />//--------------------------------------------------<br />void init_ADC (void){<br /><br />//==================ADC init=====================<br />ADMUX |=(1&lt;&lt;REFS0);//|(1&lt;&lt;REFS1); //Wybór napięcia odniesienia Vcc, REFS1 - 2,56V<br />ADCSRA |= (1&lt;&lt; ADEN);//Włączenie modułu ADC<br />ADCSRA |= (1&lt;&lt; ADPS1)|(1&lt;&lt; ADPS0);//(1&lt;&lt; ADPS0)//oraz prescalera na 8<br /><br />}<br /><br />void timer_init(void) // jesli funkcja nie ma przyjmowac argumentow, lepiej w jej def. dać (void)<br />{<br />          TCCR1B |= (1&lt;&lt;WGM12)|(1&lt;&lt;CS12) ;//CTC ,preskaler256 - tu miałes CS20 !!! - nie ten bit !!!!<br />          TIMSK |= (1&lt;&lt;OCIE1A);   // przerwanie Compare Match A<br />          OCR1A = 31249;//porównanie wartosci (około 1s)<br />}<br /><br />ISR(TIMER1_COMPA_vect)//obsługa przerwania<br /> {<br />           if(adc&gt;300){<br />           ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />           while(ADCSRA &amp; (1&lt;&lt;ADSC)){//czeka na zakończenie konwersji<br />                 adc=ADC;<br />                if(adc&gt;700){<br /><br />             PORTB ^=(1&lt;&lt;led1);<br /><br />                                               }<br /><br /> }<br /> }<br /> }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 20 mar 2015, o 09:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pan Ziemniak]]></name></author>
<updated>2015-03-07T19:27:37+01:00</updated>
<published>2015-03-07T19:27:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=122415#p122415</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=122415#p122415"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=122415#p122415"><![CDATA[
<div class="quotetitle">rekon napisał(a):</div><div class="quotecontent"><br />2. linijka 15 pozwól że zacytuję specyfikację dotyczącą rejestru TIFR<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"> TOV0: Timer/Counter0 Overflow Flag<br />The bit TOV0 is set (one) when an overflow occurs in Timer/Counter0. TOV0 is cleared by hardware<br />when executing the corresponding interrupt Handling Vector. Alternatively, TOV0 is<br />cleared by writing a logic one to the flag. When the SREG I-bit, TOIE0 (Timer/Counter0 Overflow<br />Interrupt Enable), and TOV0 are set (one), the Timer/Counter0 Overflow interrupt is executed.<br /></div><br />czyli ustawiając TOV0 na 1 tak na prawdę powiedziałeś procesorowi że otrzymał przerwanie, jednorazowo - to jest flaga informująca o przepełnieniu<br />zezwolenie na przerwanie masz w rejestrze TIMSK polecam spojrzeć do specyfikacji </div><br /><br />A wpisanie 1 logicznej na pozycję w rejestrze TIFR przypadkiem nie skutkuje ustawieniem na tej pozycji logicznego 0(tj. wyczyści flagę przerwania)? To wynika ze sprzętowej realizacji tego rejestru.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8755">Pan Ziemniak</a> — 7 mar 2015, o 19:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-07T17:04:19+01:00</updated>
<published>2015-03-07T17:04:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=122393#p122393</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=122393#p122393"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=122393#p122393"><![CDATA[
witam ponowie posiedziałem nad kodem do tego projektu i wszystko niby smiga jak powinno ale jest jedno ale dioda świeci tylko wtedy gdy klasnę powiedzmy przez ułamek sekundy później zaraz gaśnie i nie wiem czemu?chce by zmienił się stan na przeciwny dopiero po ponownym klaśnięciu <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /> #define led1 PB0 //defincja diody podłaczonej do PB0<br /><br /><br /><br /><br /><br /> int main(void){<br /><br />    unsigned int adc_value;<br />            DDRB|=0xff;//ddrb jako wyjscie<br />            PORTB = 0x00;<br />            ADCSRA |=(1&lt;&lt;ADEN);//właczenie adc<br />            ADCSRA |=(1&lt;&lt;ADPS1) | (1&lt;&lt;ADPS0); // prescaler 8<br />            ADMUX |=(1&lt;&lt;REFS0); //napiecie z avcc<br />            ADMUX|=(1&lt;&lt;MUX0);//wybrano adc1<br /><br /><br />    while(1){<br /><br />        ADCSRA |= (1&lt;&lt;ADSC);//start konwersji<br /><br />        while(ADCSRA &amp; (1&lt;&lt;ADSC));//czeka na zakończenie konwersji<br />        adc_value=ADC;<br /><br />if(adc_value&gt;700)<br />{<br />  PORTB |=(1&lt;&lt;led1);<br /><br />  if (PINB &amp; (1&lt;&lt;led1))//sprawdzenie czy dioda swieci<br />    {<br />  if(!(PINB &amp;(1&lt;&lt;led1)))//wcisniety<br />  return 1;<br />  delay_ms(500);//odczekuje sekunde<br />    }<br /><br />  }<br /><br /><br /><br />ADCSRA |= (1&lt;&lt;ADSC);//ponowny start konwersji<br />while(ADCSRA &amp; (1&lt;&lt;ADSC));//czeka na zakończenie konwersji<br />        adc_value=ADC;<br />        if(adc_value&gt;700)<br />        {<br />        PORTB ^=(1&lt;&lt;led1);//zmana stanu portu na przeciwny<br />        }<br />    }<br /><br />          }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 7 mar 2015, o 17:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rekon]]></name></author>
<updated>2015-02-13T20:54:18+01:00</updated>
<published>2015-02-13T20:54:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=118848#p118848</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=118848#p118848"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=118848#p118848"><![CDATA[
1. biblioteka ! pisałem Ci o tym na PW - kilka razy... a eclipse wyrzuca Ci cały czas warning na prawdę już czas to zmienić<br />2. nie czekasz na to aż zakończy się konwersja - zawsze po rozpoczęciu konwersji napięcia  musisz odczekać na wykonanie się tej konwersji np. w pętli jak poniżej<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">ADCSRA |= (1&lt;&lt;ADSC);<br />while(ADCSRA &amp; (1&lt;&lt;ADSC));</div><br />tak jak Ci pisałem....<br />i pewnie przez to za każdym razem ADC jest równe 0 w warunku w linii 19 bo nie czekasz na koniec konwersji (nie wiem czy ADC jest zerowane po rozpoczęciu nowej konwersji czy nie) <br /><br /><br />taka podpowiedź jeszcze - jeśli będziesz wklejał losowe linijki w losowych miejscach to nie pomożesz sobie np. linijka 24 po co?<br />podpowiedź numer 2 - jeśli ktoś Ci pomógł to spróbuj zastosować jego porady a jeśli czegoś nie rozumiesz to pytaj zamiast ignorować - jest spora szansa że lepiej na tym wyjdziesz<br />podpowiedź numer 3 - wysłałem Ci w pełni działający program na PW, wydaje się że był on podobny do tego co chcesz zrobić, spróbowałeś zrozumieć jak on działa? spróbowałeś go odpalić? analiza czyjegoś kodu może okazać się pomocna przy próbach zrobienia swojego programu<br />podpowiedź numer 4 ostatnia - w momencie w którym nie powiesz jak Ci się wydaje że program ma działać ciężej jest go analizować być może źle pobudzasz układ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7932">rekon</a> — 13 lut 2015, o 20:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-02-13T19:40:35+01:00</updated>
<published>2015-02-13T19:40:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=118831#p118831</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=118831#p118831"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=118831#p118831"><![CDATA[
napisałem juz kod ale dioda nie  świeci  i nie wiem co jest :/<br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/delay.h&gt;<br />  <br />    #define led1 PB0 //defincja diody podłaczonej do PB0<br /><br />    int main(void){<br />    unsigned int adc_value;<br /><br />            DDRB|=0xff;//ddrb jako wyjscie<br />            PORTB = 0x00;<br />            ADCSRA |= (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1) | (1&lt;&lt;ADPS0); // prescaler 128<br />                        ADMUX =(1&lt;&lt;REFS1)|(1&lt;&lt;REFS0); //napiecie wewnetrzne<br />                        ADCSRA |=(1&lt;&lt;ADEN)|(1&lt;&lt;ADSC);//właczenie adc<br /><br /><br />            while(1){<br />                     ADCSRA |= (1&lt;&lt;ADSC); //start konwers<br />                     adc_value = ADC;<br />                     if(ADC!=0)<br />                         {<br /><br />                             if(adc_value &gt;= 750){//jesli adc bedzie wieksze lub równe 512<br />                                                  ADCSRA |= (1&lt;&lt;ADSC); //właczenie adc<br />                                                  ADCSRA |=(1&lt;&lt;ADEN);//ponownie start konwers<br />                                                  _delay_ms(500);<br />                                                  if(ADCSRA &amp;(1&lt;&lt;ADSC)){<br /><br />                                                           PORTB|=led1;<br /><br />                                       }<br />                             }<br />                         }<br />            }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 13 lut 2015, o 19:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rekon]]></name></author>
<updated>2015-02-09T09:48:48+01:00</updated>
<published>2015-02-09T09:48:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117950#p117950</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117950#p117950"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117950#p117950"><![CDATA[
Jeśli masz książkę Mirka to polecam przebrnąć przez cały rozdział 4 i np projekt 5.4(Multipleksowanie LED - przerwania) - tam zrozumiesz przerwania<br />a następnie możesz się pokusić o dział 5.7(Pomiar napięcia za pomocą ADC) żeby zrozumieć ADC (tego działu nie czytałem jeszcze)<br /><br />Ja mam kontakt z programowaniem AVR-ów od mniej wiecej 3 lat ale mimo to przerabiam książkę wg. mnie bez sensu jest żebym ja Ci podał rozwiązania bo tutaj chodzi o podstawy zrozumienia całego języka<br /><br />jak już migałeś diodą to ja jeszcze bym zrobił miganie diodą na przycisk (w procesorze odczytujesz stan przycisku i ze względu na to włączasz diodę albo jedna dioda się świeci jak masz wciśnięty przycisk a druga kiedy nie masz wciśnięte) chodzi o to żebyś zrozumiał funkcję if<br /><br />odnosząc się do tego co mi napisałeś<br />1. zgadza się jest to zezwolenie na przerwania, kluczem mojego pytania było kiedy się to wykona - wg. mnie nigdy bo program zaczyna pracę od funkcji main i robi tylko to co zostanie mu przeznaczone w tej funkcji<br />2. linijka 15 pozwól że zacytuję specyfikację dotyczącą rejestru TIFR<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />TOV0: Timer/Counter0 Overflow Flag<br />The bit TOV0 is set (one) when an overflow occurs in Timer/Counter0. TOV0 is cleared by hardware<br />when executing the corresponding interrupt Handling Vector. Alternatively, TOV0 is<br />cleared by writing a logic one to the flag. When the SREG I-bit, TOIE0 (Timer/Counter0 Overflow<br />Interrupt Enable), and TOV0 are set (one), the Timer/Counter0 Overflow interrupt is executed.<br /></div><br />czyli ustawiając TOV0 na 1 tak na prawdę powiedziałeś procesorowi że otrzymał przerwanie, jednorazowo - to jest flaga informująca o przepełnieniu<br />zezwolenie na przerwanie masz w rejestrze TIMSK polecam spojrzeć do specyfikacji <br />3. nie rozumiem w ogóle co odpisałeś, w każdym razie funkcja timer_init w ogóle się nie kończy bo nie ma nawiasu klamrowego (to powinno Ci wyrzucać masę błędów podczas kompilacji stąd nie rozumiem czemu tego wcześniej nie poprawiłeś)<br />4. co to jest przerwanie?  książka Mirka strona podrozdział 3.6.2 (Przerwania), jeśli ustawiasz przerwanie to znaczy, że umożliwiasz żeby to przerwanie się wykonywało. Funkcją timer_stop w Twoim przypadku robisz to co powinieneś robić w timer_init... Wydaje mi się przerwania można zatrzymywać poprzez przestawienie preskalera czyli właśnie za pomocą bitów CSxx (ale nigdy z tego nie korzystałem i nie wiem jak jest zgodnie ze sztuką)<br />5. main jest traktowane jako główna część programu - ale trzeba rozumieć jak jest wykonywany kod <br />najpierw jest odczytywana i wykonywana pierwsza instrukcja z funkcji main, a potem następna i następna - wyjątek pojawia się tylko kiedy pojawia się wywołanie funkcji albo funkcje warunkowe lub pętle wtedy program jest przenoszony do jakiejś instrukcji<br />jak działa pętla? <br /><ul><li>sprawdź warunek pętli</li><li>wykonaj kod z wnętrza pętli</li><li>skocz na początek pętli</li></ul>jeśli nie ma nieskończonej pętli to program pogalopuje dalej i napotka instrukcje które nie mają sensu (bo tam nic nie zostało zdefiniowane) <br />prawdopodobnie są na to zrobione zabezpieczenia żeby mikrokontroler nie &quot;wylazł&quot; poza dozwolony obszar ale na pewno nie jest to &quot;zgodne ze sztuką&quot;...<br /><br /><strong>W Twoim własnym kodzie nigdy nie może być nawet linijki która nie wiesz jak działa!</strong> chyba że musisz to tylko mieć a nie chcesz zrozumieć ani się rozwijać<br />W programowaniu jest bardzo fajna metoda testu własnego oprogramowania, ja znam tą metodą pod nazwą &quot;metoda gumowej kaczuszki&quot; czyli stawiasz na biurku gumową kaczuszkę lub jakikolwiek inny obiekt do którego będziesz się odnosił i linijka po linijce tłumaczysz jak działa Twój program - bardzo skuteczna metoda szczególnie jak projekt ma mniej niż powiedzmy 200 linii kodu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Wg. mnie najpierw zrób diodę sterowaną przyciskami np. dobrze zrozumieć rozdział 5.3 następnie zrób coś z przerwaniami czasowymi (podłącz sobie kilka diodek do procesora i przerób rozdział 5.4 używając tych diodek zamiast wyświetlaczy)<br />a następnie wrzuć swoje kody (szczególnie ten drugi) i pochwal się jak Ci wyszło<br />dopóki czegoś takiego nie zrobisz to nie ma co się porywać dalej<br /><br />Taka ciekawostka nie masz nigdzie obsługi przerwania nawet w Twoim programie - także do dzieła masz minimum 100 stron do przeczytania i zrozumienia <br />Najbardziej kluczowe strony dla Ciebie to jest od początku rozdziału 4 do podrozdziału z makrodefinicjami włącznie. Resztę doczytaj jak najszybciej się da, ale będziesz w stanie na tej podstawie zrobić większość rzeczy<br /><br />Wszystkie te rozdziały które poruszyłem są ze starego bluebooka nie wiem jak to jest w nowym ale myślę, że będziesz w stanie się połapać jeśli masz nowego<br />W razie pytań pisz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7932">rekon</a> — 9 lut 2015, o 09:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-02-08T20:23:12+01:00</updated>
<published>2015-02-08T20:23:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117886#p117886</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117886#p117886"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117886#p117886"><![CDATA[
wiem ze nie chcesz mnie obrażać dopiero zaczynam zabawę z programowaniem  co do świecenia diody juz to przerabiałem,książkę mam troche czytałem <br />a co do linijek <br />1.26 włączenie przerwań jesli chodzi o przerwania to odnosi sie to do wszystkich przerwań <br />2.ustawiam przerwanie overflow<br />3 przekazuje wartość rejestru przerwania do timer_start (tylko teraz sam sie zastanawiam po co )<br />4. ma za zadnie zatrzymać timer0 ale chyba powinienem zrobic jak napisałem wyzej  <br />5.no właśnie myślałem ze void main(void) będzie traktowana jako główna cześć programu <br />a reszta linijek o których piszesz  to takie klepanie linijek bez sensu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 8 lut 2015, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rekon]]></name></author>
<updated>2015-02-08T20:07:27+01:00</updated>
<published>2015-02-08T20:07:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117881#p117881</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117881#p117881"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117881#p117881"><![CDATA[
pozwolę sobie włączyć się do dyskusji,<br />Dlaczego wysyłasz kod który się nie kompiluje? Ty sam napisałeś ten program czy przekopiowałeś z 10 różnych miejsc części kodu?<br />Jak zakładam to nie masz niebieskiej książki Mirka? <br />oglądałeś jakiekolwiek poradniki Mirka chociaż, bo z każdego poradnika wyniósłbyś wiedzę jak się pisze funkcje i jak używa się nawiasów klamrowych...<br />czy to jest Twój pierwszy program w C w ogóle, bo jak na moje oko to tutaj nic się nie zgadza.<br /><br />po 1 co uważasz że robi 26 linijka i kiedy?<br />po 2 co uważasz że robisz w funkcji timer_init bo tam się dzieje coś ciekawego<br />po 3 gdzie wg Ciebie kończy się funkcja timer_init ? <br />po 4 co robi funkcja stop_timer?<br />po 5 dalej nie masz pętli głównej programu bo możesz z niej wyjść w linijce 37<br /><br />jeszcze wymienię linijki Twojego kodu które wg. mnie nie mają sensu (i często się nie kompilują)<br />34, 36, 40, 43<br /><br />Mój post nie ma na celu Ciebie obrazić czy zniechęcić - wg mnie powinieneś zacząć od migania diodą, następnie zrobić miganie diodą co sekundę za pomocą przerwań na timerze, następnie zrobić program do obsługi ADC, a później połączyć te programy ze sobą i w ten sposób uzyskasz upragniony cel. Wrzucanie za to cudzego kodu w sposób totalnie bezmyślny do twojego programu na pewno Ci nie pomoże...<br /><br />Jak opiszesz co się wg Ciebie dzieje we wskazanych linijkach i funkcjach o których wspomniałem to chętnie Ci pomogę, ale mam wrażenie że tutaj trzeba przede wszystkim zrozumieć podstawy C<br />ps. jeśli operujesz na rejestrach odpowiedzialnych za interakcje z mikroprocesorem polecam wyszukiwać nazwy w nocie i czytać co te rejestry robią.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7932">rekon</a> — 8 lut 2015, o 20:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-02-08T10:37:20+01:00</updated>
<published>2015-02-08T10:37:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117782#p117782</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117782#p117782"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117782#p117782"><![CDATA[
czyli jak mam wyłączyć timer bo z tego co czytałem to muszę  CS02=&quot;0&quot; CS01=&quot;0&quot; CS00=&quot;0&quot; lub ustawic przerwanie TIMSK |= (1&lt;&lt;TOIE0) ??ale chciałbym jednocześnie sprawdzić wartość adc i jesli będzie rożna od zera to wysłać cos na PB0 jak mam to zrobić ??<br /><br /><br />ee: a teraz <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#define timer_start 0<br /><br />int i = 450;<br />unsigned int adc_value;<br />void adc_init()<br />{<br />ADCSRA = 0x8F; //enable adc, prescaler div 128<br />ADMUX = (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0); //avcc internal 2,56V with external cap, result left adjust, select adc0<br />}<br />void timer_init()<br />{<br />TIFR |= (1&lt;&lt;TOV0);//set interrupt on overflow<br />TCNT0 = timer_start;//<br /><br />void start_timer()<br />{<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// źródłem CLK, preskaler 1024<br />}<br />void stop_timer()<br />{<br />TIMSK |= (1&lt;&lt;TOIE0); //przepełnienie<br />}<br />sei();<br /><br /><br /><br />void main(void){<br /><br />while(1){<br />timer_init();<br />timer_start++,&gt;120;<br />if(timer_start&gt;=1000)<br />stop_timer;<br />if(ADC&gt;=512)break;<br />}<br /><br />int value(1);<br />{<br />adc_value = ADCH;<br />if(adc_value &gt;= i);<br />}<br />{<br />PORTB ^=_BV(PB0); // diody LED<br />_delay_ms(50);<br />ADCSRA |= 1&lt;&lt;ADSC;<br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 8 lut 2015, o 10:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2015-02-07T23:09:51+01:00</updated>
<published>2015-02-07T23:09:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117751#p117751</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117751#p117751"/>
<title type="html"><![CDATA[Re: Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117751#p117751"><![CDATA[
Przecież to się nie ma prawa w ogóle poprawnie skompilować...<br />Klamry w nieodpowiednich miejscach, kod poza jakimkolwiek blokiem funkcyjnym, brak głównej pętli programu, osierocone funkcje, zatrzymanie timer'a poprzez zmianę prescaler'a (?) i pewnie jeszcze kilka niedociągnięć, ale w takiej formie bardzo źle się to czyta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 7 lut 2015, o 23:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-02-07T20:16:55+01:00</updated>
<published>2015-02-07T20:16:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117714#p117714</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117714#p117714"/>
<title type="html"><![CDATA[Włącznik akustyczny projekt atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10552&amp;p=117714#p117714"><![CDATA[
Witam robię projekt tzw przełącznika akustycznego (clapper) na atmega8 i proszę o sprawdzenie poprawności kodu dalszą pomoc w programowani jesli chodzi o to jak ja to widze to że od wykrycia pierwszego klaśniecia włącza Timeout i zwiększa wartość zmiennej. Timer odejmuje od tej zmiennej co ~500ms. Jak klasniemy drugi raz to przełącza i włącza drugi Timeout żeby nie było można przez chwilę zmieniać<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#define timer_start 0<br />#define first_clap 250<br />#define second_clap 500<br />int i = 100;<br /><br />void adc_init()<br />{<br />ADCSRA = 0x8F; //enable adc, prescaler div 128<br />ADMUX = (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0); //avcc internal 2,56V with external cap, result left adjust, select adc0<br />}<br />void timer_init()<br />{<br />TIFR |= (1&lt;&lt;TOV0);//set interrupt on overflow<br />TIMSK |= (1&lt;&lt;TOIE0); //przepełnienie<br />TCNT0 = timer_start;//<br /><br />ISR (TIMER0_OVF_vect)<br />{<br />TCNT0 = 0;<br />timer++;<br />if(timer==first_clap)<br />{<br />timer++<br />}<br /><br />else<br />if(timer==second_clap)<br />PORTB ^= (1&lt;&lt;PB0);<br /><br /><br /><br />void start_timer()<br />{<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// źródłem CLK, preskaler 1024<br />}<br />void stop_timer()<br />{<br />TCCR0 &amp;= ~(1&lt;&lt;CS02);<br />}<br /><br /><br /><br />sei();<br />void main(void)<br />{<br />timer_init();<br />}<br />int value=0;<br />value = ADCH;<br />if(value &gt;= i)<br />{<br />PORTB ^= (1&lt;&lt;PB0); // diody LED<br />value = 0;<br />}<br />_delay_ms(50);<br />ADCSRA |= 1&lt;&lt;ADSC;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 7 lut 2015, o 20:16</p><hr />
]]></content>
</entry>
</feed>