Programowy I2C

Jun 18, 2006 3 Replies

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