Аппаратный ШИМ против программного

Про байтики и логику ЭБУ
Mad Max
Posts: 187
Joined: Wed Nov 13, 2013 12:34 pm
Location: Ukraine, Kharkov

Аппаратный ШИМ против программного

Post by Mad Max » Sat Nov 30, 2013 8:49 pm

Скажите, програмисты, а например Рхх, буст и абсорбер- если им сделать Шим програмный, а на выход только транзюки поставить.
Это сильно геморно процессору?
РХх работает только пока дроссель закрыт, абсорбер на малых нагрузках и средних оборотах а буст при Тпс>50%, но до отсечки.
Skype- max.mad486

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Базовая плата: управление актуаторами

Post by russian » Sat Nov 30, 2013 8:56 pm

Mad Max wrote:Скажите, програмисты, а например Рхх, буст и абсорбер- если им сделать Шим програмный, а на выход только транзюки поставить.
Это сильно геморно процессору?
Что именно ты имеешь ввиду? Прогрмный, в противоположность какому? В противоположность аппаратному таймеру с PWM?

Процессор делает 168 000 000 операий в секунду. 500 раз включить - выключить ШИМ в секунду на этом фоне - просто ноль. С моей точки зрения, ШИМы явно нужно делать прогрмно (собсвенно, уже сделаны именно так - РХХ у меня работает на програмном ШИМ)
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: Базовая плата: управление актуаторами

Post by frig » Sat Nov 30, 2013 9:10 pm

russian +1
Какая-то особенная точность там все равно не нужна, так что программный это хороший вариант.
500 раз включить - выключить ШИМ в секунду на этом фоне - просто ноль.
Это если 500. А если 50, то как бы вообще даже стыдно об этом сказать :D
Я надеюсь, что оффтоп на этом закончим?
skype: frig_frig

Mad Max
Posts: 187
Joined: Wed Nov 13, 2013 12:34 pm
Location: Ukraine, Kharkov

Re: Базовая плата: управление актуаторами

Post by Mad Max » Sun Dec 01, 2013 5:06 am

просто я так понял, чты вы хотите поставить отдельный шим-контроллер, вместо обычных ключей.
Skype- max.mad486

User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Базовая плата: управление актуаторами

Post by XDA » Sun Dec 01, 2013 1:29 pm

russian wrote:
Mad Max wrote:Скажите, програмисты, а например Рхх, буст и абсорбер- если им сделать Шим програмный, а на выход только транзюки поставить.
Это сильно геморно процессору?
Что именно ты имеешь ввиду? Прогрмный, в противоположность какому? В противоположность аппаратному таймеру с PWM?

Процессор делает 168 000 000 операий в секунду. 500 раз включить - выключить ШИМ в секунду на этом фоне - просто ноль. С моей точки зрения, ШИМы явно нужно делать прогрмно (собсвенно, уже сделаны именно так - РХХ у меня работает на програмном ШИМ)
ну тут не всё так тривиально :)
вопрос в разрешении ШИМа. если 8 бит, то будет 500 * 256 = 128000 раз в секунду. если взять, допустим, 20 инструкций на обработку одного прерывания - получается уже 2 560 000. а это уже 1.5% от производительности.
это просто пример того, что с программным ШИМом стоит обращаться аккуратно.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Базовая плата: управление актуаторами

Post by russian » Sun Dec 01, 2013 1:33 pm

XDA wrote: вопрос в разрешении ШИМа. если 8 бит, то будет 500 * 256 = 128000 раз в секунду. если взять, допустим, 20 инструкций на обработку одного прерывания - получается уже 2 560 000. а это уже 1.5% от производительности.
это просто пример того, что с программным ШИМом стоит обращаться аккуратно.
Вообще ничего не понял. Что такое разрешение шима в битах? Откуда берётся 256? Расскажи пожалуйста подробнее, и сразу уточни - к нам это точно относится? :)
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

KOT
Posts: 291
Joined: Sun Nov 17, 2013 8:15 am
Location: Ukraine, Zaporizhia
Contact:

Re: Аппаратный ШИМ против программного

Post by KOT » Sun Dec 01, 2013 2:46 pm

Ради любопытсва Вы как переменные в STM как обозначаете? Есть какие-то ограничения в тех или иных задачах?
XDA то прав, для програмного ШИМа количество обработок подпрограммы шима умножениется на его разрядность. Програмный ШИМ как по мне хрень которую можно применять в устройствах типа телевизор, и другие побрякушки, от которых не зависит жизнь людей.
Но я вобще тот еще извращенец с асемблером и AVR...

vertexodessa
Posts: 5
Joined: Sun Dec 01, 2013 3:10 pm

Re: Аппаратный ШИМ против программного

Post by vertexodessa » Sun Dec 01, 2013 3:12 pm

в чём проблема в аппаратным шимом?

vertexodessa
Posts: 5
Joined: Sun Dec 01, 2013 3:10 pm

Re: Аппаратный ШИМ против программного

Post by vertexodessa » Sun Dec 01, 2013 3:17 pm

поставьте отдельный STM32F4 для програмного ШИМа, и передавайте ему параметры по шине CAN, вообще не вижу никаких проблем, пусть себе считает :D

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Аппаратный ШИМ против программного

Post by russian » Sun Dec 01, 2013 3:31 pm

vertexodessa wrote:поставьте отдельный STM32F4 для програмного ШИМа, и передавайте ему параметры по шине CAN, вообще не вижу никаких проблем, пусть себе считает :D
Если это шутка - то не очень смешная. Наверное балаганить не стоит :)
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Базовая плата: управление актуаторами

Post by XDA » Sun Dec 01, 2013 4:35 pm

russian wrote:
XDA wrote: вопрос в разрешении ШИМа. если 8 бит, то будет 500 * 256 = 128000 раз в секунду. если взять, допустим, 20 инструкций на обработку одного прерывания - получается уже 2 560 000. а это уже 1.5% от производительности.
это просто пример того, что с программным ШИМом стоит обращаться аккуратно.
Вообще ничего не понял. Что такое разрешение шима в битах? Откуда берётся 256? Расскажи пожалуйста подробнее, и сразу уточни - к нам это точно относится? :)
чтобы сделать ШИМ с частотой следования импульсов 500 раз в секунду и 8 битным разрешением (т.е. 256 градаций скваженности) нужно выставить таймер на частоту 500*256 = 128 000 раз в секунду.
и каждый тик таймера сравнивать переменную со значением ШИМа с циклическим счётчиком. при превышении - выставлять на выход 1, или 0 в обратном случае.
вход - выход примерно 15 тактов минимум ( сохранение регистров, флагов в стеке, возврат обратно), далее минимум 5 тактов - реализация алгоритма ШИМа. итого порядка 20.
если писать обработчик целиком на С, без ассемблерных вставок, со всякими проверками то будет и все 50 тактов, а то и больше.
перемножаем 128 000 на 15+50 тактов - получается в секунду будет расходоваться 8 320 000 тактов в секунду(или 5.2% всей производительности) на ОДИН 500 герцовый шим.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта

User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod
Contact:

Re: Аппаратный ШИМ против программного

Post by Sergey89 » Sun Dec 01, 2013 4:44 pm

Не обязательно делать прерывание на каждый такт шима. Можно сделать прерывание через канал сравнения тогда, когда это нужно. И каждый раз выставлять в канале сравнения ближайшее событие. Но для этого нужна отсортированная очередь. Так, например, сделано в VEMS.

vertexodessa
Posts: 5
Joined: Sun Dec 01, 2013 3:10 pm

Re: Аппаратный ШИМ против программного

Post by vertexodessa » Sun Dec 01, 2013 4:47 pm

объясните, для чего этот геморрой.. в чём выгода?

User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Аппаратный ШИМ против программного

Post by XDA » Sun Dec 01, 2013 4:47 pm

Sergey89 wrote:Не обязательно делать прерывание на каждый такт шима. Можно сделать прерывание через канал сравнения тогда, когда это нужно. И каждый раз выставлять в канале сравнения ближайшее событие. Но для этого нужна отсортированная очередь. Так, например, сделано в VEMS.
разумеется это так. просто я привёл пример чисто программного ШИМа. а то у меня сложилось мнение, что такой ситуации никто не боится, считая её исключительно малозатратной.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта

User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Аппаратный ШИМ против программного

Post by XDA » Sun Dec 01, 2013 4:50 pm

vertexodessa wrote:объясните, для чего этот геморрой.. в чём выгода?
например с помощью 74НС595 можно запросто огранизовать 200 390 герцовых ШИМов с разрядностью 8 бит = 100 килогерц на АТМЕГА48 20мгц.
но при условии, что атмега будет заниматься только ШИМами и ничем более, при жесточайшей потактовой оптимизации.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Аппаратный ШИМ против программного

Post by russian » Sun Dec 01, 2013 6:26 pm

vertexodessa wrote:объясните, для чего этот геморрой.. в чём выгода?
в стм32ф4 не так много таймеров. с четырьмя цилиндрами в принципе еще как-то можно ужаться, но если делать больше цилиндров - то уже будет совсем тяжко. итого - проще сделать програмный ШИМ, чтоб было проще.
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Аппаратный ШИМ против программного

Post by russian » Sun Dec 01, 2013 6:29 pm

Я тему лочить не буду конечно, но коллеги - обсуждать здесь просто НЕЧЕГО
1) у нас УЖЕ есть програмный ШИМ в https://svn.code.sf.net/p/rusefi/code/t ... enerator.c
2) @ делает еще более хитрую версию, которая вероятно будет достаточно точной в том числе и для управления форсунками-зажиганием. Пока не доделает, комментировать здесь нечего - следите за тикетом https://sourceforge.net/p/rusefi/tickets/24/
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod
Contact:

Re: Аппаратный ШИМ против программного

Post by Sergey89 » Sun Dec 01, 2013 6:56 pm

Обсуждать будет нечего, когда кто-нибудь стресс тест проведёт. Сделает 10 каналов с разной частотой, запустит код на 10000 об/мин, прогонит каналы с разной скважностью и озвучит результаты.

vertexodessa
Posts: 5
Joined: Sun Dec 01, 2013 3:10 pm

Re: Аппаратный ШИМ против программного

Post by vertexodessa » Sun Dec 01, 2013 7:02 pm

russian wrote:
vertexodessa wrote:объясните, для чего этот геморрой.. в чём выгода?
в стм32ф4 не так много таймеров. с четырьмя цилиндрами в принципе еще как-то можно ужаться, но если делать больше цилиндров - то уже будет совсем тяжко. итого - проще сделать програмный ШИМ, чтоб было проще.
а можно спросить? не так много, это сколько? просто я читал про всего лишь 17 таймеров с всего лишь 4 сравнениями каждый.. куда там всяким атмегам с мегасквиртами (в котором, кстати, шим аппаратно реализован :) )

frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: Аппаратный ШИМ против программного

Post by frig » Sun Dec 01, 2013 7:06 pm

vertexodessa, мы стараемся не завязываться сильно на железо.

В общем вопрос в необходимом разрешении - для подогрева ламбды это одно, для буста другое, для управления форсунками - третье. Не нужно валить все в одну кучу в принципе. Сферическая точность в вакууме для подогрева лямбды - пустая трата времени.
Без конкретных задач и конкретных проблем говорить не о чем. Проблем то может и не быть вовсе!
skype: frig_frig

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Аппаратный ШИМ против программного

Post by russian » Sun Dec 01, 2013 7:07 pm

vertexodessa wrote:а можно спросить? не так много, это сколько? просто я читал про всего лишь 17 таймеров с всего лишь 4 сравнениями каждый.. куда там всяким атмегам с мегасквиртами (в котором, кстати, шим аппаратно реализован :) )
Нет, требовать разжёвывать ТАК мелко нельзя. Идушь в гугл, открываешь даташит на stm32f4discovery плату. Записываешь на бумажку все пины, на которые выведены таймеры - указанием номера таймера и номера канала.

Когда будет здесь этот полный список - продолжим обсуждение :)
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Аппаратный ШИМ против программного

Post by russian » Sun Dec 01, 2013 7:09 pm

Sergey89 wrote:Обсуждать будет нечего, когда кто-нибудь стресс тест проведёт. Сделает 10 каналов с разной частотой, запустит код на 10000 об/мин, прогонит каналы с разной скважностью и озвучит результаты.
Мы оба осознаем, что на форуме уже есть результаты одного такого теста, кажется даже с полными исходниками тестового проекта? :)
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

vertexodessa
Posts: 5
Joined: Sun Dec 01, 2013 3:10 pm

Re: Аппаратный ШИМ против программного

Post by vertexodessa » Sun Dec 01, 2013 7:35 pm

russian wrote:
vertexodessa wrote:а можно спросить? не так много, это сколько? просто я читал про всего лишь 17 таймеров с всего лишь 4 сравнениями каждый.. куда там всяким атмегам с мегасквиртами (в котором, кстати, шим аппаратно реализован :) )
Нет, требовать разжёвывать ТАК мелко нельзя. Идушь в гугл, открываешь даташит на stm32f4discovery плату. Записываешь на бумажку все пины, на которые выведены таймеры - указанием номера таймера и номера канала.

Когда будет здесь этот полный список - продолжим обсуждение :)
http://www.st.com/st-web-ui/static/acti ... 037051.pdf в МК максимум 47 ног, на которые настраиваются каналы таймера. Это так, для информации, т.к. Вы, видимо, вопрос не изучили, раз гуглом тыкаете.. далее обсуждать вопрос не вижу интереса.. удаляюсь из этой дискуссии

KOT
Posts: 291
Joined: Sun Nov 17, 2013 8:15 am
Location: Ukraine, Zaporizhia
Contact:

Re: Аппаратный ШИМ против программного

Post by KOT » Sun Dec 01, 2013 7:42 pm

Конечно концепции единой нет, участников много тянет каждый в свою сторону, лично мне не нравится когда сделано программно то что может быть на аппаратном уровне, взять к примеру MegasquirtAVR с аудиклаба, там они что-то намулячили с внешним прерыванием по зажиганию, позже я так понял переделали на захват таймера.
Ну не совсем в эту тему но давайте хоть вывода таймеров выведем на силовые дискретные выхода, чтоб если останутся лишние таймера то использовать не программный ШИМ.

User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod
Contact:

Re: Аппаратный ШИМ против программного

Post by Sergey89 » Sun Dec 01, 2013 7:45 pm

vertexodessa wrote:http://www.st.com/st-web-ui/static/acti ... 037051.pdf в МК максимум 47 ног, на которые настраиваются каналы таймера. Это так, для информации, т.к. Вы, видимо, вопрос не изучили, раз гуглом тыкаете.. далее обсуждать вопрос не вижу интереса.. удаляюсь из этой дискуссии
Во-первых таймеров 14. Во-вторых только у 6 таймеров 4 канала. У остальных по 1, 2 или вообще 0. В-третьих не все каналы получится вывести на ножки, не урезав другие аппаратные функции (в том числе АЦП). И не нужно забывать, что часть таймеров уходит под захват входных сигналов.

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Аппаратный ШИМ против программного

Post by russian » Sun Dec 01, 2013 11:12 pm

vertexodessa wrote:Это так, для информации, т.к. Вы, видимо, вопрос не изучили, раз гуглом тыкаете.. далее обсуждать вопрос не вижу интереса.. удаляюсь из этой дискуссии
У меня сегодня настроение видимо не очень, поэтому наверное Вас мы потеряем.
Но всё же: уважаемый, я попросил Вам открыть спецификацию на stm32f4discovery - а Вы тут показываете спецификацию на чип, стоящий на stm32f4discovery. Никакой разницы не улавливаете? :)
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Базовая плата: управление актуаторами

Post by russian » Sun Dec 01, 2013 11:58 pm

XDA wrote:чтобы сделать ШИМ с частотой следования импульсов 500 раз в секунду и 8 битным разрешением (т.е. 256 градаций скваженности) нужно выставить таймер на частоту 500*256 = 128 000 раз в секунду.
и каждый тик таймера сравнивать переменную со значением ШИМа с циклическим счётчиком. при превышении - выставлять на выход 1, или 0 в обратном случае.
вход - выход примерно 15 тактов минимум ( сохранение регистров, флагов в стеке, возврат обратно), далее минимум 5 тактов - реализация алгоритма ШИМа. итого порядка 20.
если писать обработчик целиком на С, без ассемблерных вставок, со всякими проверками то будет и все 50 тактов, а то и больше.
перемножаем 128 000 на 15+50 тактов - получается в секунду будет расходоваться 8 320 000 тактов в секунду(или 5.2% всей производительности) на ОДИН 500 герцовый шим.
Ой, ой ой ой ой ой :(

Сегодня у меня настроение не фонтан, поэтому я продолжу жечь напалмом: это просто УЖАС, а не рассуждение. Я сейчас очень неприятно возможно скажу, но это описание проблемы "500*256" можно смело делать нарицательной фразой, смысл которой: пожалуйста, позвольте программистам программировать.

Друзья, у нас у всех разные уровни компетенций в различных областях. Я знаю, что НИЧЕГО не понимаю в электронике - поэтому веду себя в темах про электронику очень скромно. С другой стороны, у меня очень серьёзный уровень в программировании. Давайте дополнять сильные стороны друг друга.
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

User avatar
russian
Site Admin
Posts: 9527
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Soldering skill: yes
Coding skill?: yes
Contact:

Re: Аппаратный ШИМ против программного

Post by russian » Mon Dec 02, 2013 12:01 am

KOT wrote:Ради любопытсва Вы как переменные в STM как обозначаете? Есть какие-то ограничения в тех или иных задачах?
Вообще не понял вопрос. Вообще.
https://rusefi.com/s/howtocontribute
very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
my skype is arro239

KOT
Posts: 291
Joined: Sun Nov 17, 2013 8:15 am
Location: Ukraine, Zaporizhia
Contact:

Re: Аппаратный ШИМ против программного

Post by KOT » Mon Dec 02, 2013 4:49 am

russian wrote: Вообще не понял вопрос. Вообще.
Спасибо, вопрос отпал, я уже посмотрел исходники.

User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Базовая плата: управление актуаторами

Post by XDA » Mon Dec 02, 2013 6:14 am

russian wrote:
XDA wrote:чтобы сделать ШИМ с частотой следования импульсов 500 раз в секунду и 8 битным разрешением (т.е. 256 градаций скваженности) нужно выставить таймер на частоту 500*256 = 128 000 раз в секунду.
и каждый тик таймера сравнивать переменную со значением ШИМа с циклическим счётчиком. при превышении - выставлять на выход 1, или 0 в обратном случае.
вход - выход примерно 15 тактов минимум ( сохранение регистров, флагов в стеке, возврат обратно), далее минимум 5 тактов - реализация алгоритма ШИМа. итого порядка 20.
если писать обработчик целиком на С, без ассемблерных вставок, со всякими проверками то будет и все 50 тактов, а то и больше.
перемножаем 128 000 на 15+50 тактов - получается в секунду будет расходоваться 8 320 000 тактов в секунду(или 5.2% всей производительности) на ОДИН 500 герцовый шим.
Ой, ой ой ой ой ой :(

Сегодня у меня настроение не фонтан, поэтому я продолжу жечь напалмом: это просто УЖАС, а не рассуждение. Я сейчас очень неприятно возможно скажу, но это описание проблемы "500*256" можно смело делать нарицательной фразой, смысл которой: пожалуйста, позвольте программистам программировать.

Друзья, у нас у всех разные уровни компетенций в различных областях. Я знаю, что НИЧЕГО не понимаю в электронике - поэтому веду себя в темах про электронику очень скромно. С другой стороны, у меня очень серьёзный уровень в программировании. Давайте дополнять сильные стороны друг друга.
хорошо, покажите класс!
приведите свои рассуждения для ШИМа в 500 герц с 8битным разрешением и 1м таймером с постоянной частотой :))))
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта

Post Reply