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



Teraz jest 13 lip 2025, o 19:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 1 maja 2025, o 19:04 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 374
Pomógł: 0

Dzień dobry.

Proszę o pomoc.

Temat może dla wielu banalny, ale nie mogę sobie poradzić z uruchomieniem wyświetlacza lcd 4x20 (taki akurat mam) po magistrali I2C.
Pop prostu nigdy wcześniej nie używałem tej metody i postanowiłem zgłębić ten rodzaj obsługi. A żeby się nie rozpisywać, to podaję
info, jak na tą chwilę to wygląda.

1. Zestaw atb (starsza wersja).
2. Atmega32 z kwarcem 20MHz.
3. Dwie biblioteki zakupione w Atnelu (MK_LCD i MK_I2C).
4. Wyświetlacz lcd 4x20 na sterowniku HD44780.
5. Konwerter na układzie PCF8574T zakupiony na Alle.... Konwerter na małej prostokątnej płytce ze zworką do LED i 3 punktami do
ustawienia adresu. Pewnie wiecie, o którym piszę. Pełno ich na aukcjach. Napisałem krótki program, gdzie dodałem obsługę przerwań.
W pętli na ten moment jest tylko kod do migania diodą w przerwaniu co 1s w celu kontroli, czy procek się nie zawiesza.

Do projektu dołączone w/w biblioteki Mirka.

Obejrzałem poradniki do tych bibliotek, ale nie mogę nic zrobić. Nie czaję bazy... Wcześniej zaimportowałem zakupione biblioteki wraz
z programami Mirka, ale nic mi nie działało. Programy się kompilowały bez błędów, ale na wyświetlaczu tylko 2 rzędy prostokątów.

Postanowiłem napisać własny, krótki do wyświetlenia czego kolwiek. Mam tylko kwadraty. Dwa rzędy na 4 linijkach.

W pliku mk_lcd44708.h ustawiona 1 w #define USE_I2C. W pliku mk_i2c.h ustawione #define I2C_MODE 0 czyli chyba OK.

Konwerter podpięty do PC0 i PC1 Atmegi. Prześledziłem pcb konwertera, które piny PCF-a idą do listwy i ustawiłem numerację pinów
w pliku do lcd. W kablologii i konfiguracji pinów nie ma błędów.

Czego nie wiem:

Na aukcjach ze sprzedaży najczęściej pojawia się, że adres dla konwertera jest Ox27
Tak wpisałem w mk_lcd44780.h

// Adres EXPANDERA
//#define PCF8574_LCD_ADDR 0x70 // PCF8574A gdy A0, A1 i A2 --> GND
#define PCF8574_LCD_ADDR 0x27 // PCF8574 gdy A0, A1 i A2 --> GND /////// 0x40

Ale nie wiem, czy literka na końcu T to to samo, co scalak z literką A, czy bez A (PCF)

Nie wiem, czy mam zlutować zworki dla Ox27 (są czyste) Gdzieś było napisane zlutować do vcc, ale nie wiem.

Proszę, pomóżcie, co mam dalej robić, a żeby ruszyło. Czy jest jakaś inicjalizacja I2C w main, jak np. lcd_init(); adc_init......

Czy o czymś zapomniałem ? Z góry dziękuję za chęć pomocy.

------------------------ [ Dodano po: 52 minutyach ]

Celem sprostowania.
Żeby nie było. Wiadome dla mnie jest, że program Mirka jest ok i ma działać. Na moim ekspanderze nie ruszył, a jest on niewiadomą dla mnie na ten moment. Dla tego zacząłem od prostego programu, a żeby skrócić kod i ograniczyć się do minimum w celu chociażby wyświetlenia raptem 1 znaku, czy wyczyszczeniu wyświetlacza. Dałoby mi to info, że komunikacja istnieje.
Jeszcze jeden mankament. Po resecie atmegi z przycisku na atb dioda zaczynać zmieniać stan dopiero po 5 sekundach, Co zabiera tyle czasu ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2025, o 09:19 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 374
Pomógł: 0

A więc dane dotyczące tego konkretnego ekspandera znajdują się tutaj:

https://protosupplies.com/product/lcd-i2c-interface-adapter/

Wynika z tego, że adres domyślny jest 0x27. A1 A2 A3 są podpięte pod VCC. Jest również konfiguracja pinów na pcb eksp....

Obrazek

W konfig. lcd mam ustawione tak:

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.



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



Zmieniony lcd na 2x16.

Konfig pinów:

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



W konfig I2C ma tak:


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 ] [ Zaznacz wszystko ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Efekt jest taki, że dioda miga co 1s, a na wyświetlaczu w zerowej linii kwadraty. Jak odkomentuję w pętli wyświetlanie napisu
"Test_I2C", to dioda zmienia stan wolniej.

Mam urządzenie, gdzie jest ten wyświetlacz 2x16 i dołączony do niego taki sam ekspander. Tam wyświetlanie działa, ale to
nie moje urządzenie.

Przy zastosowaniu programu z biblioteki Mirka MK_LCD i MK_I2C, ustawieniu adresu na 0x27, kwarc 20MHz nie działa wyświetlanie.

W Mirka poradnikach wszystko śmiga. O czym jeszcze zapomniałem. Gdzie robię babola ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2025, o 18:00 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 550
Pomógł: 28

Spróbuj zmienić adres na 7e bądź 4e .

------------------------ [ Dodano po: 2 minutach ]

poza tym obejrzyj poradnik Mirka o i2c skanerze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2025, o 09:43 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 374
Pomógł: 0

Dzięki tonygryps :-)

Udało mi się znaleźć odpowiedź wcześniej, ale dziękuję, że się odezwałeś. Obejrzałem lekcje o I2C z kursu i tam Mirek poruszył
temat tego pcf-a z literką T. Podał również adres. Tak, 0x4E poszło. Biblioteka działa bardzo dobrze. 800KHz pociągnęło.

Nie rozumiem, że w opisie z linku jest wyraźnie podane 0x27, jak i na niektórych aukcjach w Alle.... również, a układ nie chodzi.
Chyba że jeszcze czegoś nie wziąłem pod uwagę. Straciłem sporo czasu przez ten adres. Teraz demo z MK_LCD i MK_I2C działają.

Udało mi się nawet odpalić na Atmega 328PB. Musiałem trochę pozmieniać w pliku mk_i2c.c i poszło.

Ciekawa ta magistrala i przyda mi się szczególnie przy płytkach Arduino NANO. lcd zabierało sporo pinów, a teraz tylko 2 :-)

Trzeba będzie tylko zmienić podejście do programowania. Zauważyłem, że łatwo blokować pętlę (spowalniać) ale to następny problem do ogarnięcia.

Jeszcze raz dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2025, o 21:27 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 550
Pomógł: 28

No widzisz nie bez powodu mówiłem obejrzyj poradnik Mirka o i2c skanerze .Mirek tam porusza bardzo ważną kwestię adresów i2c 7bitoych i to tłumaczy 0x27 to 7 bitowy adres i2c i jest równo ważny z 8 bitowym 0x4e .


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2025, o 05:55 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 374
Pomógł: 0

Jeszcze raz dziękuję :-)



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

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