Skocz do zawartości

[C]pcf857 4P biblioteka C / TWI


Apsor

Pomocna odpowiedź

Witam,
mam przed sobą taki układzik : http://botland.com.pl/uklady-scalone-interfejsy/1210-pcf8574-ekspander-wyprowadze-mikrokontrolera.html

jest to wersja z końcówka 4p.

I nie za bardzo wiem jak się zabrać za podłączenie go do uC, dopiero się uczę o uC i z TWI nie miałem jeszcze doczynienia. Wie ktoś gdzie znajdę jakieś biblioteki do obsługi tego cuda ? : )

Link do komentarza
Share on other sites

No to najprostsze (i chyba najtańsze) zwiększanie liczby wyjść zrobisz na rejestrach przesuwających powieszonych na SPI. Ekspandery I2C są co najmniej o rząd wielkości droższe niż zwykłe 74HC594. Do tego nie potrzebujesz też specjalnie żadnej biblioteki: gromadzisz n bitów stanu wyjść w jakiejś tablicy lub kilku zmiennych int a potem wysyłasz to bajt po bajcie i po sprawie. Liczba tak uzyskanych wyjść zależy tylko od liczby użytych rejestrów i teoretycznie jest nieograniczona. Z kolei na I2C masz programowanie kierunku linii, autonomiczne wykrywanie zmian, włączanie podciągów do Vcc lub GND (np. do współpracy z zestykami) ale też ograniczenie liczby układów do możliwości adresowania przewidzianych przez producenta. Np. jeśli dany scalak ma 2 linie adresowe, możesz podłączyć tylko 4 takie do wspólnej szyny - adresy w danej gałęzi I2C muszą być unikalne. Obsługa ekspandera portów na I2C jest trywialna. Jeśli już rozumiesz jak działa I2C, reszta to zwykłe rzemiosło programistyczne.

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

Co to znaczy "bez dodatkowych bibliotek"? Funkcje które umieściłeś w programie nie są częścią standardowej stdlib języka C więc i tak musisz je mieć w odpowiedniej bibliotece lub w gdzieś w swoim kodzie. Jeżeli masz i w dodatku robią to czego się domyślam to tak, powinno zadziałać z 8574 właśnie z uwagi na jego prostotę. Pomijając oczywiście:

- drobne błędy składniowe programu,
- I2C_SendByte prawdopodobnie oczekuje argumentu typu uint8_t a nie char*,
- pominąłeś całą diagnostykę i ignorujesz jakiekolwiek kody błędów oddawane przez funkcje zakładając, że wszystko poszło OK.

Pamiętaj, że ten ekspander ma wyjścia typu open-collector z delikatnymi podciągami. Nie możesz nim np. sterować diodek LED podłączonych do GND lub tranzystorów npn, bo w stanie wysokim wypuszcza z siebie bardzo słabiutki prąd.

W I2C (jak wszędzie) właściwie wszystko może pość nie tak. Począwszy od wysłania adresu (brak możliwości wygenerowania zdarzenia START, utrata arbitrażu, brak ACK) poprzez wysyłanie lub odbiór bajtów (brak ACK lub timeout z powodu clock stretchingu) aż po zakończenie. Warto obsługiwać wszelkie możliwe kody błędów udostępniane przez sprzęt i/lub biblioteki albo przynajmniej reagować na ich pojawienie się. Jeżeli protokół zwiśnie w dziwnym stanie a Ty jako Master szyny nie masz możliwości np. resetowania wszystkiego co jest do I2C podpięte, jesteś ugotowany.

Link do komentarza
Share on other sites

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.