Chcę uzyskać przerwanie INT0 lub timer od przerwania dokładnie 1kHz. Aktualnie medzia8 pracuje na 16MHz i ni w ząb nie idzie uzyskać precyzyjnie 1kHz wykonując jeszcze chociaż zmienna++ by odliczać czas 1 ms w owym przerwaniu (ctc lub ovf). Świadom jestem niedokładnego kwarcu zewnętrznego dlatego poszedłem w inne rozwiązanie.
Wykorzystałem przebieg prostokątny z układu D3231 który generuje 32768 lub jego podzielność na pinie SQW (square wave) tj. 8192 Hz 4096 Hz 1024 Hz i 1 Hz. Lecz te wartości są nam znane programistom, ale są to krotności potęgi 2-jki, podzielenie 1.024 kHz przez wpisanie wartości 1000 do OCR1A dla TIMER1 i źródło sygnału T1 powoduje odchyły, tj. 1.0072 ms dla OCR1A=1000 oraz 0.97 dla OCR1A=999. Próbowałem też co czwarte przerwanie manipulować OCR1A między 1000 a 999 jednak i tak jest rozbieżność przy np. minucie pracy.
Jakikolwiek generator na NE555 wg mnie odpada jeśli dobrze myślę. Polegać na elementach pasywnych np. 6.9K i innych składowych potrzebnych wg kalkulatorów online aby uzyskać 1 kHz NE555 będzie niemożliwe - tym bardziej, że owy układ ma pracować w różnych temperaturach, najczęściej w okolicach 0°C.
Może poszedłem w złą stronę i jest jakieś prostsze rozwiązanie, które da mi pożądaną dokładność, tego nie wiem, dlatego zwracam się do Was.
Jestem otwarty na przejście na XMEGĘ jeśli będzie potrzeba.
Pozdr.
Wykorzystałem przebieg prostokątny z układu D3231 który generuje 32768 lub jego podzielność na pinie SQW (square wave) tj. 8192 Hz 4096 Hz 1024 Hz i 1 Hz. Lecz te wartości są nam znane programistom, ale są to krotności potęgi 2-jki, podzielenie 1.024 kHz przez wpisanie wartości 1000 do OCR1A dla TIMER1 i źródło sygnału T1 powoduje odchyły, tj. 1.0072 ms dla OCR1A=1000 oraz 0.97 dla OCR1A=999. Próbowałem też co czwarte przerwanie manipulować OCR1A między 1000 a 999 jednak i tak jest rozbieżność przy np. minucie pracy.
Jakikolwiek generator na NE555 wg mnie odpada jeśli dobrze myślę. Polegać na elementach pasywnych np. 6.9K i innych składowych potrzebnych wg kalkulatorów online aby uzyskać 1 kHz NE555 będzie niemożliwe - tym bardziej, że owy układ ma pracować w różnych temperaturach, najczęściej w okolicach 0°C.
Może poszedłem w złą stronę i jest jakieś prostsze rozwiązanie, które da mi pożądaną dokładność, tego nie wiem, dlatego zwracam się do Was.
Jestem otwarty na przejście na XMEGĘ jeśli będzie potrzeba.
Pozdr.
