Easyelectronics.ru

Электроника для всех
Текущее время: 07 сен 2010, 20:38

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




Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 21 фев 2010, 17:03 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
micropascal у него.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 00:39 
Не в сети
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 1326
Откуда: Алма-ата
Цитата:
Я смотрю, ты программу для PIC пишешь на Паскале. Каким компилятором ты пользуешься ?

Сейчас пока в основном MikroPascal Pro 1.4. Есть также скачанные до версии 3.2, но особой разницы почти нет, 3.20 проинсталировал, просмотрел, но исходники лень перетаскивать, так пока 1.40и пользую. Есть все, что надо, вплоть до Ethernet, многие библиотеки продублированы и для софтовой, и для аппаратной реализации интерфейсов. Единственно, чего нехватает - почему-то нет поддержки I2C Slave, только для Master. В принципе, несложно добавить несколько аналогичных процедур на ассемблере, и использовать также, как библиотечные для Мастера, но лучше бы были. В остальном замечаний нет, все прекрасно сделано и работает. Я уже несколько раз писал про компиляторы от МикроЭлектроники по другим темам.
Цитата:
PS: Я одно время разрабатывал свой собственный компилятор паскаля, как раз для PIC. Сейчас хочу вернуться к старому проекту, переработать (классы, авр-архитектура) и закончить его. Все компиляторы паскаля для PIC, которые я видел до этого, мне очень сильно не нравились.

Мне тоже другие компиляторы не нравились, приходилось писать на ассемблере, пока не попробовал от МикроЭлектроники. Лучше не видел, а самому писать - только время терять, и вряд ли лучше получится.
Я в 80х годах на работе от нужды, чтобы работать с однокристаллками РВЕ35 (КР1816ВЕ35), позже с 48, сделал микропроцессорный отладочный комплекс на КР580ВМ80А, для которого написал полную кросс - систему, - редактор, компилятор, дизассемблер, отладчик, программатор. Программы хранил на магнитофоне Илеть 203... Потратил полгода, зато сэкономил потом кучу времени на разработках контроллеров. Из заводских компов у нас в то время были только ДВК-2, и то гораздо позже, когда у меня уже все работало... В 89г купили 3шт "Корвет" (сам с Москвы их поездом вез), там в комплекте уже было 10 языков и 2 операционки - CP/M-80 и МикроДОС.
Сейчас намахать компилятор для микроконтроллера, например, на DELPHI, не проблема, только зачем, когда готовых полно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 00:57 
Не в сети
Только пришел
Аватара пользователя

Зарегистрирован: 26 янв 2010, 17:16
Сообщения: 27
DI HALT
Спасибо, я так и думал

--
To All
Что с виртуальной машиной? Не хочется что бы обсуждение умерло. Предлагайте свои идеи что ли :)
Начать, я думаю, лучше с синтаксиса и основных механизмов входного языка. Свой вариант я уже предложил. Так же нужно подумать о вычислительной модели и разрядности ВМ. Предлагаю для простоты ВМ сделать 8-разрядной регистровой с одним аккумулятором. Я думаю, что это упростит вычисления на микроконтроллере и сильно уменьшит размер занимаемой памяти по сравнению со стековой ВМ.

Так же хотелось бы услышать соображения по поводу распараллеливания процессов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 01:02 
Не в сети
Только пришел
Аватара пользователя

Зарегистрирован: 26 янв 2010, 17:16
Сообщения: 27
SWG
Спасибо за ответ. На делфи и намахивал :)
А работать я стал именно над паскалем, так как он не очень популярен в среде микроконтроллеров. Вот разве что от микроэлектроники компилятор более-менее, но то что они сделали с механизмом библиотек для меня не понятно.. И к тому же оптимизатор там не очень - код сжирает кучу памяти. Были у них и другие недостатки, уже не вспомню. Сделать лучше чем они вполне реально. Даже одному, имхо, главное что бы желание было. Долго, правда.. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 01:17 
Не в сети
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 1326
Откуда: Алма-ата
aeore писал(а):
SWG
Спасибо за ответ. На делфи и намахивал :)
А работать я стал именно над паскалем, так как он не очень популярен в среде микроконтроллеров. Вот разве что от микроэлектроники компилятор более-менее, но то что они сделали с механизмом библиотек для меня не понятно.. И к тому же оптимизатор там не очень - код сжирает кучу памяти. Были у них и другие недостатки, уже не вспомню. Сделать лучше чем они вполне реально. Даже одному, имхо, главное что бы желание было. Долго, правда.. :)

Я MikroPascal for PIC начинал 2 года назад с версии 8.0.0.1, сравнивал с компиляторами, в основном С, других фирм и был приятно поражен размерами кода. В позапрошлом году я приводил результаты. Просто вы наверное пробовали совсем старые версии...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 01:35 
Не в сети
Только пришел
Аватара пользователя

Зарегистрирован: 26 янв 2010, 17:16
Сообщения: 27
SWG писал(а):
Я MikroPascal for PIC начинал 2 года назад с версии 8.0.0.1, сравнивал с компиляторами, в основном С, других фирм и был приятно поражен размерами кода. В позапрошлом году я приводил результаты. Просто вы наверное пробовали совсем старые версии...


Да, версия была довольно старая.. но это что касается оптимизации. В более поздних версиях у них все равно остался сишный подход к библиотекам. Правда, как обстоят дела сейчас я не знаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 02:09 
Не в сети
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 1326
Откуда: Алма-ата
Цитата:
В более поздних версиях у них все равно остался сишный подход к библиотекам.
В каком смысле? И что именно не нравится?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 07:14 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
А что я уже скелетик набросал. Сегодня наверное первый прототип выложу на обсуждение.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 08:52 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Архитектуру я закладываю такую:
8ми разрядная, с жесткой привязкой по функционалу к железу. Т.е. это не универсальная ВМ которую можно куда угодно воткнуть, а скорей концепция и ВМ придется писать под каждую железку заново, с учетом ее функционала.

Коды команд 8разрядов+операнды (любое число). Есть несколько десятков (максимум 255) РОН с которыми можно обращаться по усмотрению. Сами команды очень похожи на ассемблерные. Т.е. по сути я делаю надассемблер, управляющий уже не процессорным ядром, а устройством.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 12:54 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Ну вот. Тягайте проект:
http://easyelectronics.ru/files/Robot/WM-GCC-RTOS.ZIP

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

в файле VM_PROG.h находится собственно код программы для VM

вот такого вида:
Код:
static u08 VM_PGM[]=

{
FWD,            //0
DLY,T(1000),      //1,2,3
STP,            //4
DLY,T(1000),      //5,6,7
BCK,            //8
DLY,T(2000),      //9,10,11
STP,            //12
OFF               //13
};


Сам язык это просто обвязаные макросами номера по таблице смещений на функции ВМ.

Код:
//VM Task Table ==========================================================
static TPTR VM_FUNC[] PROGMEM =
   {
   &VM_OFF,      //0
    &VM_Back,      //1
    &VM_Forward,      //2
   &VM_Delay,      //3
   &VM_Stop      //4
   };


Параметры идут после номера команды. Например, функция DELAY свою 16ти разрядную задержку загребает так:

Код:
void VM_Delay(void)
{
u16 delay;
u08 *OneByte;

OneByte = (u08 *)&delay;

*OneByte = VM_PGM[++VM_PC[0]];
OneByte++;
*OneByte = VM_PGM[++VM_PC[0]];

VM_PC[0]++;

SetTimerTask(VM,delay);
}


VM_PC это виртуальный Programm counter. Массивом -- потому что планируется многозадачность и думаю будут еще паралельные ветви, но пока не допетрил как бы это красивей реализовать. (надо чтобы в диспетчер ВМ передавался номер треда, но где его хранить я ума не приложу пока. Думаю, что сделать надстройку над диспетчером ядра - добавить параметры, но может удастся сделать и красивей)

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 12:58 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Код:
#include <VM.h>


#include <VM_PROG.h>
static u08 VM_RAM[256];
static u08 VM_PC[10];

void VM_Forward(void)
{
LED_PORT  ^=1<<LED3;
VM_PC[0]++;

SetTask(VM);
}

void VM_Back(void)
{
LED_PORT  ^=1<<LED3;
VM_PC[0]++;

SetTask(VM);
}

void VM_Stop(void)
{
LED_PORT  ^=1<<LED3;
VM_PC[0]++;

SetTask(VM);
}

void VM_Delay(void)
{
u16 delay;
u08 *OneByte;

OneByte = (u08 *)&delay;

*OneByte = VM_PGM[++VM_PC[0]];
OneByte++;
*OneByte = VM_PGM[++VM_PC[0]];

VM_PC[0]++;

SetTimerTask(VM,delay);
}


void VM_OFF(void)
{
InitVM();
}

//VM Task Table ==========================================================
static TPTR VM_FUNC[] PROGMEM =
   {
   &VM_OFF,      //0
    &VM_Back,      //1
    &VM_Forward,      //2
   &VM_Delay,      //3
   &VM_Stop      //4
   };

//VM Dispatcher
void VM(void)    // Виртуальная машина
{
SetTask((void*)pgm_read_word_near(VM_FUNC+VM_PGM[VM_PC[0]]));
}

// VM initializations ====================================================
void InitVM(void)
{
u08 i;

for(i=0;i!=10;i++)
   {
   VM_PC[i]=0;
   }
}


Это основной код виртуальной машины. Функция VM первоначально дергается диспетчером. Дальше ее вызывают функции VM, обеспечивая тем самым его непрерывное вращение, но пошагово. Кроме функции VM_OFF она просто обнуляет состояние VM и все, VM выключается осовобождая конвейер.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 22 фев 2010, 13:01 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Я пока это дело на Pinboard гонял, там отладочных средств больше. Сейчас буду ставить на колеса.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 23 фев 2010, 01:53 
Не в сети
Только пришел
Аватара пользователя

Зарегистрирован: 26 янв 2010, 17:16
Сообщения: 27
SWG
> В каком смысле? И что именно не нравится?

То, что они не имеют своего пространства имен. Яркий пример - создать новый проект и попробовать объявить W: Byte где-нибудь. Были там и еще какие-то недостатки. Например, лично я привык, когда каждый модуль собирается в свой obj-файл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 23 фев 2010, 01:58 
Не в сети
Только пришел
Аватара пользователя

Зарегистрирован: 26 янв 2010, 17:16
Сообщения: 27
DI HALT
Интересно получилось, молодец :) Жаль только что оно слишком жестко привязано к конечному устройству. Какие ты планируешь ввести команды ? Будет арифметика и пр ? Т.е. что бы код не просто заставлял машинку ехать вперед-назад, но еще и работал с ее устройствами, обрабатывая данные и на их основе принимал решения


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 23 фев 2010, 02:14 
Не в сети
Только пришел
Аватара пользователя

Зарегистрирован: 26 янв 2010, 17:16
Сообщения: 27
Приведу свой вариант для этой же задачи, я пока придерживаюсь первоначального плана

Значит, задача:
FORWARD
1000 ms
STOP
1000 ms
BACK
2000 ms
STOP
OFF

Синтаксис решения подобной задачи (пока что отказался от списков []):

Код:
const
  DEV_TRACTION_MOTOR      = $0E;
  DEV_WHEEL_MOTOR         = $0D;
  DEV_POWER_SYSTEM        = $08;

func start main() {
  SetDeviceAction(DEV_TRACTION_MOTOR, 10); // Едем вперед со скоростью 10 (характеристика ШИМ, к
                                           // примеру)
  sleep(1000);                             // Ждем секунду в текущем потоке
  SetDeviceAction(DEV_TRACTION_MOTOR, 0);  // Останавливаемся
  sleep(1000);                             // Ждем секунду в текущем потоке

  SetDeviceAction(DEV_WHEEL_MOTOR, 180);   // Задаем поворотному механизму задание   
                                           // развернуться на 180 градусов           
                                                                                             
  // Ждем, пока он это сделает (поворотный механизм снова покажет курс 0 градусов)           
  while (GetDeviceStatus(DEV_WHEEL_MOTOR) <> 0) do {};                                       

  SetDeviceAction(DEV_TRACTION_MOTOR, 10); // Едем вперед со скоростью 10 (ШИМ)     
  /////////////////////////////////////////////////////////////////////////////////////////////
  // Или просто едем назад если позволяет двигатель, система контроля и привод
  // Например, вот так
  // SetDeviceAction(DEV_TRACTION_MOTOR, -10);

  sleep(2000);                               // Ждем две секунды в текущем потоке
  SetDeviceAction(DEV_TRACTION_MOTOR, 0);    // Останавливаемся
  SetDeviceAction(DEV_POWER_SYSTEM, 0);      // Выключаем питание робота
}


символьный байт-код:
Код:
push $0E
push $0A
call SetDeviceAction     ; SetDeviceAction(DEV_TRACTION_MOTOR, 10);

push $03
push $E8
call sleep               ; sleep(1000);

push $0E
push 0
call SetDeviceAction     ; SetDeviceAction(DEV_TRACTION_MOTOR, 0);

push $03
push $E8
call sleep               ; sleep(1000);

push $0D
push $B4
call SetDeviceAction     ; SetDeviceAction(DEV_WHEEL_MOTOR, 180);

@@test_again
push $0D
call GetDeviceStatus 
test a                   ; while (GetDeviceStatus(DEV_WHEEL_MOTOR) <> 0) do {};
jc Z, @@test_again

push $0E
push $0A
call SetDeviceAction     ; SetDeviceAction(DEV_TRACTION_MOTOR, 10);

push $07
push $D0
call sleep               ; sleep(2000);

push $0E
push $00
call SetDeviceAction     ; SetDeviceAction(DEV_TRACTION_MOTOR, 0);

push $08
push $00
call SetDeviceAction     ; SetDeviceAction(DEV_POWER_SYSTEM, 0);


компилированный байт-код:
Код:
28 0E 28 0A 55 00 01 28 03 28 E8 55 00 03 28 0E 28 00 55 00 01 28 03 28 E8 55 00 03 28 0D 28 B4 55 00 01 28 0D 55 00 02 BC 28 00 22 28 0E 28 0A 55 00 01 28 07 28 D0 55 00 03 28 0E 28 00 55 00 01 28 08 28 00 55 00 01


Использование памяти RAM: 0 Байт
Использование памяти ROM: 72 Байт

Так.. пока только начал рассматривать систему команд. Эта пока что не очень оптимальная, но работать должна:)

Надо бы закончить проектирование своего "pinboard" и тоже приступить к экспериментам :))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 23 фев 2010, 08:42 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Жетская привязка к устройству это обязательное условие. А иначе нахрена тогда вообще ВМ? Для того чтобы получить еще один (ненужный) абстрактный язык? Нет, у меня устройство цельное и ВМ это лишь для резкой компактизации управляющего алгоритма. Воможности его изменения на лету и прочие радости.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 24 фев 2010, 11:58 
Не в сети
Только пришел
Аватара пользователя

Зарегистрирован: 26 янв 2010, 17:16
Сообщения: 27
Ну.. дело твое :)
Лично я всегда стараюсь создать как можно более универсальный инструмент. Да и интереснее так


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 24 фев 2010, 16:12 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Тут ценой универсальности станет тяжеловесность и избыточность. В условиях жесткой экономии ресурсов МК это критично.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 24 фев 2010, 16:51 
Не в сети
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 1326
Откуда: Алма-ата
DI HALT писал(а):
Тут ценой универсальности станет тяжеловесность и избыточность. В условиях жесткой экономии ресурсов МК это критично.

Я поэтому в программе того же ходового контроллера отделил дешифрацию команд от исполнения их. Дешифратор только ставит флажки в слове состояния, и заносит параметры в соответствующие переменные, а далее уже модули управления периферией просматривают свои флаги и реализуют соответствующие действия. Например, модуль управления ШИМ отслеживает свои флаги и переменные и меняет коэффициенты ШИМ левого и правого двигателя, модуль двигателей включает, выключает и реверсирует правый и левый двигатели и отслеживает заданное время их работы (когда поставлю наконец датчики одометров - будет отслеживать путь), модуль управления АЦП замеряет напряжение батареи по запросу или по таймеру, ставит на выдачу в канал, и блокирует работу двигателей при разряде батарей. Модуль передачи следит, нет ли сообщений для передачи, при их наличии - ждет завершения приема очередной команды (если он происходит), и начинает передавать, заблокировав на время передачи приемник. Модуль приема при отсутствии своей передачи следит за приемом с канала, ожидая признака передачи команды, и принимает ее, блокируя соостветствующим флажком начало своей передачи. Закончив прием очередной команды, выставляет соответствующий флаг, сообщая об этом дешифратору команд. Модуль одометров в это время следит за пройденным каждым колесом путем, а модуль обмена с контроллером бамперов следит за появлением препятствий и сообщает о них. Модуль управления пищалки, получив свой флажок, включает звук, отсчитывает заданное время, и выключает его. Ну и так далее.
Все работает практически параллельно (время прогона главного цикла 250-260мкс).
При желании легко добавить новые команды. Например, сначала у меня повороты налево и направо реализовались вращением обоих колес в разные стороны. Ось вращения проходила посередине между колес. Позже я добавил еше по паре команд поворота в каждую сторону, реализуемые вращением только одного колеса при заторможенном другом. При этом поворот, например, налево можно реализовать вращением левого колеса назад или правого вперед. Ось вращения в этом случае проходит через неподвижное колесо, а центр робота перемещается по дуге назад или вперед одновременно с поворотом. Это дает большую подвижность при огибании препятствий. В дешифраторе добавилось 4 команды с обработчиками по 6 строк каждая, исполнительный же уровень остался без изменений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 24 фев 2010, 18:00 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Ну у меня тоже идет наброс на конвеер, т.е. вначале дешифрация и обработка, а выполнение в порядке очереди.

У тебя же, как понимаю, как таковой программы из команд в памяти нет (пока нет?), а сами команды будут поступать извне, от стационарного компа?

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 24 фев 2010, 20:27 
Не в сети
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 1326
Откуда: Алма-ата
Цитата:
У тебя же, как понимаю, как таковой программы из команд в памяти нет (пока нет?), а сами команды будут поступать извне, от стационарного компа?

Это у меня оставлено для центрального контроллера. Там будет и очередь команд, и раскладка заданий от компа на команды нижнего уровня, и трансляция команд нижнего уровня контроллерам напрямую. За неимением центрального, мне приходится использовать пока вместо него ходовой, подавая ему команды нижнего уровня непосредственно с виртуального пульта в компе, который создавался в основном как раз для отладочных целей. Естественно, мне пока нет смысла перегружать ходовой контроллер ненужными в дальнейшем ему функциями, а нужные ему команды он получает пока через USART с радиоканала, потом будет по I2C, SPI, или RS485 получать их же от центрального, практически без переделки. Просто модуль связи в программе изменится. Правда, может, на первое время к нему башню подцеплю, по SPI, пока центральный не появится. Другой вариант - отлаживать контроллер поворотной платформы (башни) автономно, через свой собственный RS232, через шнурок или по тому же радиоканалу (команды разных контроллеров перекрываться не будут, 255 команд на все хватит).
Когда же будет готов центральный контроллер, там будет несколько вариантов:

1. Прямая трансляция команд нижнего уровня подчиненным контроллерам.

2. Получение заданий более высокого уровня для самостоятельного исполнения. Некоторые я уже упоминал выше - сканирование дальномерами, уточнение обьездом, и построение карты помещения, перемещение в заданную точку с использованием построенной карты помещений, взятие помещения под охрану, функции будильника и напоминалки, пылесоса, и т.д.

3. Телеуправляемый вездеход. С более совершенного пульта, с экраном обзора камеры, двумя джойстиками, или рулем с педалями, будет управляться в реальном времени с выдачей полной телеметрии по всем параметрам. Со временем возможно использование навешиваемых манипуляторов.

4. Автономное выполнение фоновых задач (дежурный режим), периодический заезд в док для зарядки аккумуляторов. При этом может убегать, чтобы не наступили, и пищать или материться в случае угрозы для него. А так же вести логи событий (отслеживать посторонние шумы, источники света, движущиеся обьекты, колебания температуры и прочее).

Вот примерно такой расклад. Пока топчусь на нижнем уровне. Думаю над башней, попутно вылизываю то, что есть. Например, сегодня переписал обмен ходового контроллера с бамперами с самопального последовательного протокола на стандартный Паскалевский SPI. Завтра распаяю шнурок для SPI и проверю, если не лень будет. Будет все нормально - возможно, весь межконтроллерный обмен переведу на SPI. Проводов будет больше, зато скорость выше, чем I2C, а устройств у меня не так много будет. Что - то не нравятся мне на I2C заморочки с ведомым. Вроде все аппаратно поддержано, а все равно надо контролировать каждый шаг. Ну его. Проще по SPI отдельной линией выбрать нужное устройство, сбросить ему в буфер что нужно, или считать из него, ведомый же будет отвлекаться только по прерыванию после каждого байта. Это мне больше нравится, да и скорость выше. Думаю между ведущим и ведомым устройствами кинуть по 2 линии (кроме стандартных SDO, SDI, SCK): 1 - аналог /SS, другая - готовность ведомого, она же - запрос от него на обслуживание, если надо. Всего получится по 5 проводов у каждого ведомого, из них 3 - (SDO, SDI, SCK) - общие для всех. Скорость 1 Мбит (максимум 4 при 16мгц, но, думаю, 1 за глаза). Для пересылки 2 байт со всеми дополнительными наворотами, задержками и проверками, думаю микросекунд 30-40 за глаза. Обкатаю завтра такой вариант на бамперах, а там видно будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 29 май 2010, 18:31 
Не в сети
Здравствуйте!

Зарегистрирован: 29 май 2010, 16:51
Сообщения: 1
А зачем вы тут писали интерпретаторы под систему команд, если есть такие штуки, как CPLD? Или даже проще - можно на ББ компилировать программу на асме AVR, и заливать ее в контроллер on-the-fly?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 29 май 2010, 20:40 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 1329
Откуда: Челябинск
Это не совсем то. Речь идет о скрипт-коде определяющем поведение системы целиком, а не работы ее МК.

_________________
Хозяин дома


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем ROBO_API
СообщениеДобавлено: 01 сен 2010, 05:24 
Не в сети
Здравствуйте!

Зарегистрирован: 01 сен 2010, 05:22
Сообщения: 1
Я, конечно, извиняюсь, но чем forth не устраивает?


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 1326
Откуда: Алма-ата
Обедающий философ писал(а):
Я, конечно, извиняюсь, но чем forth не устраивает?

1. Философией FORTH. (все через задницу, что непривычно).
2. Необходимостью иметь большой стек (для PIC отпадает сразу!).
3. Когда-то пробовал, не понравился.
4. Есть более удобные языки.
Кроме того, смотри ответ постом выше. Речь не о языке программирования, а о наборе команд управления роботом.


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

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


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB