roboforum.ru

Технический форум по робототехнике.

Обсуждение реализации шлюз-контроллера [ORFA]

Разработка стандартизированных модулей для домашнего робостроения.
Правила форума
Правила раздела OpenRobotics

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение blindman » 17 июн 2009, 21:40

Он хочет вот такого, если я правильно понял:

Код: Выделить всёРазвернуть
#define A(x) #define B(x)
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 17 июн 2009, 21:44

ненене :)

Я хочу

#define F(x) (x+x*x+1)
#define G(x) (F(x)+F(x)*F(x)+1)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение blindman » 17 июн 2009, 21:48

Так - да, без проблем. Только это не вложенный #define
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 17 июн 2009, 21:52

Оговорился :pardon:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Vooon » 17 июн 2009, 21:55

blindman писал(а):
Код: Выделить всёРазвернуть
#define A(x) #define B(x)


А это разве не одно и тоже что и

Код: Выделить всёРазвернуть
#define A(x) B(x)

?

Добавлено спустя 2 минуты 1 секунду:
Хотя...

Код: Выделить всёРазвернуть
#define A(x) #define B(y) x*y


Хотя имхо это слишком :) не лисп же :)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение blindman » 17 июн 2009, 22:00

Я неудачный пример привел. Но я вложенный #define именно так понял - #define , у которого в теле еще один

Добавлено спустя 3 минуты 47 секунд:
Да-да, типа такого иногда хочется :)
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 17 июн 2009, 22:06

А можно в дефайне к 1 слову второе вплотную приписать, типа:

#define F(x) (1{x}2)

чтобы F(4) было (142) ?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение blindman » 17 июн 2009, 22:12

Код: Выделить всёРазвернуть
// test.c
#define F(x) (1 ##x## 2)
int a = F(4);


Код: Выделить всёРазвернуть
andrey@laptop:~$ gcc -E test.c
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"

int a = (142);
andrey@laptop:~$
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Vooon » 17 июн 2009, 22:14

Так вроде:

Код: Выделить всёРазвернуть
vovan@vovan-laptop:/tmp$ cat test2.c
// concat test

#include <stdio.h>

#define FUN(x) (1##x##2)

int v=0;

int main()
{

        printf("v=%i\n", v);

        v = FUN(0);

        printf("v=%i\n", v);

        v = FUN(2);

        printf("v=%i\n", v);

        return 0;
}
vovan@vovan-laptop:/tmp$ gcc test2.c
vovan@vovan-laptop:/tmp$ ./a.out
v=0
v=102
v=122
vovan@vovan-laptop:/tmp$


(Ей богу консоль это вещь!!!)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 17 июн 2009, 22:15

Ну ежели и такое есть, тогда я завтра накидаю попробую, что имею в виду по прошивке :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 20 июн 2009, 00:09

Движемся дальше.

Вот как-то так получается пока:
Код: Выделить всёРазвернуть
uint8_t pause0[32];
uint8_t pause1[32];
uint8_t mask0[32];
uint8_t mask1[32];
uint8_t iterator;

#define portHandlerAND(name, port, nextHandler, id) \
void name(void)\
{\
   port &= mask0[id]; \
   OCR2 += pause0[id]; \
   handler = nextHandler; \
}

#define portHandlerOR(name, port, nextHandler, id) \
void name(void)\
{\
   port |= mask0[id]; \
   OCR2 += pause0[id]; \
   for(iterator=0; iterator<pause1[id]; iterator++){
     delay_us(1);
   };
   port |= mask1[id]; \
   handler = nextHandler; \
}

#define portHandlers(process, port, nextProcess, id) \
portHandlerOR(##process##3, port, ##nextProcess##0, (id+3))\
portHandlerOR(##process##2, port, ##process##3, (id+2))\
portHandlerOR(##process##1, port, ##process##2, (id+1))\
portHandlerAND(##process##0, port, ##process##1, (id))\

void processD0(void);

portHandlers(processAa, PORTA, processD, 0)
portHandlers(processAb, PORTA, processAa, 4)
portHandlers(processAc, PORTA, processAb, 8)
portHandlers(processAd, PORTA, processAc, 12)
portHandlers(processCa, PORTC, processAd, 16)
portHandlers(processCb, PORTC, processCa, 20)
portHandlers(processB, PORTB, processCb, 24)
portHandlers(processD, PORTD, processB, 28)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Хексапод - как минимизировать - собираем идеи :)

Сообщение Vooon » 21 июн 2009, 18:00

Добавил сохранение/загрузку положений в EEPROM для servo4017.
Но не тестировал.

В нулевой регистр драйвера записывается флаг загружать или нет положения:
Запись 1 сохраняет положения на момент получения комманды;
Запись 0-я только сбрасывает флаг.

Т.е. устанавливаем положения серв, а потом даем команду их запомнить.

Желательно дописать драйвер, чтобы можно было прочитать текущее состояние.

Дописать правила сборки для получения .eep файла.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 21 июн 2009, 18:03

2Vooon: Она по умолчанию отключена? Наверное лучше пока ничего не менять. В любом случае мне кажется правильным сначала не выдавать никаких управляющих сигналов на сервы, только по определенной команде. Запись в EEPROM наверное не лучший выход в данной ситуации.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Vooon » 21 июн 2009, 18:09

Да отключена, в эпроме флаг должен равняться 0, чтобы включить загрузку.
Отключать генерацию сигналов на сервы сложнее.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 21 июн 2009, 18:30

Надо blindman'а подождать, может он знает как это просто сделать.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Пред.След.

Вернуться в Open Robotics

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

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