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



Teraz jest 27 gru 2025, o 09:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 43 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 15 lip 2015, o 19:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam!
Mam konwerter jak w tytule. Czy ktoś z Kolegów Forumowiczów korzysta z niego w swoich projektach? Jakiej biblioteki użyć do obsługi LCD przez ten konwerter? Czy obsługa LCD i RTC na jednej magistrali będzie działała prawidłowo?
Obrazek
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 19:32 
Offline
Użytkownik

Dołączył(a): 19 sty 2013
Posty: 322
Pomógł: 22

Witam

W BB w twardej oprawie masz bibliotekę do obsługi wyświetlacza po IIC. Działać będzie na pewno z RTC, od tego mają niezależne adresy

Pozdrawiam
Elektronik



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 19:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Elektronik napisał(a):
W BB w twardej oprawie masz bibliotekę do obsługi wyświetlacza po IIC.

Dziękuję. Mam niestety wydanie I z 2011r. Czy są jakieś biblioteki ogólnodostępne?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 19:52 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Jest na forum wątek jak ta biblioteka z książki powstawała, ale nie jest to 100% gotowiec.
Droga dla wytrwałych, więc linka nie podam ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2015, o 20:00 
Offline
Użytkownik

Dołączył(a): 19 sty 2013
Posty: 322
Pomógł: 22

Witam

Ale ja linka podam z wielką chęcią, w końcu to nie biblioteka z książki. A posty niezawierające żadnej pomocy powinny być usuwane moim zdanie.
http://forum.atnel.pl/topic1818.html?hilit=pcf8574

Pozdrawiam
Elektronik



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

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Elektronik napisał(a):
Ale ja linka podam z wielką chęcią, w końcu to nie biblioteka z książki. A posty niezawierające żadnej pomocy powinny być usuwane moim zdanie.

Bardzo dziękuję za pomoc!



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

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam!

Czekam na zamówioną płytkę z nowego wydania BlueBook z biblioteką do obsługi wyświetlacza LCD na magistari I2C (jako drugie urządzenie). Chcę wykorzystać takie sterowanie LCD w zegarze zestawionym na płytce uruchomieniowej ATB rev.1.03 (PCF8583). Mam w związku z tym pytania i proszę o podpowiedź:
1. Zamierzam użyć konwertera przedstawionego w pierwszym poście tego tematu, który wyprowadza sygnały SCL i SDA z LCD. Czy należy je wprost podłączyć do magistrali I2C (w zestawie ATB)?
2. Jakich zmian w programie (sprzętowa magistrala I2C) wymaga dodanie LCD. Co z adresowaniem PCF8583 i konwertera. Czy komendy do obsługi LCD trzeba zmieniać?

Mam stare wydanie BlueBook i obsługa LCD po I2C nie jest opisana. Czy Forumowicze byliby tak mili i przybliżyli mi ten temat?

Pozdrawiam serdecznie
avrfun



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2015, o 15:06 
Offline
Użytkownik

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

http://mmdolze.users.sourceforge.net/us ... h-twi.html
proszę bardzo



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2015, o 15:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

SunRiver napisał(a):
http://mmdolze.users.sourceforge.net/use-a-lcd-with-twi.html
proszę bardzo


Dziękuję.

Rozumiem, że podłączam wyjścia SDA i SCL ekspandera do równoimiennych wyprowadzeń na ATB, dołączam do programu głównego bibliotekę do obsługi LCD po I2C (BlueBook) i wszystko działa jak dotychczas tzn. PCF8583 (I2C) przekazuje dane do wyświetlenia na LCD (I2C). Czekam jeszcze na bibliotekę, więc nie wiem czy komendy do obsługi wyświetlacza są identyczne z tymi "standardowymi".



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2015, o 15:34 
Offline
Użytkownik

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

dokładnie tak obsługujesz i wysyłasz dane na port expandera poprzez I2C
w linku masz przykładowy kod i libsa wiec możesz już potestować na m8



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 wrz 2015, o 15:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

SunRiver napisał(a):
dokładnie tak obsługujesz i wysyłasz dane na port expandera poprzez I2C
w linku masz przykładowy kod i libsa wiec możesz już potestować na m8


Dziękuję bardzo.
Będę sprawdzał na żywym organizmie z biblioteką Mirka. W razie problemów będę jeszcze prosił o dalsze wskazówki.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2015, o 14:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam!
Proszę o pomoc w uruchomieniu komunikacji I2C z wyświetlaczem LCD 4x20 na ATB Rev.1.03, Atmega32.
Ekspander jak w poście 1.
Projekt to "Dawca czasu" (PCF8583).
Korzystam z bibliotek Mirka z BB2.
1. Wyświetlacz LCD działa prawidłowo (wyświetla oczekiwane dane) gdy podłączony jest "klasycznie".
2. Podmieniłem bibliotekę LCD w projekcie na tę obsługującą LCD po I2C.
3. Zmieniłem w pliku lcd.h piny ekspandera (sprawdziłem miernikiem fizyczne połączenia): D7-7, D6-6, D5-5, D4-4.
4. Zmieniłem w pliku lcd.h adres ekspandera na domyślny podany przez producenta (Botland): 0x27
5. Podłączyłem wyjścia ekspandera SCL i SCD odpowiednio do PC0 i PC1 Atmega32
6. LCD jest zainicjowany (dwa rzędy jasnych prostokątów), ale danych nie wyświetla.
7. Ponowne "przepięcie" LCD do zestawu ATB (podłączenie klasyczne) ożywia wyświetlacz.
8. Pozostałe adresy ekspandera też nie działają: 0x40, 0x70
9. Zmiana prędkości magistrali I2C nic nie zmienia.

O czym mogłem zapomnieć.

P.S. Czy ktoś z Szanownych Kolegów używa tego ekspandera z zestawem uruchomieniowym ATB?

P.S. 2 Może ten ekspander nie współpracuje z zestawem ATB? Ma swoje podciągnięcia linii SCL i SDA. Może nadaje się tylko do Arduino?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 07:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam,
Czy ktoś z Państwa używa tego ekspandera w zestawie z LCD i zestawem ATB. Przykład LCD_I2C-PCF8574 z BB2 działa prawidłowo tylko gdy LCD podpięty jest w sposób "klasyczny", a po zmianie ustawień kompilacji w lcd.h na I2C i podpięciu do SCL i SDA nic się nie wyświetla. Może trzeba zrezygnować z tego ekspandera i może szkoda czasu na próby jego uruchomienia?
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 12:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

A robiłeś już coś na I2C (TWI)? Bo na płycie do książki był błąd w bibliotece TWI. Zajrzyj na stronę Atnela:
http://www.atnel.pl/uaktualnienia-programow-do-dvd.html

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 14:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Dzięki za zainteresowanie. Poprawiłem dawno. Na magistrali I2C działa z powodzeniem zegar PCF8583. Odzew na mój post jest skąpy jakby nikt nie używał tak podłączonego LCD.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 14:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

A jaką wersję układu masz? Bo według datasheeta to układy mogę mieć adresy:
- wersja PCF857 => 0100 A2 A1 A0 ARW => 0x4x
- wersja PCF857A => 0111 A2 A1 A0 ARW => 0x7x
Zobacz jaki masz układ i jak podłączone piny A2/A1/A0 (ARW to bit zmieniający adresowanie dla zapisu/odczytu).
Jak z tak ustalonym adresem Ci nie zadziała, to zobacz czy masz odpowiedź ACK na adresowanie układu - sprawdzaj status:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak na zapis dostaniesz wartość 0x18 (przy odczycie 0x40) to jest OK, ale jak 0x20 (przy odczycie 0x48) to układ nie odpowiada na adresowanie.

--
Pozdrawiam,
Robert

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

Wartość 0x27 podawana przez Botland, to zapis 7 bitowy omijająca bit sterujący adresowaniem odczyt / zapis.
0x27 = 010 0111 a w "normalnej" wersji to 0x4E = 0100 111x.

------------------------ [ Dodano po: 7 minutach ]

Zapomniałem od zapytania o podstawowe rzeczy :( Czy na pewno masz poprawnie podpięte linie SDA/SCL i masz odpowiednie ich podciągnięcia?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 15:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

rskup napisał(a):
A jaką wersję układu masz? Bo według datasheeta to układy mogę mieć adresy:
- wersja PCF857 => 0100 A2 A1 A0 ARW => 0x4x
- wersja PCF857A => 0111 A2 A1 A0 ARW => 0x7x
Zobacz jaki masz układ i jak podłączone piny A2/A1/A0 (ARW to bit zmieniający adresowanie dla zapisu/odczytu).
Jak z tak ustalonym adresem Ci nie zadziała, to zobacz czy masz odpowiedź ACK na adresowanie układu - sprawdzaj status:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak na zapis dostaniesz wartość 0x18 (przy odczycie 0x40) to jest OK, ale jak 0x20 (przy odczycie 0x48) to układ nie odpowiada na adresowanie.

--
Pozdrawiam,
Robert

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

Wartość 0x27 podawana przez Botland, to zapis 7 bitowy omijająca bit sterujący adresowaniem odczyt / zapis.
0x27 = 010 0111 a w "normalnej" wersji to 0x4E = 0100 111x.

------------------------ [ Dodano po: 7 minutach ]

Zapomniałem od zapytania o podstawowe rzeczy :( Czy na pewno masz poprawnie podpięte linie SDA/SCL i masz odpowiednie ich podciągnięcia?


Układ to 8574T (SO16). Piny A0, A1, A1 zwarte do masy. Układ zrealizowałem na zestawie uruchomieniowym ATB v1.03, gdzie jest odpowiednie podciągnięcie I2C. Linia SCL enkodera podpięta jest do pinu PC0, a SDA do pinu PC1 uC Atmega32. Nie wiem jak przetestować proponowaną przez Ciebie odpowiedź układu na adresowanie, pomóż proszę. Zegar na I2C działa poprawnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 15:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Twój układ powinien odpowiadać na adres 0b01000000, czyli 0x40 (w notacji 7 bitowego adresu daje 0x20). Jeżeli piny A2:A0 byłyby podpięte do VCC to zgadzałoby się z podawanym przez Bootland adresem 7 bitowym 0x2F( czyli u nas 0x4E). Więc sprawdź to jeszcze raz.

Zajrzyj na początek do wątku http://forum.atnel.pl/topic13379.html. Tam kolega także miał problem z dogadaniem się z układem. Jak będziesz miał pytania to pisz.

--
Pozdrawiam,
Robert

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

Biblioteki dla TWI poprawiłeś, ale czy także te zawarte w projekcie dla LCD_I2C_PCF8574 (bo tam jest ich kopia w podkatalogu I2C_TWI)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 19:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Dziękuję bardzo. Powalczę jutro.
Pozdrawiam serdecznie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 21:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Wielkie dzięki, pomógł adres 0x4E! Pojawił się tylko mały (duży) problem, który zaburza wyświetlanie. Trzy biblioteki w projekcie do obsługi zegara i wyświetlacza LCD (po I2C) mają funkcję i2cSetBitrate i wyświetlacz z zegarem zakłócają się wzajemnie. Jak to zunifikować. Ustawienie tych samych prędkości nic nie dało. Fotka w załączeniu:

Obrazek

Proszę o pomoc
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2015, o 22:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Ale wszystkie te funkcje ustawiają tylko wartość w rejestrze TWBR. Dlatego korzystasz z niej tylko raz.

A tak na prawdę to powinieneś zrobić tylko jedną kopię bibliotek obsługi TWI (I2C).
Ta od LCD przez PCF8574 ma dodatkową funkcję
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Przejrzyj te trzy biblioteki i zrób z nich część wspólną. Pamiętaj tylko o zmianie ścieżek w includach w plikach z niej korzystających.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 lis 2015, o 16:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam!

rskup napisał(a):
Ale wszystkie te funkcje ustawiają tylko wartość w rejestrze TWBR. Dlatego korzystasz z niej tylko raz.

A tak na prawdę to powinieneś zrobić tylko jedną kopię bibliotek obsługi TWI (I2C).
Ta od LCD przez PCF8574 ma dodatkową funkcję
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Przejrzyj te trzy biblioteki i zrób z nich część wspólną. Pamiętaj tylko o zmianie ścieżek w includach w plikach z niej korzystających.

--
Pozdrawiam,
Robert


LCD po I2C podłączone. Nie wszystkie moje projekty działają jednak prawidłowo i to mnie ciekawi. Nie działa np. projekt, w którym zaimplementowałem obsługę warstw z GB (warstwy.c, warstwy.h) i używam bibliotek buf_lcd.c i buf_lcd.h. Obsługa warstw działa w mega zwolnionym tempie, zegar jakby miał czkawkę (przyspiesza i zwalnia), a synchronizacja z GPS odbywa się w dowolnym czasie (co kilka sekund). Po podłączeniu LCD "klasycznie" wszystko działa prawidłowo.

Moje pytanie jest takie: czy na linii I2C należy w jakiś sposób różnicować priorytety urządzeń (master, slave, PCF8574, PCF8583)? Wpływ zamiany bibliotek LCD (klasycznie) i LCD(I2C) na funkcjonowanie programu bardzo mnie zastanawia.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 lis 2015, o 18:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Gdy podłączasz LCD po I2C to masz znacznie wolniejszą komunikację niż jak masz podłączone LCD poprzez 8 bitowy interface. Jak jeszcze chcesz często odświeżać informacje na LCD, to już może to być wąskim gardłem. Więc jak tak robisz i masz jeszcze inne urządzenia na tym interface I2C do obsługi, to już możesz nie uzyskiwać zadowalających cię wyników.

Teoretycznie większość urządzeń na szynie I2C pracuje do 400kHz. Dlatego możesz przetestować zwiększenie taktowania szyny do takiej wartości, bo chyba używasz 100kHz.

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 7 minutach ]

Twój procesor jest u Ciebie masterem, więc napisany przez Ciebie program (algorytm w nim) decyduje o priorytetach.
No chyba, że masz wszystko liniowo, czyli po kolei - LCD, zegar, GPS bez dodania jakiej większej logiki. Bo jak tak to normalne że jedna funkcja musi czekać na zakończenie drugiej a ta może długo "okupować" czas procesora, bo nie ma zaimplementowanego współdzielenie czasu.
Jednak kilkusekundowe zawieszenia to powinny się zdarzać tylko jak coś animujesz na LCD, bo zwykłe wyświetlenie warstwy nie trwa tak długo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 lis 2015, o 19:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

rskup napisał(a):
Gdy podłączasz LCD po I2C to masz znacznie wolniejszą komunikację niż jak masz podłączone LCD poprzez 8 bitowy interface. Jak jeszcze chcesz często odświeżać informacje na LCD, to już może to być wąskim gardłem. Więc jak tak robisz i masz jeszcze inne urządzenia na tym interface I2C do obsługi, to już możesz nie uzyskiwać zadowalających cię wyników


Dziękuję za odpowiedź - uspokoiła mnie. Projekt mój jest bardzo "przeładowany": zegar, czujniki temperatury, warstwy (w tym animowany napis), WS2812, synchronizacja, ir i chociaż zrealizowany na eventach to najpewniej nie wydala przy LCD na szynie I2C (nawet 400kHz). Prosty zegar z synchronizacją działa ok przy LCD na I2C.

Dziękuję jeszcze raz i pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2015, o 08:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam!

Po zrozumieniu adresowania 7- i 8-bitowego dla PCF8574 i uruchomieniu komunikacji z LCD po I2C pojawiła się chęć sterowania dwoma wyświetlaczami LCD1 i LCD2 (2xPCF8574). Jak to się realizuje w praktyce? Adres EXP1 ustalamy w bibliotece LCD, ale co z adresem EXP2 i jak programowo zrealizować wysyłanie jednych danych do LCD1 (EXP1), a innych do LCD2 (EXP2)?

Pozdrawiam

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




Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2015, o 13:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Z tego co pamiętam, to funkcje komunikacyjne TWI (I2C) mają przekazywany parametr SLA (slave address). Więc nie powinno być problemu w podawaniu raz jednego raz drugiego adresu urządzenia (LCD).
Na płytkach musisz tylko ustawić odpowiednio zwarcie na padach A2:A0, byś miał różne adresy.

--
Pozdrawiam,
Robert



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

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

rskup napisał(a):
Z tego co pamiętam, to funkcje komunikacyjne TWI (I2C) mają przekazywany parametr SLA (slave address). Więc nie powinno być problemu w podawaniu raz jednego raz drugiego adresu urządzenia (LCD).
Na płytkach musisz tylko ustawić odpowiednio zwarcie na padach A2:A0, byś miał różne adresy.

Dzięki. Rozumiem, że trzeba przyznawać odmienne adresy wszystkim urządzeniom na magistrali I2C. U mnie jest tak:

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

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

Gdzie zdefiniować adres drugiego wyświetlacza LCD?
Jak określić w programie głównym, którego LCD (1 czy 2) dotyczy rozkaz np. lcd_locate()?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2015, o 18:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Co do define, to robisz:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i masz zdefiniowane dwa adresy. Tylko teraz należy tak wywoływać biblioteki by były odpowiednio wybierane adresy.
A to się wiąże niestety z tym ze musisz trochę poprzerabiać te biblioteki i ich wywołania. Bo większość jest pisana tak by był obsługiwany tylko jeden taki sam element - dla lcd_locate() nie ma zaimplementowanego mechanizmu wielowyświetlaczowego.
Jak to masz dokładnie zrobić to już Ty musisz wymyśleć w zależności od tego jak korzystasz z bibliotek i co według Ciebie jest najlepsze - jak to Mirek powtarza
Cytuj:
wszystko można zrobić na 1000 sposobów
i większość z implementacji jest równie dobra.
Możesz na przykład zrobić zmienną globalna i przez korzystaniem z funkcji wysokopoziomowych zmieniać w niej numer lcd. Wtedy tylko trzeba zmodyfikować niskopoziomowe funkcje zmieniając w nich wybierany adres urządzenia. Ale jak masz jakieś buforowania dla lcd, pamiętanie stanów, x/y, itp to musisz także te zmienne zduplikować. Czyli zamiast np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
będziesz mógł od razu zrobić uniwersalnie dla dowolniej liczby wyświetlaczy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
gdzie przez LCD_COUNT definiujesz ile masz tych wyświetlaczy :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dlatego jak chcesz mieć uniwersalnie to może lepiej od razu wprowadzić do funkcji bibliotecznych dodatkowy parametr nr_lcd i na podstawie niego zmieniać operowanie na zmiennych.
Po to Mirek dał źródła bibliotek byś w takich wypadkach mógł je sobie zmodyfikować do własnych potrzeb.

W poradniki o OLEDach Mirek pisze bibliotekę dla 2 LCD. Ale chyba to było tylko w wersji SPI. Ale zawsze możesz obejrzeć. Na pewno nic nie stracisz a pewnie dużo zyskasz :)

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2015, o 18:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Bardzo dziękuję za wyczerpującą odpowiedź. Wszystko stało się jasne! W najbliższym czasie zmierzę się z tym problemem.

Pozdrawiam serdecznie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2017, o 22:18 
Offline
Nowy

Dołączył(a): 07 lut 2016
Posty: 13
Pomógł: 0

Witam,

Mam pytanie : Uzupełnione o obsługę I2C biblioteki hd44780 Mirka ( przykład LCD_I2C_PCF8574 ) zawierają informację :

// - Dowolne przypisanie każdego sygnału sterującego do dowolnego pinu mikrokontrolera

Jak to jest właściwie z dowolnymi przypisaniami pinów ?

Jestem początkujący...
Akurat przerabiałem ten przykład no i wnioskuję, że expander można podłączać tylko do
pinów SDA i SCL w mikrokontrolerze. Czyli jest to rozwiązanie typowo sprzętowe i tylko na
Atmegi 8,16,32. Mam rację ?

PZDR



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: 43 ]  Przejdź na stronę 1, 2  Następna strona

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