roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Серво машинки, Atmega16
СообщениеДобавлено: 03 янв 2011, 03:39 
Не в сети

Зарегистрирован: 07 июл 2010, 23:17
Сообщения: 28
Откуда: Одесса
прог. языки: C\C++, Delphi,
Доброго времени суток!
Вопрос мучает уже третий день, не могу понять что не так.
У меня есть atmega16, сервомашинка HX12K, использую восьмибитный таймер(0), внешний кварц на 12Мгц.
В CVAVR выбрал свой контроллер, выставил частоту вн. кварца, выбрал таймер 0, делитель - 1(12 000 кГц), по переполнению.
Итого выходит 1/12*256 = 21.33333333333333 мкс (частота 1 прерывания таймера)
Чтобы управлять серво нужно ждать 20 мс и затем от 0.8 до 2.3 можно давать импульс
0.0213333333333333 мс = 21.33333333333333 мкс
20 мс / 0.0213333333333333 мс = 937.5000000000015 (это число прерываний таймера отсчитывающее 20 мс)
К примеру я хочу подождать 1.55 мс и поставить серво по центру.
1.55 мс / = 0.0213333333333333 мс = 72.65625000000011

Итак получается программа:

...
volatile unsigned int cnt=0;
volatile unsigned char state=0;
ISR(TIMER0_OVF_vect)
{
if ((state == 0) && (cnt > 937))//ждем 20мс
{
cnt=0;
state=1;
PORTB=0xFF;
}
if ((state == 1) && (cnt > 72))//импульс 1.55 мс
{
cnt=0;
state=0;
PORTB=0;
}
cnt++;
}
...
PORTB=0;//изначально 0
DDRB=0xFF;//на выход

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

TIMSK=0x01;
sei();
while(!0)
{
}
...

В итоге, если серво машинка отключена до запуска МК, то после ее подключение к работающему МК она дергается в одну из сторон и замолкает. Если же МК запускается уже с подключенной серво то никакой реакции у сервы нет.
Подскажите, что я не так считаю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 03 янв 2011, 10:42 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 03 янв 2011, 10:49 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Что с питанием?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 03 янв 2011, 11:41 
Не в сети
отсылающий читать курс
Аватара пользователя

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

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 03 янв 2011, 11:56 
Не в сети

Зарегистрирован: 07 июл 2010, 23:17
Сообщения: 28
Откуда: Одесса
прог. языки: C\C++, Delphi,
EdGull писал(а):
а фусибиты переключил на кварц?

SUT_CKSEL = Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms

=DeaD= писал(а):
Что с питанием?

оранжевый на ножку МК, красный к +5, коричневый -


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 03 янв 2011, 12:41 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
попробуйте питать серву от другого источника питания.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 02:44 
Не в сети

Зарегистрирован: 07 июл 2010, 23:17
Сообщения: 28
Откуда: Одесса
прог. языки: C\C++, Delphi,
avr123.nm.ru, cпасибо!
Запитал серву от другого источника, теперь:
Уже удерживают своё положение, но серво машинка S-101 уходит в одно из крайних положений, а HX12K дергается постоянно :(

Не знаю что делать.
Подскажите, управляться должно каким образом?
а) 20мс ждем, импульс 0.8-2.3
б) импульс 0.8-2.3 и ждем (20-(0.8-2.3))мс - т.е. заполняем после едениц нулями до 20 мс?

Может у кого есть исходный код таймера на С где можно будет понять как управляется вс это дело?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 10:24 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 12:54 
Не в сети

Зарегистрирован: 23 окт 2010, 19:13
Сообщения: 38
попробуйте перейти на arduino, и не тратить время на простые вещи. Удовольствий массу получите, это я вам из личного опыта говорю! Я сам прошел через простые микроконтроллеры, и этот вечный гимор с таймерами, с интерфейсами, тратит кучу времени и отбивает желание что-либо делать дальше.

Если преследуете цель изучить микроконтроллер, то просто внимательно читайте мануалы. А если хотите что-либо изобретать и двигаться дальше, то см. выше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 14:21 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Elandar писал(а):
Подскажите, управляться должно каким образом?
Каждые 20 милиСек ( пойдет от 17 до 23 - точность не требуется ) надо делать импульс "1" длительностью от 1000 до 2000 мкС.

Elandar писал(а):
Может у кого есть исходный код таймера на С где можно будет понять как управляется вс это дело?


Есть конечно. Задача 13 курса по AVR - http://proavr.narod.ru/z13.htm

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 14:52 
Не в сети

Зарегистрирован: 07 июл 2010, 23:17
Сообщения: 28
Откуда: Одесса
прог. языки: C\C++, Delphi,
true писал(а):
попробуйте перейти на arduino, и не тратить время на простые вещи. Удовольствий массу получите, это я вам из личного опыта говорю! Я сам прошел через простые микроконтроллеры, и этот вечный гимор с таймерами, с интерфейсами, тратит кучу времени и отбивает желание что-либо делать дальше.

Если преследуете цель изучить микроконтроллер, то просто внимательно читайте мануалы. А если хотите что-либо изобретать и двигаться дальше, то см. выше.

Мне нужна плата которая управляет 20 сервами. Знаю про всякие готовые, но уже взялся сам, а бросать не хочу.
А больш от этой платы мне ничего не нужно, дальше в ARM полезу.

=DeaD= писал(а):
Повторю свой вопрос - от чего питаете серву?

От адаптра на 12V 2.08А 25W MAX, понижаю это дело до 5V и на серву.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 15:04 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 15:11 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 15:27 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Серво машинки, Atmega16
СообщениеДобавлено: 04 янв 2011, 17:35 
Не в сети

Зарегистрирован: 07 июл 2010, 23:17
Сообщения: 28
Откуда: Одесса
прог. языки: C\C++, Delphi,
EdGull писал(а):
походу 7805 да еще и L :D

NY7805C 0334
:D
Что не так?)


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

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


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

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


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

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