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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-04-27T08:43:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6537&amp;mode</id>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-26T22:38:01+01:00</updated>
<published>2014-04-26T22:38:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79372#p79372</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79372#p79372"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79372#p79372"><![CDATA[
Witam ponownie jak narazie program się kompiluje ale sprawdzę działanie dopiero jutro. Pozdrawiam.<br /><br />Nie mogło być inaczej wszysto działa jak należy. Jeszcze raz dziękuję, chyba się skuszę na zakup książki pana Mirka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 26 kwi 2014, o 22:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-04-26T19:35:52+01:00</updated>
<published>2014-04-26T19:35:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79293#p79293</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79293#p79293"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79293#p79293"><![CDATA[
Zakomentuj 2 linie ponad błędem.<br />[syntax=c]if              (!(Pp&amp;Ps)) p=p| 0x10;<br />//{       p=(p&amp;(~0x01)); if(p&amp;0x10){p=(p&amp;(~0x10));}else{p=(p|0x10);}<br />//}<br />else if (!(Pp&amp;Pfw) &amp;&amp; (p&amp;0x02))//-----------------------------tutaj wskazuje błąd[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 26 kwi 2014, o 19:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-27T08:43:32+01:00</updated>
<published>2014-04-25T20:08:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79161#p79161</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79161#p79161"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79161#p79161"><![CDATA[
Patrzyłem pisałem, kopiowałem kilka razy i nadal ten sam błąd juz sam nie wiem co robię nie tak,jeżeli kliknę na błąd to wskazuje w linijce którą zaznaczyłem poniżej chociaż nic w niej nie zmieniałem.Używam avr studio 4.13 +sp2 +winavr20100110 i tylko w takim kompiluje sie poprawnie bez przerobionego kodu ale gdy zmienię to co kolega napisał wyskakuje ten błąd.<br /><br /><br /><br /><br /><br />[syntax=c]#include &lt;string.h&gt; <br />#include &lt;stdlib.h&gt; <br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt; <br />#include &lt;avr/io.h&gt;<br />      <br /><br />#define E_p 2<br />#define E_pr PORTD<br />#define RW_p 1<br />#define RW_pr PORTD<br />#define RS_p 0<br />#define RS_pr PORTD<br /><br />#define D7 7<br />#define D6 6<br />#define D5 5<br />#define D4 4<br />#define D_pr PORTD<br /><br />#define SET_PIN(a,b) a=a |(1&lt;&lt;b)<br />#define UNSET_PIN(a,b) a=a &amp; ~(1&lt;&lt;b)<br /><br />void send8(int data, int rs)<br />    {<br />        if(rs == 1)<br />{SET_PIN(RS_pr,RS_p);}<br />else <br />{UNSET_PIN(RS_pr,RS_p);}<br /><br />if(data&amp;0x10){SET_PIN(D_pr,D4);}else{UNSET_PIN(D_pr,D4);}<br />if(data&amp;0x20){SET_PIN(D_pr,D5);}else{UNSET_PIN(D_pr,D5);}<br />if(data&amp;0x40){SET_PIN(D_pr,D6);}else{UNSET_PIN(D_pr,D6);}<br />if(data&amp;0x80){SET_PIN(D_pr,D7);}else{UNSET_PIN(D_pr,D7);}<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />        SET_PIN(E_pr,E_p);_delay_ms(1);<br />        UNSET_PIN(E_pr,E_p);_delay_ms(2);<br /><br />if(data&amp;0x01){SET_PIN(D_pr,D4);}else{UNSET_PIN(D_pr,D4);}<br />if(data&amp;0x02){SET_PIN(D_pr,D5);}else{UNSET_PIN(D_pr,D5);}<br />if(data&amp;0x04){SET_PIN(D_pr,D6);}else{UNSET_PIN(D_pr,D6);}<br />if(data&amp;0x08){SET_PIN(D_pr,D7);}else{UNSET_PIN(D_pr,D7);}<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />        SET_PIN(E_pr,E_p);_delay_ms(1);<br />        UNSET_PIN(E_pr,E_p);_delay_ms(2);<br />    }<br /><br />void send4(int data, int rs)<br />    {<br />        if(rs == 1)<br />{SET_PIN(RS_pr,RS_p);}<br />else <br />{UNSET_PIN(RS_pr,RS_p);}<br /><br />if(data&amp;0x01){SET_PIN(D_pr,D4);}else{UNSET_PIN(D_pr,D4);}<br />if(data&amp;0x02){SET_PIN(D_pr,D5);}else{UNSET_PIN(D_pr,D5);}<br />if(data&amp;0x04){SET_PIN(D_pr,D6);}else{UNSET_PIN(D_pr,D6);}<br />if(data&amp;0x08){SET_PIN(D_pr,D7);}else{UNSET_PIN(D_pr,D7);}<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />        SET_PIN(E_pr,E_p);  _delay_ms(1);<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />    }<br /><br />void lcd_init()<br />    {<br />UNSET_PIN(RW_pr,RW_p);<br />        _delay_ms(55);<br /><br />send4(0x03,0);<br />_delay_ms(25);<br />send4(0x03,0);<br />_delay_ms(5);<br />send4(0x03,0);<br />_delay_ms(5);<br /><br />send4(0x02,0);<br />_delay_ms(5);<br /><br />        send8(0x28,0);<br /><br />send8(0x08,0);//<br />        //send8(0x0C,0);//lub 0F (widac wtedy kursor)<br />        send8(0x01,0);<br />        send8(0x06,0);<br /><br />send8(0x0C,0);//lub 0F (widac wtedy kursor)//<br /><br />        send8(0x80,0);<br />    }<br /><br />void wyswietl(char *txt, int q)<br />{<br />if(q==1){send8(0x80,0);}else{}<br />if(q==2){send8(0xc0,0);}else{}<br />int dl_slowa = strlen(txt);<br />for(int i=0; i&lt;dl_slowa; i++){send8(txt&#91;i&#93;,1);}<br />for(int i=dl_slowa; i&lt;16; i++){send8(0x20,1);}<br /><br />}<br /><br />void adc_init(void)<br />{<br /><br />//wybaranie wyejscia ADC0<br />SET_PIN(ADMUX,MUX0);<br />UNSET_PIN(ADMUX,MUX1);<br />SET_PIN(ADMUX,MUX2);<br />UNSET_PIN(ADMUX,MUX3);<br />//UNSET_PIN(ADMUX,MUX4);<br />// Wybranie wewnętrznego żródła napięcia odniesienia<br />SET_PIN(ADMUX,REFS0);<br />SET_PIN(ADMUX,REFS1);<br /><br />//Wybranie sposobu zapisu wyniku z wyrównaniem do lewej (osiem starszych bitów wyniku w rejestrze ADCH)<br />SET_PIN(ADMUX,ADLAR);<br /><br />// Zezwolenie na konwersję<br />//ADCSRA |= _BV(ADEN);<br />SET_PIN(ADCSRA,ADEN);<br /><br />// Wybranie częstotliwości dla taktowania przetwornika  (1/128 częstotliwosci zegara kontrolera- wew 8Mhz) <br />SET_PIN(ADCSRA,ADPS0);<br />SET_PIN(ADCSRA,ADPS1);<br />SET_PIN(ADCSRA,ADPS2);<br /><br />}<br /><br />//SIGNAL(TIMER1_CAPT_vect){} //przerwanie zewnętrzne i przechwycenei licznika<br />//SIGNAL(TIMER1_OVF_vect){}  //przerwanie przepełnieniem licznika<br />//SIGNAL(TIMER1_COMPA_vect){} //przerwanie od poównania licznika z wartością A<br />//SIGNAL(TIMER1_COMPB_vect){} //przerwanie od poównania licznika z wartością B<br /><br /><br />SIGNAL(TIMER1_COMPA_vect)<br />{<br />SET_PIN(PORTB,PB0);<br />_delay_us(80);<br />UNSET_PIN(PORTB,PB0);<br />}<br /><br />/*<br />SIGNAL(TIMER1_CAPT_vect)<br />{<br />SET_PIN(PORTB,PB0);<br />_delay_us(7);<br />UNSET_PIN(PORTB,PB0);<br />}<br />*/<br />#define Ps  0x10 <br />#define Pu  0x02<br />#define Pd  0x08<br />#define Pfw 0x01<br />#define Pp  PINC<br /><br />int main(void)<br />{<br />char pom;<br />long pomiar;<br />long temp;<br />char f=50; //f= 1-100Hz<br />char w=01; //w= 1-99%<br />char licz=0;<br /><br />char buffor_w1&#91;16&#93;=&quot;1234567890123456&quot;;<br />char buffor_w2&#91;16&#93;=&quot;1234567890123456&quot;;<br />char string&#91;5&#93;=&quot;12345&quot;;<br /><br />char p=0x0f;//PRZYCISKI<br />//p&amp;0x01 - obsługa przycisk START<br />//p&amp;0x02 - obsługa przycisk F/W<br />//p&amp;0x04 - obsługa przycisk +<br />//p&amp;0x08 - obsługa przycisk -<br />//p&amp;0x10 - bit START<br />//p&amp;0x20 - bit wyboru 1=&gt; zmiana F; 0=&gt; zmiana W<br /><br />//ICP1 - PB0 <br />//OC1A - PB1 <br /><br />DDRB  = 0xff; //wyjścia od generatora<br />PORTB = 0x0C;<br /><br />DDRD  = 0xff; //LCD - cały port jako wyjścia<br />PORTD = 0x00; //stan wyjść niski<br /><br />DDRC  = 0x00; //wejścia od przycisków i pomiaru napięcia<br />PORTC = 0x1f; //stan wysoki wejść<br /><br /><br />lcd_init();<br />adc_init();<br />wyswietl(&quot;    GENERATOR   &quot;,1);<br />wyswietl(&quot;   SYGNALU PWM  &quot;,2);<br />_delay_ms(2000);<br /><br /><br />TCNT1=0;//zerowanie licznika czasu<br /><br />UNSET_PIN(TCCR1A,COM1A0);<br />SET_PIN(TCCR1A,COM1A1);//dla porownania timer1 i ICR1 zmiana stanu wyjścia OC1A na niski<br />UNSET_PIN(TCCR1A,COM1B0);<br />UNSET_PIN(TCCR1A,COM1B1);<br />UNSET_PIN(TCCR1A,FOC1A);<br />UNSET_PIN(TCCR1A,FOC1B);<br /><br />//FAST PWM - licznik TCNT1 liczy aż do wartości ICR1 i wtedy zeruje i liczy od początku;<br />//jeśli przy odliczaniu TCNT1 dojdzie do OCR1A to ustawia wyjście OC1A<br />//w momencie resetu TCNT1 zeruje wyjście OC1A<br />UNSET_PIN(TCCR1A,WGM10);<br />SET_PIN(TCCR1A,WGM11);<br /><br />SET_PIN(TCCR1B,WGM12);<br />SET_PIN(TCCR1B,WGM13);<br /><br />UNSET_PIN(TCCR1B,ICNC1);//wyłączone filtrowanie sygnału sterującego ICP<br />UNSET_PIN(TCCR1B,ICES1);//&quot;0&quot; - reakcja na opadające zbocze na ICP, &quot;1&quot; - reakcja na narastające zbocze na ICP<br /><br />ICR1 = 625;  //pełny okres generowanego przebiegu<br />OCR1A = 312; //ustawienie wartości dla rejestru porównującego /312,5(100Hz)-31250(1Hz)<br />OCR1B = 0;   //ustawienie wartości dla rejestru porównującego -NIEWYKORZYSTYWANY<br /><br />//MASKWOANIE PRZERWAŃ<br />UNSET_PIN(TIMSK,TICIE1);//włączenie przerwania od przechwycenia z timer1 LUB dojścia timer1 do top (ICR1)**************<br />UNSET_PIN(TIMSK,TOIE1);//wyłączenie przerwania od przepełnienia timera1<br />UNSET_PIN(TIMSK,OCIE1B);//wyłączenie przerwania od wyrównania wartości tmiera1 (TCNT1) i OCR1B<br />SET_PIN(TIMSK,OCIE1A);//wyłączenie przerwania od wyrównania wartości tmiera1 (TCNT1) i OCR1A*************<br /><br />UNSET_PIN(TIMSK,OCIE2);//wyłączenie zbędnych przerwań<br />UNSET_PIN(TIMSK,TOIE2);<br />//UNSET_PIN(TIMSK,OCIE0);<br />UNSET_PIN(TIMSK,TOIE0);<br /><br />//CS12=0; CS11=0; CS10=0 - brak sygnalu zegarowego - licznik jest zatrzymany<br />//CS12=0; CS11=0; CS10=1 - clk - pełna prędkość bez presklaera<br />//CS12=0; CS11=1; CS10=0 - clk/8 - z preskalerem <br />//CS12=0; CS11=1; CS10=1 - clk/64 - z preskalerem <br />//CS12=1; CS11=0; CS10=0 - clk/256 - z preskalerem <br />//CS12=1; CS11=0; CS10=1 - clk/1024 - z preskalerem <br />//CS12=1; CS11=1; CS10=0 - zewnętrzny syg. zegarowy na T1 - takt przy zboczu opadającym<br />//CS12=1; CS11=1; CS10=1 - zewnętrzny syg. zegarowy na T1 - takt przy zboczu narastającym<br /><br />//SET_PIN(TCCR1B,CS10);//preskaler clk=4MHz/64=62500Hz - okres 16us<br />//SET_PIN(TCCR1B,CS11);<br />//UNSET_PIN(TCCR1B,CS12);<br /><br /><br />UNSET_PIN(TCCR1B,CS10);//wyłączenie zegara<br />UNSET_PIN(TCCR1B,CS11);<br />UNSET_PIN(TCCR1B,CS12);<br />SET_PIN(PORTB,PB2); //ustawienie 5V;<br /><br />//sei(); //włącz przerwania<br />cli();<br /><br />while(1)<br />{<br /><br />//if(PORTB&amp;PB0 &amp;&amp; TCNT1&gt;2){UNSET_PIN(PORTB,PB0);}else{;}<br /><br /><br /><br />if(!(Pp&amp;Ps)) p=p| 0x10;<br />{p=(p&amp;(~0x01)); if(p&amp;0x10){p=(p&amp;(~0x10));}else{p=(p|0x10);}<br />}<br /><br />}<br />else if(!(Pp&amp;Pu) &amp;&amp; (p&amp;0x04))<br />{p=(p&amp;(~0x04)); <br />if(p&amp;0x20){if(f&lt;100){f++;}else{;}}<br />else{if(w&lt;99){w++;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />else if(!(Pp&amp;Pd) &amp;&amp; (p&amp;0x08))<br />{p=(p&amp;(~0x08)); <br />if(p&amp;0x20){if(f&gt;1){f--;}else{;}}<br />else{if(w&gt;1){w--;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />else{;}<br /><br />if(!(Pp&amp;Pu) &amp;&amp; !(p&amp;0x04))<br />{<br />licz++;<br />if(licz&lt;6){licz++;}<br />else<br />{<br />if(p&amp;0x20){if(f&lt;100){f++;}else{;}}<br />else{if(w&lt;99){w++;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />}<br />else{;}<br /><br />if(!(Pp&amp;Pd) &amp;&amp; !(p&amp;0x08))<br />{<br />licz++;<br />if(licz&lt;6){licz++;}<br />else<br />{<br />if(p&amp;0x20){if(f&gt;1){f--;}else{;}}<br />else{if(w&gt;1){w--;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />}<br />else{;}<br /><br /><br /><br />if(Pp&amp;Ps) p=p&amp;(~0x10);<br />else if((Pp&amp;Pfw)&amp;&amp; !(p&amp;0x02)){p=(p|0x02); }<br />else if((Pp&amp;Pu) &amp;&amp; !(p&amp;0x04)){p=(p|0x04); licz=0;}<br />else if((Pp&amp;Pd) &amp;&amp; !(p&amp;0x08)){p=(p|0x08); licz=0;}<br />else{;}<br /><br /><br />if(p&amp;0x10 &amp;&amp; (PORTB&amp;0x04))<br />{<br />SET_PIN(TCCR1B,CS10);//preskaler clk=4MHz/64=62500Hz - okres 16us<br />SET_PIN(TCCR1B,CS11);<br /><br />}<br />else if (!(p&amp;0x10) &amp;&amp; !(PORTB&amp;0x04))<br />{<br />cli();<br />UNSET_PIN(TCCR1B,CS10);//wyłączenie zegara<br /><br />}<br />else{;}<br /><br /><br />ADCSRA |= _BV(ADSC);         // Rozpoczęcie przetwarzania<br />while(bit_is_set(ADCSRA,ADSC))// Oczekiwanie na zakończenie przetwarzania<br />{};<br />pom = ADCH;<br />pomiar=pom;<br />pomiar = (pomiar*512)/51;<br />pomiar = pomiar*21; //- konwersja do dzielnika ze schematu przy potencjometrze ok5k wskazuje poprawny wynik<br />if (pomiar&lt;10000)<br />{strcpy(buffor_w2,&quot;U= &quot;);}<br />else<br />{strcpy(buffor_w2,&quot;U=&quot;);}<br />ltoa(pomiar/1000,string,10);<br />strcat(buffor_w2,string);<br />strcat(buffor_w2,&quot;.&quot;);<br />ltoa((pomiar%1000)/100,string,10);<br />strcat(buffor_w2,string);<br />if(p&amp;0x20){strcat(buffor_w2,&quot;  zm.F&quot;);}else{strcat(buffor_w2,&quot;  zm.W&quot;);}<br />if(p&amp;0x10){strcat(buffor_w2,&quot; Wla&quot;);}else{strcat(buffor_w2,&quot; Wyl&quot;);}<br /><br />//itoa(pom,string,10);<br />//strcat(buffor_w2,string);<br /><br />strcpy(buffor_w1,&quot;F=&quot;);<br />if(f&lt;100){strcat(buffor_w1,&quot; &quot;);}else{;}<br />if(f&lt;10){strcat(buffor_w1,&quot; &quot;);}else{;}<br />ltoa(f,string,10);<br />strcat(buffor_w1,string);<br />strcat(buffor_w1,&quot;Hz &quot;);<br /><br />strcat(buffor_w1,&quot;W=&quot;);<br />if(w&lt;10){strcat(buffor_w1,&quot; &quot;);}else{;}<br />ltoa(w,string,10);<br />//if((100-w)&lt;10){strcat(buffor_w1,&quot; &quot;);}else{;}<br />//ltoa((100-w),string,10);<br />strcat(buffor_w1,string);<br />strcat(buffor_w1,&quot;% &quot;);<br /><br /><br />wyswietl(buffor_w1,1);<br />wyswietl(buffor_w2,2);<br /><br /><br />}<br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 25 kwi 2014, o 20:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-04-25T17:58:39+01:00</updated>
<published>2014-04-25T17:58:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79154#p79154</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79154#p79154"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79154#p79154"><![CDATA[
Popatrz dokładnie u mnie się kompiluje. <br />Przy okazji zobaczyłem swój błąd  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> . W drugim przypadku zamiast:<br />[syntax=c]if (!(Pp&amp;Ps)) p=p&amp;(~0x10);[/syntax]<br />ma być:<br />[syntax=c]if (Pp&amp;Ps) p=p&amp;(~0x10);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 25 kwi 2014, o 17:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[karolek]]></name></author>
<updated>2014-04-25T14:19:48+01:00</updated>
<published>2014-04-25T14:19:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79134#p79134</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79134#p79134"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79134#p79134"><![CDATA[
masz napisane jaki błąd , w czym problem ? popraw i po kłopocie .<br />z tego co tam jest to wygląda jakby brakowało gdzieś &quot;{&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2535">karolek</a> — 25 kwi 2014, o 14:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-25T13:48:17+01:00</updated>
<published>2014-04-25T13:48:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79133#p79133</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79133#p79133"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79133#p79133"><![CDATA[
Witam mam problem z ty co napisałeś wyskakuje jakiś błąd fotka w załączniku<br /><a href="http://forum.atnel.pl/_obrazki/o/3730/231b3e14116bc6bacaf894b3dc69ef20.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3730/231b3e14116bc6bacaf894b3dc69ef20.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 25 kwi 2014, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-24T17:43:19+01:00</updated>
<published>2014-04-24T17:43:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79074#p79074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79074#p79074"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=79074#p79074"><![CDATA[
Dzięki wielkie kolego za pomoc, pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 24 kwi 2014, o 17:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-04-23T20:38:13+01:00</updated>
<published>2014-04-23T20:38:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78990#p78990</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78990#p78990"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78990#p78990"><![CDATA[
zmień<br />[syntax=c]if (!(Pp&amp;Ps) &amp;&amp; (p&amp;0x01))<br />{       p=(p&amp;(~0x01)); if(p&amp;0x10){p=(p&amp;(~0x10));}else{p=(p|0x10);}<br />}[/syntax]<br />na<br />[syntax=c]if (!(Pp&amp;Ps)) p=p|0x10;[/syntax]<br />oraz<br />[syntax=c]if((Pp&amp;Ps) &amp;&amp; !(p&amp;0x01)){p=(p|0x01); }[/syntax]<br />na<br />[syntax=c]if (!(Pp&amp;Ps)) p=p&amp;(~0x10);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 23 kwi 2014, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-22T11:28:47+01:00</updated>
<published>2014-04-22T11:28:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78848#p78848</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78848#p78848"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78848#p78848"><![CDATA[
Tak dokładnie PC4<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 22 kwi 2014, o 11:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-04-21T22:23:20+01:00</updated>
<published>2014-04-21T22:23:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78816#p78816</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78816#p78816"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78816#p78816"><![CDATA[
Witam<br /><div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />A do którego pinu masz wpięty ten przycisk<br /></div><br />...ze &quot;słownego&quot; schematu wynika, że PC4.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 21 kwi 2014, o 22:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-04-21T21:28:45+01:00</updated>
<published>2014-04-21T21:28:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78813#p78813</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78813#p78813"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78813#p78813"><![CDATA[
A do którego pinu masz wpięty ten przycisk/przełącznik o którym mowa?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 21 kwi 2014, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-21T10:01:49+01:00</updated>
<published>2014-04-21T10:01:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78782#p78782</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78782#p78782"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=78782#p78782"><![CDATA[
Mam jeszcze jedna prośbę program jest napisany tak aby sygnał był  generowyny cały czas po podaniu sygnału na nóżkę nr 27 atmega8, drugie podanie sygnału wyłącza generator. Wiem że jest możliwość ale nie wiem jak, zrobić tak aby sygnał był generowany tylko w chwili podawania sugnału (trzymania przełącznika). Pomoże ktoś w tej kwestii?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 21 kwi 2014, o 10:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-10T08:07:41+01:00</updated>
<published>2014-04-10T08:07:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=77520#p77520</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=77520#p77520"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=77520#p77520"><![CDATA[
Dziękuję za odpowiedź zaraz idę testować.<br />Wszystko ok właśnie o to mi kolego chodziło, jeszcze raz dziękuję i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 10 kwi 2014, o 08:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-04-01T20:33:18+01:00</updated>
<published>2014-04-01T20:33:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76658#p76658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76658#p76658"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76658#p76658"><![CDATA[
Do OCR1A w każdym miejscu musisz dodać lub odjąć jakąś liczbę. OCR1B nie jest używany. Pozostaje PB0 i ten kod za to odpowiada:<br />[syntax=c]SIGNAL(TIMER1_COMPA_vect)<br />{<br />        SET_PIN(PORTB,PB0);<br />        _delay_us(7); //-------------------do zmiany<br />        UNSET_PIN(PORTB,PB0);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 1 kwi 2014, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-03-30T12:32:57+01:00</updated>
<published>2014-03-30T12:32:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76356#p76356</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76356#p76356"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76356#p76356"><![CDATA[
Witam i widzę że nie ma nikogo kto by chciał pomóc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 30 mar 2014, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-03-28T11:30:56+01:00</updated>
<published>2014-03-28T11:30:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76140#p76140</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76140#p76140"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76140#p76140"><![CDATA[
Teraz powinno być dobrze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 28 mar 2014, o 11:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wilu88]]></name></author>
<updated>2014-03-28T10:24:30+01:00</updated>
<published>2014-03-28T10:24:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76127#p76127</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76127#p76127"/>
<title type="html"><![CDATA[Re: atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76127#p76127"><![CDATA[
Kolgo przde wszystkim użyj znaczników syntax=c bo tego się czytać nie da.<br /><br />Po drugie na tym forum staramy się używać przyjaznych przesunięć bitowych aby łatwo było odczytać wartości pinów natomiast u ciebie wszystko hexem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=743">Wilu88</a> — 28 mar 2014, o 10:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotrekwoj1]]></name></author>
<updated>2014-04-27T08:42:26+01:00</updated>
<published>2014-03-28T10:08:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76126#p76126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76126#p76126"/>
<title type="html"><![CDATA[atmega8 pwm]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6537&amp;p=76126#p76126"><![CDATA[
Witam mam problem z jednym programem a mianowicie mam napisany program pod atmega8 i chciałbym w nim zmienić wypełnienie mógłby ktoś wyjaśnić mi jak to zrobić? Jest to generator z podwójnym wyjściem i teraz na jednym głównym wyjściu muszę trochę skrócić wypełnienie a na drugim troszkę wydłużyć.<br />oto kod programu<br /><br />[syntax=c]#include &lt;string.h&gt; <br />#include &lt;stdlib.h&gt; <br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt; <br />#include &lt;avr/io.h&gt;<br />      <br /><br />#define E_p 2<br />#define E_pr PORTD<br />#define RW_p 1<br />#define RW_pr PORTD<br />#define RS_p 0<br />#define RS_pr PORTD<br /><br />#define D7 7<br />#define D6 6<br />#define D5 5<br />#define D4 4<br />#define D_pr PORTD<br /><br />#define SET_PIN(a,b) a=a |(1&lt;&lt;b)<br />#define UNSET_PIN(a,b) a=a &amp; ~(1&lt;&lt;b)<br /><br />void send8(int data, int rs)<br />    {<br />        if(rs == 1)<br />{SET_PIN(RS_pr,RS_p);}<br />else <br />{UNSET_PIN(RS_pr,RS_p);}<br /><br />if(data&amp;0x10){SET_PIN(D_pr,D4);}else{UNSET_PIN(D_pr,D4);}<br />if(data&amp;0x20){SET_PIN(D_pr,D5);}else{UNSET_PIN(D_pr,D5);}<br />if(data&amp;0x40){SET_PIN(D_pr,D6);}else{UNSET_PIN(D_pr,D6);}<br />if(data&amp;0x80){SET_PIN(D_pr,D7);}else{UNSET_PIN(D_pr,D7);}<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />        SET_PIN(E_pr,E_p);_delay_ms(1);<br />        UNSET_PIN(E_pr,E_p);_delay_ms(2);<br /><br />if(data&amp;0x01){SET_PIN(D_pr,D4);}else{UNSET_PIN(D_pr,D4);}<br />if(data&amp;0x02){SET_PIN(D_pr,D5);}else{UNSET_PIN(D_pr,D5);}<br />if(data&amp;0x04){SET_PIN(D_pr,D6);}else{UNSET_PIN(D_pr,D6);}<br />if(data&amp;0x08){SET_PIN(D_pr,D7);}else{UNSET_PIN(D_pr,D7);}<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />        SET_PIN(E_pr,E_p);_delay_ms(1);<br />        UNSET_PIN(E_pr,E_p);_delay_ms(2);<br />    }<br /><br />void send4(int data, int rs)<br />    {<br />        if(rs == 1)<br />{SET_PIN(RS_pr,RS_p);}<br />else <br />{UNSET_PIN(RS_pr,RS_p);}<br /><br />if(data&amp;0x01){SET_PIN(D_pr,D4);}else{UNSET_PIN(D_pr,D4);}<br />if(data&amp;0x02){SET_PIN(D_pr,D5);}else{UNSET_PIN(D_pr,D5);}<br />if(data&amp;0x04){SET_PIN(D_pr,D6);}else{UNSET_PIN(D_pr,D6);}<br />if(data&amp;0x08){SET_PIN(D_pr,D7);}else{UNSET_PIN(D_pr,D7);}<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />        SET_PIN(E_pr,E_p);  _delay_ms(1);<br />        UNSET_PIN(E_pr,E_p);_delay_ms(1);<br />    }<br /><br />void lcd_init()<br />    {<br />UNSET_PIN(RW_pr,RW_p);<br />        _delay_ms(55);<br /><br />send4(0x03,0);<br />_delay_ms(25);<br />send4(0x03,0);<br />_delay_ms(5);<br />send4(0x03,0);<br />_delay_ms(5);<br /><br />send4(0x02,0);<br />_delay_ms(5);<br /><br />        send8(0x28,0);<br /><br />send8(0x08,0);//<br />        //send8(0x0C,0);//lub 0F (widac wtedy kursor)<br />        send8(0x01,0);<br />        send8(0x06,0);<br /><br />send8(0x0C,0);//lub 0F (widac wtedy kursor)//<br /><br />        send8(0x80,0);<br />    }<br /><br />void wyswietl(char *txt, int q)<br />{<br />if(q==1){send8(0x80,0);}else{}<br />if(q==2){send8(0xc0,0);}else{}<br /><br /><br />}<br /><br />void adc_init(void)<br />{<br /><br />//wybaranie wyejscia ADC0<br />SET_PIN(ADMUX,MUX0);<br />UNSET_PIN(ADMUX,MUX1);<br />SET_PIN(ADMUX,MUX2);<br />UNSET_PIN(ADMUX,MUX3);<br />//UNSET_PIN(ADMUX,MUX4);<br />// Wybranie wewnętrznego żródła napięcia odniesienia<br />SET_PIN(ADMUX,REFS0);<br />SET_PIN(ADMUX,REFS1);<br /><br />//Wybranie sposobu zapisu wyniku z wyrównaniem do lewej (osiem starszych bitów wyniku w rejestrze ADCH)<br />SET_PIN(ADMUX,ADLAR);<br /><br />// Zezwolenie na konwersję<br />//ADCSRA |= _BV(ADEN);<br />SET_PIN(ADCSRA,ADEN);<br /><br />// Wybranie częstotliwości dla taktowania przetwornika  (1/128 częstotliwosci zegara kontrolera- wew 8Mhz) <br />SET_PIN(ADCSRA,ADPS0);<br />SET_PIN(ADCSRA,ADPS1);<br />SET_PIN(ADCSRA,ADPS2);<br /><br />}<br /><br />//SIGNAL(TIMER1_CAPT_vect){} //przerwanie zewnętrzne i przechwycenei licznika<br />//SIGNAL(TIMER1_OVF_vect){}  //przerwanie przepełnieniem licznika<br />//SIGNAL(TIMER1_COMPA_vect){} //przerwanie od poównania licznika z wartością A<br />//SIGNAL(TIMER1_COMPB_vect){} //przerwanie od poównania licznika z wartością B<br /><br /><br />SIGNAL(TIMER1_COMPA_vect)<br />{<br />SET_PIN(PORTB,PB0);<br />_delay_us(7);<br />UNSET_PIN(PORTB,PB0);<br />}<br /><br />/*<br />SIGNAL(TIMER1_CAPT_vect)<br />{<br />SET_PIN(PORTB,PB0);<br />_delay_us(7);<br />UNSET_PIN(PORTB,PB0);<br />}<br />*/<br />#define Ps  0x10 <br />#define Pu  0x02<br />#define Pd  0x08<br />#define Pfw 0x01<br />#define Pp  PINC<br /><br />int main(void)<br />{<br />char pom;<br />long pomiar;<br />long temp;<br />char f=100; //f= 1-100Hz<br />char w=50; //w= 1-99%<br />char licz=0;<br /><br />char buffor_w1&#91;16&#93;=&quot;1234567890123456&quot;;<br />char buffor_w2&#91;16&#93;=&quot;1234567890123456&quot;;<br />char string&#91;5&#93;=&quot;12345&quot;;<br /><br />char p=0x0f;//PRZYCISKI<br />//p&amp;0x01 - obsługa przycisk START<br />//p&amp;0x02 - obsługa przycisk F/W<br />//p&amp;0x04 - obsługa przycisk +<br />//p&amp;0x08 - obsługa przycisk -<br />//p&amp;0x10 - bit START<br />//p&amp;0x20 - bit wyboru 1=&gt; zmiana F; 0=&gt; zmiana W<br /><br />//ICP1 - PB0 <br />//OC1A - PB1 <br /><br />DDRB  = 0xff; //wyjścia od generatora<br />PORTB = 0x0C;<br /><br />DDRD  = 0xff; //LCD - cały port jako wyjścia<br />PORTD = 0x00; //stan wyjść niski<br /><br />DDRC  = 0x00; //wejścia od przycisków i pomiaru napięcia<br />PORTC = 0x1f; //stan wysoki wejść<br /><br /><br />lcd_init();<br />adc_init();<br />wyswietl(&quot;   GENERATOR    &quot;,1);<br />wyswietl(&quot;  SYGNALU PWM   &quot;,2);<br />_delay_ms(100);_delay_ms(100);_delay_ms(100);<br /><br /><br />TCNT1=0;//zerowanie licznika czasu<br /><br />UNSET_PIN(TCCR1A,COM1A0);<br />SET_PIN(TCCR1A,COM1A1);//dla porownania timer1 i ICR1 zmiana stanu wyjścia OC1A na niski<br />UNSET_PIN(TCCR1A,COM1B0);<br />UNSET_PIN(TCCR1A,COM1B1);<br />UNSET_PIN(TCCR1A,FOC1A);<br />UNSET_PIN(TCCR1A,FOC1B);<br /><br />//FAST PWM - licznik TCNT1 liczy aż do wartości ICR1 i wtedy zeruje i liczy od początku;<br />//jeśli przy odliczaniu TCNT1 dojdzie do OCR1A to ustawia wyjście OC1A<br />//w momencie resetu TCNT1 zeruje wyjście OC1A<br />UNSET_PIN(TCCR1A,WGM10);<br />SET_PIN(TCCR1A,WGM11);<br /><br />SET_PIN(TCCR1B,WGM12);<br />SET_PIN(TCCR1B,WGM13);<br /><br />UNSET_PIN(TCCR1B,ICNC1);//wyłączone filtrowanie sygnału sterującego ICP<br />UNSET_PIN(TCCR1B,ICES1);//&quot;0&quot; - reakcja na opadające zbocze na ICP, &quot;1&quot; - reakcja na narastające zbocze na ICP<br /><br />ICR1 = 625;  //pełny okres generowanego przebiegu<br />OCR1A = 312; //ustawienie wartości dla rejestru porównującego /312,5(100Hz)-31250(1Hz)<br />OCR1B = 0;   //ustawienie wartości dla rejestru porównującego -NIEWYKORZYSTYWANY<br /><br />//MASKWOANIE PRZERWAŃ<br />UNSET_PIN(TIMSK,TICIE1);//włączenie przerwania od przechwycenia z timer1 LUB dojścia timer1 do top (ICR1)**************<br />UNSET_PIN(TIMSK,TOIE1);//wyłączenie przerwania od przepełnienia timera1<br />UNSET_PIN(TIMSK,OCIE1B);//wyłączenie przerwania od wyrównania wartości tmiera1 (TCNT1) i OCR1B<br />SET_PIN(TIMSK,OCIE1A);//wyłączenie przerwania od wyrównania wartości tmiera1 (TCNT1) i OCR1A*************<br /><br />UNSET_PIN(TIMSK,OCIE2);//wyłączenie zbędnych przerwań<br />UNSET_PIN(TIMSK,TOIE2);<br />//UNSET_PIN(TIMSK,OCIE0);<br />UNSET_PIN(TIMSK,TOIE0);<br /><br />//CS12=0; CS11=0; CS10=0 - brak sygnalu zegarowego - licznik jest zatrzymany<br />//CS12=0; CS11=0; CS10=1 - clk - pełna prędkość bez presklaera<br />//CS12=0; CS11=1; CS10=0 - clk/8 - z preskalerem <br />//CS12=0; CS11=1; CS10=1 - clk/64 - z preskalerem <br />//CS12=1; CS11=0; CS10=0 - clk/256 - z preskalerem <br />//CS12=1; CS11=0; CS10=1 - clk/1024 - z preskalerem <br />//CS12=1; CS11=1; CS10=0 - zewnętrzny syg. zegarowy na T1 - takt przy zboczu opadającym<br />//CS12=1; CS11=1; CS10=1 - zewnętrzny syg. zegarowy na T1 - takt przy zboczu narastającym<br /><br />//SET_PIN(TCCR1B,CS10);//preskaler clk=4MHz/64=62500Hz - okres 16us<br />//SET_PIN(TCCR1B,CS11);<br />//UNSET_PIN(TCCR1B,CS12);<br /><br /><br />UNSET_PIN(TCCR1B,CS10);//wyłączenie zegara<br />UNSET_PIN(TCCR1B,CS11);<br />UNSET_PIN(TCCR1B,CS12);<br />SET_PIN(PORTB,PB2); //ustawienie 5V;<br /><br />//sei(); //włącz przerwania<br />cli();<br /><br />while(1)<br />{<br /><br />//if(PORTB&amp;PB0 &amp;&amp; TCNT1&gt;2){UNSET_PIN(PORTB,PB0);}else{;}<br /><br /><br /><br />if(!(Pp&amp;Ps) &amp;&amp; (p&amp;0x01))<br />{p=(p&amp;(~0x01)); if(p&amp;0x10){p=(p&amp;(~0x10));}else{p=(p|0x10);}<br />}<br /><br />}<br />else if(!(Pp&amp;Pu) &amp;&amp; (p&amp;0x04))<br />{p=(p&amp;(~0x04)); <br />if(p&amp;0x20){if(f&lt;100){f++;}else{;}}<br />else{if(w&lt;99){w++;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />else if(!(Pp&amp;Pd) &amp;&amp; (p&amp;0x08))<br />{p=(p&amp;(~0x08)); <br />if(p&amp;0x20){if(f&gt;1){f--;}else{;}}<br />else{if(w&gt;1){w--;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />else{;}<br /><br />if(!(Pp&amp;Pu) &amp;&amp; !(p&amp;0x04))<br />{<br />licz++;<br />if(licz&lt;6){licz++;}<br />else<br />{<br />if(p&amp;0x20){if(f&lt;100){f++;}else{;}}<br />else{if(w&lt;99){w++;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />}<br />else{;}<br /><br />if(!(Pp&amp;Pd) &amp;&amp; !(p&amp;0x08))<br />{<br />licz++;<br />if(licz&lt;6){licz++;}<br />else<br />{<br />if(p&amp;0x20){if(f&gt;1){f--;}else{;}}<br />else{if(w&gt;1){w--;}else{;}}<br />temp=f;<br />temp=62500/f;<br />ICR1=temp;<br />//temp=(temp*w)/100;<br />temp=(temp*(100-w))/100;<br />OCR1A=ICR1-temp;<br />}<br />}<br />else{;}<br /><br /><br /><br />if((Pp&amp;Ps) &amp;&amp; !(p&amp;0x01)){p=(p|0x01); }<br />else if((Pp&amp;Pfw)&amp;&amp; !(p&amp;0x02)){p=(p|0x02); }<br />else if((Pp&amp;Pu) &amp;&amp; !(p&amp;0x04)){p=(p|0x04); licz=0;}<br />else if((Pp&amp;Pd) &amp;&amp; !(p&amp;0x08)){p=(p|0x08); licz=0;}<br />else{;}<br /><br /><br />if(p&amp;0x10 &amp;&amp; (PORTB&amp;0x04))<br />{<br />SET_PIN(TCCR1B,CS10);//preskaler clk=4MHz/64=62500Hz - okres 16us<br />SET_PIN(TCCR1B,CS11);<br />UNSET_PIN(TCCR1B,CS12);<br />UNSET_PIN(PORTB,PB2); //ustawienie 0V;<br />sei();<br />}<br />else if (!(p&amp;0x10) &amp;&amp; !(PORTB&amp;0x04))<br />{<br />cli();<br />UNSET_PIN(TCCR1B,CS10);//wyłączenie zegara<br />UNSET_PIN(TCCR1B,CS11);<br />UNSET_PIN(TCCR1B,CS12);<br />SET_PIN(PORTB,PB2); //ustawienie 5V;<br />}<br />else{;}<br /><br /><br />ADCSRA |= _BV(ADSC);         // Rozpoczęcie przetwarzania<br />while(bit_is_set(ADCSRA,ADSC))// Oczekiwanie na zakończenie przetwarzania<br />{};<br />pom = ADCH;<br />pomiar=pom;<br />pomiar = (pomiar*512)/51;<br />pomiar = pomiar*21; //- konwersja do dzielnika ze schematu przy potencjometrze ok5k wskazuje poprawny wynik<br />if (pomiar&lt;10000)<br />{strcpy(buffor_w2,&quot;U= &quot;);}<br />else<br />{strcpy(buffor_w2,&quot;U=&quot;);}<br />ltoa(pomiar/1000,string,10);<br />strcat(buffor_w2,string);<br />strcat(buffor_w2,&quot;.&quot;);<br />ltoa((pomiar%1000)/100,string,10);<br />strcat(buffor_w2,string);<br />if(p&amp;0x20){strcat(buffor_w2,&quot;  zm.F&quot;);}else{strcat(buffor_w2,&quot;  zm.W&quot;);}<br />if(p&amp;0x10){strcat(buffor_w2,&quot; Wla&quot;);}else{strcat(buffor_w2,&quot; Wyl&quot;);}<br /><br />//itoa(pom,string,10);<br />//strcat(buffor_w2,string);<br /><br />strcpy(buffor_w1,&quot;F=&quot;);<br />if(f&lt;100){strcat(buffor_w1,&quot; &quot;);}else{;}<br />if(f&lt;10){strcat(buffor_w1,&quot; &quot;);}else{;}<br />ltoa(f,string,10);<br />strcat(buffor_w1,string);<br />strcat(buffor_w1,&quot;Hz &quot;);<br /><br />strcat(buffor_w1,&quot;W=&quot;);<br />if(w&lt;10){strcat(buffor_w1,&quot; &quot;);}else{;}<br />ltoa(w,string,10);<br />//if((100-w)&lt;10){strcat(buffor_w1,&quot; &quot;);}else{;}<br />//ltoa((100-w),string,10);<br />strcat(buffor_w1,string);<br />strcat(buffor_w1,&quot;% &quot;);<br /><br /><br />wyswietl(buffor_w1,1);<br />wyswietl(buffor_w2,2);<br /><br /><br />}<br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3730">piotrekwoj1</a> — 28 mar 2014, o 10:08</p><hr />
]]></content>
</entry>
</feed>