ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
76172 Топик полностью
Haron12 (18.12.2006 12:35, просмотров: 1) ответил =L.A.= на Я умею читать доки. Там, кстати, рядышком с "36 кГц" есть еще "2400 бит/сек" - это закодированная инфа, что этот TSOP принимает только импульсы-пакеты 36 кГц.
Извините, что раньше программку не выложил,вот она: Вот сама программа: This program was produced by the CodeWizardAVR V1.24.8d Professional Automatic Program Generator © Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : IRbarer_9 Version : Date : 07.12.2006 Author : Haron12 Company : Comments: Chip type : ATtiny2313 Clock frequency : 8,000000 MHz Memory model : Tiny External SRAM size : 0 Data Stack size : 32 *****************************************************/ #include <tiny2313.h> #include <delay.h> const unsigned char k_piks=30;//Это кол-во импульсов в пачке bit t1,t2; // Это флаги активации ИК-датчиков t1 и t2 соотв. //unsigned t1,t2; unsigned char count; // Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) {//Сброс флагов датчиков // Place your code here // PORTB.3++; t1=0;t2=0; TCCR1B=0; //отключили таймер-счетчик PORTB.6=0; PORTB.5=0; } void view_count (void) {if (count>0) {PORTB.3=1; } else { PORTB.3=0; }; } // procedure start_interrupt void start_interrupt (void) { TCCR1B=0; TCNT1H=0x00; TCNT1L=0x00; TCCR1B=4; //Делитель частоты -(0-остан)2- 8; 3 -64; 4- } // procedure make_paket void make_paket(void) { delay_us(13); PORTB.7=1; PORTB.4=1; delay_us(13); PORTB.7=0; PORTB.4=0; } void proverka_otveta (void) { if (PIND.0<=0) { t1=1;PORTB.6=1; start_interrupt(); if (t2>=1) { t2=0;count--;PORTB.5=0; };//t2>=1 //}; // else {PORTB.6=0; } ; //PIND.0=0 if (PIND.1<=0) { t2=1; PORTB.5=1; start_interrupt(); if (t1>=1) { t1=0;count++;PORTB.6=0; }; //t1>=0 }; //else {PORTB.5=0;};//PIND.1=0 } //void proverka_otveta void pausa (void) { delay_us(300); } // Declare your global variables here char i; void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port A initialization // Func2=In Func1=In Func0=In // State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0xFF; // Port D initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTD=0x7F; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0; //Делитель частоты -(0-остан)2- 8; 3 -64 TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // Interrupt on any change on pins PCINT0-7: Off GIMSK=0x00; MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x80; // Universal Serial Interface initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; // Global enable interrupts #asm("sei") while (1) { // Place your code here for (i=1;i<=k_piks;i++) { make_paket(); }; //for k_piks proverka_otveta(); view_count(); pausa(); } } Порты B.7 и В.4 - это управление импульсами на ИК диоды-излучатели. Сигналы с 2-х TSOP1736 считываются на портах PORTD.0 и PORTD.1 Если сигнал есть(т.е на выходе логический "0", то устанавливается флаг активации датчика (t1 или t2 соответсвенно). Далее идет обработка этих флагов активации. Как схему выложить, не знаю, подскажите.