Interfejs I2C1 w PIC32MM nie możemy przyporządkować do innych pinów niż wymusza to producent firma Microchip. Standardowo mamy tutaj przyporządkowane następujące piny RB9 -> SDA1 i RB8 -> SCK1 . Z tabelki z opisem pinów MCU wynika jednak , że jest dostępna alternatywa. Ponieważ sam się drapałem w głowę przez chwilę nad tym zagadnieniem. Dlatego czynię niniejszy wpis przy okazji przywołujący mi skojarzenie ze słynnym serialem Stanisława Bareji - Alternatwy 4.
W powyższej tabelce na pozycji nr 5 i 45 mamy coś takiego jak ASCL1 i ASDA1 a pod tabelką następującą informację : "Alternate pin assignments for I2C1 as determined by the I2C1SEL Configuration bit."
Z powyższych informacji wynika, że na pinie RC9 możemy ustawić alternatywnie SCL1 dla I2C1 a na pinie RB5 - SDA1 . Radośnie zatem próbujemy znaleźć w rejestrach twór I2C1SEL i mamy zong bo nigdzie takowego nie znajdziemy. Przeprowadziłem zatem małe śledztwo w tym zakresie i ustaliłem co następuje : alternatywne przyporządkowanie pinów dla I2C1 ustawimy w takim dziwacznym rejestrze :
aby być pewnym, że mamy piny RB5 i RC9 przyporządkowane alternatywnie do I2C1 wystarczy w funkcji konfiguracyjnej zrobić wpis :
AFDEVOPTbits.ALTI2C = 0;
Najmniej się napracujemy konfigurując I2C1 w MCC bo tam jak przyporządkujemy kłódeczkami w Pin Module piny alternatywne dla I2C1 to w pliku mcc.c pojawi się wpis jak poniżej :
#pragma config ALTI2C = ON // Alternate I2C1 Pins Location Enable bit->Alternate I2C1 pins are used
, który załatwia nam sprawę.
Pozdrawiam
picmajster.blog@gmail.com
picmajster.blog@gmail.com
Brak komentarzy:
Prześlij komentarz