Аппаратный ШИМ против программного
Аппаратный ШИМ против программного
Скажите, програмисты, а например Рхх, буст и абсорбер- если им сделать Шим програмный, а на выход только транзюки поставить.
Это сильно геморно процессору?
РХх работает только пока дроссель закрыт, абсорбер на малых нагрузках и средних оборотах а буст при Тпс>50%, но до отсечки.
Это сильно геморно процессору?
РХх работает только пока дроссель закрыт, абсорбер на малых нагрузках и средних оборотах а буст при Тпс>50%, но до отсечки.
Skype- max.mad486
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Базовая плата: управление актуаторами
Что именно ты имеешь ввиду? Прогрмный, в противоположность какому? В противоположность аппаратному таймеру с PWM?Mad Max wrote:Скажите, програмисты, а например Рхх, буст и абсорбер- если им сделать Шим програмный, а на выход только транзюки поставить.
Это сильно геморно процессору?
Процессор делает 168 000 000 операий в секунду. 500 раз включить - выключить ШИМ в секунду на этом фоне - просто ноль. С моей точки зрения, ШИМы явно нужно делать прогрмно (собсвенно, уже сделаны именно так - РХХ у меня работает на програмном ШИМ)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Базовая плата: управление актуаторами
russian +1
Какая-то особенная точность там все равно не нужна, так что программный это хороший вариант.
Я надеюсь, что оффтоп на этом закончим?
Какая-то особенная точность там все равно не нужна, так что программный это хороший вариант.
Это если 500. А если 50, то как бы вообще даже стыдно об этом сказать500 раз включить - выключить ШИМ в секунду на этом фоне - просто ноль.
Я надеюсь, что оффтоп на этом закончим?
skype: frig_frig
Re: Базовая плата: управление актуаторами
просто я так понял, чты вы хотите поставить отдельный шим-контроллер, вместо обычных ключей.
Skype- max.mad486
Re: Базовая плата: управление актуаторами
ну тут не всё так тривиальноrussian wrote:Что именно ты имеешь ввиду? Прогрмный, в противоположность какому? В противоположность аппаратному таймеру с PWM?Mad Max wrote:Скажите, програмисты, а например Рхх, буст и абсорбер- если им сделать Шим програмный, а на выход только транзюки поставить.
Это сильно геморно процессору?
Процессор делает 168 000 000 операий в секунду. 500 раз включить - выключить ШИМ в секунду на этом фоне - просто ноль. С моей точки зрения, ШИМы явно нужно делать прогрмно (собсвенно, уже сделаны именно так - РХХ у меня работает на програмном ШИМ)
вопрос в разрешении ШИМа. если 8 бит, то будет 500 * 256 = 128000 раз в секунду. если взять, допустим, 20 инструкций на обработку одного прерывания - получается уже 2 560 000. а это уже 1.5% от производительности.
это просто пример того, что с программным ШИМом стоит обращаться аккуратно.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Базовая плата: управление актуаторами
Вообще ничего не понял. Что такое разрешение шима в битах? Откуда берётся 256? Расскажи пожалуйста подробнее, и сразу уточни - к нам это точно относится?XDA wrote: вопрос в разрешении ШИМа. если 8 бит, то будет 500 * 256 = 128000 раз в секунду. если взять, допустим, 20 инструкций на обработку одного прерывания - получается уже 2 560 000. а это уже 1.5% от производительности.
это просто пример того, что с программным ШИМом стоит обращаться аккуратно.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Аппаратный ШИМ против программного
Ради любопытсва Вы как переменные в STM как обозначаете? Есть какие-то ограничения в тех или иных задачах?
XDA то прав, для програмного ШИМа количество обработок подпрограммы шима умножениется на его разрядность. Програмный ШИМ как по мне хрень которую можно применять в устройствах типа телевизор, и другие побрякушки, от которых не зависит жизнь людей.
Но я вобще тот еще извращенец с асемблером и AVR...
XDA то прав, для програмного ШИМа количество обработок подпрограммы шима умножениется на его разрядность. Програмный ШИМ как по мне хрень которую можно применять в устройствах типа телевизор, и другие побрякушки, от которых не зависит жизнь людей.
Но я вобще тот еще извращенец с асемблером и AVR...
-
- Posts: 5
- Joined: Sun Dec 01, 2013 3:10 pm
Re: Аппаратный ШИМ против программного
в чём проблема в аппаратным шимом?
-
- Posts: 5
- Joined: Sun Dec 01, 2013 3:10 pm
Re: Аппаратный ШИМ против программного
поставьте отдельный STM32F4 для програмного ШИМа, и передавайте ему параметры по шине CAN, вообще не вижу никаких проблем, пусть себе считает
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Аппаратный ШИМ против программного
Если это шутка - то не очень смешная. Наверное балаганить не стоитvertexodessa wrote:поставьте отдельный STM32F4 для програмного ШИМа, и передавайте ему параметры по шине CAN, вообще не вижу никаких проблем, пусть себе считает
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Базовая плата: управление актуаторами
чтобы сделать ШИМ с частотой следования импульсов 500 раз в секунду и 8 битным разрешением (т.е. 256 градаций скваженности) нужно выставить таймер на частоту 500*256 = 128 000 раз в секунду.russian wrote:Вообще ничего не понял. Что такое разрешение шима в битах? Откуда берётся 256? Расскажи пожалуйста подробнее, и сразу уточни - к нам это точно относится?XDA wrote: вопрос в разрешении ШИМа. если 8 бит, то будет 500 * 256 = 128000 раз в секунду. если взять, допустим, 20 инструкций на обработку одного прерывания - получается уже 2 560 000. а это уже 1.5% от производительности.
это просто пример того, что с программным ШИМом стоит обращаться аккуратно.
и каждый тик таймера сравнивать переменную со значением ШИМа с циклическим счётчиком. при превышении - выставлять на выход 1, или 0 в обратном случае.
вход - выход примерно 15 тактов минимум ( сохранение регистров, флагов в стеке, возврат обратно), далее минимум 5 тактов - реализация алгоритма ШИМа. итого порядка 20.
если писать обработчик целиком на С, без ассемблерных вставок, со всякими проверками то будет и все 50 тактов, а то и больше.
перемножаем 128 000 на 15+50 тактов - получается в секунду будет расходоваться 8 320 000 тактов в секунду(или 5.2% всей производительности) на ОДИН 500 герцовый шим.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
Re: Аппаратный ШИМ против программного
Не обязательно делать прерывание на каждый такт шима. Можно сделать прерывание через канал сравнения тогда, когда это нужно. И каждый раз выставлять в канале сравнения ближайшее событие. Но для этого нужна отсортированная очередь. Так, например, сделано в VEMS.
-
- Posts: 5
- Joined: Sun Dec 01, 2013 3:10 pm
Re: Аппаратный ШИМ против программного
объясните, для чего этот геморрой.. в чём выгода?
Re: Аппаратный ШИМ против программного
разумеется это так. просто я привёл пример чисто программного ШИМа. а то у меня сложилось мнение, что такой ситуации никто не боится, считая её исключительно малозатратной.Sergey89 wrote:Не обязательно делать прерывание на каждый такт шима. Можно сделать прерывание через канал сравнения тогда, когда это нужно. И каждый раз выставлять в канале сравнения ближайшее событие. Но для этого нужна отсортированная очередь. Так, например, сделано в VEMS.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
Re: Аппаратный ШИМ против программного
например с помощью 74НС595 можно запросто огранизовать 200 390 герцовых ШИМов с разрядностью 8 бит = 100 килогерц на АТМЕГА48 20мгц.vertexodessa wrote:объясните, для чего этот геморрой.. в чём выгода?
но при условии, что атмега будет заниматься только ШИМами и ничем более, при жесточайшей потактовой оптимизации.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Аппаратный ШИМ против программного
в стм32ф4 не так много таймеров. с четырьмя цилиндрами в принципе еще как-то можно ужаться, но если делать больше цилиндров - то уже будет совсем тяжко. итого - проще сделать програмный ШИМ, чтоб было проще.vertexodessa wrote:объясните, для чего этот геморрой.. в чём выгода?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Аппаратный ШИМ против программного
Я тему лочить не буду конечно, но коллеги - обсуждать здесь просто НЕЧЕГО
1) у нас УЖЕ есть програмный ШИМ в https://svn.code.sf.net/p/rusefi/code/trunk/firmware/hw_layer/pwm_generator.c
2) @ делает еще более хитрую версию, которая вероятно будет достаточно точной в том числе и для управления форсунками-зажиганием. Пока не доделает, комментировать здесь нечего - следите за тикетом https://sourceforge.net/p/rusefi/tickets/24/
1) у нас УЖЕ есть програмный ШИМ в https://svn.code.sf.net/p/rusefi/code/trunk/firmware/hw_layer/pwm_generator.c
2) @ делает еще более хитрую версию, которая вероятно будет достаточно точной в том числе и для управления форсунками-зажиганием. Пока не доделает, комментировать здесь нечего - следите за тикетом https://sourceforge.net/p/rusefi/tickets/24/
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Аппаратный ШИМ против программного
Обсуждать будет нечего, когда кто-нибудь стресс тест проведёт. Сделает 10 каналов с разной частотой, запустит код на 10000 об/мин, прогонит каналы с разной скважностью и озвучит результаты.
-
- Posts: 5
- Joined: Sun Dec 01, 2013 3:10 pm
Re: Аппаратный ШИМ против программного
а можно спросить? не так много, это сколько? просто я читал про всего лишь 17 таймеров с всего лишь 4 сравнениями каждый.. куда там всяким атмегам с мегасквиртами (в котором, кстати, шим аппаратно реализован )russian wrote:в стм32ф4 не так много таймеров. с четырьмя цилиндрами в принципе еще как-то можно ужаться, но если делать больше цилиндров - то уже будет совсем тяжко. итого - проще сделать програмный ШИМ, чтоб было проще.vertexodessa wrote:объясните, для чего этот геморрой.. в чём выгода?
Re: Аппаратный ШИМ против программного
vertexodessa, мы стараемся не завязываться сильно на железо.
В общем вопрос в необходимом разрешении - для подогрева ламбды это одно, для буста другое, для управления форсунками - третье. Не нужно валить все в одну кучу в принципе. Сферическая точность в вакууме для подогрева лямбды - пустая трата времени.
Без конкретных задач и конкретных проблем говорить не о чем. Проблем то может и не быть вовсе!
В общем вопрос в необходимом разрешении - для подогрева ламбды это одно, для буста другое, для управления форсунками - третье. Не нужно валить все в одну кучу в принципе. Сферическая точность в вакууме для подогрева лямбды - пустая трата времени.
Без конкретных задач и конкретных проблем говорить не о чем. Проблем то может и не быть вовсе!
skype: frig_frig
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Аппаратный ШИМ против программного
Нет, требовать разжёвывать ТАК мелко нельзя. Идушь в гугл, открываешь даташит на stm32f4discovery плату. Записываешь на бумажку все пины, на которые выведены таймеры - указанием номера таймера и номера канала.vertexodessa wrote:а можно спросить? не так много, это сколько? просто я читал про всего лишь 17 таймеров с всего лишь 4 сравнениями каждый.. куда там всяким атмегам с мегасквиртами (в котором, кстати, шим аппаратно реализован )
Когда будет здесь этот полный список - продолжим обсуждение
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Аппаратный ШИМ против программного
Мы оба осознаем, что на форуме уже есть результаты одного такого теста, кажется даже с полными исходниками тестового проекта?Sergey89 wrote:Обсуждать будет нечего, когда кто-нибудь стресс тест проведёт. Сделает 10 каналов с разной частотой, запустит код на 10000 об/мин, прогонит каналы с разной скважностью и озвучит результаты.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
-
- Posts: 5
- Joined: Sun Dec 01, 2013 3:10 pm
Re: Аппаратный ШИМ против программного
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00037051.pdf в МК максимум 47 ног, на которые настраиваются каналы таймера. Это так, для информации, т.к. Вы, видимо, вопрос не изучили, раз гуглом тыкаете.. далее обсуждать вопрос не вижу интереса.. удаляюсь из этой дискуссииrussian wrote:Нет, требовать разжёвывать ТАК мелко нельзя. Идушь в гугл, открываешь даташит на stm32f4discovery плату. Записываешь на бумажку все пины, на которые выведены таймеры - указанием номера таймера и номера канала.vertexodessa wrote:а можно спросить? не так много, это сколько? просто я читал про всего лишь 17 таймеров с всего лишь 4 сравнениями каждый.. куда там всяким атмегам с мегасквиртами (в котором, кстати, шим аппаратно реализован )
Когда будет здесь этот полный список - продолжим обсуждение
Re: Аппаратный ШИМ против программного
Конечно концепции единой нет, участников много тянет каждый в свою сторону, лично мне не нравится когда сделано программно то что может быть на аппаратном уровне, взять к примеру MegasquirtAVR с аудиклаба, там они что-то намулячили с внешним прерыванием по зажиганию, позже я так понял переделали на захват таймера.
Ну не совсем в эту тему но давайте хоть вывода таймеров выведем на силовые дискретные выхода, чтоб если останутся лишние таймера то использовать не программный ШИМ.
Ну не совсем в эту тему но давайте хоть вывода таймеров выведем на силовые дискретные выхода, чтоб если останутся лишние таймера то использовать не программный ШИМ.
Re: Аппаратный ШИМ против программного
Во-первых таймеров 14. Во-вторых только у 6 таймеров 4 канала. У остальных по 1, 2 или вообще 0. В-третьих не все каналы получится вывести на ножки, не урезав другие аппаратные функции (в том числе АЦП). И не нужно забывать, что часть таймеров уходит под захват входных сигналов.vertexodessa wrote:http://www.st.com/st-web-ui/static/acti ... 037051.pdf в МК максимум 47 ног, на которые настраиваются каналы таймера. Это так, для информации, т.к. Вы, видимо, вопрос не изучили, раз гуглом тыкаете.. далее обсуждать вопрос не вижу интереса.. удаляюсь из этой дискуссии
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Аппаратный ШИМ против программного
У меня сегодня настроение видимо не очень, поэтому наверное Вас мы потеряем.vertexodessa wrote:Это так, для информации, т.к. Вы, видимо, вопрос не изучили, раз гуглом тыкаете.. далее обсуждать вопрос не вижу интереса.. удаляюсь из этой дискуссии
Но всё же: уважаемый, я попросил Вам открыть спецификацию на stm32f4discovery - а Вы тут показываете спецификацию на чип, стоящий на stm32f4discovery. Никакой разницы не улавливаете?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Базовая плата: управление актуаторами
Ой, ой ой ой ой ой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" можно смело делать нарицательной фразой, смысл которой: пожалуйста, позвольте программистам программировать.
Друзья, у нас у всех разные уровни компетенций в различных областях. Я знаю, что НИЧЕГО не понимаю в электронике - поэтому веду себя в темах про электронику очень скромно. С другой стороны, у меня очень серьёзный уровень в программировании. Давайте дополнять сильные стороны друг друга.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14352
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Аппаратный ШИМ против программного
Вообще не понял вопрос. Вообще.KOT wrote:Ради любопытсва Вы как переменные в STM как обозначаете? Есть какие-то ограничения в тех или иных задачах?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Аппаратный ШИМ против программного
Спасибо, вопрос отпал, я уже посмотрел исходники.russian wrote: Вообще не понял вопрос. Вообще.
Re: Базовая плата: управление актуаторами
хорошо, покажите класс!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м таймером с постоянной частотой )))
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта