roboforum.ru

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

ИК-бампер, нужен пример на С

ИК-бампер, нужен пример на С

FireFly » 24 июл 2005, 00:22

Доброго времени суток коллеги :D

Тэк сказать изготовил своего первого "робота" - гусеницами уже крутит :D, но как выразилась жена - слепоглухонемотупой инвалид получился :D  :D  :D Глазки одним словом делаем, но как то не могу себе представить формирование импульсов для ИК-бампера.

Просьба к гуру - для примера, хотелось бы увидеть код, формирующий сигнал по 10 испульсов с частотой 36кГц с задержкой между пачками 100 мкс - ну чего то не получается, мож не то чтото делаю :cry:
камень - ATmega8L
кварц - 4мГц
юзаю CodeVision
Код нужен на С

Буду безмерно благодарен за инфу :D
Последний раз редактировалось FireFly 06 авг 2005, 15:01, всего редактировалось 1 раз.

nest » 25 июл 2005, 11:22

ATinny12 , правда на ассемблере ... , но это даже лучше

линк : http://parts.roboclub.ru/index.shtml?ik

FireFly » 25 июл 2005, 22:53

Гм, спасибо, но это мне знакомо, но не то - мне именно на С-шнике надо :cry:

setar » 26 июл 2005, 15:07

сам на сях не пишу, а они разве не делает вставки АСМ ?

FireFly » 26 июл 2005, 23:37

Гм, честноо гря не знаю, мож и делает, но все :? таки интересно ка оно на С реализовано могет быть (я так думаю это не только мне интересно)

FireFly » 27 июл 2005, 16:16

Фиг с ним с С-шником :cry:  пример кода на ассемблере тьо же покатит (тот который для тини12 не то)

North » 27 июл 2005, 18:06

У меня есть рабочий вариант на Algorithm Builder-е. Я его переделал на С (IAR)  так сказать в демонстрационных целях. Так что пример чисто ознакомительный.

/********************************************************************************
* Старший бит счётчика InpulseCounter служит в качестве флага идет ли пачка или *
* нет. Пачка состоит из десяти импульсов. При каждом переполнении светодиод *
* переключается, следовательно счётчик должен досчитать до 10*2=20 плюс (точнее *
* OR) флаг пачки (старший бит): *
* 0x14 OR 0x80 = 0x94 *
* Время паузы между пачками равно: *
* 1/(6000000/(0x7F*(0xFFFF-0xFFB8)))= *
* 1/(6000000/((0x7F*0x47))=1/(6000000/9017)=1/665,4=0,0015=1.5 мс. *
* В расчётах правда не уверен. Если надо проверяйте сами ;) *
********************************************************************************/

#define CPUFrequency=6000000;

unsigned char ImpulseCounter;

#pragma vector=Timer1OverflowInterruptVector
__interrupt void IRTimerInterrupt(void)
{
 ImpulseCounter++;
 if (ImpulseCounter>0x80) //Если старший бит установлен, то:
 {
   if (ImpulseCounter==0x94) //если ImpulseCounter досчитал до 0х94-х
   {
     ImpulseCounter=0; //то пачка закончилась. Обнуляем счётчик
     PORTD4=1; //и гасим светодиод
   }
   else
     PORTD^=0x10; //если не закончилась, то переключаем светодиод
 }
 else //если старший бит сброшен, то
   PORTD4=1; //на всякий случай гасим светодиод
 TCNT1H=0xFF;
 TCNT1L=0xB8; //Заводим таймер на 65464, чтобы
} //частота переполнения была равна 36 кГц

Примерно так.

FireFly » 27 июл 2005, 21:27

ОК, сенкс бошльшой - бум пробовать :D

FireFly » 06 авг 2005, 11:51

Мдя, мож я тупой такой, только нифига так и не разобрался :cry:

неужели ни кто ничего подобного на Code Vision не делал?
тема опять получила актуальность

gambit6 » 17 авг 2005, 01:24

Мой совет, установи несколько компиляторов. И попробуй AVRedit 3.5

FireFly » 17 авг 2005, 23:55

ороче мыкался я мыкался - плюнул и изготовил генератор в "железе" :D  - заодно память и ногу на проце освободил :D

кстати пашет отлично :twisted:

setar » 18 авг 2005, 10:59

FireFly писал(а):ороче мыкался я мыкался - плюнул и изготовил генератор в "железе" :D  - заодно память и ногу на проце освободил :D

кстати пашет отлично :twisted:

:wink: не спортивно
к тому же опыт! так и не приобретён

FireFly » 19 авг 2005, 00:29

Дык, я больше по "железу" - схемку там разработать спаять и отладить, а вот в программировании.... слабовато :D  ничего, подтянемся, начало стал быть положено - железо ездиет и машет крылышками (шучу) 8)  теперь и программами займемся - благо есть на чем пробовать, а с таймерами и формированием различных частот все равно столкнуться придется - вот тада бум рыть копытом :D  ща пока цель стоит - железом обрасти

North » 26 авг 2005, 18:44

Блин, ну на тебе ещё вариант на Algorithm Builder-e, этот точно рабочий, так сказать боевой. Будут вопросы - задавай.
Вложения
Timer1Overflow.rar
(3.04 КиБ) Скачиваний: 179


cron
Rambler\'s Top100 Mail.ru counter