roboforum.ru

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

МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

Raf00084 » 12 фев 2009, 15:53

Добрый лень Всем, вот недавно решил заняться изучением С для МК, пролез форум и пришла идея собрать робота.Купил ATmega32, собрал если так можно сказать программатор на 5-ти проводках, по примеру курса avr123.nm.ru (БОЛЬШОЕ ЕМУ СПАСИБО ЗА ЭТО), попробовал задачки на живом МК, вроде как после экспирементов все осталось целое включая МК :) , ну решил надо идти дальше составил ТЗ по которому буду работать. Начал с простого собрал базу из двух китайских игрушек, подключил L293D проверил, все работает как надо, продолжил далее изучать решил оснастить его ИК бамперами, просмотрел много тем (Roboclub и этот форум) начал собирать, решил что он будет работать по прерыванию по переполнению таймера Т0 и тут ВСЕ И НАЧАЛОСЬ, так как хочу разобраться сам что где и как там работает начал писать прогу, забыл написать что скачал codeVisionAVR, Proteus7
ВОТ ЧТО ПОЛУЧИЛОСЬ.
ОЧЕНЬ ПРОШУ НЕ ТЫКАТЬ ССЫЛКАМИ НА ПОДОБНЫЕ ТЕМЫ. Апо человечиски прошу помочь разобратся в чем ошибки. т.к уже второй день и на работе нармально не работается и спится плохо все думаю и думаю перепробовал разные варианты
Программа написаная мной первая поэтому еще прошу посоветовать как можно ее улудшить или исправить!
СИЛЬНО НЕ РУГАЙТЕ :pardon:
ATmega работает на частоте 8 MHz.
Код: Выделить всёРазвернуть
#include <mega32.h>
char t1=20; // количество импульсов в пачке
char t2=50; // пауза между пачками импульсов 50
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)// прерывание по переполнению таймера 0
{
// Reinitialize Timer 0 value
TCNT0=0x9B; // присваиваем регистру число с которого ему надо начинать считать
t1--;// вычетаем из переменной t1 единицу
// Place your code here
while (t1==0){ //пока t1 равно 0 делаем то что в скобках

t2--;// вычетаем из переменной t2 единицу
if (t2==0){ // если переменная t2 равна 0 то делаем то что в скобках
t1=20;
t2=50;

}

} // если переменная t1 равна 0 то ждем
// если переменная t1 не равна 0 то делаем то что в скобказ (инвертируем PORTA.0)

PORTA^=0x01;
}

// Declare your global variables here

void main(void)
{

PORTA=0x05;
DDRA=0x05;

PORTB=0x00;
DDRB=0x00;


PORTC=0x00;
DDRC=0x00;


PORTD=0x00;
DDRD=0x00;


TCCR0=0x01;
TCNT0=0x9B;
OCR0=0x00;


TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

MCUCR=0x00;
MCUCSR=0x00;

TIMSK=0x01;

ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
      {
if(PINA.1) {
PORTA.2=1;}
else {PORTA.2=0}     // Place your code here

      };
}

к PA.0 подключен ИК диод
PA.1 подключен TSOP 1736
PA.2 простой св диод для контроля за работой тсопа
в протеусе все протестил за 10 ms 34 колебания, в реале собираю дид моргает как сволоч эфекта ноль TSOP выдает 0 и пипец, я думал что засвечивается облепил ик диод пластелином весь не помогает,
частоту на ножке PA.1 расчитовал следующим образом (8000000/36000/2=111,1 получае число на котором таймер должен прирыватся 256-111=145 число с которого начинает считать таймер, у меня в программе 155 потому, что в протеусе пытался подогнат частоту.

Пока писал подумал может надо на TSOP обвеску по питанию повесить ну это я сегодня попробую а вообще смущают меня мои вычесления по поводу частоты на PA.1

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

Duhas » 12 фев 2009, 15:57

вот, еще один человек, которого программировать курс не научил, но заставил что-то сделать, ибо стандартные задачки заработали...

афтару: будете писать на асме - с удовольствием помогу, Си не моя стезя...

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

avr123.nm.ru » 12 фев 2009, 16:04

Советую приложить архив с проектами и фалом текстовым с описанием проблемы. И что нужно получить конкретно.

Пока проверьте на какой реально чатоте работает ваш МК - просто напишите в CVAVR мигалку светодиодом на 1 секунду используя delay_ms(1000); и зашейте и посмотрите.

Сигналы низкочастотные с МК можно подавать через резистор 50-100 кОм на звуковой вход ПК и как в осцилографе их видеть в звуковом редакторе или спец проге которая есть в низу библиотеки по ссылке с заглавной странички курса.

t1 t2 - в курсе я рекомендую называть переменные ОСМЫСЛЕНЫМИ словами.

char t1=20; // количество импульсов в пачке

назовите например:

char pulses_in_pak = 20; // количество импульсов в пачке

или impulsov_v_pachke

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

Raf00084 » 12 фев 2009, 17:30

Ну давайте перейдем на ты, если не возрожаете. :)
В конечном итоге я хочу получить ИК бампер работающий на программе написаной мною лично и так как я захочу иначе не вижу смысла говорить что я пытаюсь изучить С для МК. :crazy:
Задумка была такой есть ИК диод который должен посылать пачки примерно 5 раз по 10-15 импульсов с перерывом 5-10 тактов, если на TSOPE появляется низкий уровень программа переходит в обработчик прерывания по данному сигналу от опрелделенного датчика их будет 4-ре подключенные к входам INT1-4, и выполнят указаные в обработчике действия.
Если вы имеете ввиду под словом архив (проект в CVAVR) то прикрепляю его, но там не все, чтото дописано мной в процессе написания первого сообщения. Но принцип я работы я указал в двух сообщениях подробно.
Проц работает на внутреннем генераторе 8 МГц, так я его запрограммировал фьюзами.
на счт переменных я помню, что в курсе вы говорили называть их осмысленно но т.как это моя проба и программу я пишу только для ИК бампера я не стал заморачиватся с название, но в будующем когда будет писатся программа для всего робота я сделаю так как вы советуете.
Просто я решил написать программы для разных устроиств по отдельности а потом скомпановать ее в единое целое!
На данный момент меня терзаю сомнения по поводу правильного расчета частоты работы таймера0.
У меня имеется прибор который может мерить частоту до 20 КГц но когда я им мерил уровень на PA.1 он почемуто :( ничего непоказывал!
ВНИМАНИЕ ВОПРОСЫ
1. Правильно ли я расчитал частоту работы таймера
2. Правильно ли я написал программу которая позволяет выдавать сигнал с определенной частотой и количеством импульсов.
3. Правильно ли будет подключить TSOP как говорится в ДШ или нет ( просто в форуме каждый советует что-то поменять)
Пока вопросов больше нет
СПАСИБО ЗА ОТВЕТЫ!!!! :good:

Добавлено спустя 7 минут 30 секунд:
Во вложении проект CVAVR и маленькая схемка на протеусе
Вложения
бампер.rar
ИК БАмпер
(61.04 КиБ) Скачиваний: 23

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

EdGull » 12 фев 2009, 17:36

мега какая?
делитель отключил?

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

avr123.nm.ru » 12 фев 2009, 17:44

EdGull писал(а):мега какая?

первая строка топика !
Raf00084 писал(а): Купил ATmega32


Хорошо бы этот топик прицепить туда - viewtopic.php?f=2&t=1070&start=870
так он не про роботов а чисто про программирование МК.

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

=DeaD= » 12 фев 2009, 17:53

Вопрос топикстартеру - проблема то в чем? Таймер не работает как надо или что? ИМХО надо как-то делить проблему, а не всё в кучу :wink:

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

yak-40 » 12 фев 2009, 18:58

Raf00084 писал(а):1. Правильно ли я расчитал частоту работы таймера
2. Правильно ли я написал программу которая позволяет выдавать сигнал с определенной частотой и количеством импульсов.

Легко проверяется осцилографом :)

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

Raf00084 » 12 фев 2009, 19:03

yak-40 писал(а):
Raf00084 писал(а):1. Правильно ли я расчитал частоту работы таймера
2. Правильно ли я написал программу которая позволяет выдавать сигнал с определенной частотой и количеством импульсов.

Легко проверяется осцилографом :)

Еслибы он был я тогда незадовал вопросов по поводу правильности расчетов по частоте

Добавлено спустя 1 минуту 50 секунд:
=DeaD= писал(а):Вопрос топикстартеру - проблема то в чем? Таймер не работает как надо или что? ИМХО надо как-то делить проблему, а не всё в кучу :wink:

ответ на ваш вопрос выше в моем предидушем топике
ВНИМАНИЕ ВОПРОСЫ
1. Правильно ли я расчитал частоту работы таймера
2. Правильно ли я написал программу которая позволяет выдавать сигнал с определенной частотой и количеством импульсов.
3. Правильно ли будет подключить TSOP как говорится в ДШ или нет ( просто в форуме каждый советует что-то поменять)
Пока вопросов больше нет

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

avr123.nm.ru » 12 фев 2009, 19:03

Осциллограф, это такая фигна которая у всех валяется на кухне ... там же где и соль и сахар. У соседей можно попросить если закончился.

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

yak-40 » 12 фев 2009, 19:09

avr123.nm.ru писал(а):Осциллограф, это такая фигна которая у всех валяется на кухне ... там же где и соль и сахар. У соседей можно попросить если закончился.

Не знаю как другие, а я без осцилографа как без глаз :D

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

RoboTok » 12 фев 2009, 19:12

А я по жизни в слепую делаю схемы все и некоторые даже работают...

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

avr123.nm.ru » 12 фев 2009, 19:14

Raf00084 писал(а):3. Правильно ли будет подключить TSOP как говорится в ДШ

Наверняка !

Raf00084 писал(а):1. Правильно ли я расчитал частоту работы таймера
2. Правильно ли я написал программу которая позволяет выдавать сигнал с определенной частотой и количеством импульсов.


В PROTEUS прекрасно видно и можно еще увеличить и посчитать частоту. Первый импульс коротковат вроде.

Скорей всего ваш МК работает не на той частоте.

ПАФТАРЯЮ ! сделайте прогу мигающую светодиодом и зашейте в МК и замерьте частоту мигания. Либо частоту выведите доступную для вашего прибора на ножку МК.
Вложения
222.png

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

Raf00084 » 12 фев 2009, 20:16

Лано млин щас сижу распая все что до этого спаял.
Буду собирать по дш, потом посмотрю прогу попробую без таймера, на паузах как avr123 советует, вообще спасибо всем, что так быстро откликнулись, чуть позже выложу фотки моего чуда, и сообщю о результатах кому интересно
:crazy:

Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ

avr123.nm.ru » 12 фев 2009, 20:29

Вы меня не поняли !

На паузах я советую сделать тестовую прошивку чтоб проверить на какой реально частоте работает ваш МК !

Можно и ТСОП-ом рульить паузами, но на таймере пограмотней конечно.


Rambler\'s Top100 Mail.ru counter