MC6840 - pomiar długości impulsu

W paru projektach "retro" wykorzystywałem już stary timer Motoroli MC6840, do pomiaru czasu między zdarzeniami. Teraz chciałbym wykorzystać go do pomiaru długości impulsu, w celu dekodowania sygnału DCF77. Platforma na której będzie to chodziło jest oparta na równie antycznej architekturze 6502.

Dokumentacja timera tutaj:

formatting link
Chciałem tylko upewnić się, że dobrze rozumiem zasadę działania układu w tym trybie.

1) Konfiguruję TIMER1 zgodnie z tabelką na dole strony 8. Czwarta opcja (110) - przerwanie jest wywoływane, gdy czas trwania impulsu niskiego na GATE1 będzie krótszy niż "Time Out". 2) Ładuję do licznika wartość 0xFFFF. 3) Licznik zaczyn odliczać, gdy na GATE1 pojawi się stan niski. W moim przypadku zlicza 25 ms impulsy z innego licznika, podawane na wejście C1. Z każdym impulsem jego wartość jest dekrementowana. 4) Jeśli na GATE1 ponownie pojawi się wartość wysoka przed wyzerowaniem timera, zostanie wywołane przerwanie. 5) W przerwaniu odczytuję wartość TIMERA pamiętając, żeby zamienić bajty miejscami (6502 jest little endian, rodzina układów Motoroli jest big endian). 6) Żeby uzyskać liczbę zliczonych impulsów odejmuję odczytaną wartość od 0xFFFF. 7) Ponownie ładuję do timera 0xFFFF, bo w przeciwnym razie następnym razem zacząłby liczyć tam, gdzie skończył. Nie jest przeładowywany automatycznie, mam rację?

Moje założenia są prawidłowe, czy gdzieś popełniłem błąd?

Reply to
Atlantis
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.