roboforum.ru

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

Управление Сервами в WinAvr

avr123.nm.ru » 13 авг 2006, 23:40

Lirzman писал(а): я вот никогда бы не подумал что бит i в регистре SREG отвечает за прерывания всех таймеров при переполнении:shock:  :shock:  :shock:,

а в курсе этого не написано.


ВРАТЬ ТО ЗАЧЕМ ???

читать курс вы не обязаны, это дело сугубо добровольное

но если не читали ВНИМАТЕЛЬНО

то

НЕ ВРИТЕ !!!  :twisted:   что там этого НЕТ !

\\\\\\\\\

http://avr123.nm.ru/03.htm

в верху КРУПНО написано:

"Прерывания в AVR

Подробно описаны ниже на этой странице."

читая страницу идем ниже ...

и опять КРУПНО :

"В регистре SREG есть бит7 называется он " I "

Если этот бит равен "1" (установлен) то ГЛОБАЛЬНО разрешены прерывания - значит могут возникать разрешенные индивидуально прерывания.  

Если этот бит равен "0" (бит сброшен, очищен) то ГЛОБАЛЬНО запрещены прерывания  - значит любые события не вызывают прерывания программы.  "

далее разяснения и примеры для наглядного уяснения в симуляторе как работают прерывания и как они влияют друг на друга !

==========

ЗАЧЕМ  ВРАТЬ !!!

не хотите не читайте.

НО НЕ ВРИТЕ ПОЖАЛУЙСТА !

Lirzman » 13 авг 2006, 23:49

avr123.nm.ru писал(а):если не читали ВНИМАТЕЛЬНО

то

НЕ ВРИТЕ !!!  :twisted:  что там этого НЕТ

Извините, я вовсе не хотел вас так задеть, просто просмотрел,виноват.

ЗЫ Никогда не думал что простым постом ТАК можно разозлить человека   :shock: :shock: :shock:

Незря говорят "Словом можно убить"(себя) :D  :D  :D

avr123.nm.ru » 13 авг 2006, 23:53

Я не разозлился я просто призываю к коректности.

Легко ведь сказать "а, там этого нет ..."  вместо " я там этого не нашел"

ни кто ВОВСЕ не обязан читать скурпулезно курс, ну не нашли и ладно.

А когда говорят "там этого нет" - то мне конечно обидно, потому что не сказать о прерываниях в МК в курсе для начинающих это нонсенс.

Потом в интернете скажут "а я читал на одном форуме что в том курсе даже про прерывания не расказано !"

Lirzman » 14 авг 2006, 00:05

avr123.nm.ru писал(а):не читали внимательно не стоит говорить что там чего-то нет.

Больше не буду :wink:

Ещё пара вопросов:
1.Что делать если отдав таймеру команду считать,в ходе выполнения программы потребуется еще раз отсчитать время с помощью этого таймера?
Использовать еще один???  :shock:  :shock:  :shock:

2.Возможно ли что-бы процедура обработки прерывания принимала параметры??

avr123.nm.ru » 14 авг 2006, 00:54

Lirzman писал(а):2.Возможно ли что-бы процедура обработки прерывания принимала параметры??


по моему нет, но в ней доступны глобальные переменные.

Lirzman » 14 авг 2006, 01:01

avr123.nm.ru писал(а):но в ней доступны глобальные переменные.

Сенкс

Не подскажете диапазон управляющего импульса для сервы,
знаю что среднее положение = 1.5мс, а чему равны +90гр и -90гр.
Подзабыл :RTFM:

Сергей » 14 авг 2006, 02:02

Примерно от 0.7мс до 2.3мс. Хотя для большинства серв это точно должно быть.

Lirzman » 14 авг 2006, 02:06

HEEEEEEEELP:!::!::!::!::!:

Возникла ОГРОМНАЯ ПРОБЛЕМА

При использовании таймера КОЛОССАЛЬНО упала точность позиционирования.

Я высчитал что 1.5мс это 666Hz (1000/1.5=666.6666)

Но в симуляторе ОПЫТНЫМ ПУТЕМ привести серву в среднее положение удалось только импульсом в 2710.5(!!!С ПОЛОВИНОЙ!!!)Hz

При этих параметрах коэффициент деления частоты системного таймера равняется  :!::!:8:!::!:(TCCR=3)(TCNT0 = 170;)

Как такое возможно:?::?::?:

При этом серву ЗВЕРСКИ КОБАСИТ в промежутке от -1.0 до +1.8 градусов.

:!::!::!:ПОМОГИИИИТЕ:!::!::!:

ЗЫ Может это глюки у PROTEUSа???

Вот код:
Код: Выделить всёРазвернуть
//****************ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА***************************

void timer0_init(void)
{
TCCR0 = 0x00; //stop timer
TCNT0 = 170; //записать в регистр таймера число 3686400/8/170(x)
PORTD SET_B(7);
TIMSK SET_B(TOIE0);//Разрешение прерывания по переполнению таймера 0
SREG SET_B(7);//Бит i в регистре SREG включен(разрешить глобальные прерывания)
TCCR0 =0x03; //Старт таймера при делителе = 8
//Биты CS00 CS01 CS02
}
//**************ПРОЦЕДУРА ПЕРЕПОЛНЕНИЯ ТАЙМЕРА***********************
SIGNAL(SIG_OVERFLOW0)
{
PORTB CLR_B(gservo);//В ПРОТЕУСЕ загорелся соответствующий пин!!!!

}

//************ПРОЦЕДУРА ПОЗИЦИОНИРОВАНИЯ СЕРВЫ********************
void Pos(char servo,int angle)
{
N=angle;
PORTB SET_B(servo);
gservo=servo;
timer0_init();
//delaysa(N);
//PORTB CLR_B(servo);
delaysa(period);

}
Последний раз редактировалось Lirzman 14 авг 2006, 02:12, всего редактировалось 2 раз(а).

Сергей » 14 авг 2006, 02:08

Дай код если можешь.

Сергей » 14 авг 2006, 02:10

Ты так делал? сначала импульс от 0.7мс до 2.3мс потом задержка 20мс. Просто када значение задержки меньше 20мс бывает колбасит, знаю)

Lirzman » 14 авг 2006, 02:19

Фууууу :D
Ложная тревога :D
2Сергей ты меня выручил.
Забыл задержку в 20мс добавить:oops:
Че-то у меня уже мозги набекрень  :shock:
Пойду спать :arrow:

avr123.nm.ru » 14 авг 2006, 02:25

Lirzman писал(а):Не подскажете диапазон управляющего импульса для сервы,

знаю что среднее положение = 1.5мс, а чему равны +90гр и -90гр.


я думаю от 800 до 2100 для серы "хитек"  а для большинства от 700 - 2200 мкС

нужно смотреть спецификацию у производителей (RTFM),
а лучше живьем вертеть.  

Можно кстати в PROTEUS посмотреть сколько мкС.

avr123.nm.ru » 14 авг 2006, 02:26

Сергей писал(а):Примерно от 0.7мс до 2.3мс


не симметрично относительно 1.5

Сергей » 14 авг 2006, 02:28

avr123.nm.ru писал(а):
Сергей писал(а):Примерно от 0.7мс до 2.3мс


не симметрично относительно 1.5
Почему не симметрично? +- 0.8мс от центра.

avr123.nm.ru » 14 авг 2006, 03:26

вот в любимлм google.com (его панель у меня в браузер добавлена - это удобно!) набрал естетсвенно:  servo faq

и получил результат::
http://www.google.ru/search?sourceid=na ... =servo+faq

где 1-я сылка отличный FAQ по SERVO  "Генеральский"  :D
http://www.hitecrcd.com/Support/Faqs/Faq_Genservo_.htm
сигналы с диаграммами.

==========

решил еще поискать, набрал:  servo winavr source

и по первому линку нашел прекрасного 6 ногого робота на 14 сервах из фанеры !

The AutonomousRC crawling 6 legged robot with 14 RC servo
http://www.webx.dk/robot-crawler/robot-crawler.htm

Очень подробная конструкция.  + прекрасное VIDEO

исходников пока не нашел, где то на сайте наверно ...

но зато нашел хак "Sony Playstation" джойстик с исходником для WinAVR !

====

ну ладно, запрошу-ка так:   control servo winavr

http://www.google.ru/search?hl=ru&rls=G ... %D0%BA&lr=

смотрю ... 5-й результат:

Robot Store (HK) -- MIT Handyboard system, OOPIC, Dr Robot kits ...RS-Servo8 is a small pre-assembled R/C(Radio Control) servo controller, which has 16 R/C ... How to use WinAVR for Microrobot AVR Products(Eng).pdf(73KB) ...
http://www.robotstorehk.com/avr/avr-RS-SERVO8.html - 21k - Сохранено в кэше - Похожие страницы

открываю и нахожу контроллер на 16 servo и не смотря что это магазин - вижу в низу исходники для WinAVR ! одним файлом на многие их продукты - они перечислены слева.

Еще инструкция как быстро запустить WinAVR !

ИМХО через VMLAB всеравно удобней.

=======

вот вам и GOOGLE.com
Последний раз редактировалось avr123.nm.ru 14 авг 2006, 03:32, всего редактировалось 1 раз.


Rambler\'s Top100 Mail.ru counter