roboforum.ru

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

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

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

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

Сообщение Vooon » 23 май 2009, 16:54

А я и не предлагаю писать отдельный драйвер для GPIO,
но т.к. конфигурация порта достаточно сильно отличается,
должен быть использован следующий UID.

Ты сам говоришь "после донастройки", что мешает настроить UID?
или ты предлагаешь для _разного_ железа использовать одну программу без изменений ее параметров в
соответствии с возможностями железа? Ты предлагаешь добавить в _каждый_ драйвер еще один слой интроспекции?
Не понятно зачем.

Пример: есть программа, которая работает с портом A и B на OR-AVR-M32-D.
Как без адаптации (настройки) переложить на OR-AVR-M64-S?
Ведь здесь доступны только порт A и F!

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

Добавлено спустя 3 минуты 58 секунд:
2 blindman: Т.е. ты предлагаешь кооперативный шедулер и возможно вызов ф-ции по таймеру.

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

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

Сообщение blindman » 23 май 2009, 17:02

Vooon писал(а):Т.е. ты предлагаешь кооперативный шедулер и возможно вызов ф-ции по таймеру.

Фактичкески - да, в простейшем виде. Просто не стал использовать слова "шедулер", "планировщик" и т.п. - чтоб народ не пугать :)

Vooon писал(а):Имхо вызов в прерывании таймера всех обработчиков драйвера довольно накладно.

Лучше делать это в основном цикле, по флагу прерывания от таймера. Тогда если какой-то драйвер слишком долго выполняется - это лишь сдвинет тайминги, но при этом система все равно сможет отзываться на запросы

Добавлено спустя 2 минуты 29 секунд:
Само собой разумеется, что минимальный период циклического вызова должен быть достаточно большим, как минимум сотни микросекунд, лучше - миллисекунды.
Проект [[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 » 23 май 2009, 17:05

Думаю если добавить апи
void init_wait(&save) и bool wait_tics(&save, 200)
то использовать станет более удобно.

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

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

Сообщение blindman » 23 май 2009, 17:06

Vooon писал(а):Пример: есть программа, которая работает с портом A и B на OR-AVR-M32-D.
Как без адаптации (настройки) переложить на OR-AVR-M64-S?
Ведь здесь доступны только порт A и F!

Пронумеровать все доступные порты от 0 до n-1. Минимальная настройка программы все равно потребуется - но потребуется она в любом случае. Настройка будет заключаться в замене номера порта на тот, к которому на новом контроллере подключено интересующее устройство.

Добавлено спустя 1 минуту 1 секунду:
Vooon писал(а):void init_wait(&save) и bool wait_tics(&save, 200)

А это чего такое? Доки где? :)
Проект [[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 » 23 май 2009, 17:40

Думал из названия поймешь :)

Чтобы реализовать задержку в процессе на какое-то кол-во тиков системного таймера (в данном контексте тики = прерывания).

реализация довольно простая, что-то вроде

Код: Выделить всёРазвернуть
static uint16_t tick_counter = 0;

ISR(TIMER0_overflow)
{
    tick_counter++;
}

void init_wait(uint16_t *strat_tick)
{
    *start_tick = tick_counter;
}

bool wait_ticks(uint16_t *start_tick, uint16_t ticks)
{
    return tick_counter >= (start_tick + ticks);
}


Это только приблизительный код, его можно и оптимизировать..

Добавлено спустя 4 минуты 25 секунд:
А в процессе:

Код: Выделить всёРазвернуть
void my_task(void)
{
    static uint16_t delay;
    if (wait_ticks(&delay, 200) {
        return;
    }
    // ...
    // ...
    init_wait(&delay);
}
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение blindman » 23 май 2009, 17:43

А, понял. Ну да, именно такое и и имел в виду под отсчётом интервалов. Лучше реализовать в виде макросов, вызовы функций там ни к чему
Проект [[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 » 23 май 2009, 17:47

ну лично я предпочитаю использовать static inline
но можно и макросами...

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

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

Сообщение =DeaD= » 23 май 2009, 21:23

В общем такое предложение - включить в интроспекцию ядра буквы портов, используемые GPIO и подобными драйверами.

Например, если на контроллере используется 1 порт, как на OR-AVR-M168-DX - ядро должно вернуть кол-во портов "1" и букву порта "А". Если как на OR-AVR-M32-D четыре порта, тогда ядро возвращает "4" и буквы "ABCD", если как на OR-AVR-M64-S два, тогда возвращает "2" и "AF".

Это позволит не таскать на хосте (ПК под разными ОС, КПК и т.п.) всю информацию о том чего где на конкретном контроллере и не обновлять файл с этой информацией по каждому чиху, в т.ч. получаем возможность делать программы на ПК к которым можно подключить новый контроллер и только в настройках программы даже через GUI поменять подключение на нужные порты, при этом программа сможет показать что на устройстве есть порты GPIO A0..7, C4..7, B2..3, D4..5 и спросить куда же мы сейчас воткнули наш ИК-дальномер SHARP.

Добавлено спустя 4 минуты 34 секунды:
blindman писал(а):Да, конечно. Щас выложу код, который генерирует импульсы для серв - на его основе можно писать драйвер.

Я на всякий случай, вдруг ты думаешь что уже выложил :roll:

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

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

Сообщение Vooon » 24 май 2009, 00:32

Пока не трогаю код орфы, жду блиндмана.
Переделал интроспекцию в PyOR, вынес таблицу юидов во внешний файл.
http://hg.vehq.ru/pyor/file/tip/share/uids.ini#l1
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение =DeaD= » 24 май 2009, 10:44

Чего-то у меня под WinAVR орфа не собирается :( с мейк-файлом пишет:

make -C serialgate MCU_FLAGS="-mmcu=atmega32 -DF_CPU=7372800UL -DAVR_IO" BAUD="115200" DEBUG="1"
make[1]: Entering directory `C:/Robot/orfa'
C:/WinAVR-20080610/utils/bin/make -C serialgate MCU_FLAGS="-mmcu=atmega32 -DF_CPU=7372800UL -DAVR_IO" BAUD="115200" DEBUG="1"
/usr/bin/sh: -c: line 3: syntax error: unexpected end of file
make[1]: *** [serialgate/libserialgate.a] Error 258
make[1]: Leaving directory `C:/Robot/orfa'
make: *** [serialgate/libserialgate.a] Error 2
Build failed with 1 errors and 4 warnings...

А без него:

rm -rf main.o orfa.elf dep/* orfa.hex orfa.eep orfa.lss orfa.map
Build succeeded with 0 Warnings...
avr-gcc.exe -mmcu=atmega32 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c
In file included from ../main.c:37:
../drivers/ports_driver.h:34:25: error: core/common.h: No such file or directory
make: *** [main.o] Error 1
Build failed with 1 errors and 0 warnings...
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Vooon » 24 май 2009, 15:56

Пофиксил сборку на винде, ей видетели не нравятся "", хочет ''

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

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

Сообщение =DeaD= » 24 май 2009, 16:37

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

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

Сообщение Vooon » 24 май 2009, 16:44

Ни где, в цели all нет зависимости от цели $(target).hex
И это вполне нормально — авр студия умеет прошивать .elf файлом.
Цель program зависит от hex'а но в ней пока жестко прописан программатор AVR Dragon ISP
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение =DeaD= » 24 май 2009, 22:05

А "Khazama AVR Programmer", который USB-программатор "сделай сам" умеет только .hex-файлы читать :(

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

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

Сообщение blindman » 24 май 2009, 22:07

Однозначно hex надо, его любой программатор понимает.
Проект [[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(?)
ФИО: Андрей Юрьевич

Пред.След.

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

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

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