Nie uda ci się uzyskać dokładności 1Hz przy 8MHz. A to dlatego, że ograniczeniem jest tu dokładność źródła taktowania (o czym zresztą jest napisane na wymienionej stronie). A to dlatego, że przy 1MHZ dokładność 1Hz wymagałaby dokładności źródła taktowania (zegara) lepszej niż 1ppm (ppm=części na milion). Tymczasem tanie kwarce mają dokładność rzędu 100ppm. Lepsze (droższe) kwarce są dokładniejsze okło 20ppm, specjalne termostatowane (TXCO) osiągają kilka ppm. Wyjściem może być zastosowanie scalaka DS3231 o max dokładności 2ppm.
Kolejną sprawą są opóźnienia między powstaniem przerwania, wywołaniem i obsługą. A to zajmie kilkanaście cykli zegara, czyli 1-2us co daje kolejne 2ppm.
Realnie patrząc - można łatwo uzyskać 4 cyfry znaczące, 5 cyfr znaczących przy pewnym wysiłku, 5 i 1/2 to praktyczny szczyt możliwości. Oczywiście nic nie stoi na przeszkodzie by miernik pokazywał 6,9 czy 12 cyfr. Tylko po co skoro i tak wartości ich będą przypadkowe.
Co do projektu, to nie dopatrzyłem się preskalera w liczeniu impulsów.
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Licznik zlicza do 256, a każde przepełnienie zwiększa licznik przepełnień.
Sam preskaler pracuje asynchronicznie i wyrabia sie do około 50MHz (z tego co pamiętam - warto sprawdzić).