Wybacz, ale z Twojego tłumaczenia niewiele zrozumiałem:
bmenot napisał(a):
...aby pracowały na przemian razem z pinami sprzętowymi PB1 i PB2...
bmenot napisał(a):
Nie udaje się mi to osiągnąć, cały czas przerwania pracują razem z pinami PB1 lub PB2
Jeśli oczekujesz pomocy, spróbuj może to jakoś usystematyzować, bo obawiam się, że nie tylko ja mam problem ze zrozumieniem.
Spróbuj może w ten sposób:
- początkowy stan pinów: PB1=x, PB2=x, PD2=x, PD3=x (gdzie x to oczywiście oczekiwany stan pinu 0 lub 1)
- po określonym czasie równym n [mikro/mili]sekund piny powinny zmienić swój stan na: PB1=x, PB2=x, PD2=x, PD3=x
- po określonym czasie równym n [mikro/mili]sekund piny powinny zmienić swój stan na: PB1=x, PB2=x, PD2=x, PD3=x
- powrót do punktu 1
Na co mógłbym zwrócić uwagę w tej chwili?
Piny PB1 i PB2 są ustawiane sprzętowo, a piny PD2 i PD3 programowo (w procedurze obsługi przerwania) więc będziesz miał pewne przesunięcie czasowe między nimi.
Nie ustawiasz w ogóle rejestrów OCR1A i OCR1B, więc obydwa przerwania występują w tym samym momencie (kiedy TCNT1 osiąga 0). Procedury obsługi przerwania zostaną wykonane prawie jednocześnie, jedno po drugim (w krótkim odstępie czasu około 30 taktów), więc to co zostanie zmienione przez jedną procedurę obsługi przerwania, za chwilę zostanie cofnięte przez drugą...
Może kiedy opiszesz Twój problem dokładniej, można będzie coś bardziej konkretnego doradzić...