Po tygodniach programowania dookoła dziwactw HD44870 (pisze pierwszą linię, potem trzecią, potem drugą, potem czwartą, a adresy znaków są nieciągłe - kilkanaście adresów między trzecią a drugą linią w ogóle nie istnieje) i walki z drganiami zestyków klawiatury, postanowiłem zająć się dla odmiany czymś innym. Chciałbym żeby mój komputer miał zegar czasu rzeczywistego który zgłasza przerwanie kilkanaście razy na sekundę żeby można było dokonać wtedy pewnych okresowych czynności, nazwijmy to, pielęgnacyjnych. Pamiętam że w komputerach ATARI tę rolę pełniły przerwania synchronizacji pionowej generowane przez ANTICa 50 razy na sekundę.
Narysowałem więc taki oto schemat programowalnego timera. Licznik na schemacie udaje że jest programowalnym dzielnikiem częstotliwości '292 (tego dzielnika nie ma w Logisimie). Programować można więc interwał między przerwaniami, a oprócz tego także adres wektora obsługi przerwań:
Prawda że piękny?
Jak już się nacieszyłem tym widokiem to doszedłem do wniosku że kompletnie mi się nie chce tego budować, a zaprogramuję to raz na zawsze i później to całe programowanie będzie jedynie zbędnym balastem, więc zamiast tego zaprojektowałem (i zbudowałem) to:
Od razu lepiej

Dla wygody układ generuje przerwania niemaskowalne, które są łatwiejsze w obłsudze (przynajmniej dopóki generuje je tylko jedno urządzenie).
Układ jest oczywisty w działaniu, ale dla porządku: lewy inwerter działa w układzie oscylatora relaksacyjnego, podczas gdy drugi jest monoflopem.
Doboru wartości R i C należy dokonać pamiętając że:
- stała czasowa RC oscylatora musi być dłuższa niż stała czasowa RC monoflopa
- minimalny czas trwania stanu niskiego monoflopa musi wynosić 80ns, zgodnie z kartą katalogową Z80, inaczej przerwanie może nie zostać zarejestrowane.