Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 6 sie 2026, o 09:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 4 lip 2017, o 11:45 
Offline
Użytkownik

Dołączył(a): 11 sie 2012
Posty: 45
Pomógł: 0

Witajcie.

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.

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.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




PĘTLA GŁÓWNA
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



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)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lip 2017, o 12:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lis 2012
Posty: 283
Lokalizacja: Warszawa
Pomógł: 17

Hej,
Nie bardzo chce mi się wierzyć, że ten program dobrze Ci zlicza zużycie paliwa, ale ja się nie znam ;)
Jestem tylko ciekawy dlaczego nie zliczasz liczby przepełnień timera w przerwaniu ICP Timera1?

Nie podałeś chyba całej zawartości pętli głównej, bo nie widzę kiedy w niej obliczasz zużycie funkcją oblicz_spalanie();

Zauważ, że FT811 sterujesz po SPI i zapewne trwa to krócej niż rysowanie grafiki piksel po pikselu w funkcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I tutaj bym stawiał na problem.

_________________
Pozdrawiam
Grzegorz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lip 2017, o 16:03 
Offline
Użytkownik

Dołączył(a): 11 sie 2012
Posty: 45
Pomógł: 0

Doświadczalnie sprawdziłem i w pełnym zakresie obrotów silnika nie nastąpi przepełnienie.

W pętli głównej sprawdzam czy jest ustawiona flaga1000 wtedy uruchamiam funkcję obliczania spalania.

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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lip 2017, o 17:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lis 2012
Posty: 283
Lokalizacja: Warszawa
Pomógł: 17

paavo91 napisał(a):
Doświadczalnie sprawdziłem i w pełnym zakresie obrotów silnika nie nastąpi przepełnienie.

Ale akurat wysokie obroty działają na korzyść tego programu. Problem pojawi się przy dużym obciążeniu na zimnym silniku...

Wrzuć ustawienia timera1. Napisz jakim kwarcem napędzasz Atmegę.

Cytuj:
A jeśli z wyświetlaniem nie nadąża(bo w while długo rysuje) to jak to zrobić aby działało?


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.

_________________
Pozdrawiam
Grzegorz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lip 2017, o 09:23 
Offline
Użytkownik

Dołączył(a): 11 sie 2012
Posty: 45
Pomógł: 0

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..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO