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



Teraz jest 18 lip 2025, o 09:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 31 maja 2013, o 21:51 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Witam
Buduję duży projekt w którym ma być przewijane menu. Zrobiłem tapetę którą podzieliłem na 5 części i w pętli while ma program przewijać to menu od pierwszej strony do ostatniej i od nowa. Działa dobrze tylko jest kłopot z pierwszą stroną. To znaczy że pierwsza strona przewija się 2 razy i dopiero kolejna jest przewijana potem już przewija się dobrze. Żebyście to lepiej mogli zrozumieć nagrałem filmik kamerka internetową bo tel się ładuję. Kamerkę mam najlichszą ale widać jak się przewija.


Na filmiku widać pewne zniekształcenia obrazu lecz w rzeczywistości jest pięknie.
Oczywiście umieszczam kod programu ale podam tylko to co odpowiada za wyświetlanie obrazków bo cały program jest rozległy :)
Zmienna "pozycja" jest zdefiniowana jako
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Wszystko inne są po prostu zakomentowane dlatego nie podaje tutaj całego programu ale jeśli trzeba to wtedy pousuwam i wstawię
Czy spotkał się ktoś z takim przypadkiem?
uC to atmega644p + eclipse + 16Mhz
Proszę o pomoc

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 maja 2013, o 21:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Jakim typem jest pozycja?

------------------------ [ Dodano po: kilkunastu sekundach ]

Cieszy, że coraz więcej ludzi bawi się tymi TFT.
No to czekamy na pierwszy projekt na 4.3''. Kto pierwszy? Krauser? :)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 maja 2013, o 21:59 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Cytuj:
Jakim typem jest pozycja?

Jest to napisane tuż przed programem to uint16_t
Na 4,3'' mnie nie stać :( A szkoda bo fajny wyświetlacz

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 maja 2013, o 22:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Ahh no tak, uint_16t, nie spojrzałem

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

Tu czasem nie majstrowałeś?

------------------------ [ Dodano po: 18 minutach ]

Poza tym u Ciebie napotka na bufor 4 (960) to przeskakuje OD RAZU na bufor 0 - spójrz sobie na if-a.
I właśnie dlatego źle Ci działa.

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


Powinno pomóc.

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


Odpada Ci od razu ten nieszczęsny if i 18 linia.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 08:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Błąd jest pewnie w set_frame_adr() w części wyliczającej z którego bufora ma czytać. Na początku powinno z SSDXBUF0 i z SSDXBUF1 a czyta 2 razy z SSDXBUF0.

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 11:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

PROTON, co może tu być źle? No powiedz.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Błąd jest tam, gdzie podałem w poprzednim poście.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 15:21 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Po pierwsze to 1200 to ostatnia linijka piątej strony więc program wchodził by na szóstą stronę.
Po drugie zapis
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Powoduje warnninga
Kod:
warning: operation on 'pozycja' may be undefined


Z tymi definicjami nic nie kopałem, są tak jak powinny być.
Jaka jeszcze może być przyczyna?

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 16:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Masz 5 ekranów po 240 linii, 5*240 = 1200, wykrywasz czy jesteś na 1200 linii (przed wyświetleniem więc nie wchodzisz na "szosty" ekran), jeżeli tak, to zmieniasz na linię nr zero czyli zapętlasz.
To jest dobrze.

Warning jest pewnie przez zapis w jednej linii.
Spróbuj tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 16:38 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Nic nie dało ale nie 1200 tylko 960. Zmienna "pozycja" określa początek strony a nie jej koniec, jak jest 0 to jest początek pierwszej strony a żeby była piąta strona to 960 bo to jest początek 5 strony.

A może mógł by ktoś wgrać mój program i sprawdzić czy u niego jest to samo.
Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Do projekty należy dodać bibliotekę: PetitFS, MK_SSD1963, MK_PETIT_UTIL prosto z płyty DVD zielonej bibli.
Częstotliwość to 16Mhz a procesor to atmega644p

Chyba że macie jakiś jeszcze pomysł.
Proszę o pomoc

------------------------ [ Dodano po: 5 minutach ]

Po wgraniu na atmega32 i 16Mhz efekt jest taki sam. Już nie mam pomysłów. :( Czy możliwe jest aby mój sterownik od tft miał wadę? Nie twierdze że na pewno on, ale trzeba rozważyć wszystkie możliwości

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 17:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Ale koniec 5 bufora to 1199, czyli początek szóstego 1200. Czyli wykrywasz koniec piątej strony i potem lecisz od początku.
Wg mnie mam rację. ;)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 18:27 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Zmienna pozycja wskazuje na początek każdego z buforów a nie ich koniec.
Mogę zrobić tak jak ty proponujesz i nakręcić filmik jak to działa ale to niema sensu. Bo błąd nie tkwi w tym. Nawet po wywaleniu tego if nadal jest to samo.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 10:17 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Gdy przerobiłem program aby przewijał od tyłu to efekt jest taki sam.
Co może być za przyczyna?
Proszę o pomoc

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 10:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Poszukaj w kodzie czy zamiast SSDXBUF1 nie dałeś SSDXBUF0, na filmiku widać że na początku 2 razy odczytujesz SSDXBUF0.
Pokaż lepiej cały kod.

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 10:49 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Cztery posty wyżej jest cały program.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 11:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

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


ale

spróbuj może zmienić adres bufora, przesuń o jeden tak aby SSDXBUF0 nie było 0
Może to 0 w funkcji wyliczającej adres robi bałagan.


Nie mając pełnego kodu trudno jest zgadywać co robią funkcje.
np:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tutaj domyślam się że frame_ptr to zmienna globalna z której korzysta funkcja tft_bitmap_from_file, a dlaczego nie podałeś frame_ptr jako parametru a podałeś jako zmienną globalną?

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 11:57 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

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

Tych plików ja nie mogę udostępnić ponieważ są to gotowce z płyty Pana Mirka. Które kupiłem z zieloną biblią. Ich nie można udostępniać.
Co do adresu bufora to próbowałem nawet od tyłu 241-- i gdy weszło 240 to już przeskakuje na pierwszą stronę bez przewijania.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 12:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

OK. Akurat na zieloną czekam, w piątek zamówiłem :)

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 12:06 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3229
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Janadamis napisał(a):
Tych plików ja nie mogę udostępnić ponieważ są to gotowce z płyty Pana Mirka. Które kupiłem z zieloną biblią. Ich nie można udostępniać.


Dokładnie tak. Tylko własne pliki bibliotek lub zmodyfikowane pliki Main.

_________________
http://www.jaglarz.info



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: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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