lt640 napisał:
Jednak zostane przy kwarcu zewnętrznym, i jeżeli w kodzie mam crystal = 11059200 to rozumiejąc mam użyć o częstotliwości 11059200Hz.
Jeżeli pozostaniesz przy kwarcu zewnętrznym (11.0592 MHz), to nie tylko musisz to wpisać w kodzie, ale także stosownie do tej freq. przeliczyc watrość:
Const Licznik = xxxx ; założona na początku wartość 22336 odnosi się wyłącznie do taktowania 8MHz.
Cytat:
Zaloguj się, aby zobaczyć kod
o to chodziło?
To powyżej, możesz zapisać w innej krótszej formie:
Zaloguj się, aby zobaczyć kod
Ponadto tak ogólnie, cały ten program jest przykładem w ogóle kiepskego programowania.
Wierne kopiowanie niektórych tylko fragmentów innego programu bez odpowiednich poprawek parametrów do swoich warunków, nie przynosi najlepszych efektów.
1. Nie ma potrzeby zatrzymywania liczników aby odczytać ich zawartość.
2. Stopowanie i startowanie timera pracującego z prescalerem wiąże się z pewnymi (małymi zrersztą) niedokładnościami odliczonego czasu, - nie resetowany prescaler; -za każdym razem ta sekunda ma inną 'długość'.
3. Timer1 może pracować w trybie CTC, więc nie ma potrzeby każdorazowo wpisywać wartość początkową do jego rejestru.
4. Wszelkie obliczenia oraz dysplay wyniku winny być umieszczone w programie głównym, a ich wykonywanie uwarunkowane flagą stawianą w przerwaniu odliczającym czas jednej sekundy.
Wtedy program jest bardziej skonsolidowany, przerwania będą krótkie i łatwiej jest odszukać ewentualnie popełnione błędy.
Przy założonej dokładości (+/-1 Hz) i przedziale pomiarowym do 100 Hz wewnętrzny oscylator 8MHz jest dostatecznie dokładny./ Zastosowanie tu zewnętrznego rezonatra kwarcowego nie będzie miało praktycznego wpływu na uzyskany wynik.
e marcus