LinuxCNC + Orange Pi

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
wldev
Мастер
Сообщения: 1297
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 390
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение wldev »

MX_Master писал(а):Далее буду проводить тесты с аппаратным таймером, с отключением кэша и с разными частотами arisc проца.
может лучше наладить общение между LCNC и сопроцессором.? чтобы проверить всю цепочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 6434
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2735
Настоящее имя: Миша
Откуда: Алма-Ата
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Bender писал(а):может лучше наладить общение между LCNC и сопроцессором.? чтобы проверить всю цепочку...
Всему своё время. Для связи у меня заготовлены как минимум два способа. Но для начала нужно выяснить возможные косяки в работе сопроцессора.
Impartial
Мастер
Сообщения: 932
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 32
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Impartial »

MX_Master писал(а):Накатал тестовый arisc генератор на 8 каналов.
у вас не правильно выбран алгоритм генерации шагов.
Покажите осцилограммы генератора при уменьшении частоты на 50%, 25, 10, 12.5 наконец.
Не всякая плисина сможет правильно генерировать шаги до указанного верхнего предела, а вы про проц с частотой 300мгц да еще с алгоритмом на С.
Тут даже ассемблер не поможет.
Аватара пользователя
MX_Master
Мастер
Сообщения: 6434
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2735
Настоящее имя: Миша
Откуда: Алма-Ата
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Пересмотрел код. Да, неправильно. Сделаю другой.
Bebebe
Новичок
Сообщения: 18
Зарегистрирован: 15 янв 2018, 08:41
Репутация: 2
Настоящее имя: Алексей
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Bebebe »

Хотел проверить на образе из шапки, а пароль root нам неизвестен... :cry:
Аватара пользователя
MX_Master
Мастер
Сообщения: 6434
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2735
Настоящее имя: Миша
Откуда: Алма-Ата
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Bebebe писал(а):Хотел проверить на образе из шапки, а пароль root нам неизвестен... :cry:
root:123456789
cnc:123456
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4339
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1518
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение selenur »

MX_Master писал(а):
Bebebe писал(а):Хотел проверить на образе из шапки, а пароль root нам неизвестен... :cry:
root:123456789
cnc:123456
А я с первого раза угадал пароль на рута :hehehe:
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Аватара пользователя
MX_Master
Мастер
Сообщения: 6434
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2735
Настоящее имя: Миша
Откуда: Алма-Ата
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

А вот и первый вариант точного генератора шагов. Условия тестов - всё те же. Проверял одновременную работу всех 8-ми каналов на разных заковыристых частотах до 200 КГц. Результат довольно точный.

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

Чтобы проследить точность генератора взгляните на осциллограммы и сравните их с заданиями для каждого канала:
  • задание для канала 0 - сделать 198724 шага на частоте 198724 Гц
  • задание для канала 1 - сделать 121548 шагов на частоте 121548 Гц
  • задание для канала 2 - сделать 44957 шагов на частоте 44957 Гц
  • задание для канала 3 - сделать 25489 шагов на частоте 25489 Гц
  • задание для канала 4 - сделать 12548 шагов на частоте 12548 Гц
  • задание для канала 5 - сделать 6983 шага на частоте 6983 Гц
  • задание для канала 6 - сделать 1829 шагов на частоте 1829 Гц
  • задание для канала 7 - сделать 933 шага на частоте 933 Гц
Изображение
2018-02-07_234735.png (1727 просмотров) <a class='original' href='./download/file.php?id=131842&sid=10fe8abea0ed2bfb248c717223b323fa&mode=view' target=_blank>Загрузить оригинал (67.83 КБ)</a>
2018-02-07_235327.png (1727 просмотров) <a class='original' href='./download/file.php?id=131843&sid=10fe8abea0ed2bfb248c717223b323fa&mode=view' target=_blank>Загрузить оригинал (51.77 КБ)</a>
Bebebe
Новичок
Сообщения: 18
Зарегистрирован: 15 янв 2018, 08:41
Репутация: 2
Настоящее имя: Алексей
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Bebebe »

Дело движется и это радует. Макет с двигателями стоит ждет, светодиодами моргает.
Аватара пользователя
MX_Master
Мастер
Сообщения: 6434
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2735
Настоящее имя: Миша
Откуда: Алма-Ата
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

Перед началом нового драйвера для LinuxCNC, встал вот какой вопрос.. Если мы будем использовать на выход текущий GPIO драйвер (hal_gpio_h3) и новый генератор шагов, они будут друг другу мешать.

Поясню. Все пины собраны в отдельные порты. И чтобы изменить состояние хотя бы одного пина, надо прочесть состояние всего порта (32 бита), изменить нужный бит пина и записать эти 32 бита обратно. Если в этот момент какой-то процесс изменил начальные 32 бита, а мы записали поверх наше новое неактуальное значение, то конечный вывод будет однозначно испорчен. Яркое последствие таких помех - потеря шагов у генератора.

Вот я и призадумался как это все правильно организовать.. Можно, как вариант, подправить текущий hal_gpio_h3, чтобы он не занимался непосредственно чтением и записью в GPIO порты. А просто отдавал команды сопроцессору, когда ему нужно изменить состояние каких-то пинов. Как думаете?
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4339
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1518
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение selenur »

MX_Master писал(а):Перед началом нового драйвера для LinuxCNC, встал вот какой вопрос.. Если мы будем использовать на выход текущий GPIO драйвер (hal_gpio_h3) и новый генератор шагов, они будут друг другу мешать.

Поясню. Все пины собраны в отдельные порты. И чтобы изменить состояние хотя бы одного пина, надо прочесть состояние всего порта (32 бита), изменить нужный бит пина и записать эти 32 бита обратно. Если в этот момент какой-то процесс изменил начальные 32 бита, а мы записали поверх наше новое неактуальное значение, то конечный вывод будет однозначно испорчен. Яркое последствие таких помех - потеря шагов у генератора.

Вот я и призадумался как это все правильно организовать.. Можно, как вариант, подправить текущий hal_gpio_h3, чтобы он не занимался непосредственно чтением и записью в GPIO порты. А просто отдавал команды сопроцессору, когда ему нужно изменить состояние каких-то пинов. Как думаете?
А разве нет возможности устанавливать по отдельности биты?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Аватара пользователя
MX_Master
Мастер
Сообщения: 6434
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2735
Настоящее имя: Миша
Откуда: Алма-Ата
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

selenur писал(а):А разве нет возможности устанавливать по отдельности биты?
Я помню в STM'ках были атомарные операции с битами портов. Прервать такую операцию извне ничто не могло. И для таких операций были отдельные регистры только на запись.

Я уже много исходников и доков по чипу H3 просмотрел, но ничего такого не видел. Возможно, это дело тупо не документировано. Надо изучить вопрос более детально.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 8989
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2807
Откуда: Тюмень
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Сергей Саныч »

Не знаю, как это всё организовано в H3, но лучше не рисковать - пусть всей работой с внешними портами занимается сопроцессор, а основной просто передает ему данные.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
straga
Кандидат
Сообщения: 51
Зарегистрирован: 26 фев 2012, 16:54
Репутация: 17
Настоящее имя: Виктор
Откуда: Латвия - Даугавпилс.
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение straga »

Поддерживаю, пускай рулит сопроцесоор, если подругому можем получить глюки.
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Serg »

MX_Master писал(а):Вот я и призадумался как это все правильно организовать..
Блокировка с помощью отдельной переменной.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 6434
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2735
Настоящее имя: Миша
Откуда: Алма-Ата
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение MX_Master »

UAVpilot писал(а):
MX_Master писал(а):Вот я и призадумался как это все правильно организовать..
Блокировка с помощью отдельной переменной.
Да, я тоже об этом думал, но появятся дополнительные накладные расходы. Как минимум дополнительные циклы ожидания в обоих драйверах.

Я, кстати, спросил у знатоков, в H3 нет атомарных операций с GPIO.
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Serg »

Если нет атомарных операций, то накладные расходы будут в любом случае.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4339
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1518
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение selenur »

Понемногу во фьюжене планирую сборку, и вот тут: https://grabcad.com/library/orange-pi-one-1
нашел готовую 3D модель, если вдруг кому нужно:
1.JPG (1516 просмотров) <a class='original' href='./download/file.php?id=132003&sid=10fe8abea0ed2bfb248c717223b323fa&mode=view' target=_blank>Загрузить оригинал (683.4 КБ)</a>
2.JPG (1516 просмотров) <a class='original' href='./download/file.php?id=132004&sid=10fe8abea0ed2bfb248c717223b323fa&mode=view' target=_blank>Загрузить оригинал (842.26 КБ)</a>
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Аватара пользователя
Serg
Мастер
Сообщения: 21289
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5025
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Serg »

Осталось остальные детальки и дорожки нарисовать. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Argon-11
Мастер
Сообщения: 1830
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 417
Контактная информация:

Re: LinuxCNC + Orange Pi

Сообщение Argon-11 »

UAVpilot писал(а):Осталось остальные детальки и дорожки нарисовать.
Нивапрос - у производителя среди файлов имеются dwg платок со всеми элементами. Остается разве что высоту добавить :)
Ответить

Вернуться в «Электроника»