tsop1736 и int0

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
pierro
Открыл глаза
Сообщения: 66
Зарегистрирован: Вс фев 14, 2010 14:48:19
Откуда: Львов

tsop1736 и int0

Сообщение pierro »

Привет всем.

Прошу помощи или совета. Хочу сделать некий девайс, и управлять с помощью обычного пульта. Все как бы просто, и уже вдоль и в поперек обмусолено. Но проблема, с которой я столкнулся, какая то непонятная, но такое чувство - что очень тривиальная.

В схеме использую tsop1736 и attiny2313

tsop1736 подключил по схеме Изображение
out(signal) подал на int0 attiny2313. В теории - все должно работать. На практике - не работает. Не приходит сигнал прерывания от tsop.

Вот что накопал.

Со стороны tsop. Сам tsop1736 и схема на выходе дает где то 4.9 вольта. Если "тыкать в него пультом", то падает где то до 4.6 вольта (осциллографа пока нету).
Со стороны микроконтроллера. На выводе int0 есть 0 вольт. Если ним коснуться питания - прерывания приходит в

Код: Выделить всё

interrupt [EXT_INT0] void ext_int0_isr(void)
(смотрите код). Но если выход tsop1736 подключить к int0 микроконтроллера - ничего нету, и напряжение падает к нулю. И уже "тыкать пультом" бесполезно - напряжение не меняется.

Тип прерывания стоит Any change (но уже все перепробовал)
порт D стоит как у всех (хотя пробовал и другие варианты)
PORTD=0x00;
DDRD=0x7F;

attiny2313 от внутреннего генератора
В чем загвоздка, не могу понять. Перерыл пол интернета, никто с такой проблемой не сталкивался. Помогите кто чем может.

Спасибо. :beer:



Код такой

Код: Выделить всё

#include <tiny2313.h>
#include <stdio.h>
#include <delay.h>

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
     PORTD.4 =  !PORTD.4;
}

// Declare your global variables here

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=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;

    // Port D initialization
    PORTD=0x00;
    DDRD=0x7F;

    // 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;

    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Any change
    // INT1: Off
    // Interrupt on any change on pins PCINT0-7: Off
    GIMSK=0x40;
    MCUCR=0x01;
    EIFR=0x40;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x02;

    // 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)
    {
    };
}
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: tsop1736 и int0

Сообщение ibiza11 »

pierro писал(а):Со стороны микроконтроллера. На выводе int0 есть 0 вольт. Если ним коснуться питания - прерывания приходит
На ножке 0 Вольт или она висит в воздухе? Это как бы разные вещи.

бл***ть, так и есть....

Код: Выделить всё

    PORTD=0x00;
    DDRD=0x7F;
Руки бы вам оторвать.
в tiny2313 int0=pd2. Его нужно настроить на вход. Прочтите мою подпись \/
Ставим плюсы: )
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»