problem z przerwaniami w 89S8252
Masz problem? Zapytaj na forum elektroda.pl
From: "Marcin" <marc.o_at_nospam_wp.pl>
Subject: problem z przerwaniami w 89S8252
Date: Fri, 4 Jul 2003 00:30:12 +0200
Witam, napisałem w C program miernika prędkośći, który miał działać tak:
przerwanie jednej bariery optoelektronicznej wywyołuje przerwanie INT1, a
przerwanie drugiej bariery przerwanie INT0. Procesor prtzy pomocy timera
mierzy czas między przerwnaiami i z tego wylicza prędkosć. Problem pojawił
się, gdyż mierzony czas był wartośćai przypadkową, niemającą sensu z
przerwaniami torów podczerwieni oraz sensu fizycznego. Ustawienie używanych
trzech przerwań na wyższy priorytet było podyktowane pracą timera T0 w
funcki migacza diody led i generatora sygnału akustycznego.
Przerwania zewnętrzne były wykonywane (sprawdziłem to zmieniająć procedure
ich obsługi, by przekonać się czy zachodzi ich wywołanie).
Załączam kody obsługi przerwań i ustawienia systemu przerwań:
EA = 0x01;
ET0 = 0x01; ET1 = 0x01; EX0 = 0x01; EX1 = 0x01;
PX0 = 0x01; PX1 = 0x01; PT1 = 0x01;
IT0 = 0x01; IT1 = 0x01;
TMOD = 0x22; TH0 = 0x00; TH1 = 0x00;
void sekundnik () interrupt TF1_VECTOR
{
++overflow;
}
void startvmeter () interrupt IE1_VECTOR
{
EX1 = 0x00;
TR1 = 0x01;
}
void stopvmeter () interrupt IE0_VECTOR
{
EX0 = 0x00;
TR1 = 0x00;
}
zastosowanie kodu:
while (P3_2 == 1);
TR1 = 0x01;
while (P3_3 == 1);
TR1 = 0x00;
rozwiązało problem pomiaru prędkosci, ale nie dało mi spokoju, dlatego
proszę o pomoc i wyjąsnienie problemu przerwań.
---
Pozdrawiam,
Marcin Osiniak
========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai