roboforum.ru

Технический форум по робототехнике.
Текущее время: 23 апр 2025, 18:24

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




Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 05 ноя 2005, 14:44 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Эээ нет, теперь я уже сделаю на МК :).
Это я уже понял, интересно получаеться человек тебе говорит, что тут всего два проводка спаять, и програмки готовые есть. А потом начинет выесняться что не два проводка а 200 да и програмку самому писать надо. Стабильности нет :)  да еще похоже вчера спалил МК вот теперь думаю идти новый покупать, но точно такого нет, ждать две недели пока его привезут под заказ или купить MEGA8, а при нашем раздолбайстве они хотябы в месяц с заказом уложились.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 ноя 2005, 14:57 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Тогда покупа сразу мегу16 чтоб не парится. Но если бошься опять спалить контроллер то бери мегу8, она подешевле. Могу подкинуть пример управления одной сервой. Сам пользовался, потом достало тк нестабильно у меня работала.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 ноя 2005, 14:59 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Ага подкинь, посмотрю как она работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 ноя 2005, 15:05 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Она по внешнему виду мне не очень нравится. Будет свободное время - подкоректирую может.
Код:
 #include <io2313v.h>
#include <macros.h>

void port_init(void);
void timer0_init(void);
void init_devices(void);
void delaysa(unsigned int mks);

unsigned char deltaServo1 = 100;

unsigned int maxServo1 = 4000;
unsigned int minServo1 = 900;


void nomovieServo1(void);



const int period = 30800; //period = 20 ms
int N = 2497; //neutral servo = 1.5 ms

//TIMER0 initialize - prescale:256
// desired value: 200Hz
// actual value: 200,321Hz (0,2%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop timer
TCNT0 = 0x3D; //set count
TCCR0 = 0x04; //start timer
}

#pragma interrupt_handler timer0_ovf_isr:7
void timer0_ovf_isr(void)
{
TCNT0 = 0x3D; //reload counter value
if (PIND==0x04)
forwardServo1(deltaServo1);
if (PIND==0x08)
backwardServo1(deltaServo1);
if((PIND!=0x04)&&(PIND!=0x08))
nomovieServo1();


}
//The first servo
void forwardServo1(unsigned char deltaServo1)
{
 if(N<maxServo1)
 {
   N=N+deltaServo1;
   PORTB|=0x10;
   delaysa(N);
   PORTB&=~0x10;
   delaysa(period);
  }
}
void backwardServo1(unsigned char deltaServo1)
{
 if(N>minServo1)
 {
  N=N-deltaServo1;
  PORTB|=0x10;
  delaysa(N);
  PORTB&=~0x10;
  delaysa(period);
 }
}
void nomovieServo1(void)
{
N=N-0;
PORTB|=0x10;
delaysa(N);
PORTB&=~0x10;
delaysa(period);
}
void delaysa(unsigned int mks)
{
while(mks>0)
{
 mks--;
}
}
//Init ports
void port_init(void)
{
PORTB = 0x00;
DDRB  = 0xFF;
PORTD = 0x0C; // for buttons
DDRD  = 0x00;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();

MCUCR = 0x00;
GIMSK = 0x00;
TIMSK = 0x02;
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void main(void)
{
init_devices();
while(1);
}


ЗЫ
Там совсем легко можно подправить под любой компилятор. Можно ставить прогу на любой контроллер - только значения поменять не забудь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 ноя 2005, 00:50 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Код:
#include <io2313v.h>
#include <macros.h>

void port_init(void);
void init_devices(void);
void delaysa(unsigned int mks);
void forward(unsigned char delta);
void backward(unsigned char delta);
void nomovie(void);

const int period = 30800; //period = 20 ms
int N=2497;//neutral servo = 1.5 ms
unsigned char delta = 20;//skorost` perekladki

void forward(unsigned char delta)
{
if(N<4000){
N=N+delta;
PORTB|=0xFF;
delaysa(N);
PORTB&=~0xFF;
delaysa(period);
}
}
void backward(unsigned char delta1)
{
if(N>900){
N=N-delta;
PORTB|=0xFF;
delaysa(N);
PORTB&=~0xFF;
delaysa(period);
}
}

void nomovie(void)
{
N=N-0;
PORTB|=0xFF;
delaysa(N);
PORTB&=~0xFF;
delaysa(period);
}

void delaysa(unsigned int mks)
{
while(mks>0){
mks--;
}
}

void port_init(void)
{
PORTB = 0x00;
DDRB  = 0xFF;
PORTD = 0x0C;// for buttons
DDRD  = 0x00;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();

MCUCR = 0x00;
GIMSK = 0x00;
TIMSK = 0x00;
SEI(); //re-enable interrupts
//all peripherals are now initialized
}

main()
{
init_devices();

while(1){
if (PIND==0x08)
 forward(delta);
if (PIND==0x04)
 backward(delta);
if((PIND!=0x04)&&(PIND!=0x08))
 nomovie();
}
return(0);
}

   


Вот 100% работающий вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 ноя 2005, 21:23 
Не в сети

Зарегистрирован: 09 авг 2005, 17:38
Сообщения: 37
Вопросы по сабжу:

1. Александр, в вашем списке стоит 10-проводной шлейф, т.е как я понимаю "лапша" (в магазине мне сказали, и это, кстати, логично :), что шлейф это готовое устройство, с разъемами и т.п), так вот почему именно 10-проводной? на разъеме же в 2 ряда по 5 контактов? и еще - по схеме. их (ряды), как я понимаю по схеме, нужно соединять между собой? тогда опять же - зачем 10-проводной кабель? вообщем, разьясните ламеру, очень прошу.
2. на схеме (с надписью "программатор") - только провод нарисован? т. е выводы контроллера цеплять на контакты кабеля? А нахрена тогда 10 контактный разъем?
3. схемка avr-rs232-pc непосредственно для устройства управления? для уже прошитого чипа?

Кстати, я сейчас купил МК - 120 р. Это норм. цена? Мне просто интересно узнать, сколько я переплатил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 ноя 2005, 21:46 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Начну с конца. Какой МК ты купил? Ты про AT90S2313? тогда переплатил...
Я хуже некуда ламер :) , но шлейв это много провоков аккуратно "склеиных" между собой. Это не готовое устройство. Бывают шлейфы продаются в компьютерных магазинах, там они уже готовые. В Чип и Дип там по метрам отрезают такой шлейф который те нужен.
Можешь использовать и пять проводков. Главное чтобы програмировалось нормально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 ноя 2005, 13:17 
Не в сети

Зарегистрирован: 22 окт 2005, 11:15
Сообщения: 345
Откуда: Красноярск
Ну с сервами кое как вроде разобрался, но там где я изучал небыло примера как посылать в МК числа с СОМ порта, вообще как им управлять? Может какой пример накидаете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 ноя 2005, 17:58 
Не в сети

Зарегистрирован: 09 авг 2005, 17:38
Сообщения: 37
Сергей.
Да, купил AT90S2313. А на сколько, если не секрет?
Что такое шлейф и что такое лапша я хорошо знаю. Наверное, это банальные трения в терминологии. И, подумай сам, обжатые проводки в сист. блоке - это ведь готовое устройство? А по поводу этих самых склееных проводков - я для них другого названия, кроме "лапша" у нас на кружке и не слышал. Важно в данный момент то, что в нашем городе ШЛЕЙФОВ НЕТ. Ужас.
Кварц привезут на неделе. Сегодня надо еще пойти поискать 5-контактный разъем.
Кстати, нашел у себя дома позаимствованную на кружке "макетку" под DIP16 (питание там под них сделано) и под какие-то древние разъемы с множеством контактов, на ней написано 7. 104.090 ИЗМ2. Паять на ней буду. Что это такое, никто не в курсе? Так, для общего развития.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 ноя 2005, 23:47 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Ну я не помню точно сколко стоит 2313.. хотя ща я посмотрю в чеке.(всегда оставляй чек после покупки эл. компонентов - очень удобно потом смотреть).
Так, 2313 я покупал за 90р в Чипе и Дипе, тамже можно приобрести АТмегу8 за 68р. Она пофункциональней будет  :)
Так называемую тобой лапшу можешь достать из старых телевизоров, ну и в этом роде.
Плата под 16ног тебе я думаю не пригодится, хотя может и наоборот. Я ведь ее не видел даже)) На 2313 20 ног, на АТмега8 28 ног. А 16 ног небось у какойнить ТиниХХ...
Название платы видимо старое. Это надо смотреть в методичках для кружков, может там есть описание если тебе эт очень нада.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 ноя 2005, 22:24 
Не в сети

Зарегистрирован: 09 авг 2005, 17:38
Сообщения: 37
Сергей.
Старые отечественные ТВ врядли подойдут: там у шлейфов другие параметры: шаг и т.д
Плата под 16 ног уже пригодилась:) Она конструктивно "специализирована" по микросхемы dip16 только подводом питания к 8 и 16 ноге. Так что нужно тольк оудалить перемычку и... вуаля!
Кстати, да ЧипДипа мне приблизительно 200 км. ехать, так что, с учетом проезда, я еще и сэкономил:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 ноя 2005, 16:50 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Я имел ввиду не полностью брать из телека шлейфы, а только провода. А разъемы самому поставть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 янв 2006, 20:10 
Не в сети

Зарегистрирован: 09 авг 2005, 17:38
Сообщения: 37
Купил я сегодня atmega8-8pi (кстати, 2313 у меня называлась at90s2313-10pi, цифра-это частота кварца, как я понимаю?), если она не заработает, Я ПОВЕШУСЬ:evil:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 янв 2006, 20:23 
Не в сети
отсылающий читать курс
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 янв 2006, 00:21 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Тимофей писал(а):
Купил я сегодня atmega8-8pi (кстати, 2313 у меня называлась at90s2313-10pi, цифра-это частота кварца, как я понимаю?)

Какая цифра? "8pi" или "10pi"? Вроде это какое-то время обращения к памяти, а частоты надо в сводных таблицах или ДШ смотреть, у меги8 максимальная частота 16МГц.


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

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


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

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


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

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