Skocz do zawartości

Fałszywy stan pinów INPUT z użyciem ekspandera MCP23017 oraz ESP8266


MisiekD

Pomocna odpowiedź

@_LM_ @ethanak Ok, sprawa ze stanami 1, 1, 1 rozwiązana 🙂 Wystarczyło podpiąć pin RESET pod jakikolwiek pin OUTPUT i z ESP wysterować stan niski, po chwili wysoki. A to czy linia I2C się zacięła należy sprawdzić pinami SDA i CLK w ESP8266:

- stan wysoki CLK i stan wysoki SDA - linia I2C działa poprawnie,

- stan wysoki CLK i stan niski SDA - linia I2C zgłupiała (trzeba zresetować).

Natomiast zauważam teraz różne losowe stany odczytując z MCP23017. Przepiąłem to chwilowo na płytkę stykową, żeby zrobić różne testy i się zastanawiam czy niektóre przewody nie powodują zakłóceń. Rozmyślam czy ekranowane przewody na linie I2C by coś dały. Rezystory 4,7K na linie I2C są podane, z podpięciem kondensatora także próbowałem, ale bez sukcesu.

 

Link do komentarza
Share on other sites

15 godzin temu, MisiekD napisał:

Rozmyślam czy ekranowane przewody na linie I2C by coś dały

Moim zdaniem sprzętowe problemy z i2c zostały rozwiązane i ekranowanie samej magistrali nic nie zmieni. Dalej pozostają kwestie wejść ekspandera, uważam że minimum jakie powinieneś zrobić to dołożyć rezystory podciągające na wejściach,(być może nawet jakieś proste filtry rc) szczególnie tych które są podłączone do długich przewodów. O transoptorach już pisałem. 

Edytowano przez _LM_
Link do komentarza
Share on other sites

6 godzin temu, _LM_ napisał:

Moim zdaniem sprzętowe problemy z i2c zostały rozwiązane i ekranowanie samej magistrali nic nie zmieni. Dalej pozostają kwestie wejść ekspandera, uważam że minimum jakie powinieneś zrobić to dołożyć rezystory podciągające na wejściach,(być może nawet jakieś proste filtry rc) szczególnie tych które są podłączone do długich przewodów. O transoptorach już pisałem. 

Sprawa rozwiązana 🙂 I2C działało w porządku (po zaimplementowaniu kodu resetujacego). Zacząłem się tak wczoraj wieczorem bawić rezystorami i problem powodowały rezystory podciągające wewnątrz ekspandera (100K). Do przycisków Arduino/ESP stosuje się najczęściej 10K i taki też był potrzebny. Działa to teraz tak jak powinno (nawet bez dodatkowych transoptorów przy INPUT-ach (napięcie 3.3V leci przez dłuższe kable, a przy ekspanderze zwiera do pinu INPUT i rezystora 10K) - to też ma dodatkową zaletę taką, że stan HIGH to stan, gdzie "przycisk był naciśnięty", a stan LOW to "przycisk nienaciśnięty" (wcześniej z wewnętrznymi rezystorami w ekspanderze było na odwrót, co lekko komplikowało kod 😉).

Reasumując, bardzo dziękuję kolegom za poświęcony czas i chęci, sporo się dzięki temu nauczyłem, i teraz lepiej wiem jak działa linia I2C oraz jak ją "wspomagać" 😉

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.