przerwania na 51 - help...
Masz problem? Zapytaj na forum elektroda.pl
From: "ArturVF500" <strobole_at_nospam_o2.pl>
Subject: przerwania na 51 - help...
Date: Mon, 1 Nov 2004 14:26:05 +0100
Nie moge sobie poradzic z pomiarem szerokosci impulsu podawanego na wejscie
T1... program chodzi na 2 przerwaniach: jedno od INT0 (wyzwalane zboczem
opadajacym, sygnal prostokatny podawany na polacznone wejscia INT0 i T1)
drugie zegarowe 50ms generowane z T0; przerwanie od INT0 wyglada
nastepujaco:
void it_int0 (void ) interrupt 0 using 2 // Przerwanie INT0
{
impulsy=TL1;
impulsy=impulsy+256*TH1;
TL1=0;
TH1=0;
}
gdy zawartosc licznika wyswietlam przy kazdym wywolaniu tego przerwania
wszystko dziala bez zarzutu
natomiast gdy chce to robic co 200ms w przerwaniu od T0:
void it_t0 (void ) interrupt 1 using 1 // Przerwanie od czasomierza
(generowane 20 razy na sekunde)
{
TL0=0xaf; //wartosc odpowiadanaja 50ms przy zegarze 12MHz
TH0=0x3c;
cz_sek++;
impulsy2=impulsy2+(impulsy/4); //srednia z 4 kolejnych odczytow T1
if (cz_sek==4) // wyswietlanie co 4 cykle przerwania
{
imp(); // funkcja wyswietlajaca wynik pomiaru
cz_sek=0;
impulsy2=0;
}
wszystko jest dobrze, gdy dlugosc impulsu nie przekracza 1.5ms (15000
impulsow przy zegarze 12MHz). powyzej tej wartosc wynik zaczyna plywac tym
bardziej im dluzszy jest impuls - przy 15000 jest to ok 500, przy 35000
nawet 5000
ma ktos pomysl jak to rozwiazac? probowalem zmieniac priorytety obu przerwan
i nic sie nie zmienia...
pozdrawiam
Artur
From: "ArturVF500" <strobole_at_nospam_o2.pl>
Subject: Re: przerwania na 51 - help...
Date: Mon, 1 Nov 2004 14:49:19 +0100
ps.
w momencie wlaczenie drugiego przerwanie (zegarowego od T0) wynik pomiaru
jest dwukrotnie wiekszy niz rzeczywista wartość...
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: Re: przerwania na 51 - help...
Date: Mon, 1 Nov 2004 17:06:16 +0000 (UTC)
wszystko jest dobrze, gdy dlugosc impulsu nie przekracza 1.5ms (15000
impulsow przy zegarze 12MHz). powyzej tej wartosc wynik zaczyna plywac tym
bardziej im dluzszy jest impuls - przy 15000 jest to ok 500, przy 35000
nawet 5000
Witam.
Coś mi się tu nie zgadzają Twoje obliczenia.
Mamy Kwarc 12MHz czyli timery taktowane są częstotliwością 1MHz.Więc skoro T1
zliczył do 15000 to upłynęło 15000 uS inaczej 15ms a nie 1.5ms.Więc moja
propozycja brzmi:Policz to jeszcze raz.
Pzdr.
Piotrek Sz.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: AlexY <alexy_at_nospam_irc.-cut_this-.pl>
Subject: Re: przerwania na 51 - help...
Date: Mon, 01 Nov 2004 19:36:37 +0100
Użytkownik Piotrek Sz. napisał:
wszystko jest dobrze, gdy dlugosc impulsu nie przekracza 1.5ms (15000
impulsow przy zegarze 12MHz). powyzej tej wartosc wynik zaczyna plywac tym
bardziej im dluzszy jest impuls - przy 15000 jest to ok 500, przy 35000
nawet 5000
Coś mi się tu nie zgadzają Twoje obliczenia.
Mamy Kwarc 12MHz czyli timery taktowane są częstotliwością 1MHz.Więc skoro T1
zliczył do 15000 to upłynęło 15000 uS inaczej 15ms a nie 1.5ms.Więc moja
propozycja brzmi:Policz to jeszcze raz.
zdaje sie ze tu byl problem plywania wynikow przy wylaczonym T1, problem
z dwukrotnie dluzszym liczenie Artur ma jak T1 jest wlaczony