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



Teraz jest 24 lut 2025, o 19:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 19 mar 2015, o 17:30 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Witam,

Od kilku dni męczę się z obsługą HD44780 4x20 za pomocą ATMEGI-8. Korzystam z AVR Toolchain w ECLIPSE, próbowałem wszystko skonfigurować za pomocą bibliotek zarówno Pana Mirka jak i Radosława Kwiecienia jednak ciągle wszystko wygląda identycznie - święcą się dwa rzędy kwadratów i to by było na tyle :| . Za pomocą mkAVR Calculator ustawiłem wewnętrzny oscylator 8MHz jako źródło taktowania. W ECLIPSE w zakładce Target Hardware również wybrałem 8MHz. Dodatkowo programowo dodałem diodę LED aby sprawdzić czy rzeczywiście mruga w odstępach około 1 sekundy i wydaje się działać prawidłowo. Wyświetlacz z jakiego korzystam na odwrocie posiada napis "J204A", jest nowy więc ufam że powinien działać. Przewertowałem kilka/kilkanaście tematów na tym forum w których osoby miały podobne problemy do mojego. Starałem się zastosować do wielu porad, jednak nie znalazłem rozwiązania problemu.

Poniżej załączam fragmenty kodu plików hd44780.h, hd44780.c i main.c
Parametry pracy sterownika:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ustawienia sprzętowe podłączeń sterownika z mikrokontrolerem:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


Schemat połączeń i zdjęcie układu:

ObrazekObrazek


Pozdrawiam, z góry dziękuję za pomoc.



Ostatnio edytowano 19 mar 2015, o 18:23 przez 0w3n10, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 17:55 
Offline
Użytkownik

Dołączył(a): 05 sie 2014
Posty: 69
Lokalizacja: Kraków
Pomógł: 11

Pierwsze co widzę. Odłącz jak najszybciej diodę. Podłącz przez rezystor 4,7K, inaczej może Ci się spalić podświetlanie.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 17:59 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Diodę póki co wyrzuciłem całkowicie. Nie jest mi ona potrzebna, jedynie chciałem sprawdzić czy program gdzieś nie utknął.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 18:03 
Offline
Użytkownik

Dołączył(a): 05 sie 2014
Posty: 69
Lokalizacja: Kraków
Pomógł: 11

Nie wiem czy zrozumiałeś, chodziło mi o LEDę która znajduję się w wyświetlaczu.
Druga sprawa diodę przy procesorze odwróć, bo jest zaporowo.
Trzecie dlaczego RW jest podłączone do GND?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 18:09 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8608
Pomógł: 337

Tym razem przeniosę następnym razem usunę ... Co ma to wspólnego z ARM ??
ponadto proszę wkleić obrazek zgodnie z zasadami na forum : topic44.html

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 18:18 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Podczas podłączania wzorowałem się na blogu Pana Mirka -> http://mirekk36.blogspot.com/2012/04/lc ... aczac.html
Anodę i katodę podpiąłem w identyczny sposób jak na filmiku zamieszczonym na wyżej wymienionym wpisie na blogu - dlatego nie ma rezystora 4.7k.

RW jest podłączone do GND ponieważ w jednym z tematów na tym forum ktoś zasugerował, że niektóre wyświetlacze nie chcą współpracować jeśli RW jest podłączone do procesora a nie do GND. Próbowałem podłączać na oba sposoby, ale bez żadnych efektów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 18:48 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 47
Pomógł: 1

Hej. Mogę się mylić, ale wydaje mi się, że problemem jest kontrast. Spróbuj trzeci pin podłączyć przez rezystor do masy (u mnie 2.2K sprawdza się idealnie).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 18:58 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Wydaje mi się że kontrast jest w porządku. Mam rezystor potencjometryczny 10k, który wykorzystuje do jego regulacji. Widzę dwie linie białych kwadratów przedzielonych pustymi wierszami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 20:19 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Sprawdziłem jeszcze raz (chyba po raz setny ;() wszystkie połączenia pomiędzy wyświetlaczem a prockiem i wszystko wydaje się w porządku. Brak jakichkolwiek zwarć, wszystkie połączenia aktywne. Niestety nie mam za bardzo możliwości aby sprawdzić czy wyświetlacz jest sprawny (jest nowy, więc przyjmuję że tak), więc jutro zajmę się odpowiednia filtracja zasilania, którą i tak miałem w planach, ale pochlonął mnie od kilku dni ten wyświetlacz, na którym chciałem wyświetlić cokolwiek. Nadal jestem jednak otwarty na inne sugestie ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2015, o 22:40 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 47
Pomógł: 1

Spróbuj dodać _delay_ms(100); po lcd_init(); i lcd_cls();


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 08:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 lut 2014
Posty: 68
Lokalizacja: Częstochowa
Pomógł: 3

Czasami najlepiej jest złożyć układ od początku :) Podsyłam zmodyfikowane fragmenty kodu i schemat podłączenia (pin RW podłączony do procka), spróbuj, bo może akurat zadziała (znaczy u mnie działa).

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


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


Jeszcze schemat podłączenia:

Obrazek


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 12:51 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Zastosowałem się do porady Anysiu68 i wstawiłem opóźnienie po inicjalizacji i po czyszczeniu wyświetlacza i o dziwo... zadziałało :D. W końcu wyświetla się na ekranie cokolwiek, problem jednak polega na tym, że mam wyczyszczone tak jakby 2 linie po 8 znaków. Reszta to białe kwadraty. Zadeklarowałem 29 liczbowy ciąg liter, który chciałem wyświetlić, efekt jest taki jak na obrazku dodanym poniżej. Jak widać wyświetla tylko 8 znaków, potem 12 pól kwadratów i w drugiej linii już nie ma niczego.
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 17:05 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 47
Pomógł: 1

Spróbuj jeszcze wysłać tekst w taki sposób jak napisał to domcio512 czyli lcd_str("TEST_OK"); (bez tablic) albo wyświetlaj jedną literkę co sekundę, wtedy zobaczysz co się dzieje. Sprawdź jeszcze jak to wygląda jeśli wyświetlasz tekst w różnych liniach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 17:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 lut 2014
Posty: 68
Lokalizacja: Częstochowa
Pomógł: 3

Ta instrukcja lcd_cls(); nie jest potrzebna, bo sama funkcja lcd_init(); czyści wyświetlacz :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 17:38 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

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

"TEST_OK1234567890XY TEST_OK1234567890XY TEST_OK1234567890XYZ"
W pierwszej linii pojawia się pierwsze 8 znaków tekstu które zaznaczyłem na fioletowo, a w drugiej linii pierwsze 8 znaków tekstu które zaznaczyłem na niebiesko. Reszta to oczywiście białe kwadraciki tak jak wcześniej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 18:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2014
Posty: 447
Lokalizacja: DKL
Pomógł: 53

Wg. mnie masz teraz problem z adresami DDRAM. W bibliotece z BB masz w pliku nagłówkowym biblioteki sekcję "definicje adresów w DDRAM" oraz w książce opisane jak do tego zagadnienia podejść. Myślę że jak dobierzesz odpowiednie adresy (które zresztą powinny być opisane w Data Sheet twojego LCD-ka), to nagle wszystko zacznie elegancko działać :)

_________________
Migracja z punktu B do punktu C
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 18:09 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8608
Pomógł: 337

albo masz coś z połączeniami , albo uszkodziłeś wyświetlacz ...
po init wyświetlacz powinieneś mieć czysty bez żadnych kwadratów
i tylko to co ma się na nim wyświetlić, problemem możę być twoja stykówka
a dokładnie to jakość połączeń na stykówce

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 18:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 lut 2014
Posty: 68
Lokalizacja: Częstochowa
Pomógł: 3

Z tego co znalazłem to adresy pierwszych znaków są takie:
Obrazek

1 linia : 0x00
2 linia : 0x40
3 linia : 0x14
4 linia : 0x54


Musisz w pliku 'lcd44780.h' zmienić adresy DDRAM (109 linijka kodu), nie jestem pewny tych adresów na 100%, ale spróbuj, może się udać ;) (Zgadzałoby się bo w bibliotece Mirka pierwsze dwa adresy są 0x00, 0x40, czyli takie jak powinny, więc dlatego pierwsze 2 linie działają)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2015, o 19:20 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Zmieniłem adresy na takie jak zasugerował domcio512, ale niestety nadal wszystko wygląda tak samo.

EDIT:
Udało się go odpalić na bibliotekach Radzia, ale problem jest identyczny.
EDIT2:
Wyświetlacz niestety wygląda na uszkodzony, w najbliższych dniach postaram się jednak sprawdzić zarówno wyświetlacz jak i program na innym wyświetlaczu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 16:03 
Offline
Nowy

Dołączył(a): 02 mar 2015
Posty: 13
Pomógł: 0

Witam ponownie,

Sprawdziłem wyświetlacz, niestety okazał się uszkodzony. Na nowym wszystko działa prawidłowo. Dziękuję wszystkim za pomoc.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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