Programowy I2C

Jun 18, 2006 3 Replies
Jump to replies (3)

Witam serdecznie.



Chciałbym zrealizować programową obsługę protokołu I2C. Ogólny zarys pomysłu jest taki, iż linia zegara jest podłączona do pinu ustawionego jako wyjście, natomiast linia danych połączona jest z pinem który standardowo ustawiony jest jako wejście. Jeżeli coś się pojawi na SDA, generowane jest przerwanie w którym to odczytuje bity. Jeśli natomiast będę chciał coś wysłać, ustawiam pin SDA jako wyjście i wysyłam.



Takie rozwiązanie zamierzam zaimplementować na mikrokontrolerze MC68HC908GP32 i testować je komunikując się z pamięcią eeprom AT24C32.



Bardzo proszę o porady oraz o ewentualne bardziej profesjonalne sposoby realizacji programowego I2C.



Z góry dziękuję za pomoc.


Moment, je¶li ten MC68HC... bêdzie masterem, to mo¿e nie warto u¿ywaæ przerwañ. Je¶li ju¿ to mo¿e do ¶ledzenia czy slave nie blokuje SCL (zapis komórki/grupy komórek w pamiêci typu eeprom to czas rzêdu kilku ms). Swoj± drog± warto dobrze sprawdziæ czy jaki¶ interfejs nie jest natywnie zgodny z I2C. Oznaczenie I2C jest w³asno¶ci± Philipsa i zdarza siê ¿e producenci go nie u¿ywaj±. Przyk³adem jest Atmel i interfejs TWI w MCU AVR.

Pawe³

Paweł Cern napisał(a): > Moment, jeśli ten MC68HC... będzie masterem, to może nie warto używać > przerwań. Jeśli już to może do śledzenia czy slave nie blokuje SCL > (zapis komórki/grupy komórek w pamięci typu eeprom to czas rzędu > kilku ms).

Faktycznie jeśli będzie masterem to teoretycznie będę wiedział kiedy przełączyć pin na wejście i zczytywać dane. Tylko zastanawia mnie czy nie lepiej zrobić to na przerwaniu, a nie w jakiejś pętli zczytywać dane.

Tak, owszem zdaję sobie z tego sprawę, niestety ten uC nie posiada żadnego interfejsu I2C. Jeżeli by mnie interesowało sprzętowe rozwiązanie problemu to bym zamontował jakiś mostek UART <-> I2C, chociażby SC16IS740 Philips'a.

Dziękuję za zainteresowanie i proszę o dalsze porady.

A jaki bêdzie narzut czasowy zapamiêtania / odtworzenia kontekstu (rejestrów) wewn±trz obs³ugi przerwania? Byæmo¿e gra nie jest warta ¶wieczki.

Pawe³

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required