Первое что решил сделать это разобраться с TSOP 1736.Собрал на своей монтажке.
Как видно из следуещей фотографии при прямой видимости тсоп срабатывает и светится светик
Проблема заключается в том что если я делаю импровезированное препятствие тсоп срабатывает только при расстоянии до 3 сантиметров =( хотелось бы больше
Вот код программы ( codevisionavr 2,Atmega8,кварц на
- Код: Выделить всё • Развернуть
#include <mega8.h>
char TimerCount = 0;
//-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
void SetIRLed()
{ PORTC.0 = ~PORTC.0; }
//-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
void SetLightLed(unsigned char flag)
{ PORTC.5 = flag; }
//-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
// TCNT0=0x14;
if(TimerCount<28)
SetIRLed();
else
PORTC.0 = 0;
TimerCount++;
if(TimerCount==56)
TimerCount = 0;
}
//-_-_-_-_ главная функция -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x7F;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x01;
TCNT0=0x6F;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
if(PIND.1)
SetLightLed(0);
else
SetLightLed(1);
};
}
Подскажите пожалуйста в чём проблема,хотелось бы большее расстояние.
Проект кодвизиан присоединен в архиве к топику