Uchędożyłem sobie układzik w którym Atmega zapisuje sobie dwunastobajtowe paczki danych do czterech EEPROMów 24C512. Całość zasadniczo ładnie działa, jednak sporadycznie zdarza się błąd TWI nr 0x38 oznaczający "Arbitration lost in SLA+W or data bytes". Jak zdołałem ustalić, błąd ten występuje w trakcie wysyłania danych do pamięci, mniej więcej w środku paczki danych(między 2 a 6 bajtem). Niestety nie zdołałem zaobserwować czy błąd jest wywołany szpilkowym zakłóceniem(chociaż w układzie nie ma niczego mocno siejącego) czy innymi złymi mocami. Dodatkowo zauważyłem że po wystąpieniu tego błędu(w odróżnieniu od innych błędów) TWI się blokuje i po zapisie do TWCR polecenia wysłania sekwencji START nic się nie dzieje, stan linii SCL I SDA pozostaje wysoki i nie jest generowane przerwanie od TWI.
Przechodząc do meritum - czy ktoś spotkał się z podobnym problemem? Chodzi mi tylko o proste rozstrzygnięcie czy przyczyna występowania takiego błędu jest natury elektrycznej(zakłócenia szyny, skoki zasilania, supełki na ścieżkach itp.) czy powinienem skupić się na programie.
EDIT: ww. problem występuje stosunkowo często przy zapisie co 100ms, rzadziej przy zapisie co 0.5s a przy zapisie co 1s jak na razie nie zauważyłem go w ogóle.
Przechodząc do meritum - czy ktoś spotkał się z podobnym problemem? Chodzi mi tylko o proste rozstrzygnięcie czy przyczyna występowania takiego błędu jest natury elektrycznej(zakłócenia szyny, skoki zasilania, supełki na ścieżkach itp.) czy powinienem skupić się na programie.
EDIT: ww. problem występuje stosunkowo często przy zapisie co 100ms, rzadziej przy zapisie co 0.5s a przy zapisie co 1s jak na razie nie zauważyłem go w ogóle.