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

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

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

Сообщение blindman » 21 июн 2009, 18:32

Полностью отключать можно только группами по 8. Убить тактовый сигнал на соответствующий счетчик - и все.
Проект [[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= » 21 июн 2009, 18:39

Да хоть вообще выключать все, по отдельности можно не отключать.

Чтобы можно было после включения контроллера выставить сначала все положения и потом подать сигналы на сервы нужные уже.

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

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

Сообщение blindman » 21 июн 2009, 18:42

Да как угодно. Чего вы сложности на пустом месте ищете? Хоть вход сброса счетчиков удерживать, хоть ШИМ запретить при включенных таймерах, хоть совсем таймеры не запускать.
Проект [[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= » 21 июн 2009, 20:23

Что-то я пока в суровых раздумьях - как бы красиво описать правила для заполнения таблиц данных, используемых прерываниями.

Прерывания 2 типов сделал:
1. Прерывание OR - выставляет в 1 порты по маске и ставит таймер
2-3-4-5. Прерывание AND - выставляет в 0 порты по маске и ставит таймер, затем ждёт X тактов, затем выставляет в 0 порты по маске.

Щас надо исходя из того какие заданы положения заполнить таблицу данных для прерывания. Многоэтажные IF-ы городить жуть как не хочется :(

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

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

Сообщение blindman » 21 июн 2009, 20:29

А зачем там условия проверять? Проще сделать 2 отдельных обработчика - 1 просто выставляет 0 по маске и перезапускает таймер, другой - выставляет 0 по первой маске, ждет сколько надо, выставляет 0 по другой маске, перезапускает таймер
Проект [[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= » 21 июн 2009, 23:32

А разница? :) первый это второй в котором внутренняя пауза =0 и вторая маска ничтожна.

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

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

Сообщение Vooon » 22 июн 2009, 01:58

Я закоммитил твой код и заставил собираться.
А вот работает ли не знаю, особо проверь это изменение http://hg.vehq.ru/orfa/rev/2c5931ba5031

Вместо огромного макроса я сделал static inline void generateParams(const uint8_t, const uint8_t)

Сборка с отладочным кодом:
Код: Выделить всё
avr-size  orfa.elf
   text    data     bss     dec     hex filename
  12600     584     676   13860    3624 orfa.elf


Без:
Код: Выделить всё
avr-size  orfa.elf
   text    data     bss     dec     hex filename
  10624     166     676   11466    2cca orfa.elf


Прежний код занимал примерно 9 и 7 КиБ соответственно.

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

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

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

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

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

Сообщение Vooon » 22 июн 2009, 12:11

Да, сейчас заметил, улетаем в __bad_interrupt.

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

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

Сообщение Vooon » 22 июн 2009, 18:06

Вроде поправил инит таймера, но что-то не нашел в естифееве предделитель 32.
Поставил (1<<CS21)|(1<<CS20). Еще не проверял.

Добавлено спустя 7 минут 41 секунду:
Ну по крайней мере система работает:

Код: Выделить всё
vovan@vovan-laptop:~/src/pyor$ python2.6 bin/orintro.py /dev/rfcomm0
PyOR version: 0.1.6                                                 
UIDs database version: 1.0.2                                         
Serial Gate protocol version: 1.0                                   
Selected device: 0x00                                               

Drivers:
#1 RoboGPIO ADC driver
ADC driver             
ADC_CONF — write 2 byte (WO):
|  byte 1: adc mode & refrence mode
|    bit 2: 8 bit/10 bit           
|    bit 0-1:                     
|      00: External refrence       
|      01: AVCC refrence           
|      10, 11: Internal refrence   
|  byte 2: enabled channels mask   
ADC_DATA — write 1 byte start channel, output 1 or 2 bytes.

UID: 0x0040
Version: 1.0
Registers: 0x12, 0x13
ADC_CONF: 0x12     
ADC_DATA: 0x13     

#2 Unknown driver
UID: 0x0031       
Version: 1.0     
Registers: 0x10, 0x11

#3 RoboMD2 motor driver
Motor driver           
PWMn — motor n speed register (R/W)
DIRn — motor n direction register (R/W)

UID: 0x0060
Version: 1.0                                                                                                                                                     
Registers: 0x0C, 0x0D, 0x0E, 0x0F                                                                                                                               
     DIR1: 0x0E                                                                                                                                                 
     DIR2: 0x0F                                                                                                                                                 
     PWM1: 0x0C                                                                                                                                                 
     PWM2: 0x0D                                                                                                                                                 
                                                                                                                                                                 
#4 RoboBus SPI driver                                                                                                                                           
SPI driver                                                                                                                                                       
<need more information about this driver>                                                                                                                       

UID: 0x0001
Version: 1.0
Registers: 0x0A, 0x0B
SPI_CONF: 0x0B
SPI_DATA: 0x0A

#5 RoboGPIO digital driver
Digital I/O driver
PORTc — port register (R/W)
DDRc — port direction (WO)

UID: 0x0020
Version: 1.0
Registers: 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
     DDRA: 0x06
     DDRB: 0x07
     DDRC: 0x08
     DDRD: 0x09
    PORTA: 0x02
    PORTB: 0x03
    PORTC: 0x04
    PORTD: 0x05

Meta information:
     rbgp: PORTB.4, PORTD.7, PORTD.6
     gpio: 0, 0xe3, 0x03, 0x33

#6 Introspection driver
ORFA Introspection driver
INTRO register always 0x00
00 00 — get driver count
00 nn — get driver nn info

UID: 0x0000
Version: 1.0
Registers: 0x00
    INTRO: 0x00

vovan@vovan-laptop:~/src/pyor$


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

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

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

Черт, добились таки конфликта драйверов.
Если собрано с драйвером серв, то драйвер моторов не работает.
Почему пока понять не могу: разные же таймеры, не пересекается же.
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, 00:27

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

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

Сообщение Vooon » 25 июн 2009, 03:52

Всплыла какая-то ошибка с WSGI'ем, на запись в репо постоянно отвечает 500.
В логах ничего внятного, днем буду разбираться...

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

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

Сообщение =DeaD= » 05 июл 2009, 23:12

Vooon писал(а):Черт, добились таки конфликта драйверов.
Если собрано с драйвером серв, то драйвер моторов не работает.

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

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

Сообщение Vooon » 06 июл 2009, 20:38

Посмотрел, нужно будет этот момент вынести в настройки, если нет драйвера RoboMD2, то не убирать эти пины.

Добавил тег 0.7.0, т.е. это первый релиз орфы.
Архив можно скачать по адресу: http://hg.vehq.ru/orfa/archive/0.7.0.zip

Теперь приоритетной задачей ставлю создание документации.
Доксиген конечно хорошо, но ман написанный человеком лучше.
Необходимо написать файл INSTALL, желательно завести ChangeLog.

Имхо хорошей идеей будет в ./doc разместить латеховские исходники.
Очень желателен man.

Статистика по коду на данный момент:
Код: Выделить всё
vovan@vovan-pc:~/dev/project/orfa$ find -name '*.c' -o -name '*.h' -o -name '*.S' -o -name '*.mk' -o -name 'Ma*' | wc -l
57                                                                                                                     
vovan@vovan-pc:~/dev/project/orfa$ wc -l $(find -name '*.c' -o -name '*.h' -o -name '*.S' -o -name '*.mk' -o -name 'Ma*')
    19 ./resolve.mk                                                                                                     
     9 ./core/resolve.mk                                                                                                 
   197 ./core/driver.c                                                                                                   
   163 ./core/driver.h                                                                                                   
    62 ./core/common.h                                                                                                   
    61 ./core/docs.h                                                                                                     
    71 ./core/test.c                                                                                                     
    81 ./core/scheduler.c                                                                                               
    84 ./core/scheduler.h                                                                                               
   108 ./core/ports.c                                                                                                   
   117 ./core/ports.h                                                                                                   
   108 ./Makefile                                                                                                       
     5 ./drivers/adc/resolve.mk
   179 ./drivers/adc/adc_driver.c
    47 ./drivers/adc/adc_driver.h
   110 ./drivers/adc/adc_interrupts.S
     4 ./drivers/spi/resolve.mk
   173 ./drivers/spi/spi_driver.c
    59 ./drivers/spi/spi_driver.h
    22 ./drivers/resolve.mk
     5 ./drivers/motor/resolve.mk
   170 ./drivers/motor/motor_driver.c
    38 ./drivers/motor/motor_driver.h
     4 ./drivers/ports/resolve.mk
   100 ./drivers/ports/ports_driver.c
    69 ./drivers/ports/ports_driver.h
     6 ./drivers/servo4017/resolve.mk
    91 ./drivers/servo4017/servo_driver.c
    37 ./drivers/servo4017/servo_driver.h
   192 ./drivers/servo4017/servo4017.c
    49 ./drivers/servo4017/servo4017.h
    73 ./drivers/driver_skeleton.c
    37 ./drivers/driver_skeleton.h
     5 ./drivers/servo_gpio/resolve.mk
   378 ./drivers/servo_gpio/servo_driver.c
    37 ./drivers/servo_gpio/servo_driver.h
    16 ./debug.mk
   211 ./main.c
     8 ./serialgate/resolve.mk
    31 ./serialgate/Makefile
   311 ./serialgate/i2c.c
   132 ./serialgate/i2c.h
   221 ./serialgate/command.c
    55 ./serialgate/command.h
   456 ./serialgate/parser.c
    73 ./serialgate/parser.h
    54 ./serialgate/usart_config.h
    85 ./serialgate/cbuf.c
   120 ./serialgate/cbuf.h
    56 ./serialgate/common.h
    64 ./serialgate/test.c
   101 ./serialgate/usart.c
   131 ./serialgate/usart.h
    77 ./serialgate/serialgate.c
    74 ./serialgate/serialgate.h
     9 ./platform/OR_AVR_M32_D.mk
    11 ./platform/OR_AVR_M64_S.mk
  5266 итого
vovan@vovan-pc:~/dev/project/orfa$
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Пред.След.

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

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

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