Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[atmega128][c] LCD po I2C (PCA9555) - brak komunikacji

wojciechin 19 Wrz 2015 19:26 1083 11
  • #1 19 Wrz 2015 19:26
    wojciechin
    Poziom 9  

    Witam.
    Ostatnio próbowałem wysterować LCD po i2c poprzez ekspander PCA9555D. Niestety w żaden sposób nie mogę uruchomić. W ten sposób wygląda mój kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Problem wygląda tak, że wyświetlacz wogóle nie przechodzi inicjalizacji.
    Proszę o pomoc.

    0 11
  • #2 19 Wrz 2015 20:53
    mi14chal
    Poziom 28  

    Czemu w pętli while cały czas wywołujesz funkcję lcd_init?

    0
  • #3 20 Wrz 2015 09:01
    wojciechin
    Poziom 9  

    Ponieważ używam maszyny stanów którą trzeba cyklicznie wywoływać. Zobacz że nie używam _delay_ms tylko sprawdzam timer_p1 który zmniejszany jest w przerwaniu o 1. W większości case mam if(!timer_p1) więc jeżeli ma on większą wartość niż 0 to funkcja jest opuszczana.

    0
  • #5 20 Wrz 2015 14:45
    wojciechin
    Poziom 9  

    Mam gotową płytkę z PCA i podpięte do wyświetlacza. Niestety adresu nie jestem na 100% pewien wiem tylko że u znajomego przy tym adresie działało. Szukałem w dokumentacji ale nie rozumiem zawartych tam danych. Wygląda to tak: [atmega128][c] LCD po I2C (PCA9555) - brak komunikacji

    Prosze o wytłumaczenie jak to odczytywać.

    Dodano po 27 [minuty]:

    Już rozumiem o co chodzi. Wartość pinów to A0=1 A1=0 A2=0 więc adres powinien wynosić 0x42 ale po tej zmianie błąd nadal występuje coś jeszcze mam źle.

    0
  • #6 20 Wrz 2015 16:06
    piotrva
    Moderator na urlopie...

    Twój kod ciężko się analizuje, nie masz żadnych komentarzy, w dodatku ciągle wysyłasz magic bytes (wartości zapisane heksadecymalnie, których bez noty katalogowej nie rozumie chyba nikt).

    Ja odpadam w tych zawodach:D

    Rozpisz te wartości, poza tym pokaż schemat tego układu.

    I sprawdź też najczęściej popełniane błędy w przypadku tego typu ekspanderów:
    http://mikrokontrolery.blogspot.com/2011/04/A...-HD44780-na-dwoch-pinach-I2C-TWI-PCF8574.html

    0
  • #7 20 Wrz 2015 18:44
    wojciechin
    Poziom 9  

    Oto skomentowany kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Przeczytałem o tych błędach ale żaden z nich u mnie raczej nie występuje.

    0
  • #8 20 Wrz 2015 22:10
    uzi18
    Poziom 23  

    OK wiec adres 0x21 jest poprawny.

    Zacznij od sprawdzania fragmentow, np. wysylij tylko 0xff na wyjscia pca i sprawdz miernikiem czy dochodzi.
    Podlacz sobie jakas diode do mikrokontrolera i mrugaj w zaleznosci od aktualnego stanu.
    Bedziesz wiedzial czy kod wykonuje sie poprawnie i gdzies nie zapetla.

    te timery p1 i p2 powinny byc chyba volatile?

    0
  • #9 21 Wrz 2015 21:02
    wojciechin
    Poziom 9  

    Kod w żadnym miejscu się nie zapętla, a wyjścia pca są dobrze wystawiane. Wynika że muszę mieć źle napisany kod do inicjalizacji lcd.

    0
  • #11 22 Wrz 2015 16:40
    wojciechin
    Poziom 9  

    Trudno będzie o to bo dostałem gotową płytke a te ścieżki pokręcone troche ale postaram się coś wykombinować.

    0