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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-06-03T17:47:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18553&amp;mode</id>
<entry>
<author><name><![CDATA[Mnich16]]></name></author>
<updated>2017-06-03T17:47:52+01:00</updated>
<published>2017-06-03T17:47:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190241#p190241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190241#p190241"/>
<title type="html"><![CDATA[Re: Niepoprawnie działający program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190241#p190241"><![CDATA[
o kurczę   mam luki w przedziałach  <br /><br />dzięki bardzo<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5032">Mnich16</a> — 3 cze 2017, o 17:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2017-06-03T17:40:41+01:00</updated>
<published>2017-06-03T17:40:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190240#p190240</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190240#p190240"/>
<title type="html"><![CDATA[Re: Niepoprawnie działający program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190240#p190240"><![CDATA[
Pomyśl co zwróci funkcja jeśli napięcie = 290  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=327">woycek</a> — 3 cze 2017, o 17:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mnich16]]></name></author>
<updated>2017-06-03T16:40:57+01:00</updated>
<published>2017-06-03T16:40:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190237#p190237</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190237#p190237"/>
<title type="html"><![CDATA[Niepoprawnie działający program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18553&amp;p=190237#p190237"><![CDATA[
Cześć prosił bym o analize mojego kodu bo coś mi źle działa, kilka linijek tutaj jest ale sporo jest zakomentowane a prosił bym tylko o analizę jednego zadania które program robi. Tak w skrócie program mierzy 5 różnych napięć wewnątrz timera programowego ale proszę zwrócić uwagę na to ostatnie napięcie które jest mierzone czyli to &quot;ADC4_feedback = pomiar(4);&quot;  wynik tego pomiaru przekazuję do funkcji FEEDBACK która mi ten pomiar trochę przelicza na co innego i to przeliczenie wyświetlam  tutaj <br />&quot;lcd_int( FEEDBACK(ADC4_SR_feedback) );&quot; .   A to napięcie które mierzę pochodzi z potencjometru, i chodzi o to że wynik jest wyświetlany zgodnie z tym co robi funkcja czyli zależy jak pokręce to wyświetla mi wynik z zakresu od 1 do 17  tylko że gdy wyśietla mi wynik to co jakiś czas w miejscu wyniku pojawia mi się cyfra 0 i nie wiem skąd ona sie bierze czyli np. pokręce potencjometrem i wyświetla mi się cyfra 5 ale co chwila zamiast cyfry 5 wyświetla się cyfra 0 i nie ma tutaj jakiegoś stałego odstepu czasu pomiędzy poprawną cyfrą a zerem to zero wskakuję sobie jak się mu zachce.<br /><br />mam nadzieję że dobrze to wyjaśniłem   <br /><br />dzięki.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#define STEP PC1               //0<br />#define DIR  PC0              //1<br />#define tryb  PD7<br />#define MOTOR_PORT PORTC<br />#define MOTOR_DDR DDRC<br /><br /><br />uint16_t pomiar(uint8_t kanal);<br /><br />void silnik_manual(uint16_t aktualne_polozenie, uint16_t wymagane_polozenie);<br /><br />uint8_t FEEDBACK(uint16_t napiecie);<br /><br />uint16_t ADC0_CO, ADC1_CO2, ADC2_O2, ADC3_ciag,ADC4_feedback;<br />uint16_t ADC0_SR_CO, ADC1_SR_CO2, ADC2_SR_O2, ADC3_SR_ciag,ADC4_SR_feedback;<br /><br />uint8_t pomoc;<br /><br />volatile uint16_t Timer1, Timer2;<br />volatile int encoder;<br /><br />int main(void){<br /><br /><br /><br />uint8_t dt=4;<br />uint8_t dt2=6;<br /><br /><br />MOTOR_DDR |=(1&lt;&lt;DIR);<br />MOTOR_PORT |=(1&lt;&lt;DIR);<br />MOTOR_DDR |=(1&lt;&lt;STEP);<br />MOTOR_PORT |=(1&lt;&lt;STEP);<br /><br />DDRD |=(1&lt;&lt;tryb);<br />PORTD |=(1&lt;&lt;tryb);<br /><br /><br />//DDRD &amp;=~ (1&lt;&lt;PD2);       //INT0 enkoder okno<br />//PORTD |= (1&lt;&lt;PD2);<br />//DDRD &amp;=~ (1&lt;&lt;PD4);<br />//PORTD |= (1&lt;&lt;PD7);<br /><br />//DDRB |= (1&lt;&lt;PB2);<br />//PORTB |= (1&lt;&lt;PB2);<br /><br /><br />//DDRD |= (1&lt;&lt;PD3);     //dioda test<br />//PORTD |= (1&lt;&lt;PD3);<br /><br />//DDRD |= (1&lt;&lt;PD4);     //dioda test<br />//PORTD |= (1&lt;&lt;PD4);<br /><br />//DDRD |= (1&lt;&lt;PD6);     //dioda test<br />//PORTD |= (1&lt;&lt;PD6);<br /><br /><br />//GICR |= (1&lt;&lt;INT0);               // włącz INT0<br />//MCUCR |= (1&lt;&lt;ISC01)|(1&lt;&lt;ISC00);  //narastające<br /><br /><br /><br />//DDRB |=(1&lt;&lt;PB6);<br />//PORTB |=(1&lt;&lt;PB6);<br /><br />lcd_init();<br /><br />/////////////////////////////////////////////////////////////////////////<br /><br />ADMUX |=(1&lt;&lt;REFS0);     //ref VCC<br /><br />ADCSRA |=(1&lt;&lt;ADEN)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);<br /><br />//////////////////////////////////////////////////////////////////////////<br /><br />TCCR2  |= (1&lt;&lt;WGM21);   // tryb pracy CTC<br />TCCR2  |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20); // preskaler = 1024<br />OCR2  = 108;   // przerwanie porównania co 10ms (100Hz)<br />TIMSK  = (1&lt;&lt;OCIE2); // Odblokowanie przerwania CompareMatch<br /><br /><br />sei();<br /><br />lcd_cls();<br /><br />while(1){<br /><br /><br /><br />//silnik_manual(encoder,100);<br /><br /><br /><br /><br />if( PIND &amp; (1&lt;&lt;tryb)){<br /><br /><br />if( !Timer1 ) {<br />   Timer1=10;<br />   lcd_cls();<br /><br />   //silnik_manual(50,100);<br />   ADC0_CO = pomiar(0);<br />   ADC0_SR_CO=ADC0_SR_CO*dt2;<br />   ADC0_SR_CO=ADC0_SR_CO+ADC0_CO;<br />   ADC0_SR_CO=ADC0_SR_CO/(dt2+1);<br /><br /><br />   ADC1_CO2 = pomiar(1);<br />   ADC1_SR_CO2=ADC1_SR_CO2*dt2;<br />   ADC1_SR_CO2=ADC1_SR_CO2+ADC1_CO2;<br />   ADC1_SR_CO2=ADC1_SR_CO2/(dt2+1);<br /><br /><br />   ADC2_O2 = pomiar(2);<br />   ADC2_SR_O2=ADC2_SR_O2*dt2;<br />   ADC2_SR_O2=ADC2_SR_O2+ADC2_O2;<br />   ADC2_SR_O2=ADC2_SR_O2/(dt2+1);<br /><br /><br /><br /><br />   ADC3_ciag = pomiar(3);<br />   ADC3_SR_ciag=ADC3_SR_ciag*dt2;<br />   ADC3_SR_ciag=ADC3_SR_ciag+ADC3_ciag;<br />   ADC3_SR_ciag=ADC3_SR_ciag/(dt2+1);<br /><br /><br /><br />   ADC4_feedback = pomiar(4);<br />   ADC4_SR_feedback= ADC4_SR_feedback*dt;<br />   ADC4_SR_feedback= ADC4_SR_feedback+ADC4_feedback;<br />   ADC4_SR_feedback= ADC4_SR_feedback/(dt+1);<br /><br /><br /><br /><br /><br />      // lcd_locate(0,2);<br />  // lcd_int(ADC0_SR_CO);<br />  // lcd_locate(0,8);<br />  // lcd_int(ADC1_SR_CO2);<br /><br />  // lcd_locate(1,2);<br />  // lcd_int(ADC2_SR_O2);<br />  // lcd_locate(1,8);<br />  // lcd_int(ADC3_SR_ciag);<br /><br /><br />  // lcd_locate(0,12);<br />  // lcd_int(ADC4_SR_feedback);<br /><br /><br /><br /><br />   lcd_locate(0,5);<br />   lcd_int( FEEDBACK(ADC4_SR_feedback) );<br /><br /><br /><br /><br />///////////////////////////////////////////////CIAG/////////////////////////////////////<br /><br />//if(ADC4_SR_ciag&gt;5)   {<br /><br />//PORTB &amp;= ~(1&lt;&lt;PB2);<br /><br /><br />//}<br /><br /><br /><br />//else{ PORTB |=(1&lt;&lt;PB2); }<br /><br /><br /><br />////////////////////////////////////////////////////////////////////////////////////////<br /><br />//silnik_manual(60,100);<br /><br /><br />}<br /><br /><br /><br /><br /><br />//silnik_manual(50,100);<br /><br /><br /><br /><br />}  //TRYB<br /><br /><br /><br /><br />else{<br /><br />lcd_locate(0,0);<br />    lcd_int(1);<br /><br />}<br /><br /><br /><br /><br /><br /><br />}<br /><br /><br /><br />}<br /><br /><br />ISR(TIMER2_COMP_vect) {<br /><br />if(Timer1) Timer1--;<br />if(Timer2) Timer2--;<br />}<br /><br /><br /><br /><br /><br />//ISR( INT0_vect ){<br /><br />//if( PIND &amp; (1&lt;&lt;PD7) ) encoder++;<br />//else encoder--;<br /><br /><br /><br /><br />//}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />uint16_t pomiar(uint8_t kanal) {<br />        ADMUX = (ADMUX &amp; 0xF8) | kanal;<br />        ADCSRA |= (1 &lt;&lt; ADSC);<br />        while (ADCSRA &amp; (1 &lt;&lt; ADSC));<br /><br />        return ADCW;<br /><br />}<br /><br /><br /><br /><br />void silnik_manual(uint16_t aktualne_polozenie, uint16_t wymagane_polozenie){<br /><br />int16_t uchyb;<br /><br />uchyb=wymagane_polozenie-aktualne_polozenie;<br /><br />//if(uchyb&gt;0) MOTOR_PORT |=(1&lt;&lt;DIR);<br />//if(uchyb&lt;0) MOTOR_PORT &amp;=~(1&lt;&lt;DIR);<br /><br />//if( !Timer2 ) {<br />//Timer2=10;<br /><br /> lcd_locate(1,13);<br />   lcd_int(uchyb);<br /><br />if(uchyb&gt;0) {<br /><br />//PORTD ^= (1&lt;&lt;PD3);<br /><br />MOTOR_PORT &amp;=~(1&lt;&lt;DIR);<br /><br /><br />for(uint8_t i=0; i&lt;uchyb*2; i++){<br /><br />//uchyb=wymagane_polozenie-aktualne_polozenie;<br /><br />MOTOR_PORT ^=(1&lt;&lt;STEP);<br />_delay_ms(1);<br /><br />}<br /><br />}<br /><br /><br /><br />if(uchyb&lt;0){<br /><br />MOTOR_PORT |=(1&lt;&lt;DIR);<br />//PORTD ^= (1&lt;&lt;PD4);<br /><br />for(uint8_t i=0; i&lt;uchyb*2*(-1); i++){<br /><br />//uchyb=wymagane_polozenie-aktualne_polozenie;<br /><br />MOTOR_PORT ^=(1&lt;&lt;STEP);<br />_delay_ms(1);<br /><br />}<br /><br /><br /><br /><br />}<br /><br /><br /><br />if(uchyb==0){<br />//PORTD ^= (1&lt;&lt;PD6);<br />MOTOR_PORT |=(1&lt;&lt;STEP);<br />_delay_ms(1);<br />}<br /><br /><br /><br /><br /><br />//}     //timer silnik<br /><br /><br /><br /><br /><br />}<br /><br /><br /><br /><br /><br /><br />uint8_t FEEDBACK( uint16_t napiecie ){<br /><br />uint8_t okno=0;<br /><br />if (napiecie&gt;=5 &amp;&amp; napiecie&lt;=191) okno=1;<br />else if (napiecie&gt;=195 &amp;&amp; napiecie&lt;=209) okno=2;<br />else if (napiecie&gt;=223 &amp;&amp; napiecie&lt;=237) okno=3;<br />else if (napiecie&gt;=248 &amp;&amp; napiecie&lt;=262) okno=4;<br />else if (napiecie&gt;=275 &amp;&amp; napiecie&lt;=289) okno=5;<br />else if (napiecie&gt;=295 &amp;&amp; napiecie&lt;=309) okno=6;<br />else if (napiecie&gt;=314 &amp;&amp; napiecie&lt;=328) okno=7;<br />else if (napiecie&gt;=334 &amp;&amp; napiecie&lt;=337) okno=8;<br />else if (napiecie&gt;=343 &amp;&amp; napiecie&lt;=357) okno=9;<br />else if (napiecie&gt;=361 &amp;&amp; napiecie&lt;=375) okno=10;<br />else if (napiecie&gt;=382 &amp;&amp; napiecie&lt;=388) okno=11;<br />else if (napiecie&gt;=400 &amp;&amp; napiecie&lt;=414) okno=12;<br />else if (napiecie&gt;=425 &amp;&amp; napiecie&lt;=439) okno=13;<br />else if (napiecie&gt;=451 &amp;&amp; napiecie&lt;=465) okno=14;<br />else if (napiecie&gt;=474 &amp;&amp; napiecie&lt;=488) okno=15;<br />else if (napiecie&gt;=501 &amp;&amp; napiecie&lt;=515) okno=16;<br />else if (napiecie&gt;=520 &amp;&amp; napiecie&lt;=1000) okno=17;<br /><br />return okno;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5032">Mnich16</a> — 3 cze 2017, o 16:40</p><hr />
]]></content>
</entry>
</feed>