roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 08:00

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




Начать новую тему Ответить на тему  [ Сообщений: 83 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 07 ноя 2011, 22:25 
Не в сети

Зарегистрирован: 27 авг 2011, 14:05
Сообщения: 47
Он имел ввиду A7/A9
Ваш Кэп


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 10:43 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
кстати, т.к. я питона в глаза не видел, то можете показать как на нем будет выглядеть поморгать светодиодом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 11:16 
Не в сети
Аватара пользователя

Зарегистрирован: 16 май 2009, 12:50
Сообщения: 1530
Откуда: Россия
прог. языки: Java, C
И как и чем собрать в *.hex.

_________________
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey.
Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 11:18 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
EdGull писал(а):
кстати, т.к. я питона в глаза не видел, то можете показать как на нем будет выглядеть поморгать светодиодом?

Отличное сообщение от ТС :-) А все-таки, почему тогда python?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 12:06 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
потому что...
EdGull писал(а):
есть предположение что писать код на питоне будет простой и быстрый


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 13:56 
Не в сети
Аватара пользователя

Зарегистрирован: 13 дек 2005, 16:01
Сообщения: 42
Откуда: Белгород
прог. языки: object pascal, c++, Lisp, Prolog
EdGull писал(а):
как на нем будет выглядеть поморгать светодиодом?

В самом тривиальном виде что-то вроде такого:
Код:
import stm32, time

while True:
    stm32.pin3.set(1)
    time.sleep(0.2)
    stm32.pin3.set(0)
    time.sleep(0.2)

Я ещё не разбирался как конкретно работает этот питон-на-чипе, но в hex программы, скорее всего, конвертировать не придётся. Программа на питоне может быть представлена в двух видах: текст и байткод. Полная аналогия с Java. Для большого компа не важно что запускать, байткод или текстовую прогу. Байткод из текста генерируется налету и кладётся рядом в соседнем файле. Возможно для экономии ресурсов контроллера подавать ему мы будем готовый байткод.
Прошивка контроллера будет осуществляться один раз. В него будет записан интерпретатор и, скорее всего, как-то будет настроен автозапуск питоновских файлов из какого-то источника. Например флашка, или внутренняя флеш-память.
Это чисто теоретически. Как устроен stm, сколько у него памяти, когда и как в неё можно писать я ещё не разбирался.
Зато можно пофантаззировать, как можно завернуть низкоуровневый код работы с контроллером в чудесный синтаксический сахар питона.
Код:
import time, stm32, robots, leds, motors, servo
# модуль для работы с параллельными потоками
import thread

# Описание нашего особенного робота. Он потомок обычного гусеничного.
class MyPrettyRobot(robots.TrackedBot):
    def __init__(self):
        # инициализация атрибутов предка
        super(robots.TrackedBot, self).__init__()
        # назначение моторам управляющих пинов на ШИМ и реверс
        self.left_motor.pwm_channel = stm32.pin1
        self.right_motor.pwm_channel = stm32.pin3
        self.left_motor.reverse_channel = stm32.pin2
        self.right_motor.reverse_channel = stm32.pin4
        self.power_led.channel = stm32.pin5
       
        # добавление нового шагового двигателя для поворота башни
        self.head_motor = motors.StepMotor(
            # сигналы на шаг против и по ч.с.
            lr_channel=(stm32.pin6, stm32.pin7),
            step_angle=360.0/100)

        # добавление какого-нибудь серво-мотора
        self.tail = servo.SimpleAB(
            angles=(-30, 30), # предельные углы
            pwm_channel=stm32.pin8, # канал управления
            pwm_delta=30, # период ШИМ, например в мс
            pwm_levels=(10, 90)) # скважности крайних положений

        # Цветные фары
        self.headlight = leds.RGB(
            channel=(stm32.pin9, stm32.pin10, stm32.pin11),
            pwm_delta=30)

        self.tail_swing_interval = 2.0 # интервал мотыляния хвостом 2с
        # поток для мотыляния хвостом
        self.swinging = thread.start_new(self.doSwing, (self,))

    def doSwing(self):
        while True:
            # назначаем хвосту угол в процентах, вычесленных от времени
            self.tail.asPercent = (
                (stm32.timer.s % self.tail_swing_interval) /
                self.tail_swing_interval * 2 - 1) * 50 + 50

            # если хвост в верхней своей точке +-5 градусов
            if -5 < self.tail.angle < 5:
                # плавно зажигаем фары пурпурным цветом
                self.headlight.color = leds.PURPLE
                self.headlight.brightness = (5-abs(self.tail.angle))*20
            else: # иначе гасим их
                self.headlight.brightness = 0
            # спим немножко
            time.sleep(self.tail_swing_interval/64)
               


Последний раз редактировалось Vooon 09 ноя 2011, 10:29, всего редактировалось 1 раз.
[code=python]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 14:03 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Код:
while(1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_9);
delayms(300000);
GPIO_ResetBits(GPIOA,GPIO_Pin_9);
delayms(300000);
}


А это на си :-)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 14:14 
Не в сети
Аватара пользователя

Зарегистрирован: 13 дек 2005, 16:01
Сообщения: 42
Откуда: Белгород
прог. языки: object pascal, c++, Lisp, Prolog
Это чисто гипотетичесий код. Я не знаю какова будет обёртка, но всё что написано вполне правдоподобно. Например пины могут называться как-то иначе, но сами по себе в обёртке они могут являться объектами, знающими своё состояние, статус, назначение.
Очевидно, что со временем повится масса абстрактных объектов, вроде моторов, светодиодов, сервомоторов и шаговиков, которым в конструктор (инициализирующую функцию) будут передаваться все данные для их полноценной работы.
Во втоором примере мы сервомотору указали pin8 -- ножку на которую он подключен ибудет получать с неё ШИМ сигнал. Когда мы создали экземпляр серво-привода и указали ему пин, этот экземпляр, создаваясь, сам зарегистрировал таймер, сконфигорировал ногу на ШИМ, и организовал нужную скважность и всё такое. Естественно под всем этим зарыто много кода в модулях. Но этот код уже не придётся писать по многу раз.

Не знаю насколько это всё будет эффективно и управляемо. Наверно всё зависит от того, насколько будет продумана внутренняя инфраструктура, на которую навешивается весь этот сахар.

Добавлено спустя 38 секунд:
dccharacter писал(а):
А это на си :-)

Круто=) А второй пример?=)

Добавлено спустя 4 минуты 33 секунды:
Вообще я не буду сейчас убеждать, что питон в контроллерах -- это хорошая идея. Я, честно сказать, не знаю. Кода от этого меньше не станет. Вернее его можно красиво и читабельно разделить на слои и абстракции, но насколько мощным окажется контроллер, чтобы прощать нам более высокоуровневый подход к управлению собой. Если в C мы использовали миллисекунды и моглиспуститься вплоть до указателей и тактов, то питон, при очень жестких ограничениях в памяти и скорости может оказаться слоном в посудной лавке на этом крохотном процессоре.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 14:15 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Python очень медленный. Из скриптовых быстрей чем Lua нет. Он и проще намного и мощней. Есть даже порт на ARM7 - eLua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 14:22 
Не в сети
Аватара пользователя

Зарегистрирован: 13 дек 2005, 16:01
Сообщения: 42
Откуда: Белгород
прог. языки: object pascal, c++, Lisp, Prolog
Strijar писал(а):
Он и проще намного и мощней.

Что вы подразумеваете под этой забавной фразой (насчет мощнее)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 14:25 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Ну на си же можно все то же самое сделать
Пока не понимаю прикола. Может быть от того, что в принципе не знаю и не понимаю разные парадигмы программирования (о как сказал).
Но имхо _меньше_ изучить - не получится
_проще_ не выйдет

Ты вот там объектики всякие и т.д. делаешь. Но что мешает на си в функцию передать указатель на структуру? Все то же самое получится...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 15:19 
Не в сети
Аватара пользователя

Зарегистрирован: 13 дек 2005, 16:01
Сообщения: 42
Откуда: Белгород
прог. языки: object pascal, c++, Lisp, Prolog
dccharacter писал(а):
Ну на си же можно все то же самое сделать

Конечно! На любом Полном по Тюрингу языке можно сделать что угодно. Слышали про такой язык, как Brainfuck?

dccharacter писал(а):
Пока не понимаю прикола. Может быть от того, что в принципе не знаю и не понимаю разные парадигмы программирования (о как сказал).

Точно. Дело в том, что со времён Си постепенно происходила своего рода эволюция языков программирования, концепций и подходов. Благодаря ей в современных языках программирования гораздо ниже порог входимости. Появились концепции, позволяющие работать со структурами данных, как с объектами реального мира.

dccharacter писал(а):
Но имхо _меньше_ изучить - не получится
_проще_ не выйдет

В том-то и дело, что если с нуля, то выйдет и проще и меньше. А если ломать старые догматы... Питон -- это язык с очень высокой интроспекцией.
Даже если программист не знает, что за объект он получил и что с ним можно сделать, у него есть в распоряжении система автодокументации, встроенная на уровне языка. Достаточно написать help(любой_объект) и напечатается подробное описание класса и всех методов с указанием какие нужны оргументы и для чего.

dccharacter писал(а):
Ты вот там объектики всякие и т.д. делаешь. Но что мешает на си в функцию передать указатель на структуру? Все то же самое получится...

Ну и какой код получается более читабельным м понимабельным? Да, в сущности указатель на структуру и отдельная функция -- это тот же объект, но "по отдельности".
До процедурного стиля был ассемблер, а ещё раньше первокарты с машинными кодами. И на них тоже можно было программировать. И суть та же. Просто не так читабельно. Это вопрос низкого/высокого уровня. На ассемблере тоже писали очень крутые программы. А на современных ассемблерах можно вполне себе полноценное десктопное приложение с окнами и графикой написать. Тем не менее народ переезжает на уровни повыше.

Добавлено спустя 25 минут 37 секунд:
Тут же ещё вон какое дело. Перейдя с ассемблера на Си в контроллерах мы повысили уровень (читабельность, писабельность, разбирабельность), а вместе с тем немного понизили наш контроль ситуации в коде (теперь мы не сами решаем, где и как в памяти хранятся константы, в какие регистры попадают значения). Так и с переходом на питон.
Если питон на какой-нибудь атмеловской восьмибитке с клочком памяти -- это форменный слон в посудном киоске (ни пошевелиться, ни встать, но в принципе дышать можно). Си в этом случае -- это толстая продавщица. А ассемблер м-м-м... тощий таджык? Грациозная фея?=). Что-то я увлёкся аналогиями. Но теперь уж отступать поздно.
На контроллере рангом поввыше (магазин!) толстая продавщица (Си) чувствует себя отлично, а слон по-прежнему громит всё. В торговом центре, в принципе, слон особых разрушений уже не принесёт.
Эти примеры ничего не говорят о полезных качествах слона или продавщицы. Разве что если провести аналогию с грузоподъёмностью? Чем больше строк кода, тем тяжелее его держать на языке низкого уровня. При п риближении некоторого порогового значения программист просто теряет контроль над своим кодом. Не может запомнить как и что устроено из-за малого уровня абстрации. Конечно качество кода тут тоже сказывается. Качественного кода можно уложить до порога немного больше. Языки высокого кровня поднимают этот самый порог на порядки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 15:23 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
а тем более, если написанное SVP наложить на большое количество программеров участвующих в разработке, то в нашем случае Си это хорошо, а Питон лучше...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 15:30 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Тут еще один моментик есть. Продавщица в наличии уже имеется, а за слоном далеко ехать придется :-)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Python на STM32
СообщениеДобавлено: 08 ноя 2011, 15:31 
Не в сети
Аватара пользователя

Зарегистрирован: 16 май 2009, 12:50
Сообщения: 1530
Откуда: Россия
прог. языки: Java, C
dccharacter писал(а):
Пока не понимаю прикола.
Но имхо _меньше_ изучить - не получится
_проще_ не выйдет

Cам не вижу смысла, поэтому запасся попкорном :)
Цитата:
Благодаря ей в современных языках программирования гораздо ниже порог входимости

Это и не есть хорошо.
Товарищ svp не просто теоретик, он идеалист-теоретик и я не удивлюсь если он свой ИИ пишет :)

_________________
"There is nothing better than sliding down snow and flying through the air" (с) Shane McConkey.
Lieber ein Brett am Fuß als eins vorm Kopf, aber lieber ein Brett vorm Kopf als zwei am Fuß.


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

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


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

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


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO