roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 11:40

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 15:53 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2009, 16:18
Сообщения: 50
Откуда: Хренсбург
Добрый лень Всем, вот недавно решил заняться изучением С для МК, пролез форум и пришла идея собрать робота.Купил 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: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 15:57 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
вот, еще один человек, которого программировать курс не научил, но заставил что-то сделать, ибо стандартные задачки заработали...

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

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 16:04 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Советую приложить архив с проектами и фалом текстовым с описанием проблемы. И что нужно получить конкретно.

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

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

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

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

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

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

или impulsov_v_pachke


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 17:30 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2009, 16:18
Сообщения: 50
Откуда: Хренсбург
Ну давайте перейдем на ты, если не возрожаете. :)
В конечном итоге я хочу получить ИК бампер работающий на программе написаной мною лично и так как я захочу иначе не вижу смысла говорить что я пытаюсь изучить С для МК. :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: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 17:36 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 17:44 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
EdGull писал(а):
мега какая?

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


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 17:53 
Не в сети
Аватара пользователя

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 18:58 
Не в сети
Аватара пользователя

Зарегистрирован: 23 окт 2007, 22:03
Сообщения: 3037
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец
Raf00084 писал(а):
1. Правильно ли я расчитал частоту работы таймера
2. Правильно ли я написал программу которая позволяет выдавать сигнал с определенной частотой и количеством импульсов.

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

_________________
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 19:03 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2009, 16:18
Сообщения: 50
Откуда: Хренсбург
yak-40 писал(а):
Raf00084 писал(а):
1. Правильно ли я расчитал частоту работы таймера
2. Правильно ли я написал программу которая позволяет выдавать сигнал с определенной частотой и количеством импульсов.

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 19:03 
Не в сети
отсылающий читать курс
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 19:09 
Не в сети
Аватара пользователя

Зарегистрирован: 23 окт 2007, 22:03
Сообщения: 3037
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец
avr123.nm.ru писал(а):
Осциллограф, это такая фигна которая у всех валяется на кухне ... там же где и соль и сахар. У соседей можно попросить если закончился.

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

_________________
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 19:12 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 19:14 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Raf00084 писал(а):
3. Правильно ли будет подключить TSOP как говорится в ДШ

Наверняка !

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


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

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

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


Вложения:
222.png
222.png [ 88.67 КиБ | Просмотров: 1611 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 20:16 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МОЙ ПЕРВЫЙ РОБОТ!!! ПРОШУ ПОМОЩИ
СообщениеДобавлено: 12 фев 2009, 20:29 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Вы меня не поняли !

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO