MarekSz napisał(a):
Witam Was,
Mam takie zagadnienie, którego doświadczyłem i które chciałbym jakoś rozwiązać. MCU ma kilka pinów, które mogą spowodować jedno, konkretne przerwanie (wejścia PCINTxx). Celem jest ustalenie, który z tych pinów jest sprawcą. Kłopot polega na tym, że impuls wywołujący przerwanie może być trochę krótszy niż 20 cykli zegara. Sprawdziłem, że 20 cykli zegara zajmuje odpalenie procedury przerwania, więc dla krótkich pobudzeń, odczyt stanu pinów nie jest celowy. W tak krótkim / długim czasie mogą one zmienić swój stan. Bazowanie na tej metodzie da fałszywy odczyt co do ustalenia źródła zdarzenia.
Jak często będą pojawiały się przerwania? Nie możesz użyć przerwań INTx zamiast PCINT? Reagujesz na zbocze przerwania INTx i od razu widać na którym pinie się pojawiło. Zamiast komplikować sprzęt użyj atmegi128, tam jest chyba 8 przerwań INTx