так вот: схему вроде накидал, спаял прошил контроллер(тини 13) но...
свет включается даже когда еще зажигание включаеш или заводишь(когда как
я так думаю что всему виной помехи возникающие при запуске двигателя или при вкл. зажигания
вопрос: как с ними програмно бороться?
вот кусок кода где я пытаюсь отфильтровать импульсы короче 5млс, т.е. я думаю что помехи не будут длиннее, или ни так?
Спойлер
Код: Выделить всё
#define FARA_ON PORTB.0=1;
DSA_IMP; // счётчик импульсов с датчика скорости
mls=5;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if(RUCHNIK==1){
if(impuls==0){ //здесь в первый раз?
T3=1; //да, запускаем таймер на 1млс,
impuls=1; // и ставим флаг что были здесь
}else{ //нет, мы уже были тут
T3=0; //останавливаем таймер
mills=TS3; //в mills сохраняем то сколько натикал млс. таймер
if(mills>=mls){ // сравниваем время таймера с предустановленным значением
DSA_IMP++; //если прошло больше времени чем надо, то считаем этот импульс
mills=0;} //и сбрасываем mills
impuls=0; //и сбрасываем флаг того что тут уже были
};
};
} ;
interrupt [TIM0_OVF] void timer0_ovf_isr(void) //
{
if (T3==1) { TS3++; }else { TS3=0;};
TCNT0=106; //перед запуском таймера записываем в него число 106, что бы переполнение
//возникало 1 раз в 1млс
}
void main(void)
{
if(DSA_IMP>=5){FARA_ON;} //получили 5 импульсов, включили фары
}
вот тут схема подключения к микроконтроллеру.
Не трогайте мокрыми руками оголённые провода, они могут заржаветь.
***********


