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



Teraz jest 27 sty 2025, o 00:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 1 lip 2014, o 14:11 
Offline
Nowy

Dołączył(a): 19 sty 2014
Posty: 8
Pomógł: 0

Witam,
otóż męczę się już kilka może trochę więcej godzin:) godzin z wyświetlaczem o nazwie: WO2002A-TFH-AT.
Link:
http://www.unisystem.pl/download/produk ... TFH-AT.pdf
Generalnie używa on interfejsu I2C, a kontroler tego wyświetlacza to ST7036
Link:
http://www.lcd-module.de/eng/pdf/zubehoer/st7036.pdf

Chciałem utworzyć prostą komunikację i wyświetlić cokolwiek na nim, w związku z tym popełniłem następujący kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Przed pętla while jest inicjalizacja wyświetlacza, która została wykonana w oparciu o stronę 12 z 1 linku.
W while'u zamierzałem wyświetlać już napis... no ale niestety.
Za jakieś wskazówki byłbym wdzięczny.
Pozdrawiam
player92

P.S.
Zapomniałem napisać, używam ATmegi 8 , wszystko jest podłączone zgodnie ze schematem na 5V 10 str. 1 link.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lip 2014, o 15:41 
Offline
Użytkownik
Avatar użytkownika

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

Pomógł: 31

Czemu nie używasz sprzętowego interfejsu TWI?

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lip 2014, o 18:38 
Offline
Nowy

Dołączył(a): 19 sty 2014
Posty: 8
Pomógł: 0

W sumie nie wiem czemu czytałem w książce koloru Blue i zacząłem pisać wzorując się na tym co tam jest jeśli chodzi o programową komunikację i2c. Tak wyszło, spróbuje zrobić to na sprzętowym... I jak coś będę miał to się pochwalę:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lip 2014, o 19:25 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

1. Użyj zewnętrznego podciągania.
2. Piny przełączaj raz w stan wyjście 0 lub wejście pływające. Czyli np. PORTB.0 = 0 i zmieniasz tylko DDRB.0
3. Czekanie na ACK i tykanie zegarem to dziwny pomysł. ACK powinien być zwrócony, że jest lub nie podczas ostatniego cyklu zegara.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lip 2014, o 21:04 
Offline
Nowy

Dołączył(a): 19 sty 2014
Posty: 8
Pomógł: 0

Dzięki za zainteresowanie:)
Otóż zgodnie z zaleceniami:
1. Podłączyłem rezystory podciągające 10k do 5V pod SCL i SDA
2. Wyrzuciłem z funkcji i2cPutchar linijkę:
106. I2C_SDL_HI; //podciągam wewnętrznie do +
Teraz mam zmianę tylko rejetru DDRB.0
3. No i tu muszę przyznać mam problem gdyż dokładnie nie wiem jak to jest z tym ACK. Co gdy ACK nie jest zwrócony tzn. jest na nim cały czas stan H? Co wtedy? Możemy wysyłać kolejne byty czy trzeba czekać?


Mam jeszcze pytanie w nawiązaniu do funkcji z Blue book. Jest tam funkcja: i2cPutbyte zwraca ona ACK jako rezultat. I tu nie bardzo rozumiem gdy jest pod zmienną b 1 to wtedy zwracane jest 0, jeśli natomiast b==0 to wtedy funkcja zwraca 1. No i moje pytanie brzmi po co takie coś(na pewno po coś mądrego:)), co dalej z tą informacją o ACK?

pozdrawiam
player92



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lip 2014, o 22:07 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Co do return(b==0); to ta funkcja zwraca 1-true jak otrzymano sygnał ACK, a 0-false jako go nie było. Możesz brać to pod uwagę ale nie musisz. Daje to jednak informację, że jest ta podstawowa komunikacja z układem i jak tego nie ma to trzeba się zatrzymać i sprawdzić co jest nie tak. Skoro masz książkę Mirka to wykorzystaj te gotowce i na początek sprawdź czy wysłanie adresu zwraca ACK. Możesz użyć LED do sygnalizacji. Kolejny krok to inicjalizacja.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lip 2014, o 23:00 
Offline
Nowy

Dołączył(a): 19 sty 2014
Posty: 8
Pomógł: 0

Skorzystałem ze sprzętowego TWI, na tym moim programowym i Mirkowym coś mi nie chciało wystartować. Nie ważne w każdym razie wrzuciłem sobie diodę:

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


i okazało się, że ACK jest(tak mi się wydaje) bo diodka gasła mi(na początku programu zapalona) tzn. wychodzi z pętli while i dochodzi do:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz muszę jakoś przebrnąć przez inicjalizaję.
Dzięki chłopaki za cenne rady:D przydają się niezmiernie

PS
Pytanie jak to jest z częstotliwością SCL w ATmedze można ją sobie zmniejszyć? Po prostu zmienić wartości w rejestrach TWBR oraz TWPS? Czy to warto zmieniać skoro mam potwierdzenie ACK? W datashhecie ST7036 taka inicjalizacja jaką wykonuje jest na 380kHz, natomiast w datasheecie wyświetlacza nie wzmianki o żadnych częstotliwościach.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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