roboforum.ru

Технический форум по робототехнике.

Помогите с программой TSOP

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Помогите с программой TSOP

Сообщение DiNoZawR » 29 сен 2009, 20:19

Все! Разобрался!
У меня мега Atmega8-16PU !!!
Там же свой кварц на 16!
Увеличил в таймере
Код: Выделить всёРазвернуть
void wait(void){
TCNT1=0;
while(TCNT1<240){};
}


вроде реагировать начал. Только настроить надо.
Спасибо всем)
E=mc2
Аватара пользователя
DiNoZawR
 
Сообщения: 25
Зарегистрирован: 18 дек 2008, 09:54
Откуда: Москва

Re: Помогите с программой TSOP

Сообщение EdGull » 29 сен 2009, 20:22

нет нам внутреннего кварца на 16МГц, максимум на 8Мгц
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Помогите с программой TSOP

Сообщение DiNoZawR » 29 сен 2009, 20:34

Хм.
Теперь другая проблема.
Кручу настройку диодов.
После какого-то момента приемник срабатывает сразу. Даже если препятствия нет.
Уменьшаю напряжение, не реагирует вообще...
E=mc2
Аватара пользователя
DiNoZawR
 
Сообщения: 25
Зарегистрирован: 18 дек 2008, 09:54
Откуда: Москва

Re: Помогите с программой TSOP

Сообщение repository » 29 сен 2009, 22:16

Вот как у меня проверяется (спер у rig, за что ему огромное спасибо):
Код: Выделить всёРазвернуть
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)    
   {
      // если препятствие
   }
}

Ik_time_detect_front = 17
repository
 
Сообщения: 260
Зарегистрирован: 29 окт 2008, 18:14
Откуда: Химки МО
прог. языки: Java

Re: Помогите с программой TSOP

Сообщение yak-40 » 29 сен 2009, 22:24

DiNoZawR писал(а):Там же свой кварц на 16!

Внутреннего кварца нет, есть внутренний калиброваный генератор мах 8 МГц.
DiNoZawR писал(а):После какого-то момента приемник срабатывает сразу. Даже если препятствия нет.
Уменьшаю напряжение, не реагирует вообще...

Возможно идёт подсветка ТСОП-а светодиодом. Обычно светодиод в непрозрачную трубочку устанавливают, или перегородкой отгораживают.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Помогите с программой TSOP

Сообщение DiNoZawR » 29 сен 2009, 23:29

Да я на диоды колпачки металлические одеваю и все равно. =(
Полный код программы. Проверьте пож.

Чтото с этим датчиком вообще неладное.
Хотел фотиком проверить, горят ли диоды. Он сработал несколько раз. один раз. Перед ним машу, рукой или зеркалом, ничего... %/
Вообще уже жалею что связался с ним :cry:
Код: Выделить всёРазвернуть
#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);
        }
};     

};
}
E=mc2
Аватара пользователя
DiNoZawR
 
Сообщения: 25
Зарегистрирован: 18 дек 2008, 09:54
Откуда: Москва

Re: Помогите с программой TSOP

Сообщение Yuraskas » 30 сен 2009, 06:09

А смотрели схему на робозоне http://robozone.su/2008/04/09/modul-ik-datchika-na-osnove-tsop2136.html, может стоит пока взять код оттуда? Или посмотреть на робоклубе http://parts.roboclub.ru/index.shtml?ik - там код на асме, но зато рабочий, только имя одной переменной подправить, а то АВР студия ругается, и пересчитать под свой кварц и частоту ТСОПа.
И еще, по какой схеме собирали датчик? Как ИК-диод расположен относительно ТСОПа? ИК-диод может засвечивать ТСОП даже задней частью...
Ты приснись ей, ангел белый, пусть ей будет хорошо...
Аватара пользователя
Yuraskas
 
Сообщения: 119
Зарегистрирован: 20 июл 2009, 13:59
Откуда: Канск

Re: Помогите с программой TSOP

Сообщение yak-40 » 30 сен 2009, 11:45

Светодиод с тсопом лучше так ориентировать:
.GIF
.GIF (5.09 КиБ) Просмотров: 1438
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Помогите с программой TSOP

Сообщение DiNoZawR » 30 сен 2009, 15:53

Убил контроллер :(
Поставил не те фьюзы.
А программатора параллельного нету.
Где-то видел статью по реанимацию с помощью второй меги но найти не могу(
E=mc2
Аватара пользователя
DiNoZawR
 
Сообщения: 25
Зарегистрирован: 18 дек 2008, 09:54
Откуда: Москва

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3