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
Аватара пользователя
Raf00084
 
Сообщения: 50
Зарегистрирован: 19 янв 2009, 16:18
Откуда: Хренсбург

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

Сообщение Duhas » 12 фев 2009, 15:57

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

афтару: будете писать на асме - с удовольствием помогу, Си не моя стезя...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

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
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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
Аватара пользователя
Raf00084
 
Сообщения: 50
Зарегистрирован: 19 янв 2009, 16:18
Откуда: Хренсбург

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

Сообщение EdGull » 12 фев 2009, 17:36

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

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

Сообщение avr123.nm.ru » 12 фев 2009, 17:44

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

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


Хорошо бы этот топик прицепить туда - viewtopic.php?f=2&t=1070&start=870
так он не про роботов а чисто про программирование МК.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение =DeaD= » 12 фев 2009, 17:53

Вопрос топикстартеру - проблема то в чем? Таймер не работает как надо или что? ИМХО надо как-то делить проблему, а не всё в кучу :wink:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение yak-40 » 12 фев 2009, 18:58

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

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

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

Сообщение Raf00084 » 12 фев 2009, 19:03

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

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

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

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

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

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

Сообщение avr123.nm.ru » 12 фев 2009, 19:03

Осциллограф, это такая фигна которая у всех валяется на кухне ... там же где и соль и сахар. У соседей можно попросить если закончился.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение yak-40 » 12 фев 2009, 19:09

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

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

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

Сообщение RoboTok » 12 фев 2009, 19:12

А я по жизни в слепую делаю схемы все и некоторые даже работают...
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

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

Сообщение avr123.nm.ru » 12 фев 2009, 19:14

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

Наверняка !

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


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

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

ПАФТАРЯЮ ! сделайте прогу мигающую светодиодом и зашейте в МК и замерьте частоту мигания. Либо частоту выведите доступную для вашего прибора на ножку МК.
Вложения
222.png
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Raf00084 » 12 фев 2009, 20:16

Лано млин щас сижу распая все что до этого спаял.
Буду собирать по дш, потом посмотрю прогу попробую без таймера, на паузах как avr123 советует, вообще спасибо всем, что так быстро откликнулись, чуть позже выложу фотки моего чуда, и сообщю о результатах кому интересно
:crazy:
Аватара пользователя
Raf00084
 
Сообщения: 50
Зарегистрирован: 19 янв 2009, 16:18
Откуда: Хренсбург

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

Сообщение avr123.nm.ru » 12 фев 2009, 20:29

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

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

Можно и ТСОП-ом рульить паузами, но на таймере пограмотней конечно.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

След.

Вернуться в Новичкам или основы основ роботостроения.

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

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

cron