У меня мега Atmega8-16PU !!!
Там же свой кварц на 16!
Увеличил в таймере
- Код: Выделить всё
void wait(void){
TCNT1=0;
while(TCNT1<240){};
}
вроде реагировать начал. Только настроить надо.
Спасибо всем)
void wait(void){
TCNT1=0;
while(TCNT1<240){};
}
for(y=0;y<2;y++)
{
delay_us(Ik_time_detect_front*2*15);
for(x=0;x<Ik_pachka;x++)
{
delay_us(Ik_time_detect_front);
IR_D_L_ON;
delay_us(Ik_time_detect_front);
IR_D_L_OFF;
}
if (TSOP_F==0)
{
// если препятствие
}
}
DiNoZawR писал(а):Там же свой кварц на 16!
DiNoZawR писал(а):После какого-то момента приемник срабатывает сразу. Даже если препятствия нет.
Уменьшаю напряжение, не реагирует вообще...
#include <mega8.h>
#include <delay.h>
#define F_CPU 8000000UL
int i;
int k;
void walk(int k){
switch(k){
case 1: PORTC = 0b00001001; break;
case 2: PORTC = 0b00000110; break;
case 3: PORTC = 0b00000101; break;
case 4: PORTC = 0b00001010; break;
case 0: PORTC = 0b00000000; break;
}
}
void wait(void){
TCNT1=0;
while(TCNT1<256){};
}
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x0F;
PORTD=0xFE;
DDRD=0b10100001;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
PORTD.7=1;
while (1)
{
for(k=0; k<2; k++)
{
delay_us(17*2*15);
for(i=0; i<20; i++)
{
PORTD.5 = 1;
delay_us(17);
PORTD.5 = 0;
delay_us(17);
}
if(PIND.6 == 0)
{
walk(1);
}
else
{
walk(0);
}
};
};
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5