Witam,
po zrobieniu fajnego zegarka na DS3231 wydawało mi się (ale tylko wydawało > odczyt i zapis czasów alarmów itd itp), że magistrala I2C to nie jest piekło.
Niestety przystępując do komunikacji z EEPROM po I2C .... zaczęło się dla mnie niemożliwe, najpierw napisałem własną procedurkę chyba ze wszystkimi szykanami zgodnie z datasheetem i NIC z tego.
Odczyt komórki pamięci zawsze FF > jakby nie była widzialna pamięć
przetestowałem wiele gotowców, m.in. od Kardasia, od radzia i inne 'działające' z elektrody i dalej nic z tego, na jednych odczytuje znowu FF (odczyt bajtu) a na innych program zawisa na odczycie z EEPROM'a, zapewne dlatego, że przy odczycie blokowym tylko ostatni bajt jest NOACK (pierwsze z ACK) jakby czekał na potwierdzenie.
Wydaje mi się, że adresy na 99,999% dobrze wpisuję > np. dla EVB jest 0xAC (sprawdzałem miernikiem oraz linie SCL i SDA są podpięte do Vc przez 10k)
albo jestem tępawy albo robię kardynalny błąd a przecież odczytywałem i zapisywałem bloki bajtów z i do RTC.
Może jakaś wskazówka ... gdzie szukać błędu.
Wiem o opóźnieniu po zapisie i poruszam się w obrębie 256 bajtów, więc niema potrzeby stronicowania - a może zawsze jest konieczny MSB adresu ??
Kardaś mi się zawiesza w odczycie bloku danych penie nie dostaje ACK
może jest jakiś prosty test sprawdzający czy urządzenie o podanym adresie jest na magistrali ??
pozdrawiam
EDIT - poprawiłem i dalej nie mogę odpowiedzieć
po zrobieniu fajnego zegarka na DS3231 wydawało mi się (ale tylko wydawało > odczyt i zapis czasów alarmów itd itp), że magistrala I2C to nie jest piekło.
Niestety przystępując do komunikacji z EEPROM po I2C .... zaczęło się dla mnie niemożliwe, najpierw napisałem własną procedurkę chyba ze wszystkimi szykanami zgodnie z datasheetem i NIC z tego.
Odczyt komórki pamięci zawsze FF > jakby nie była widzialna pamięć
przetestowałem wiele gotowców, m.in. od Kardasia, od radzia i inne 'działające' z elektrody i dalej nic z tego, na jednych odczytuje znowu FF (odczyt bajtu) a na innych program zawisa na odczycie z EEPROM'a, zapewne dlatego, że przy odczycie blokowym tylko ostatni bajt jest NOACK (pierwsze z ACK) jakby czekał na potwierdzenie.
Wydaje mi się, że adresy na 99,999% dobrze wpisuję > np. dla EVB jest 0xAC (sprawdzałem miernikiem oraz linie SCL i SDA są podpięte do Vc przez 10k)
albo jestem tępawy albo robię kardynalny błąd a przecież odczytywałem i zapisywałem bloki bajtów z i do RTC.
Może jakaś wskazówka ... gdzie szukać błędu.
Wiem o opóźnieniu po zapisie i poruszam się w obrębie 256 bajtów, więc niema potrzeby stronicowania - a może zawsze jest konieczny MSB adresu ??
Kardaś mi się zawiesza w odczycie bloku danych penie nie dostaje ACK
może jest jakiś prosty test sprawdzający czy urządzenie o podanym adresie jest na magistrali ??
pozdrawiam
EDIT - poprawiłem i dalej nie mogę odpowiedzieć
