przerwania na 51 - help...



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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ść...



Poprzedni Następny
Wiadomość
Spis treści
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/

Poprzedni Następny
Wiadomość
Spis treści
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