роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  


 Страниц (17): В начало « ... 9 10 11 12 13 14 15 [16] 17 »   

> Без описания
nest Администратор
Отправлено: 12 Января, 2011 - 21:05:25
Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  





Никита пишет:
как серво подключить к роботу на atmega8?
расскажите сразу вашу задачу. что вы будете сервой делать. Какие ресурсы позволяется задействовать (таймер, ШИМ, прерывания или что то ещё)
От этого зависит, как формировать ШИМ для сервы: програмно или аппаратно.
 
 Top
Никита
Отправлено: 12 Января, 2011 - 21:46:41
Post Id



Главнокомандующий


Сообщений всего: 203
Дата рег-ции: Нояб. 2009  





или хотя бы просто управлять ими как нибудь?
 
 Top
nest Администратор
Отправлено: 12 Января, 2011 - 22:00:32
Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  





Никита пишет:
или хотя бы просто управлять ими как нибудь?

Самое простое управление сервой
 
 Top
Никита
Отправлено: 13 Января, 2011 - 12:05:07
Post Id



Главнокомандующий


Сообщений всего: 203
Дата рег-ции: Нояб. 2009  





nest, Да сам вот не знаю Улыбка . Просто подвернулись мне 8серв за 1125 руб. вот думаю брать или не брать. Может из них шасси сделать для робота и arm-робота. Сам не знаю!!?? Вот спрашиваю как ими можно будет управлять! Улыбка
 
 Top
mihail
Отправлено: 13 Января, 2011 - 16:36:48
Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  





http://easyelectronics.ru/upravl...rvomashinok.html
 
 Top
kalexi
Отправлено: 31 Января, 2011 - 18:03:31
Post Id


Рядовой


Сообщений всего: 6
Дата рег-ции: Нояб. 2010  





Привет! Не могу найти хорошего примера, где бы объяснялось как программируется ШИМ (только код) и как выбирается таймер. Посоветуйте статью или исходник.

Вообще надо сделать генератор прямоугольных волн в слышимом звуковом диапазоне на ATtiny13.

(Отредактировано автором: 02 Февраля, 2011 - 12:48:24)

 
 Top
zatmenie
Отправлено: 17 Июня, 2011 - 23:47:50
Post Id



Генерал


Сообщений всего: 97
Дата рег-ции: Май 2009  





Всем привет. Давненько меня здесь не было! Вот тут написал программку которая работает не до конца! может кто скажет почему программа не изменяет значение регистра OCR0A? вот сама программа

CODE:
#include <tiny2313.h>

void main(void)
{

PORTB=0x00;
DDRB=0xFF;


PORTD=0x7F;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Ph. correct PWM top=OCR0A
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
TCCR0A=0x81;
TCCR0B=0x0D;
TCNT0=0xFF;
OCR0A=0x00;
OCR0B=0x00;

ACSR=0x80;

while (1)
{

m1: if(PIND.6==0) //Если кнопка Быстро нажата
{
OCR0A=0xFF; //устанавливаем максивальное значение ШИМ
goto m4; //переходим к установки направления движения
}
else goto m2; //Если кнопка Быстро отпущена, переходим к проверки следующей кнопки выбора скорости

m2: if(PIND.5==0) //Если кнопка Средне нажата
{
OCR0A=0xC0; //устанавливаем значение ШИМ равное 75% от максимального
goto m4; //переходим к установки направления движения
}
else goto m3; //Если кнопка Средне отпущена, переходим к проверки следующей кнопки выбора скорости

m3: if((PIND.5==1)&&(PIND.6==1)) //Если кнопки Быстро и Средне отпущены
{
OCR0A=0x80; //Устанавливаем значение ШИМ равное 50% от максимального
goto m4; //переходим к установки направления движения
}

m4: if(PIND.3==0) //Если кнопка Вперед нажата
{
PORTB.7=1; //Мотор крутится вперед
}
else PORTB.7=0; //Если отпущена мотор остановлен
if(PIND.2==0) //Если кнопка Назад нажата
{
PORTB.6=1; //Мотор крутится назад
}
else PORTB.6=0; //Если отпущена мотор остановлен
if(PIND.1==0) //Если кнопка Лево нажата
{
PORTB.5=1; //Мотор крутится налево
}
else PORTB.5=0; //Если отпущена мотор остановлен
if(PIND.0==0) //Если кнопка Право нажата
{
PORTB.4=1; //Мотор крутится направо
}
else PORTB.4=0; //Если отпущена мотор остановлен
goto m1;


};
}

OCR0A ну ни в какую не хочет меняться
А например вот так меняется без проблем
CODE:
m1:
while(1){
if (PIND.6==0)
{
OCR0A=0xFF;
}
else OCR0A=0x05;

goto m1;
}

(Отредактировано автором: 17 Июня, 2011 - 23:49:54)

 
 Top
nest Администратор
Отправлено: 18 Июня, 2011 - 01:29:35
Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  





zatmenie, схема есть?
 
 Top
cjA
Отправлено: 18 Июня, 2011 - 06:46:26
Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  





именованые ifы- хорошмй стиль, я правда пишу
CODE:

m1: //каменты тут
if( чотототам

может кнопки дрезжат7
(Добавление)
как то вроде вы хотите портВ 5 и 6 туда и сюда использовать
ради бога, но таймы МК тоже нужно пощитать, может и не получается, там очень тонко все.
 
 Top
zatmenie
Отправлено: 18 Июня, 2011 - 07:25:30
Post Id



Генерал


Сообщений всего: 97
Дата рег-ции: Май 2009  





nest пишет:
схема есть?
вот
cjA пишет:
может кнопки дрезжат7
проверял в АВРстудио
Кнопки работают без проблем, а вот OCR0A не хочет устанавливаться в нужное значение. Оно вообще ни в какое значение не устанавливается, как было 0х00 так и остается.
(Добавление)
kalexi пишет:
Привет! Не могу найти хорошего примера, где бы объяснялось как программируется ШИМ (только код) и как выбирается таймер. Посоветуйте статью или исходник.

Вообще надо сделать генератор прямоугольных волн в слышимом звуковом диапазоне на ATtiny13.

посмотри в этой теме, по моему страница 6 или чуть дальше. там как раз объясняли мне как надо делать ШИМ
Прикреплено изображение
2011-06-18_081547.png

 
 Top
cjA
Отправлено: 18 Июня, 2011 - 07:31:02
Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  





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

DDRD= FF
(Добавление)
у вас в любом состоянии ноль на входе.
тьфу, чорт!
ddrd=0
portd=FF
(Добавление)
а вот вы эти две строчки поменяйте местами.
(Добавление)
это не должно быть (якобы) актуально для тини, но как писал год назад один из субмодераторов- я все входы подтягиваю к плюсу еще одним резистором.

кстати программа настолько короткая что может и вправду дребезг

(и аврстудио- всеголишь симулятор, не смотрите на него, он не знает что у него есть подтягивающие резисторы)
 
 Top
zatmenie
Отправлено: 18 Июня, 2011 - 11:17:06
Post Id



Генерал


Сообщений всего: 97
Дата рег-ции: Май 2009  





Ой я тут оказывается сам все напортачил, программа рабочая на 100%, проверил и в симуляторах и на железе. Когда спаял на кнопках выбора скорости не заметил маленькую перемычку. Она все время замыкала кнопку Быстро и по этому ШИМ не менялся.
Вот архив. Там проект CVAVR и схема SPLAN70 и картинка
Скачать файл: Архив WinRAR.rar
Скачан раз: 191
 
 Top
cjA
Отправлено: 19 Июня, 2011 - 09:55:21
Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  





zatmenie, веть тяк всегда! Улыбка)))
Ну и слава создателю что все получилось.
Если не секрет- это вы для себя или по работе?
 
 Top
zatmenie
Отправлено: 24 Июня, 2011 - 19:25:40
Post Id



Генерал


Сообщений всего: 97
Дата рег-ции: Май 2009  





cjA пишет:
Если не секрет- это вы для себя или по работе?

Это все для меня, ведь я пока не работаю Улыбка
(Добавление)
Да вот еще проблема. Решил сделать электронные кубики. Написал программу но CVAVR не хочет её компилировать. В выделенной строке пишет что отсутствует символ } а куда его ставить не знаю

CODE:
#include <tiny2313.h>

:)flash unsigned int tabkd[36] = {11, 12, 13, 1A, 1B, 1E,:)
21, 22, 23, 2A, 2B, 2E,
49, 32, 33, 3A, 3B, 3E,
A1, A2, A3, AA, AB, AE,
B1, B2, B3, BA, BB, BE,
E1, 62, 63, EA, EB, EE};
void main(void)
{
unsigned char i;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTD=0x7F;
DDRD=0x00;

ACSR=0x80;

while(1)
{
for(i=0; i<37; i++)
{
if(PIND.6==0)
PORTB=0xtabkd[i];
}
}
}

(Отредактировано автором: 24 Июня, 2011 - 19:31:28)

 
 Top
mihail
Отправлено: 24 Июня, 2011 - 19:44:26
Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  





Не издевайтесь над компилятором! Если я в своем ответе поставлю буквы так как мне захочется, а не так как требуют правила, поймете? Нет!!! Потому, что это будет бессмысленный набор букв.

flash unsigned int tabkd[36] = {11, 12, 13, 1A, 1B, 1E,
21, 22, 23, 2A, 2B, 2E,
49, 32, 33, 3A, 3B, 3E,
A1, A2, A3, AA, AB, AE,
B1, B2, B3, BA, BB, BE,
E1, 62, 63, EA, EB, EE};

Это не массив. Это бессмыслица.

0xtabkd[i];

Это тоже.

Соблюдайте правила того языка на котором пишите!
 
 Top
Страниц (17): В начало « ... 9 10 11 12 13 14 15 [16] 17 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown