Witam
problem jest taki że generalna zasada pomiaru takiej długości jest znana...
pod INT0 podpinam sygnał...
ustawiam przerwanie na narastające zbocze... odpalam timer
na opadającym zboczu odczytuje zawartość timera i zależnie ile wynosi to coś tam się ustawia.
Napisałem taki program w c i coś nie działa a nie mam pojęcia co;]
może kwestia jest taka że źle ustawiam to na jakie zbocze ma reagować... a może wszystko działa tylko złe wartości wyliczyłem na długość impulsu?
mikrokontroler at89c4051 ... kwarc 12 Mhz
impulsy leca od odbiornika RC ... 1 - 2 ms co 20 ms
zamysł jest taki że jeśli impulsy sa krótsze od 1.5 ms to świeciła się jedna dioda... a jeśli dłuższe do druga ... ale zawsze świeci się tylko zielona ( gdy zmienna diodazielona=0) ... więc wygląda na to że w procedure obsługi przerwania wchodzi ale zawsze licznik nie dochodzi do odpowiedniej wartości. Tylko mam wrażenie że on w ogóle się chyba nie odpala bo z wyliczeń dla tego kwarcu i tych wartości impulsów to wartość 0B na TH1 jest dla impulsu około 1.5ms...
#include <reg51.h>
sbit diodazielona = P1^6;
sbit diodaczerwona = P1^7;
void Zapaldiode(void) interrupt 0
{
if(IT0==0)//rosnace zbocze ? ( tego nie jestem pewien bo sam to wymyśliłem ... w książce znalazłem że IT0=1 to opadające więc alanogicznie dałem IT0=0 rosnące)
{
TR1=1;
IT0=1;
}
else if(IT0==1)//opadajace
{
if(TH1<0x06) {
diodazielona=0;
diodaczerwona=1;
}
else
{
diodazielona=1;
diodaczerwona=0;
}
TR1=0;
IT0=0;
TL1=0;
TH1=0;
}
}
void main(void)
{
diodaczerwona=1;
diodazielona=1;
IT0=0;//rosnące zbocze?
EA=1;
EX0=1;
TMOD=0x10;
TL1=0;
TH1=0;
while(1);
}
Z góry dziękuję za pomoc;]
problem jest taki że generalna zasada pomiaru takiej długości jest znana...
pod INT0 podpinam sygnał...
ustawiam przerwanie na narastające zbocze... odpalam timer
na opadającym zboczu odczytuje zawartość timera i zależnie ile wynosi to coś tam się ustawia.
Napisałem taki program w c i coś nie działa a nie mam pojęcia co;]
może kwestia jest taka że źle ustawiam to na jakie zbocze ma reagować... a może wszystko działa tylko złe wartości wyliczyłem na długość impulsu?
mikrokontroler at89c4051 ... kwarc 12 Mhz
impulsy leca od odbiornika RC ... 1 - 2 ms co 20 ms
zamysł jest taki że jeśli impulsy sa krótsze od 1.5 ms to świeciła się jedna dioda... a jeśli dłuższe do druga ... ale zawsze świeci się tylko zielona ( gdy zmienna diodazielona=0) ... więc wygląda na to że w procedure obsługi przerwania wchodzi ale zawsze licznik nie dochodzi do odpowiedniej wartości. Tylko mam wrażenie że on w ogóle się chyba nie odpala bo z wyliczeń dla tego kwarcu i tych wartości impulsów to wartość 0B na TH1 jest dla impulsu około 1.5ms...
#include <reg51.h>
sbit diodazielona = P1^6;
sbit diodaczerwona = P1^7;
void Zapaldiode(void) interrupt 0
{
if(IT0==0)//rosnace zbocze ? ( tego nie jestem pewien bo sam to wymyśliłem ... w książce znalazłem że IT0=1 to opadające więc alanogicznie dałem IT0=0 rosnące)
{
TR1=1;
IT0=1;
}
else if(IT0==1)//opadajace
{
if(TH1<0x06) {
diodazielona=0;
diodaczerwona=1;
}
else
{
diodazielona=1;
diodaczerwona=0;
}
TR1=0;
IT0=0;
TL1=0;
TH1=0;
}
}
void main(void)
{
diodaczerwona=1;
diodazielona=1;
IT0=0;//rosnące zbocze?
EA=1;
EX0=1;
TMOD=0x10;
TL1=0;
TH1=0;
while(1);
}
Z góry dziękuję za pomoc;]