jaroslawk napisał: Opis działania układu:
Każdy pin z portu A procesora powoduje wygenerowanie przerwania i wywołanie procedury zapisu danych do pamięci I2C. Zapis danych zawiera datę, godzinę oraz stan poszczególnych pinów z portu A procesora. Jeżeli odczytuje czas co sekundę i pojawia się przerwanie to do pamięci zapisują się dziwne dane.
Od razu uprzedzam, że jestem początkującym jeśli chodzi o uC. Z I2C jeszcze nie korzystałem, ale te dziwne dane może biorą się z złego zarządzania przerwaniami. Na czas odczytu czasu powinieneś zablokować globalne przerwania, po odblokowaniu od razu obsłużone zostałoby przerwanie od portu A. Jeśli takiej rzeczy nie zrobisz to, jeśli w połowie odczytu (i od razu zapisu czasu do zmiennych) wystąpi przerwanie, to jak będziesz odczytywać czas (ze zmiennych, które są w pamięci uC), aby zapisać go do zew. pamięci, to część bitów będzie starych, a część nowych. Nie wiem jak wyglądają przedziały czasowe w takiej komunikacji I2C, więc tylko rzucam pomysłem co do tych "dziwnych danych".
Jak coś, to niech ktoś potwierdzi (albo zaprzeczy

), nie chciałbym wprowadzać w błąd.