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



Teraz jest 11 sty 2025, o 13:58


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 11 mar 2014, o 23:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Mamy AVRka, który ma obsłużyć LCD, ale nie wiemy jaki zostanie podpięty przez użytkownika (chcemy uniknąć dwóch wersji firmware).
Opcje LCD są dwie...
1) zgodny z HD44780 sterowany poprzez expander na PCF8574T:
Obrazek
2) wyświetlacz z natywnym I2C i sterowaniem w sposób:
Kod:
void LCD_write (unsigned char Control, unsigned char Data)
{
   IdleI2C();
    StartI2C();
   IdleI2C();
   WriteI2C(0x7c);
   IdleI2C();
   WriteI2C(Control);
   IdleI2C();
   WriteI2C(Data);
   IdleI2C();
    StopI2C();

}


Załóżmy, że procesor przy inicjalizacji przeszukuje magistralę I2C w poszukiwaniu LCD (w praktyce dwa niewielkie zakresy).
I w zależności od tego w którym z dwóch zakresów znajdzie urządzenie (naszego LCD) ma inaczej go obsłużyć.
Standardowo przypisanie pinów przy ekspanderze jest podczas kompilacji...

Jak się do tego zabrać?

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 01:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2012
Posty: 238
Pomógł: 5

Raczej się to nie uda.

Bo z tego co wiem HD44780 niema komendy która zwrotnie by opisała jaki to LCD, tzn ilu wierszowy itd.

Ale więcej LCD do jednego procesora podłączyć przez taką przejściówkę już się da, trzeba praktycznie libsa od podstaw napisać - ale się da :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 09:04 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Jeżeli dobrze to odczytuję, to osobny zestaw pinów jest do obsługi I2C i bezpośredniej obsługi HD44780. Może warto puszczać jednocześnie na oba kanały nie patrząc czy na nich coś jest.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 13:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Wyświetlacz zawsze 2x16 znaków.
Jedna magistrala I2C, jednak nie wiemy czy użytkownik podepnie LCD z expanderem czy z natywną obsługą I2C.

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 13:26 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

szopler napisał(a):
Wyświetlacz zawsze 2x16 znaków.
Jedna magistrala I2C, jednak nie wiemy czy użytkownik podepnie LCD z expanderem czy z natywną obsługą I2C.


A co innego może robić natywna obsługa I2C? Chyba że kombinujesz tak żeby peryferia były PnP czyli nie wiadomo co użytkownik podepnie a jak podepnie to ma zadziałać jak sobie ów użytkownik wyobrazi, że powinno zadziałać. W takim przypadku to chyba będzie bardzo trudne/niemożliwe.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 18:50 
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

Po starcie programu wysyłasz najpierw adres PCF8574 i jak jest ACK to wiesz z czym masz do czynienia jak nie ma ACK to wysyłasz adres układu sterownika LCD i jak jest ACK to wykonujesz obsługę dla tego typu układu.

_________________
Dragonus Cracovus: Biomagia



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

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Coś robię nie tak - terminal wyświetla mi '0' i program staje z zapalonym ledem (na PB0).
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2014, o 18:44 
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

ACK to nie jest odebrany bajt tylko status transmisji, który znajduje się w rejestrze TWSR. Trzeba sobie dodać taką funkcję:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2014, o 18:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

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

_________________
Czekamy na RedBook'a!



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO