logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AtMega LCD HD44780/Graficzny + Expander

maximus22_kr 04 Wrz 2011 19:32 2127 3
REKLAMA
  • #1 9895068
    maximus22_kr
    Poziom 18  
    Witam
    Chciałbym bardziej z chęci poeksperymentowania ( no i bardziej efektywnego wykorzystania pinów procesora ) wykorzystać expander do podłączenia LCD do procesora.

    Chciałbym zapytać, czy:
    1. można podłączyć wyświetlacz graficzny przez expander ( alfanumeryczny niektórzy polecają przez expander ) ?
    2. czy podobnie jak w przypadku alfanumerycznego wyświetlacza w graficzny również wypada podłączyć pin R/W do GND ?
    3. jak wygląda konfiguracja, bo standardowo to mamy
    CONFIG LCDPIN = PIN , DB4 = pin , DB5 = pin , DB6 = pin , DB7 = pin , E = pin , RS = pin
    czy jest tak, że deklarujemy zmienne typu BIT, np.
    Bit_db4, Bit_db5, Bit_db6 , Bit_db7, Bit_E , Bit_RS
    i w przepełnieniu Timer'a wywołuje się program z zapisem do expandera
  • REKLAMA
  • #2 9896615
    nsvinc
    Poziom 35  
    Raczysz żartować...

    Bascom nie umożliwia obsługi wyswietlacza przez układ pośredni jak np. expander, więc całą obsługę będziesz musiał pisać sam, na piechotę. Nie będzie config lcdpin ani innych tego typu wypaczonych uproszczeń, tylko własne procedury które skonfigurują piny procesora a następnie będą w odpowiednim formacie popychać dane do ekspandera.

    Nie wiemy jaki chcesz zastosować ekspander. Może to być gotowy scalak na SPI lub I2C (np. MCP23x16,MCP23x17,MCP23x08), zatrzask, bufor lub SIPO. Wszystkie te rozwiązania dają "ekspansję" ;] Kazde rozwiązanie wymaga zdecydowanie innego kodu karmiącego wyświetlacz danymi.
  • REKLAMA
  • #3 9898215
    maximus22_kr
    Poziom 18  
    takie propozycje znalazłem na tym forum ( w jednej, czy dwóch dyskusjach ) przy okazji szukania informacji o ekspanderach I2C. Tak więc nie jest to mój wymysł.

    Zapewne w C lub asemblerze da się.
  • #4 9898543
    nsvinc
    Poziom 35  
    maximus22_kr napisał:
    Zapewne w C lub asemblerze da się

    Zapewne. Tak samo jak w bascomie. Ale wymaga programowania, a nie przepisywania kodu z helpa lub internetu.
    Bascom natywnie nie obsłuży ci żadnego wyświetlacza przez ekspander. Dlaczego? Kinderkonstruktor nawet nie będzie w stanie prawidłowo zaprojektować układu, a konstruktor po prostu podłączy i napisze, niezależnie od tego, czy pisze w bascomie, czy C.

    Czy ja gdziekolwiek powiedziałem, że się "nie da"? Ja tylko stwierdziłem, że nie ma magicznego rozkazu w bascomie który zrobi wszystko za ciebie (jak config lcdpin, czy lcd), jeśli masz zamiar użyć ekspandera.

    Kolejna kwestia, to graficzny wyświetlacz podłączony przez ekspander na I2C. To jest pomyłka. Z biednych 400kbps dostępnej przepustowosci ucinasz conajmniej 1/3 na samo gadanie z ekspanderem. Co daje ci ok. 266kbps rzeczywistego odświeżania wyjść ekspandera, czyli ok. 33kBps. Czyli napierniczając w trybie ciągłym biedny ekspander, jesteś w stanie 33 tysiące razy na sekundę wystawić wyświetlaczowi nowy bajt (pomijam już tutaj zależności czasowe między CSami, STROBE'ami czy innymi dziwnymi sygnałami wymaganymi przez wyświetlacz). Z tych 33kBps ucinasz około połowę na rozkazy, które musisz wysłać do wyświetlacza zanim wyślesz właściwe pixle. Zostaje ci troszę ponad 16kBps przepustowości łącza procek<->piksle.
    Nie zmusisz atmegi (i do tego jeszcze oprogramowanej w bascomie) do ciągłego katowania I2C z maksymalną przepustowością, więc odejmij od obliczonych 16kBps dwie trzecie. Zostaje ci około 5kBps właściwych pixli którymi będziesz odświeżał wyświetlacz. Kiepściutko...

    A powyższy wykład tylko po to, abyś może po prostu przekonał się do SPI, gdzie spokojnie osiągniesz przepustowość rzędu 30kBps między prockiem a pixlami na wyświetlaczu...
REKLAMA