Witam
Mam problem z odczytem bajta na magistrali I2C. Zapis do urządzenia Slave (ekspander PCF8574) działa ( na wyjściach zapalają się odpowiednie diodki) natomiast gdy chce odczytać wartość portu wejściowego ekspandera, to program zatrzymuje się na pętli nieskończonej w funkcji TWI_read() - flaga TWINT nie zostaje ustawiona - sprawdziłem, że nie wykonuje się następna instrukcja po ustawieniu flagi TWINT. Problem występuje na dwóch różnych mikrokontrolerach ATmega328P (Xplained Mini) i ATmega32. Również w przypadku innych urządzeń I2C jak pamięć zewnętrzna EEPROM następuje zawieszenie w funkcji TWI_read().
main.c
i2c_twi.c
Używam rezystorów pull-upp 1k. Dla 10k układ nie działa poprawnie. Sprawdziłem napięcia na liniach SDA i SCL po "zawieszeniu" programu. Panują jakieś dziwne wartości 1 V z kawałkiem i 2 V z kawałkiem. Układ zasilany napięciem 5 V. Poniżej obrazek z noty katalogowej ekspandera jak ma wyglądać odczyt:
Dodano po 5 [godziny] 17 [minuty]:
Ktoś moglby zweryfikować moj kod na swoim sprzęcie? Albo coŝ poradzić? Męcze sie juz od dwoch dni I nie wiem co.jest zle :/
Mam problem z odczytem bajta na magistrali I2C. Zapis do urządzenia Slave (ekspander PCF8574) działa ( na wyjściach zapalają się odpowiednie diodki) natomiast gdy chce odczytać wartość portu wejściowego ekspandera, to program zatrzymuje się na pętli nieskończonej w funkcji TWI_read() - flaga TWINT nie zostaje ustawiona - sprawdziłem, że nie wykonuje się następna instrukcja po ustawieniu flagi TWINT. Problem występuje na dwóch różnych mikrokontrolerach ATmega328P (Xplained Mini) i ATmega32. Również w przypadku innych urządzeń I2C jak pamięć zewnętrzna EEPROM następuje zawieszenie w funkcji TWI_read().
main.c
Kod: C / C++
i2c_twi.c
Kod: C / C++
Używam rezystorów pull-upp 1k. Dla 10k układ nie działa poprawnie. Sprawdziłem napięcia na liniach SDA i SCL po "zawieszeniu" programu. Panują jakieś dziwne wartości 1 V z kawałkiem i 2 V z kawałkiem. Układ zasilany napięciem 5 V. Poniżej obrazek z noty katalogowej ekspandera jak ma wyglądać odczyt:
Dodano po 5 [godziny] 17 [minuty]:
Ktoś moglby zweryfikować moj kod na swoim sprzęcie? Albo coŝ poradzić? Męcze sie juz od dwoch dni I nie wiem co.jest zle :/
