Szanowni.
Ostatnimi czasy wpadło mi w ręce rozszerzenie do płytek arduino z wyświetlaczem LCD 2x16. Zapewnia ono możliwość komunikacji w trybie 4-bit z pinem R/W podłączonym na stałe do masy. Postanowiłem go uruchomić na płytce Nucleo z procesorem STM32F103RB. Wyprowadzenia wyświetlacza połączone są następująco:
Niestety mimo usilnych starań i kilku nocy kombinowania wyświetlacz nie pracuje prawidłowo. Po wykonaniu kodu inicjującego wyświetlacz, pojawiają się na nim znaki widoczne na zdjęciu. Znaki są bardziej blade niż klasycznie wyświetlająca się pojedyncza linijka w przypadku niezainicjowanego wyświetlacza, dla tego samego ustawienia kontrastu. Sprawdziłem też czasy generowane przez funkcje DelayUs na oscyloskopie i te były prawidłowe. Sprawdziłem też sam wyświetlacz uruchamiając go na kodzie wygenerowanym na stronie z kompilatorem online Mbed OS 5:
I tu śmiga bez problemów.
Niestety na moim kodzie nie działa:
Proszę o podpowiedź gdzie popełniam błąd.

Ostatnimi czasy wpadło mi w ręce rozszerzenie do płytek arduino z wyświetlaczem LCD 2x16. Zapewnia ono możliwość komunikacji w trybie 4-bit z pinem R/W podłączonym na stałe do masy. Postanowiłem go uruchomić na płytce Nucleo z procesorem STM32F103RB. Wyprowadzenia wyświetlacza połączone są następująco:
Wyświetlacz | uC |
RS | PA9 |
E | PC7 |
DB4 | PB5 |
DB5 | PB4 |
DB6 | PB10 |
DB7 | PA8 |
Niestety mimo usilnych starań i kilku nocy kombinowania wyświetlacz nie pracuje prawidłowo. Po wykonaniu kodu inicjującego wyświetlacz, pojawiają się na nim znaki widoczne na zdjęciu. Znaki są bardziej blade niż klasycznie wyświetlająca się pojedyncza linijka w przypadku niezainicjowanego wyświetlacza, dla tego samego ustawienia kontrastu. Sprawdziłem też czasy generowane przez funkcje DelayUs na oscyloskopie i te były prawidłowe. Sprawdziłem też sam wyświetlacz uruchamiając go na kodzie wygenerowanym na stronie z kompilatorem online Mbed OS 5:
Code: c
I tu śmiga bez problemów.
Niestety na moim kodzie nie działa:
Code: c
Proszę o podpowiedź gdzie popełniam błąd.
