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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-07-05T09:23:14+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18753&amp;mode</id>
<entry>
<author><name><![CDATA[paavo91]]></name></author>
<updated>2017-07-05T09:23:14+01:00</updated>
<published>2017-07-05T09:23:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191702#p191702</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191702#p191702"/>
<title type="html"><![CDATA[Re: Komputer spalania - różne wyniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191702#p191702"><![CDATA[
No i tak wyszło, obsługa LCD blokuje za długo w pętli while. Choć czemu nie mogę sumowac czasu wtrysków w przerwaniu po zakończeniu pomiaru, wtedy w pętli głównej mogę się zająć tylko LCD..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=515">paavo91</a> — 5 lip 2017, o 09:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[buz11]]></name></author>
<updated>2017-07-04T17:23:13+01:00</updated>
<published>2017-07-04T17:23:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191667#p191667</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191667#p191667"/>
<title type="html"><![CDATA[Re: Komputer spalania - różne wyniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191667#p191667"><![CDATA[
<div class="quotetitle">paavo91 napisał(a):</div><div class="quotecontent"><br />Doświadczalnie sprawdziłem i w pełnym zakresie obrotów silnika nie nastąpi przepełnienie.<br /></div><br />Ale akurat wysokie obroty działają na korzyść tego programu. Problem pojawi się przy dużym obciążeniu na zimnym silniku...<br /><br />Wrzuć ustawienia timera1. Napisz jakim kwarcem napędzasz Atmegę. <br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A jeśli z wyświetlaniem nie nadąża(bo w while długo rysuje) to jak to zrobić aby działało?<br /></div><br /><br />To zrób eksperyment i zamiast na LCD wyrzucaj wyniki do terminala. Jeśli na terminalu będzie wszystko OK - to do optymalizacji masz obsługę LCD.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=686">buz11</a> — 4 lip 2017, o 17:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[paavo91]]></name></author>
<updated>2017-07-04T16:03:12+01:00</updated>
<published>2017-07-04T16:03:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191665#p191665</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191665#p191665"/>
<title type="html"><![CDATA[Re: Komputer spalania - różne wyniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191665#p191665"><![CDATA[
Doświadczalnie sprawdziłem i w pełnym zakresie obrotów silnika nie nastąpi przepełnienie.<br /><br />W pętli głównej sprawdzam czy jest ustawiona flaga1000 wtedy uruchamiam funkcję obliczania spalania.<br /><br />Ft811 steruje po SPI tak samo jak OLED steruję po SPI. Rozumiem, że FT811 będzie robił za mnie wiele rzeczy szybciej, ale chciałbym, żeby ktoś to potwierdził, że po prostu OLED będzie wolniejszy i nie będzie mi to działać. No chyba, że ktoś jest w stanie mi poradzić jak to zrobić aby działało. Na mój rozum z samym liczeniem procek spokojnie nadąża. A jeśli z wyświetlaniem nie nadąża(bo w while długo rysuje) to jak to zrobić aby działało?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=515">paavo91</a> — 4 lip 2017, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[buz11]]></name></author>
<updated>2017-07-04T12:38:18+01:00</updated>
<published>2017-07-04T12:38:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191659#p191659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191659#p191659"/>
<title type="html"><![CDATA[Re: Komputer spalania - różne wyniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191659#p191659"><![CDATA[
Hej,<br />Nie bardzo chce mi się wierzyć, że ten program dobrze Ci zlicza zużycie paliwa, ale ja się nie znam  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Jestem tylko ciekawy dlaczego nie zliczasz liczby przepełnień timera w przerwaniu ICP Timera1?<br /><br />Nie podałeś chyba całej zawartości pętli głównej, bo nie widzę kiedy w niej obliczasz zużycie funkcją <em>oblicz_spalanie();</em><br /><br />Zauważ, że FT811 sterujesz po SPI i zapewne trwa to krócej niż rysowanie grafiki piksel po pikselu w funkcji<br />[syntax=c]u8g_FirstPage(&amp;u8g);<br />                do<br />                {<br />                        draw();<br />                       <br />                } while ( u8g_NextPage(&amp;u8g) );<br /> <br />                update(); // tutaj wyswietlam dane w zaleznosci od pozycji menu (srednie, na godzine, dystans)[/syntax]<br /><br />I tutaj bym stawiał na problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=686">buz11</a> — 4 lip 2017, o 12:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[paavo91]]></name></author>
<updated>2017-07-04T11:45:57+01:00</updated>
<published>2017-07-04T11:45:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191654#p191654</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191654#p191654"/>
<title type="html"><![CDATA[Komputer spalania - różne wyniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18753&amp;p=191654#p191654"><![CDATA[
Witajcie.<br /><br />W wolnym czasie robię sobie coś w rodzaju komputerka spalania do mojego samochodu. Małymi krokami dotarłem do celu, udało mi się to wszystko ogarnąć, wyświetlam sobie spalanie na dużym wyświetlaczu (FT811 5 cali). Problem pojawił się wtedy gdy chciałem przenieść ten projekt na malutki wyświetlacz OLED. Kody są praktycznie identyczne, zmienia się tylko sposób wysyłania danych do wyświetlacza w celu wyświetlenia. Chodzi o to, że gdy używam dużego LCD wyniki są bardzo zbliżone do rzeczywistych. Gdy chcę to zrobić na małym OLED, wyniki są inne tzn. wskazania są zbyt małe.<br /><br />Poniżej fragmenty kodu odpowiedzialne za obliczanie spalania(tutaj konkretnie spalanie na godzinę). Mam nadzieję, że tyle wystarczy aby ktoś mnie naprowadził co robię źle.<br /><br />[syntax=c]//************** ICP PRZERWANIE TIMER1 - POMIAR CZASU OTWARCIA WTRYSKU **********<br />ISR(TIMER1_CAPT_vect)<br />{<br />if(edge == 1)<br />{<br />TCNT1 = 0;// zeruj timer1<br />TCCR1B |= (1&lt;&lt;ICES1);// zmiana reakcji na zbocze<br /><br />overflows = 0;// zeruj licznik przepelnien<br />isOverflowed = 0;// zeruj flage przepelnienia<br />edge = 0;// ostatnie zbocze<br /><br /><br />}<br />else<br />{<br />if(!isOverflowed)<br />{<br />// jesli timer sie nie przepelnil to zlap pomiar<br />injTime = ICR1;<br />}<br /><br />TCCR1B &amp;= ~(1&lt;&lt;ICES1);// zmiana reakcji na zbocze<br />edge = 1;// ostatnie zbocze<br />success = 1;// zakonczono pomiar<br /><br /><br />}<br /><br /><br /><br />}[/syntax]<br /><br /><br />[syntax=c]void oblicz_spalanie()<br />{<br /><br /><br />total_injector_open_time = ((float)inj_time / 1000000.0);// zamiana na sekundy<br />inj_time = 0;// zeruje laczny czas otwarcia wtrysku<br /><br />total_fuel_used += (total_injector_open_time * 0.00252) * 4.0;// spalone paliwo(calkowite) w ciagu sekundy - 2.52mL x 4 wtryskiwacze<br />fuel_used += (total_injector_open_time * 0.00252) * 4.0;// spalone paliwo w czasie 1 sekundy<br /><br />litr_per_hour = fuel_used * 3600.0;// spalone paliwo w czasie 1s mnoze przez 3600, otrzymuje spalanie na godzine<br /><br />if(distance != 0)<br />{<br />litr_per_100 = fuel_used / distance * 100.0;// oblicz spalanie na 100<br />litr_per_100_avg = total_fuel_used / total_distance * 100.0; // oblicz spalanie  srednie na 100<br /><br />}<br /><br />distance = 0;// zeruj dystans i paliwo zuzyte w ciagu 1s<br />fuel_used = 0;<br /><br /><br />dtostrf(litr_per_hour,2,2,litr_per_hour_char);// konwersja do wyswietlenia<br /><br /><br />}[/syntax]<br /><br /><br /><br />PĘTLA GŁÓWNA<br />[syntax=c]while(1)<br />{<br /><br />if(success)// jesli skonczono pomiar<br />{<br />success = 0;<br />inj_time += injTime;// sumuj czasy wtryskow &#91;us&#93;<br /><br />}<br /><br />displayDynamic(); // tutaj wyswietlanie danych na LCD<br /><br /><br /><br />if(flaga_500)<br />{<br />speedometer();// funkcja pomiaru predkosci w km/h<br /><br />flaga_500 = 0;<br />}<br /><br />if(flaga_1000) // minela sekunda<br />{<br />flaga_1000 = 0;<br /><br />oblicz_spalanie();<br /><br /><br />}<br />}[/syntax]<br /><br /><br />W obydwu projektach używam tych samych kodów do obliczania spalania, różnice jest jak już mówiłem tylko w pętli while(poniżej pętla while programu który źle wskazuje spalanie)<br /><br />[syntax=c]while(1)<br />{<br />//=======CZAS WTRYSKU===============<br />if(success)<br />{<br />success = 0;<br />total_inj_time += injTime;// sumuj czasy wtryskow &#91;us&#93;<br /><br />}<br /><br /><br />//===========LCD======================<br />u8g_FirstPage(&amp;u8g);<br />do<br />{<br />draw();<br /><br />} while ( u8g_NextPage(&amp;u8g) );<br /><br />update(); // tutaj wyswietlam dane w zaleznosci od pozycji menu (srednie, na godzine, dystans)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=515">paavo91</a> — 4 lip 2017, o 11:45</p><hr />
]]></content>
</entry>
</feed>