Rutr Napisano Październik 13, 2011 Udostępnij Napisano Październik 13, 2011 Zrobiłem wyświetlacz 4-cyfrowy 7-segmentowy, sterowany multiplexowo. Szukałem na internecie i nigdzie nie znalazłem opisu przerwań. Proszę o pomoc jak ustawić tak żeby co kilka ms wykonywał się kod przerwania. Wiem że trzeba ustawić jakieś rejestry, tylko nie wiem które, i co określają. Z góry dzięki za pomoc.
dmmps Październik 13, 2011 Udostępnij Październik 13, 2011 Link W miarę prosto wyjaśnione wszystko. 1
Sabre Październik 13, 2011 Udostępnij Październik 13, 2011 Wszystko ładnie pięknie jest opisane w powyższym linku poza jedną rzeczą. Niestety jest tam błąd rozumowania przez co później komuś wyjdą głupoty. Chodzi o informację jak uzyskać np. częstotliwość migania diody równą 1Hz a wynikiem jest w rzeczywistości miganie z częstotliwością 0,5Hz (1 sekunda świecenia i 1 sekunda dioda zgaszona), cały ten artykuł opiera się na błędnym założeniu, autor chyba zapomniał że okres to nie czas tylko włączenia diody a i włączenia i wyłączenia.
Rutr Październik 13, 2011 Autor tematu Udostępnij Październik 13, 2011 Dzięki Wielkie! O to mi chodziło. Chyba znalazłem więcej błędów. Preskaler dzieli impulsy zegara czy je zlicza? Preskaler jest częścią obwodu timera, który pozwala dzielić impuls zegarowy liczbą o podstawie dwa (2^n), redukując rozdzielczość ale rozszerzając zakres. Ostatnia część zdania jest błędna (odwrotna) do tego co ją poprzedza. Odmierzony odstęp czasu = (1 / częstotliwość zegara)/Preskaler = (Preskaler / częstotliwość zegara) Tu tak samo, ostanie wyrażenie nie jest równe przedostatniemu. Z reszty artykułu mogę wnioskować, że preskaler liczy wiele impulsów i przekazuje je do timera jako jeden, a prawidłowy wzór to Odmierzony odstęp czasu = (1 / częstotliwość zegara)*Preskaler = (Preskaler / częstotliwość zegara) Mam rację?
GAndaLF Październik 13, 2011 Udostępnij Październik 13, 2011 Zdanie o preskalerze, które cytujesz jest błędne ale twoja interpretacja również. Preskaler nie dzieli impulsu tylko dzieli częstotliwość. Jeżeli nominalna częstotliwość to 1MHz to przy preskalerze 1 częstotliwość inkrementowania timera będzie wynosić również 1MHz, przy preskalerze 2 - 500kHz, przy 8 125kHz itd.
Rutr Październik 13, 2011 Autor tematu Udostępnij Październik 13, 2011 W orginale pisze że dzieli, ja napisałem ze zlicza wiele i podaje jako jeden impuls. Jeżeli ustawie TCCR0 (atmega8) na preskaler 8, to timer wystartuje, tak? jak dojedzie do 0xFF to automatycznie zacznie od nowa czy się wyzeruje i wyłączy?
GAndaLF Październik 13, 2011 Udostępnij Październik 13, 2011 Mają racje z dzieleniem ale to częstotliwość jest dzielona a nie impuls. Z resztą wyrażenie dzielenie impulsu jest nieprecyzyjne bo co w nim dokładnie jest dzielone? Okres? Nie jesteśmy w stanie tego jednoznacznie stwierdzić. Jeżeli ustawisz preskaler na wartość różną od 0 to timer zacznie zliczać i po przepełnieniu będzie pracował od początku. W międzyczasie może wywoływać przerwanie, generować na odpowiednim pinie sygnał PWM itp w zależności od konfiguracji.
dondu Październik 13, 2011 Udostępnij Październik 13, 2011 Skoro tak dokładnie rozpatrujecie słownictwo związane z preskalerem i dzieleniem, to przy okazji wyżyjcie się na tym artykule: http://mikrokontrolery.blogspot.com/2011/03/prescaler-postscaler-co-to.html Będę wdzięczny
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »