roboforum.ru

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

HELP! Прога для локатора..

HELP! Прога для локатора..

BobMarley » 09 апр 2006, 21:04

Народ, прошу помочь!
Делаю ИК локатор на ATtiny13

PB0, PB3 - входы 2-х TSOP1736
PB4, PB1 - выходы на ИК диоды
PB5, PB2 - подключаю к другому МК

Диоды мигают на частоте 36кГЦ, если ловит PB0 - на PB5 посылаю 1, если PB3 - на PB2 посылаю 1, иначе на них 0.

Скажите, возможно ли такое осуществить??
Буду оочень рад если поможете на сях написать (желательно с пояснениями :oops: )!
ПОМОЖЕМ НАЧИНАЮЩИМ!!!  :)

EdGull » 09 апр 2006, 21:35

Если все так запущенно, то почему не написать на васике, почему обязательно сразу на сях?

BobMarley » 09 апр 2006, 21:40

Я лишь прошу помочь..
Все когдато бывает в первый раз )
А си я просто знаю, и всякие компиляторы есть к нему..

Ну что, кто поможет?

Re: HELP! Прога для локатора..

avr123.nm.ru » 09 апр 2006, 22:35

BobMarley писал(а):если ловит PB0 - на PB5 посылаю 1, если PB3 - на PB2 посылаю 1, иначе на них 0.


я думаю тебе полезней самому написать - начинать именно с простого надо.

используй скелет:  

while(1){  

if  

 else

if  

 else

}

как - на стр. 5 курса и задача 1.

можно и с прерываниями сделать.

======

Заклинаю!  всегда используй Меги !

Re: HELP! Прога для локатора..

BobMarley » 09 апр 2006, 22:43

avr123.nm.ru писал(а):
я думаю тебе полезней самому написать - начинать именно с простого надо.

используй скелет:  

while(1){  

if  

 else

if  

 else

}

как - на стр. 5 курса и задача 1.

можно и с прерываниями сделать.


Я курс читал, и остался им очень доволен!
Значит можно таймер вообще не использывать? Просто работать с задержками?

avr123.nm.ru писал(а):Заклинаю!  всегда используй Меги !

Мегу для такой цели на мой взгляд рановато ставить.. Робот будет простейший - тини13 для 2-х ик радаров, а тини2313 основной..

BobMarley » 10 апр 2006, 07:56

Вот решил за основу взять машинку из робоклуба!
http://projects.roboclub.ru/index.shtml?attempt
Только возникли сложности.. :(
1) :arrow:
// таблица вероятностей для выбора направления движения
// исходя из текущего направления движения
unsigned char p[7][7] = {
{14, 43, 57, 71, 86, 93, 100},
{7, 43, 71, 100, 100, 100, 100},
{7, 50, 93, 100, 100, 100, 100},
{7, 50, 57, 100, 100, 100, 100},
{29, 29, 29, 29, 57, 79, 100},
{36, 36, 36, 36, 71, 93, 100},
{36, 36, 36, 36, 71, 79, 100},
};

Пишет не хватает "}"
2) :arrow:
case F:
   sbi(OUT, MOTOR_F);
   cbi(OUT, MOTOR_B);
   cbi(OUT, TURN_R);
   cbi(OUT, TURN_L);
break;


#define sbi(port,bit)  port |=  (1<<(bit))
#define cbi(port,bit)  port &= ~(1<<(bit))
Прописал в начале определение sbi, cbi. При компиляции все биты (MOTOR_F, MOTOR_B....) называет undefined symbol 'PB0' и так все.. В чем дело? :?:  HELP!
З.Ы. Компилятор CodeVisionAVR

Tracer » 10 апр 2006, 09:36

1. Правильно пишет убери запятую в последней строке инициализации переменных
2. подключи соответствующий файл заголовка где описаны PB0

Re: HELP! Прога для локатора..

avr123.nm.ru » 10 апр 2006, 11:17

BobMarley писал(а):Я курс читал, и остался им очень доволен!

Значит можно таймер вообще не использывать?

Просто работать с задержками?


я задержек не предлагал!  Задержки это delay например.

if  else  - это именно проверка условий которые вы дали в первом посте и действие по результату!

BobMarley писал(а):
avr123.nm.ru писал(а):Заклинаю!  всегда используй Меги !


Мегу для такой цели на мой взгляд рановато ставить..

Робот будет простейший - тини13 для 2-х ик радаров, а тини2313 основной..


Ну дык...  

ОДНА мега8  попроще ДВУХ МК то будет  - ИМХО конечно.

BobMarley » 10 апр 2006, 11:30

Tracer писал(а):1. Правильно пишет убери запятую в последней строке инициализации переменных

Пасиб, заработало!
Tracer писал(а):2. подключи соответствующий файл заголовка где описаны PB0

А что подключить??
#include <90s2313.h>
#include <io.h>
#include <stdlib.h>
вот это подключено..
я CodeWizardAVR использовал..

BobMarley » 10 апр 2006, 11:59

2 ALL !
Если не сложно помочь..

CodeWizardAVR сделал "болванку"
Добавил
#define sbi(port,bit)  port |=  (1<<(bit))
#define cbi(port,bit)  port &= ~(1<<(bit))

И далее при записи "sbi(PORTB, PB0)" пишет undefined symbol 'PB0' !!!
HELP!

avr123.nm.ru » 10 апр 2006, 12:08

BobMarley писал(а):я CodeWizardAVR использовал..


вот это очень правильно - 5 баллов!

BobMarley » 10 апр 2006, 12:10

avr123.nm.ru писал(а):вот это очень правильно - 5 баллов!

Да, сомому нравицца :D
Ответь плз на пост перед твоим! Оч прошу..

BobMarley » 10 апр 2006, 13:46

Еще вопросик есть!

У меня есть МЕГА8, timer0 = 36kHZ (настроил уже), хочу сделать процедуру, которая выдаст на PB0 пачку из 10 импульсов с частотой 36kHZ, используя этот таймер! Напишите пожалуста на сях (если можно - с пояснениями)! Это же для вас халява)) Не поленитесь уделить 3 мин новичку :)

Только без прерываний - просто отдельная процедура..!!!

Tracer » 10 апр 2006, 14:16

BobMarley писал(а):2 ALL !
Если не сложно помочь..

CodeWizardAVR сделал "болванку"
Добавил
#define sbi(port,bit)  port |=  (1<<(bit))
#define cbi(port,bit)  port &= ~(1<<(bit))

И далее при записи "sbi(PORTB, PB0)" пишет undefined symbol 'PB0' !!!
HELP!


Точный ответ дать не могу тк пишу на WinAVR но соображения следующие.
1. #define должны стоять после всех #include

2.В перечисленных хедерах наверняка должно быть описание PB0
если всеравно не работает то проверь может там не цифра ноль а буква "О".

3.Или решение "В ЛОБ" :twisted:

напиши свое определение #define PB0 0

avr123.nm.ru » 10 апр 2006, 16:37

BobMarley писал(а):Ответь плз на пост перед твоим! Оч прошу..


отвечаю с лева каждого моего поста !

конкретно по ТОМУ вопросу смотри задачу 1

-> Упражнения - задачи по курсу AVR


Rambler\'s Top100 Mail.ru counter