Pinarczuk
Guest
Tue Oct 05, 2004 4:26 am
Wiutam.
Czy może ktoś wie:
Jak odczytać ilość impoulsów podanych w ciągu jednej sekundy na T0.
Z góry dziękuję za odpowiedź.
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
Grzegorz Kurczyk
Guest
Tue Oct 05, 2004 5:25 am
Użytkownik Pinarczuk napisał:
Quote:
Wiutam.
Czy może ktoś wie:
Jak odczytać ilość impoulsów podanych w ciągu jednej sekundy na T0.
CodeVision to chyba tylko kompilator więc racej nie poda Ci ile impulsów
weszło do procka z zewnątrz
--
Pozdrawiam
Grzegorz Kurczyk
http://www.control.slupsk.pl
ftp://ftp.control.slupsk.pl
GG: 1445218
Krzysztof Gawryś
Guest
Tue Oct 05, 2004 6:52 am
Użytkownik "Pinarczuk" <pinarczuk@poczta.onet.pl> napisał w wiadomości
news:4247.0000042d.416230a0@newsgate.onet.pl...
Quote:
Wiutam.
Czy może ktoś wie:
Jak odczytać ilość impoulsów podanych w ciągu jednej sekundy na T0.
Z góry dziękuję za odpowiedź.
Skonfigurować Timer/Counter0 aby pracował z zewnętrznym źródłem zegara.
A później w pętli co sekundę odczytywać rejest licznika T0 i następnie go
zerować.
Odmierzanie czasu jednej sekundy możesz zrobić na innym Timerze.
K.
Pinarczuk
Guest
Tue Oct 05, 2004 7:00 am
Quote:
Użytkownik "Pinarczuk" <pinarczuk@poczta.onet.pl> napisał w wiadomości
news:4247.0000042d.416230a0@newsgate.onet.pl...
Wiutam.
Czy może ktoś wie:
Jak odczytać ilość impoulsów podanych w ciągu jednej sekundy na T0.
Z góry dziękuję za odpowiedź.
Skonfigurować Timer/Counter0 aby pracował z zewnętrznym źródłem zegara.
A później w pętli co sekundę odczytywać rejest licznika T0 i następnie go
zerować.
Odmierzanie czasu jednej sekundy możesz zrobić na innym Timerze.
K.
A jak używam jeszcze UARTu.?
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
Krzysztof Gawryś
Guest
Tue Oct 05, 2004 7:59 am
Użytkownik "Pinarczuk" <pinarczuk@poczta.onet.pl> napisał w wiadomości
news:1243.00000092.41625493@newsgate.onet.pl...
Quote:
Użytkownik "Pinarczuk" <pinarczuk@poczta.onet.pl> napisał w wiadomości
news:4247.0000042d.416230a0@newsgate.onet.pl...
Wiutam.
Czy może ktoś wie:
Jak odczytać ilość impoulsów podanych w ciągu jednej sekundy na T0.
Z góry dziękuję za odpowiedź.
Skonfigurować Timer/Counter0 aby pracował z zewnętrznym źródłem zegara.
A później w pętli co sekundę odczytywać rejest licznika T0 i następnie
go
zerować.
Odmierzanie czasu jednej sekundy możesz zrobić na innym Timerze.
K.
A jak używam jeszcze UARTu.?
Podstawowe pytanie, jaki masz kwarc przy uC ?
Załóżmy że 7,3728MHz.
Więc, Timer1 konfigurujesz aby overflow wywoływał przerwanie "Timer/Counter1
Overflow" oraz aby był "napędzany" zegarem clk/8, czyli 921,6kHz.
Przerwanie Overflow w takim przypadku zostanie wywołane 14,0625 raza na
sekundę.
(921600 / 65536 = 14,0625)
I wystarczy że w ciele funkcji przerwania będziesz odliczał od 0 do 14, i
przy 14 zatrzymywał T0, odczytywał rejestr jego licznika do jakiejś
zmiennej, zerował ten rejest, puszczał T0 dalej w ruch i zaczynał liczenie
do 14 od nowa.
A ponieważ Timer0 jest 8bitowy i maksymalna ilosc impulsow jakie może
zliczyć to 256, musisz i tutaj wykorzystać przerwanie Overflow tego timera.
I za kazdym jego wywołaniem musisz dodawać 256 do wartości zmiennej, w którą
zapisuje przerwanie Overflow timera T1. Chyba że 256 imp. na sekundę to dla
Ciebie wystarczająco dużo, nie musisz wklepywać w program tego akapitu.
W tym momencie masz pomiar oparty na przerwaniach i możesz spokojnie
obsługiwać sobie UART w głownej pętli programu, czy jak tam sobie chcesz.
Brzmi to strasznie skomplikowanie, może nawet sam troche to zakręciłem

)))
Ale to proste do zaprogramowania.
K.