roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 09 окт 2011, 19:06 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Что с такое с кодевиженом? Засунул этот код в avr studio! Всё идеально :shock:

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


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

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Как заставить работать эту программу в кодевижене? Есть у кого какие нибудь мысли??? :O:

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


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

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Код:
interrupt [TIM3_COMPC] void timer3_compc_isr(void)
{
static unsigned char current_servo=0;
static unsigned int OCR33=2000;   
ocr+=servo_position;
OCR3C=OCR33;
if (current_servo==8)
        {
         current_servo=0;
         TCCR3C|=(1<<FOC3C);
         TCCR3C|=(1<<FOC3C);
        }
        else
        {
         current_servo++;
        }
TCCR3C|=(1<<FOC3C);
}

Нашёл косяк в переменной OCR33 досчитав до 64250. В седующих прерываниях её значение остаются прежним.
Что придумать?

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


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

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
зло крылось в
Код:
#define OCR3C (*(unsigned int *) 0x82)

В кодевижене нет 16 битной переменной OCR3C, есть OCR3CH, OCR3CL. Хотя в винавр есть есть 16 битная переменная OCR3C...
Вот так всё пошло)))
Код:
Код:
interrupt [TIM3_COMPC] void timer3_compc_isr(void)
{
static unsigned char current_servo=0;
static unsigned int ocr=2000;   
static unsigned int pause = 18432;
if (current_servo==9)
        {
         current_servo=0;
         ocr += pause;
         OCR3CH=(unsigned char)(ocr>>8);
         OCR3CL=(unsigned char)ocr;
         pause = 18432;
        }
        else
        {
         ocr+=servo_position[current_servo];
         OCR3CH=(unsigned char)(ocr>>8);
         OCR3CL=(unsigned char)ocr;
         pause -= servo_position[current_servo];
         current_servo++;
        }
TCCR3C|=(1<<FOC3C);


Добавлено спустя 3 минуты 54 секунды:
avr123.nm.ru писал(а):
По методу отладки программы через UART в задаче 4 курса по AVR - http://www.proavr.narod.ru/z4.htm вы можете вставить после этой строки вывод этого регистра в UART

псевдокод:
UDR = регистр;
пауза (1 секунда например);

и на терминале на ПК посмотреть что в регистре в реальном AVR получается.

Avr123 спасибо вам большое! Благодаря этому нащёл проблему.

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


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

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


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

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


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

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