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

Jak naprawić niskie napięcie na wejściu PCF8574 przy użyciu krańcówki?

kubajed 11 Kwi 2019 17:40 849 3
REKLAMA
  • #1 17899907
    kubajed
    Poziom 10  
    Witam
    Mam układ, którego fragment wygląda w taki sposób, że do arduino mam podłączone PCF8574 przez A4 i A5 (i2c), a do jednego z pinów pcf jest podłączona krańcówka, która zwiera wejście do masy. Pin ten jest podciągnięty rezystorem do plusa zasilania. Problem wygląda tak, że przy spuszczaniu krańcówki (czyli zmiana sygnału z 0 na 5 V) na wejściu układu pojawia się 0,05 mV, a nie 5 V. Wygląda to tak, jakby układ sam podciągał mi ten pin do masy. Czy ktoś spotkał się z tym problemem? Dodam, że co drugie uruchomienie układu jest dobrze.

    Tu jak jest podłączony układ:

    Jak naprawić niskie napięcie na wejściu PCF8574 przy użyciu krańcówki?
  • REKLAMA
  • #2 17899980
    maciej_333
    Poziom 38  
    PCF8574 to bardzo prosty układ. Z jego dokumentacji wynikałoby, że po załączeniu zasilania wszystkie linie zostaną ustawione na poziom wysoki. Linie te są quasi-dwukierunkowe. Jeżeli np. P0 ma być wejściem, zaś P1 wyjściem, to w trakcie zmiany stanu P1 należy przesłać zawsze na P0 1. Zatem problem jest związany z błędem w programie, lub złym użyciem gotowej biblioteki.
  • REKLAMA
  • #3 17900020
    kubajed
    Poziom 10  
    maciej_333 napisał:
    Jeżeli np. P0 ma być wejściem, zaś P1 wyjściem, to w trakcie zmiany stanu P1 należy przesłać zawsze na P0 1

    Możesz to rozwinąć? Co rozumiesz przez przesyłanie na wejście jedynki?
  • #4 17900083
    maciej_333
    Poziom 38  
    Linie te są dwukierunkowe. Nie można ich traktować jako wejście, lub wyjście tak jak to jest w AVR (rejestr DDRx). Linie te są podobnym rozwiązaniem, jakie było w 8051. Tzn. jeżeli np. z linii P0 chciałbyś sterować diodę LED, to należałoby ją dołączyć katodą do linii P0, zaś anodą przez rezystor do +5 V. Następnie jeśli należy zapalić tą diodę, to należy ustawić poziom niski na P0. Jednak P1 musi mieć stale poziom wysoki, by nie doszło do zwarcia tej linii do masy. Zatem należałoby wysłać:
    Adres: 0 1 0 0 A2 A1 A0 i bit R/W = 0 (zapis czegoś do PCF8574)
    Dane: X X X X X X 1 0
    Jak widać przy zmianie stanu P0 na P1 zawsze trzeba ustawić 1.

    W przypadku, gdy trzeba zgasić diodę na P0 wysyłamy:
    Adres: 0 1 0 0 A2 A1 A0 i bit R/W = 0 (zapis czegoś do PCF8574)
    Dane: X X X X X X 1 1

    Jeżeli wymagany jest odczyt stanu na P1, to należy wysłać:
    Adres: 0 1 0 0 A2 A1 A0 i bit R/W = 1 (odczyt czegoś z PCF8574)
    Dane teraz będą odczytywane z portu. Potem za pomocą odpowiednich operacji logicznych (np. iloczyn logiczny) można sprawdzić stan określonego bitu.
REKLAMA