Например TDA7294

Форум РадиоКот • Просмотр темы - Вычисляемый переход - проблема
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 13:44:38

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 174 ]     ... , , , , 9
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 08:37:35 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21834
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Это уже не моя жадность, а микрочиповская.

Из чего это следует? Вам известна площадь кристалла этого МК и нормы топологии?
Совершенно пустое утверждение с Вашей стороны, отражающее лишь ВАШУ скупость. Уж извините великодушно...


Или лично мне слышать "лень читать/вникать" в листинг 12 штук машинных слов


Во первых, какие такие 12 машинных слов? В обсуждаемой портянке их СЕМЬДЕСЯТ (если я не сбился со счета).
Во вторых, дело не в размерах портянки, а в ее ЧИТАБЕЛЬНОСТИ.
Если применяются макросы, то приводят макросы вместе с кодом. Это по любому короче и понятнее.
В третьих, нахрена мне разбирать портянку с неизвестным мне алгоритмом? Мне что, больше не на что убить время?
Давайте я Вам приведу собственный фрагмент кода (а паче завершенную функцию) - посмотрим сколько Вы будете в ней разбираться, даже с комментариями... :music:
И это при том, что алгоритм реализованный в этой функции прост и понятен в математической интерпретации.
Ваши потуги с освоением новых платформ МК натыкаются на УЖЕ ИМЕЮЩУЮСЯ безалаберность в кодописании. Вы хватаете инструменты архитектуры и применяете их совершенно рандомно, без желания понять для чего эти инструменты вообще были созданы. Почему они именно такие и никакие другие... В результате новая платформа становится дремучим лесом новых непонятных сущностей. А на самом деле, все сущности остались на своих местах, лишь их количество и внутреннее качество возросло.

Надо ли мне ставить вопросы по разгону

Нет, не нужно. Ответ на них очевиден.

И у меня на Pic18 & ICD-2 такая же хрень - отладчики и эмуляторы не работают, а в натуре - всё Ок.
Но повторюсь - чья это жадность или тупость, моя или микрочипов ?

У меня такое ощущение, что Вы в слово "жадность" вкладываете какое то свое понятие...
Аппаратная часть дебага - это структура ПОВЕРХ архитектуры МК. Если частота работы шин близка к предельной, блок отладки начинает сбоить. Особенно если учесть традиционную безалаберность в топологии шин ICSP от МК к отладчику и разные питания у отладчика и МК.

И второй момент - лично у меня спаяна/написана/чутка отлажена заготовка на Пик18Ф4431 которая вместо главного кварца использует LC контур с варикапом.
А на основе второго кварца она измеряет и выводит на экран собственную тактовую частоту. Менять её самостоятельно и поддерживать заданной - не дописал, однако - в ходе тех экспериментов - верхний предел умножителя частоты х4 ~15.5 МГц в Пик-18Ф4431 был обозначен весьма явно на нескольких имеющихся у меня экземплярах при питании 5.05 вольта от близко расположенного вторичного стаба и нормальной керамики шунтирующей питание максимально близко к кристаллу.


Если не секрет, зачем вся эта шняга? Есть смутное подозрение, что Вы как то странно себе представляете работу цифровой петли регулирования... Бешеная разрядность, регулирование варикапом тактовой частоты МК... :facepalm:

Глаза не режут противоречия в уровне интеллекта ?

Я выше ответил. Повторюсь в несколько более саркастичной форме, чтобы лучше дошло, наконец. Прошу не слишком обижаться.
"Один дурак может написать то, что 100 мудрецов не поймут..."
Я на сей раз был понятен, надеюсь?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 09:33:21 
Прорезались зубы

Зарегистрирован: Пт мар 02, 2018 13:47:57
Сообщений: 203
Рейтинг сообщения: 0
Я выше ответил.

Когда общение через монитор не в первый раз натыкается на различное толкование слов, и тем более когда видим прямое игнорирование написанного текста -
То как можно "ответить", если есть сомнения что вопрос был прочитан именно тот и понят как ожидалось задавшим вопрос ?
Прошу не слишком обижаться.

Ничего личного, и на обиженных - воду возят, согласен
"Один дурак может написать то, что 100 мудрецов не поймут..."

По лично мне - "один дурак могет столько вопросов назадавать - что и 100 мудрецов не ответят" - ближе к оригиналу.
Я на сей раз был понятен, надеюсь?

Нет.
Ибо слышать про "мудрецов" от форумчанина, игнорировавшего прямой вопрос про 12 слов и 24 бита и текста листинга из 9 строк - а потом рассказывающего что в 70+ строках ДРУГОГО листинга (где тот заданный вопрос не встречается и про который вопросы заданы не были) - не понятен алгоритм и каменты не те - ну, витиевато, согласен.
Уж извините великодушно...

Да полно Вам, отец родной, извиняться.
Ничего личного - вынужден повторить.
Это уже не моя жадность, а микрочиповская.

Из чего это следует? Вам известна площадь кристалла этого МК и нормы топологии?
Совершенно пустое утверждение с Вашей стороны, отражающее лишь ВАШУ скупость.

Достаточно того, что известны цены и тактовые частоты одногодок Пик18F4431 в таком же корпусе.
Более того - ICD-2 с 18F4550 работает на 48 МГц, а с 18F4431 - нет.
И в этом свете - лично мне видятся именно искуственные препоны от микрочипов для проталкивания в рынок более новых процов с более сложной для программера системой команд.
Влекущие за собой пятую колонну марионеток-бэйсикописателей, висящих на ниточках заокеанских регулярно обновляемых закрытых библиотек.
Но например сознавал ли Иуда все последствия честно заработанных им 30 сребренников, или был лишь пешкой в высокой игре вечных антагонистов ?
Или лично мне слышать "лень читать/вникать" в листинг 12 штук машинных слов

Во первых, какие такие 12 машинных слов? В обсуждаемой портянке их СЕМЬДЕСЯТ (если я не сбился со счета).

Это особое умение - видеть вопрос там, где он не задан, и НЕ видеть его там, где он задан явно ?
Ну так-то характеризует, согласен.
Так вот же тот вопос, цитатирую второй разок, благо не сложно, спасибо движку форума:
Кстати есть тактический предметный вопрос по АСМ Пик-18.
Как сделать короче используемую сейчас последовательность команд, вот кусок листинга:
Код:
000434 C117 F11A   movff   Angle_1,Angle_2      ; Младший
000438 C118 F11B   movff   Angle_1+1,Angle_2+1   ;
00043C C119 F11C   movff   Angle_1+2,Angle_2+2   ; Старший
000440 0E55         movlw   low(0x555555)      ;
000442 271A         addwf   Angle_2,F,BANKED   ; А + В, результат  В=B+A
000444 0E55         movlw   high(0x555555)      ;
000446 231B         addwfc   Angle_2+1,F,BANKED   ; и сложим старшие байты - результат в В
000448 0E55         movlw   upper(0x555555)   ;
00044A 231C         addwfc   Angle_2+2,F,BANKED   ; и сложим старшие байты - результат в В

Надо прибавить к источнику 24 бита константу (можно не константу-литерал а значение в ОЗУ) 24 бита и переслать это в приёмник 24 бита.
Сейчас это 12 циклов как видно из листинга, можно сделать короче ? Источник портить нельзя.

И после этого были ответы, и после этого были рассуждалки, а потом мы внезапно 12 превратили в 72, ну в полночь, как тыкву, волшебство феи ?
Во вторых, дело не в размерах портянки, а в ее ЧИТАБЕЛЬНОСТИ.
Если применяются макросы, то приводят макросы вместе с кодом. Это по любому короче и понятнее.
В третьих, нахрена мне разбирать портянку с неизвестным мне алгоритмом? Мне что, больше не на что убить время?

Да ладно, и так всё заработало на Цлк/512 - шлифовано уже нормально.
Более того - гадание на числовой гуще - сказало что Цлк/512 вычислитель - работает, но запасаса на остальное маловато.
Цлк/640 - работает, но в одной из строк таблицы частот ШИМ частота биений маловата.
В итоге - выбор пал на Цлк/768 как наиболее далёкую по частоте биений. И запаса на фон остаётся больше.
И работает от встроенного 8 МГц RC гены - со снижением максимальной частоты синусоиды с ~килогерца до ~сотни герц.
Так что - по листингу ~76 машинных слов - пока ОСТРОГО вопроса нет, спасибо за помощь.
Как минимум именно потому, что разговаривать через монитор с не желающим читать - ну как с голубем в шахматы играть.
А так-то да, именно тем, кто хочет блеснуть интеллектом и/или помочь укоротить те самые ~76 машинных слов хотя бы на 1 слово=цикл - просьба об оказании помощи в силе.
А алгоритмы - ну они написаны в тех самых каментах, которых "много" и "они очевидны" но "не объясняют сути алгоритма".
Ну или в коде в листинге. Цитатить/указывать могу/буду, но потом. Ну или абзац Подробное описание вычислителя фазного значения ШИМ как вариант.
Давайте я Вам приведу собственный фрагмент кода (а паче завершенную функцию) - посмотрим сколько Вы будете в ней разбираться, даже с комментариями...

Спасибо, рановато мне ещё такое. Тем более с учётом того, что комментарии - дело интимное.
Особенно когда читающему листинг человеку кажется что они очевидны, но понять смысл вопроса инфы не достаточно .
И это при том, что алгоритм реализованный в этой функции прост и понятен в математической интерпретации.

Прикладная математика - не мой конёк, согласен.
Но по алгоритмам на асме PDP-11 (~78 команд кстати) лично я успешно соперничал с более старшим товарищем с матфака в своё время.
Далеко не последним на том матфаке по уровню головы.
натыкаются на УЖЕ ИМЕЮЩУЮСЯ безалаберность в кодописании.

Приятно видеть критику лично моего кодописания после жалоб на отсутствие исходного кода.
Это такой например обоснованности выводов через сугубо последовательное логическое мышление ?
Ваши потуги с освоением новых платформ МК ... Вы хватаете инструменты архитектуры и применяете их совершенно рандомно, без желания понять для чего эти инструменты вообще были созданы.
Почему они именно такие и никакие другие... В результате новая платформа становится дремучим лесом новых непонятных сущностей.

Откуда инфа что лично я начал осваивать Пик-24 ?
Да, я создал прожект по вашим подсказкам, спасибо. Да, он скомпилился и мой страх перед сложностью инициализациеи таблицы указателей на прерывания - был не обоснован и с вашей помощью он развеян, спасибо.
Но - осваивать - пока не начал. Ибо допилю вначале буратину на Пик-18 до исчерпания запаса плавучести.
И ещё момент - шпаргалка 3 страницы по командам Пик-18 у лично меня до сих пор на столе когда я пишу код. И это за 10 годов писания на асме Пик-18 приступами пару/тройку раз в году.
Боюсь даже представить - сколько времени уйдёт на привыкание к 300+ команд (шпаргалку 7 страниц распечатал и склепал и почитываю для зубрёжки) Пик-24/30.
Надо ли мне ставить вопросы по разгону

Нет, не нужно. Ответ на них очевиден.

Так же очевиден как и разница между 12 и 76 машинными словами в простыне вопроса, который не был задан ?
Или так же очевиден как и разгадка на вопрос про глюки, которую лично я удалил из мессаги ?
Ок, второй шанс - в чём причина глюков, какие есть предположения ?
И у меня на Pic18 & ICD-2 такая же хрень - отладчики и эмуляторы не работают, а в натуре - всё Ок.
Но повторюсь - чья это жадность или тупость, моя или микрочипов ?

У меня такое ощущение, что Вы в слово "жадность" вкладываете какое то свое понятие...

Согласен, любопытно что это ощущение возникает именно на слове "жадность".
И второй момент - лично у меня спаяна/написана/чутка отлажена заготовка на Пик18Ф4431 которая вместо главного кварца использует LC контур с варикапом.
А на основе второго кварца она измеряет и выводит на экран собственную тактовую частоту. Менять её самостоятельно и поддерживать заданной - не дописал, однако - в ходе тех экспериментов - верхний предел умножителя частоты х4 ~15.5 МГц в Пик-18Ф4431 был обозначен весьма явно на нескольких имеющихся у меня экземплярах при питании 5.05 вольта от близко расположенного вторичного стаба и нормальной керамики шунтирующей питание максимально близко к кристаллу.

Если не секрет, зачем вся эта шняга? Есть смутное подозрение, что Вы как то странно себе представляете работу цифровой петли регулирования... Бешенная разрядность, регулирование варикапом тактовой частоты МК...

Я не профи - какие у меня могут быть секреты ?
Ответ был дан уже - бывают силовухи, работающие в резонансе. И частота резонанса могет плавать от внешних факторов (например внесения металла в индукционную печь).
И плавать она могет сильно, но поддерживать её иногда надо точно.
А степень совершенства цифровой петли регулирования в применении именно к той заготовке - поле не паханное пока что.
Но запас по разгону Пик18Ф4431 был исследован чутка.
Потому и без страха и упрёка был запаян более дешёвый гена 50 МГц в буратину частотника №2А - это однозначно меньше на ~1/4 чем она могёт объективно.


Последний раз редактировалось psw2.ru Вс янв 27, 2019 11:38:21, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 11:11:40 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
:facepalm:

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 12:08:55 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21834
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Я не профи - какие у меня могут быть секреты ?
Ответ был дан уже - бывают силовухи, работающие в резонансе. И частота резонанса могет плавать от внешних факторов (например внесения металла в индукционную печь).
И плавать она могет сильно, но поддерживать её иногда надо точно.
А степень совершенства цифровой петли регулирования в применении именно к той заготовке - поле не паханное пока что.
Но запас по разгону Пик18Ф4431 был исследован чутка.
Потому и без страха и упрёка был запаян более дешёвый гена 50 МГц в буратину частотника №2А - это однозначно меньше на ~1/4 чем она могёт объективно.

Не буду комментировать остальное, скажу лишь, что ответ на 12 строк был мной дан ранее. И даже с вариантом. А то, что я обсуждал портянку из дизасма, Вы давно поняли. Иначе не упоминали бы про инлайн-макрос.
Однако про частотник.
Какой шаг перестройки частоты синуса?
Нахрена нужно затевать всю эту перверзию с варикапом? :facepalm: Что, самый обычный программный DDS не катит? Сотня герц для DDS с накачкой в 50-100 кГц или около того - легко реализовать.
ЗЫ. В догон. Выглядит странным, что человек когда то столкнувшийся с PDP-11 не может разделить код операции от адресной части в машинной инструкции при освоении новых платформ... Как же Вы писали для PDP-11 на асме? :dont_know:
Там совершенно определенно в двухадресных инструкциях старшие три бита (восьмеричный ниббл) как раз и является кодом операции. А остальные - адресной частью.
Например:
12737 - копирование константы следующей за инструкцией по адресу следующему за инструкцией.
Сиречь, мнемоника ассемблера: mov <const>, [R7]
Первый ниббл операнда в адресной части - тип адресации, второй ниббл - РОН через который происходит адресация. R7- счетчик команд.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 15:11:07 
Прорезались зубы

Зарегистрирован: Пт мар 02, 2018 13:47:57
Сообщений: 203
Рейтинг сообщения: 0
скажу лишь, что ответ на 12 строк был мной дан ранее. И даже с вариантом.

Прошу простить за слепоту и навязчивость, только что перечитал все ответы - но можно повторить якобы данный вариант из 3х циклов на байт вместо 4 в исходном листинге к вопросу ?
А то, что я обсуждал портянку из дизасма, Вы давно поняли. Иначе не упоминали бы про инлайн-макрос.
Однако

Забавно, однако. Особенно про уверенность извне в том, что находится внутри лично моей головы.
Листинг 12 машинных слов - это тоже 2 макроса, но лично я в погоне за урезанием не имеющего отношения к делу на мой взгляд - вырезал лишнее из листинга.
А исходный текст на асме - выглядел так:
Код:
   movff24   Angle_1,Angle_2   ; Готовим слагаемые
   Add24L   Angle_2,BANKED,0x555555   ; Прибавляем опорный угол к смещению фазы +1/3 оборота
А теперь он выглядит так:
Add24L3 Angle_2,BANKED,Angle_1,BANKED,0x555555   ; D=B+A Прибавляем опорный угол к смещению фазы +1/3 оборота   

И выполняется на 3 цикла быстрее, по 3 цикла на байт. Аргумент А могет быть константой-литералом или ОЗУ - будет всё-равно 3 цикла на байт.
про частотник.
Частоту какую Вы генерируете в нагрузку (не частоту ШИМ, а частоту синуса управляющего ШИМом)? Какой диапазон и шаг ее перестройки?

Странный вектор вопросов, не пойму какое это имеет значение, но попробую ответить.
Диапазон и шаг - настраиваются из меню на ходу единственным 8 бит задатчиком "максимальная частота".
Соответственно - шаг частоты в выбранном диапазоне определяется выбранной максимальной частотой синуса, ибо минимальная всегда = 0.
Максимальные частоты синусоиды - примерно от 25 до 1000 Гц выбираются, соответственно шаг единичного изменения частоты в выбранном диапазоне (задатчик скорости тоже 8 бит) - будет от 25/256=~0.1 до 1000/256=~4 герца.
Нахрена нужно затевать всю эту перверзию с варикапом? Что, самый обычный программный DDS не катит?

В частотнике и есть программный прямой цифровой синтез, как можно было заметить при чтении того абзаца "Подробное описание вычислителя фазного значения ШИМ", на который я уже давал сцыль выше и продублировал сейчас.
Или при чтении каментов в простыне из ~76 слов=циклов.
Могу продублировать для желающих помочь укоротить фазный вычислитель высокоуровневую абстрактную задачу - на входе адрес счётчика накопителя угла (из которого надо взять ~12 старших бит мгновенного угла синуса), адрес 16 бит буфера 12 бит беззнаковой амплитуды, начальный адрес таблицы синусов по 2 байта на отсчёт 2048 значений всего.
На выходе - 10 или 11 или 12 или 13 или 14 бит (~4 октавы диапазон перестройки частоты ШИМ) значение в регистр длительности ШИМ (максимальное значение ШИМ/период меняется на ходу, связанные с этим коэффициенты находятся в ОЗУ и меняются вне этой задачи). Ограничение амплитуды сверху и снизу на ~1/10 тоже надо ибо полезно. Ограничители могут находится в ОЗУ или непосредственные - как быстрее.
Решать задачу методом уменьшения разрядности представления данных - не разрешено.
Но варикапное регулирование - не имеет отношения к частотнику. Оно имеет отношение к программному генератору двухтактного ШИМ (программная замена Tl494) для источника питания с частотой ШИМ 70-200 КГц и точной подстройкой частоты генератора - с точностью ~1/100.
ЗЫ. В догон. Выглядит странным, что человек когда то столкнувшийся с PDP-11 не может разделить код операции от адресной части в машинной инструкции при освоении новых платформ..

Не надо путать написание программ на макро асме и написание программ в машинных кодах.
Но с макро асмом - лично я познакомился именно на RSX-11/PDP-11 она же СМ-ЭВМ номер не помню 256 кб ОЗУ/4 мб кастрюли/700К операций/сек размер ЦПУ ЭВМ кажется 3 шкафа как холодильник.
И рядом ещё дисковые накопители как газовая плита с кастрюлями дисковых пакетов. И да, АЦПУ с "ромашкой" на рулоне.
И где-то потерялись мои листинги программ на бэйсике и асме из тех времён.
А вот систему кодировки команд PDP-11 само собой мы в факультативном порядке обсуждали, ибо как же без этого.
Как же Вы писали для PDP-11 на асме?

Вот так и писал - не думая.
А в какой именно момент времени при написании программы на асме для PDP-11 - надо было знать куда именно в машинное слово пишется код операции, куда номер адресации операнда, а куда - номер РОН ?
Я же не с консольного пульта команды для CPU руками в реальном времени топтал тумблерами для тестирования/отладки или для набивать загрузчик.
Я как человек - в терминальном классе на 12 мест общался с компилятором асма/линкером ОС-РВ через 1200 бод интерфейс символьного терминала ввода/вывода.
И сохранял мои файлы в директориях вида [2,200] например.
Там совершенно определенно в двухадресных инструкциях старшие три бита (восьмеричный ниббл) как раз и является кодом операции. А остальные - адресной частью.
Например:
12737 - копирование константы следующей за инструкцией по адресу следующему за инструкцией.

Спасибо за ностальгию, лично я уже забыл что когда-то писал числа с префиксом О. Но RADIX-50 не забыл.
Сведения об нюансах асма PDP-11 из лично моей головы удалились за давностью лет.
Однако в команде - кроме КОП - были ещё по 6 бит на операнд (номер адресации и номер РОН). Итого на КОП остаётся 16-12=4 бита в двухадресных командах.
А не 3, как написано выше.
Но всё равно - спасибо за ностальгию.
Сиречь, мнемоника ассемблера: mov <const>, [R7]
Первый ниббл операнда в адресной части - тип адресации, второй ниббл - РОН через который происходит адресация. R7- счетчик команд.

Да, те самые программные извороты ортогональной системы команд, когда все регистры и методы адресации равноправны с точки зрения простого АЛУ - это сказка, согласен.
А не те самые сплошные исключения из ортогональности "для повышения плотности кода" (написанного на Си, не иначе), при "стоимости флеша ~0" (а зачем тогда повышать плотность кода, если выигрыш в бапках = 0, а программа на Си всё-равно и длиннее и медленнее ?).


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 16:06:40 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21834
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
В частотнике и есть программный прямой цифровой синтез, как можно было заметить при чтении того абзаца, на который я давал сцыль выше.

В DDS разрядность аккумулятора фазы определяется шагом частоты.
Собственно если у Вас аккумумлятор фазы имеет 24 разряда, то синтез 1 синусоиды без регистра фазы даст всего одну сумму на цикл. С регистром фазы - две суммы. Трехфазный синус даст три суммы - ведущий синус и еще две фазы по 120 град.
Предположим, генерирующий синус ШИМ имеет частоту 50 кГц, которую и есть смысл сделать частотой накачки DDS, обеспечив когерентность загрузки ШИМ со стартом очередного дьюти-цикла . Это дает примерно 50 точек синуса частотой 1 кГц. Если отвести на генерацию синус-ШИМа 20% производительности при штатных 10 МИПСах, то на все про все в прерывании таймера ШИМа нужно затратить не более 200 машинных циклов, включая латентность входа, сохранение-восстановление контекста и выход. Итого, чистыми на расчет фазы, выборку точки, загрузку PWM - примерно 180 машинных циклов.
По моему, более чем достаточно.
И не требуется никакой особой экономии.
:dont_know:
ЗЫ. Векторное управление моментом двигателя (если нужно), по любому, на 18-м ПИКе не выйдет с обозначенными частотами синуса.
ЗЗЫ. И по прежнему непонятна необходимость 24 разрядов. Такое разрешение по фазе не может быть реализовано в частотнике нагруженном на резонансный импеданс С ПОЛЬЗОЙ. Пустая трата ресурсов.

Оффоп. Я c PDP-11 работал в ее инкарнации "Электроника-60" и Электроника-81Б". Прямо в машинных кодах. Для управления матчастью БРЛС. и в технологических целях и в конечном изделии.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 17:47:11 
Прорезались зубы

Зарегистрирован: Пт мар 02, 2018 13:47:57
Сообщений: 203
Рейтинг сообщения: 0
В частотнике и есть программный прямой цифровой синтез, как можно было заметить при чтении того абзаца, на который я давал сцыль выше.

В DDS разрядность аккумулятора фазы определяется шагом частоты.

Лично мне без радиотехнического образования - совершенно не понятно - как однозначно связан шаг (изменения ?) частоты и разрядность накопителя фазы.
Можно подробнее ? Или это на поверку окажется как 3 бита КОП вместо 4 в двухоперандной команде PDP-11 ?
Собственно если у Вас аккумумлятор фазы имеет 24 разряда, то синтез 1 синусоиды без регистра фазы даст всего одну сумму на цикл.
С регистром фазы - две суммы. Трехфазный синус даст три суммы - ведущий синус и еще две фазы по 120 град.

Это очевидно. Именно это и было "задачей про 3 цикла на байт" - суммирование. Но оно за рамками "задачи укорачивания ~76 циклов" фазного вычислителя.
Однако - для (соблюдения доброй программерской традиции) избегания использования НЕ уникальных (в пределах контекста) идентификаторов - предлагаю заменить "цикл" на "оборот поля".
Хотяб в контексте частотника.
Предположим, генерирующий синус ШИМ имеет частоту 50 кГц

Зачем предполагать ? Вполне достаточно по(д)глядеть - что в фабричных частотниках частота ШИМ - регулируемая величина.
Иногда из достаточно широкого диапазона значений. И в моём случае - она меняется на 4 октавы на лету - от 1.5 до 23 КГц.
Просто потому что 18F4431 генератор ШИМ позволяет именно 4 октавы без смены предделителей.
Но ниже - плохо, писк и зарядка плавающего питания. Выше - тоже плохо, потери в силовухе.
А оптимум - он зависит от конкретики и должен изменяться без перекомпиляции прожекта.
Так что - в моём случае 18F4431 от гены 50 МГц - CLC/512 = это и есть 24 КГц максимальная частота ШИМ с точностью 10 бит.
Либо 1.5 КГц с точностью 14 бит, либо ~20 штук значений частот между ними.
которую и есть смысл сделать частотой накачки DDS, обеспечив когерентность загрузки ШИМ со стартом очередного дьюти-цикла.

Синхронность ШИМ и вычислителя фазы - это хорошо, но у нас же не "однозадачный режим" и по камню на задачу ?
Или мы именно для того мечтаем об новом более мощном проце - потому что ресурсы "старого" "научились/смогли" использовать на 1/10 ? Ну а "с помощью Си" - так и на все 9/10 пустых циклонопов ?
Есть ещё прерывания АЦП. И есть ещё высокоприоритетные прерывания программного интерфейса 1-Ware с допустимым временем отклика ~5 мкСек.
А приоритетов в Пик-18 всего 2. (И не надо рассказывать про вкусности Пик-24 - ибо там тоже всего 2 кажется теневых набора регистров).
В итоге - лично мной после долгих экспериментов (история изменения версий даёт понять вкратце масштаб безумия) - была выбрана схема единого низкоприоритетного обработчика для АЦП и фазного вычислителя. Высокий приоритет - 1-ware и программное расширение Таймера-5 до 24 или 32 бит. В фоне интерфейс и прочие вычислительные задачи.
Фазный вычислитель поначалу тоже был в фоне, потом я его перенёс в низкий приоритет. Но ради времени отклика фона - тяжёлые вещи типа БЦД преобразователя или делителя - были "попилены" для увеличения скорости отклика/равномерности загрузки фона.
Это дает примерно 50 точек синуса частотой 1 кГц.

Красиво, согласен. Но опыт показывает что двиглы не особо шумят от 10 точек на оборот поля, а крутятся до ~3-5 точек на оборот поля.
Если отвести на генерацию синус-ШИМа 20% производительности при штатных 10 МИПСах

Это как конкретно, можно листинг кода ? Ведь мой (не сразу заданный) вопрос (про простыню из ~76 слов=циклов) - был именно в этом, согласен.
Помогите лично мне укоротить этот код за искреннюю благодарность.
то на все про все в прерывании таймера ШИМа нужно затратить не более 200 машинных циклов, включая латентность входа, сохранение-восстановление контекста и выход. Итого, чистыми на расчет фазы, выборку точки, загрузку PWM - примерно 180 машинных циклов.
По моему, более чем достаточно.

По моему - лишь сохранение/восстановление контекста - это чуть более 20 циклов, вот исходник - помочь посчитать ?
Спойлер
Код:
LowInt: ;Единственное - АЦП, длинное и непредсказуемое
IntAdc: ; Вобрало в себя АЦП, РТК и вращение счётчика PCPWM
   bcf   PIR1,ADIF,ACCESS   ; ADC Flag Clear максимально шустро
; И добавятся вычислители фаз из MainLoop - пропусков вычислителей теперь станет меньше
; А с откликом главного цикла 1 КГц можно будет не сильно дробить вычисления
; 18 750 Гц   
      movff   WREG,WREG_TEMP      ;save working register
      movff   STATUS,STATUS_TEMP   ;save STATUS register
      movff   BSR,BSR_TEMP      ;save BSR register

;      movff   FSR0L,FSR0L_Temp   ;Пока не используется
;      movff   FSR0H,FSR0H_Temp   ;Пока не используется
      movff   TBLPTRL,TBLPTRL_Temp   ;
      movff   TBLPTRH,TBLPTRH_Temp   ;
;      movff   TBLPTRU,TBLPTRU_Temp   ;Пока не используется
;      movff   EECON1,EECON1_Temp   ; Проверяю Глюку с сохранением
      movff   TABLAT,TABLAT_Temp      ;         
      movff   PRODH,PRODH_Temp      ;
      movff   PRODL,PRODL_Temp      ;

AdcIntNest   ; Повторная обработка без потерь времени на сохранение контекста
; примерно 1 МИПС уходит на сохранение/восстановление контекста с частотой 18 750 Гц.
; Однако 2 МИПСа мы получаем от "разгона" до 12 МГц, надо тестировать 16 МГц.

 #ifdef   ADC_Present
    #ifdef   PCPWM_Present
         extern DelayCuriosity   ;

   #include Proj_Dir\PCPWM_3F\Int_PCPWM_3F_4431.inc ; Эмулятор вращения короткий изохронный и первый.   

    #endif
 #ifndef __DEBUG_;******* Разгрузка отладчика
   #include Proj_Dir\ADC\Int_ADC.inc   ; перекачка буферов во включаемом файле.
 #endif
    #ifdef   RTK_ADC_Source
        #include Proj_Dir\RTK\Int_RTK_Tmr.inc   ; прерывания АЦП - Источник реального времени
   #endif
 #ifdef   PCPWM_Present
   dcfsnz   PCPWM_AccelCounter,F,ACCESS; Счетчик Делителя частоты для плавного пуска/останова
      bsf PCPWM_Flag,5,ACCESS   ;;5= Запрос на обработку из 9 375 прерывания АЦП, при обнулении делителя
 #endif
    #ifdef   PCPWM_Present
 Extern   PCPWM_Task

 #ifndef __DEBUG_;******* Разгрузка отладчика
   call   PCPWM_Task ;  сабпрога, длинная и долгая.
 #endif

   #endif

 #endif

;   bsf   PCPWM_Flag,0,ACCESS   ; Данные PCPWM надо готовить
; Обработка вычислителей из фона переедет сюда

   btfss   PIR1,ADIF,ACCESS   ; ADC
      bra   ExitLoInt
   bcf   PIR1,ADIF,ACCESS   ; ADC Flag Clear
   #ifdef   PCPWM_Present
       incf   PCPWM_Err,F,ACCESS   ; Счетчик ошибок увеличиваем
   #endif

   bra   AdcIntNest   ;
;;      rcall   IntAdc
ExitLoInt
;      movff   FSR0L_Temp,FSR0L   ;variable used for context saving
;      movff   FSR0H_Temp,FSR0H   ;variable used for context saving
      movff   TBLPTRL_Temp,TBLPTRL   ;
      movff   TBLPTRH_Temp,TBLPTRH   ;
;      movff   TBLPTRU_Temp,TBLPTRU   ;
;      movff   EECON1_Temp,EECON1   ; Проверяю Глюку с сохранением
      movff   TABLAT_Temp,TABLAT      ;         
      movff   PRODH_Temp,PRODH      ;
      movff   PRODL_Temp,PRODL      ;

      movff   BSR_TEMP,BSR      ;restore BSR register
      movff   WREG_TEMP,WREG      ;restore working register
      movff   STATUS_TEMP,STATUS   ;restore STATUS register
      retfie

Или всё-таки 8 циклов на сохран, 8 на возврат и 4 на время сработки прерывания команды Call ?
И не требуется никакой особой экономии.

У лично меня после ОСОБОЙ экономии - ну примерно так и выходит. Чутка подлиннее. Ибо накопление и пересылка в фон буферов АЦП тоже кушают циклы, счётчики времени тоже.
А более в том единственном обработчике низко приоритетного прерывания - ничего и нет. Как видно из кода выше и вполне можно поглядеть в версии прожекта из частотника №2.
Ну если не лень конечно читать чужие простыни листингов, согласен.
Но что-то лично мне подсказывает - что не видать этому коду внешнего аудита.
ЗЫ. Векторное управление моментом двигателя (если нужно), по любому, на 18-м ПИКе не выйдет с обозначенными частотами синуса.

А что такое "векторное управление" кстати ?
ЗЗЫ. И по прежнему непонятна необходимость 24 разрядов.

Инерция - все просто. Именно потому что 256 не делится на 3 без остатка.
И на 5 не делится и на 7 тоже. Так что ошибку округления - надо засунуть поглубже, благо разрядность накопителя фазы не так дорого стоит.
Такое разрешение по фазе не может быть реализовано в частотнике нагруженном на резонансный импеданс

Опять каша и чтение через строку ?
Я же написал что резонанс не имеет отношения к частотнику. Надо было капсом написать, чтоб было виднее ?
С ПОЛЬЗОЙ. Пустая трата ресурсов.

Ну если заранее полагать - что "пустое всё что не моё" - то согласен.
Но какое это имеет отношение к просьбе (абстрактной) задачи укоротить код фазного вычислителя ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 20:54:00 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21834
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Лично мне без радиотехнического образования - совершенно не понятно - как однозначно связан шаг (изменения ?) частоты и разрядность накопителя фазы.
Можно подробнее ? Или это на поверку окажется как 3 бита КОП вместо 4 в двухоперандной команде PDP-11 ?

На поверку, уважаемый, совершенно безразлично сколько разрядов имеет КОП в DEC. Разговор был СОВЕРШЕННО О ДРУГОМ. Не стоит переводить стрелки на всякую несущественную подробность.
О шаге частоты.
Мне совершенно непонятен Ваш вопрос в контексте применения Вами программного DDS... А Вы собственно как считаете код частоты? :dont_know:
Теория DDS говорит нам о том, что выходная частота синтезируемого сигнала равна произведению кода частоты и отношения частоты накачки к 2 в степени разрядности аккумулятора фазы. (Fdds=[code]*fmclk/2^N)
Из чего очевидно следует, что дискретность частоты как раз и равна последнему отношению. Например, при частоте накачки DDS 65,536 кГц и 16-ти разрядном аккумуляторе фазы, разрешение по частоте (шаг частоты) составит в аккурат 1 Гц.
Таким образом, мне совершенно непонятно зачем нужно изменять частоту ШИМ и отказываться от когерентной загрузки точек синусоиды в PWM. :dont_know:
Контекст действительно получается поболее 20 инструкций. Но можно отдать на загрузку поболее 20%.
Опять же выглядит странной Ваша телега впереди лошади - я имею ввиду высший приоритет 1Wire в системе, где все должно работать на выходной сигнал. Вы в курсе, что 1Wire отлично реализуется хардварно на практически любом интерфейсе от UART и SPI до PWM? То есть он может быть сформирован без блокирующих процедур и с низшим приоритетом.

Добавлено after 20 minutes 15 seconds:
ЗЫ.
А вот и ответ на мой вопрос относительно Вашего "DDS":
ЗЗЫ. И по прежнему непонятна необходимость 24 разрядов.

Инерция - все просто. Именно потому что 256 не делится на 3 без остатка.
И на 5 не делится и на 7 тоже. Так что ошибку округления - надо засунуть поглубже, благо разрядность накопителя фазы не так дорого стоит.

:facepalm: :)))
Теория в даташите:
https://www.analog.com/media/en/technic ... AD9837.PDF


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вс янв 27, 2019 22:02:38 
Прорезались зубы

Зарегистрирован: Пт мар 02, 2018 13:47:57
Сообщений: 203
Рейтинг сообщения: 0
На поверку, уважаемый, совершенно безразлично сколько разрядов имеет КОП в DEC. Разговор был СОВЕРШЕННО О ДРУГОМ. Не стоит переводить стрелки на всякую несущественную подробность.

Если инфа от собеседника содержит несущественные но НЕ точные сведения - то это как раз повод её проверять и обдумывать тщательнее, что лично я и делаю.
О шаге частоты.
Мне совершенно непонятен Ваш вопрос в контексте применения Вами программного DDS... А Вы собственно как считаете код частоты?

А что такое "код частоты" и чем он отличается от "кода Хэмминга" или "манчестерского кода " на худой конец ? Хватит уже радиотехнического сленга, я же не выпускник радиофака.
И повторю просьбу - не надо использовать НЕ уникальные идентификаторы ("код" в данном случае) в пределах контекста. Мы же об программировании ? А там "код" - это текст проги, например.
А если "код частоты" - это величина приращения накопителя угла - то считаю её я на бэйсике, двумя способами.
СпойлерДля пояснений есть абзац Преобразование 8 бит индекса скорости в 24 бита приращение накопителя угла поля., но мы же не читаем ссылок ?
Например первый способ:
Код:
#Lang "fblite"
'WindowTitle "http://www.FREEBASIC.net/index.php/download"

'1613*255 Count *18750 Hz/16 777 216 Count =459 Hz
'
Const MaxData=5000,MaxUlong=4294967293'18446744073709551613
'Const MaxRPM=100000   ' Rev Per Minutes
dim shared TestData(MaxData) As ULongInt
dim As Integer I,J,K,i1,i2
Dim As Double MaxDelta,DeltaStep,MaxRPM,IntFreq
Dim As Integer   DeltaCur,DeltaOut
Dim As String a, FileName
Dim i3% :
Input "Interrupt Freq, Hz:";IntFreq
Input "Maximum RPM:";MaxRPM
'Input "Interrupt Freq:";MaxRPM
MaxDelta=16777216/IntFreq
Print MaxDelta,IntFreq',   '
MaxDelta=MaxDelta*MaxRPM/(60*255)   '
'MaxDelta=MaxDelta/60
'MaxDelta=MaxDelta/18750
'MaxDelta=MaxDelta/255
DeltaStep=MaxDelta/256   '
FileName="c:\s2.inc"
Open FileName for Output As 1
  Print #1,"; MAX Delta=";MaxDelta;", Delta Step=";DeltaStep;", MAX RPM=";MaxRPM;", Interrupt Frequency=";IntFreq   '
Print MaxDelta,DeltaStep',   ' 
'Input "MaxDelta,DeltaStep",a$
i=1:K=0
 'Print #1,"   db low(d'";i;"'), high(d'";i;"');";K;"=";i', upper(d'";i;"')
 ' Print #1,i
i=2:K=1
' Print #1,"   db low(d'";i;"'), high(d'";i;"');";K;"=";i', upper(d'";i;"')
'Print #1,i
I=3:K=1:i1=1:TestData(1)=2:'
For i=3 to 10000000:'
    for j=1 to K:'
    i2= i mod TestData(j)
    if i2=0 then goto NextNumber'
    next j
    K=K+1:if K>MaxData goto EndTest
    TestData(K)=i:i3%=i3%+1'
  'Print #1,"   db low(d'";i;"'), high(d'";i;"');";K;"=";i', upper(d'";i;"')
   'Print i,
    NextNumber:
next i
EndTest:
Print K',   ' 
'Input "K",a$
For i=1 To 256
   DeltaCur=i*DeltaStep
   For j=1 to   K
      If TestData(j) > DeltaCur   Then'
         if   TestData(j)-DeltaCur <= DeltaCur - TestData(j-1) Then
            DeltaOut=TestData(j)
         Else
            DeltaOut=TestData(j-1)
         EndIf
         'Print #1,"   db low(d'"; DeltaOut; "'), high(d'"; DeltaOut; "');"; i; "="; DeltaOut', upper(d'";i;"')
         a$="   db low(d'"+Trim$(Str$(DeltaOut))
         a$=a$+"'), high(d'"+Trim$(Str$(DeltaOut))
         a$=a$+"');"+Str$(i)+"="+Str$(DeltaOut)
         Print #1,a$
         'Print DeltaOut,
         GoTo NextStep         
      EndIf
   Next j
NextStep:   
Next i
Print #1,";Simple256:;; Tab Simple first 0-255"
For i=1 To 256
 a$=";   db low(d'"+Trim$(Str$(TestData(i)))
 a$=a$+"');"   
 Print #1,a$; i; "="; TestData(i)', upper(d'";i;"')   
Next i
Close #1
Print "Output data in ";FileName;
input ", End Prog, Any Key 2 Exit",a$
end

И нужен ли второй, он тоже на бэйсике ?

Но вернёмся к делу, согласен.
Теория DDS говорит нам о том, что выходная частота синтезируемого сигнала равна произведению кода частоты и отношения частоты накачки к 2 в степени разрядности аккумулятора фазы.
(Fdds=[code]*fmclk/2^N)

Перечитал фразу выше несколько раз но в деталях не понял, хотя не понятных слов не встретил.
Лично я НЕ проходил и НЕ читал никакую "теорию прямого числового синтеза частоты" - но с точки зрения программера и арифметики - согласен, частота переполнений накопителя фазы (она же частота оборотов поля синтезируемой синусоиды) - зависит от частоты прибавлений и от величины прибавляемого числа.
И совершенно понятно что если прибавлять 1 к накопителю фазы с частотой F - то переполнение/оборот поля будет с частотой в 2^(N=разрядность накопителя фазы) реже.
А если прибавлять с частотой F число 2^N - то переполнения будут происходить каждое прибавление. А всё остальное - (это лично моё допущение необоснованное) - где-то посередине. Иными словами - симулятор вращения (накопитель фазы) - он реализует деление с остатком (или умножение с избытком) через вычитание (или сложение) N раз M штук. Но за счёт замкнутой модели бесконечности (в двоичном накопителе фазы) - остаток переносится в следующий оборот и происходит плавная симуляция вращения.
И если это записать математическими символами - то выходная F = F(прибавлений или вычитаний)*(прибавляемое или отнимаемое число)/2^(разрядность накопителя).
И это в том числе написано в AD9833 стр. 12, но мы же не читаем портянок и сцылей, но засыпаем мой мозг "несущественными деталями" ?
Тогда согласен - это совпадает с формой "(Fdds=[code]*fmclk/2^N)". С пятого прочтения и воспоминаний до лично меня дошло, спасибо.
Из чего очевидно следует, что дискретность частоты как раз и равна последнему отношению.

Пусть так, и что ? Эта "дискретность частоты" - она определяет вес младшего разряда приращения накопителя угла, но не "шаг частоты задатчика частотника", об котором лично я ответил выше.
Например, при частоте накачки DDS 65,536 кГц и 16-ти разрядном аккумуляторе фазы, разрешение по частоте (шаг частоты) составит в аккурат 1 Гц.

И что это нам даёт - что шаг частоты получился такой "ровный" и таблица синусов "на верхах" будет вырождаться в 2 или 4 или 8 значений с соответствующей вибрацией двигла ?
Более того - предложенная к оптимизации "портянка из ~76 команд" - она абстрагирована от накопителя угла фазы - она не ведает его длинну. Ей на входе нужна разрядность таблицы синуса и не более.
А сколько там в накопителе фазном разрядность - ну не пофик ли ей ? Более того - в том самом даташите на DDS AD9833 - накопитель фазы тоже длиннее чем таблица синусов более чем вдвое (12 бит и 28 бит примерно). Что на этот счёт говорит "Теория DDS" ? Наверное рассказывает про какую-либо "спектральную плотность шума" или подобные слышимые на слух вещи ?
Таким образом, мне совершенно непонятно зачем нужно изменять частоту ШИМ и отказываться от когерентной загрузки точек синусоиды в PWM.

Опять каша какая-то либо в моём понимании либо в изложении. Изохронное изменение накопителя угла на указанное приращение - это отдельный кусочек маленький проги, исполняемый с какой-то частотой.
Фазный вычислитель скважности ШИМ - это другой кусочек проги, не обязательно синхронный изменениям накопителя угла. Хотя сейчас их частота одинакова (меняется через перекомпиляцию прожекта).
А сама ШИМ генерация - это вообще аппаратный модуль с регистрами периода и длительности. Который вообще тупо генерит согласно схеме (ну генераторы защитных интервалов привносят чутка, как оказалось).
А частота ШИМ - это компромисс в силовухе - уже говорил и повторюсь. И эта частота если будет опорной для синтезатора - то каша будет сложная для лично меня.
Так что лично я довольно быстро от этого (привязки к частоте ШИМ) ушёл, как видно из "описания изменений", которые опять никто не читал.
Контекст действительно получается поболее 20 инструкций. Но можно отдать на загрузку поболее 20%.

Что значит "отдать" ? Прерывание фазных вычислителей и обработки АЦП - берёт столько, сколько берёт (а берёт оно сейчас примерно половину). Над ним - только сверх короткие, под ним - фон на остаточном принципе. Никакого квантования времени с вытесняющей многозадачностью - нет.
Никто никому ничего не выделяет жёстко. Лишь изохронность (от источника времени, который сейчас автомат АЦП), но джиттер нарастает от начала к концу длинного обработчика прерывания. Но в частотнике это вроде на слух не заметно.
Опять же выглядит странной Ваша телега впереди лошади - я имею ввиду высший приоритет 1Wire в системе, где все должно работать на выходной сигнал. Вы в курсе, что 1Wire отлично реализуется хардварно на практически любом интерфейсе от UART и SPI до PWM? То есть он может быть сформирован без блокирующих процедур и с низшим приоритетом.

Ну когда лично я писал 1-Ware для самообучения - я мало читал интернеты, больше думал. Так что - это плод отдельных изысканий несколько лет назад.
У меня сделано так. Зато я могу под 1-варе любую двунаправленную ногу отдавать, что иногда полезно.
ЗЫ.
А вот и ответ на мой вопрос относительно Вашего "DDS":
ЗЗЫ. И по прежнему непонятна необходимость 24 разрядов.

Инерция - все просто. Именно потому что 256 не делится на 3 без остатка.
И на 5 не делится и на 7 тоже. Так что ошибку округления - надо засунуть поглубже, благо разрядность накопителя фазы не так дорого стоит.

Теория в даташите:
https://www.analog.com/media/en/technic ... AD9837.PDF

Это прикольно видеть - как лично мне со смайликами показывают даташиты на аналог девайс модули, на похожие которым лично я указывал ранее и в описании и в объяснялках.
И почему у меня "DDS" а не DDS ? Потому что смайлики или в чём прикол ?
Или именно потому что инженеры Аналог тоже накопитель угла сделали 28 бит а ПЗУ синуса входной угол 12 бит ? Или ещё почему ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Пн янв 28, 2019 03:26:35 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21834
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
И что это нам даёт - что шаг частоты получился такой "ровный" и таблица синусов "на верхах" будет вырождаться в 2 или 4 или 8 значений с соответствующей вибрацией двигла ?
........
Или именно потому что инженеры Аналог тоже накопитель угла сделали 28 бит а ПЗУ синуса входной угол 12 бит ? Или ещё почему ?

28 разрядов накопителя фазы сделаны ровно для того, чтобы получить ВЫСОКОЕ РАЗРЕШЕНИЕ ПО ЧАСТОТЕ (малый шаг частоты). А смысла использовать их в ПЗУ синуса, если сам синус 10 разрядов, бестолково заполняя оное ПЗУ одинаковыми значениями, нет никакого. Разрядность по выходу и разрядность по входу не могут сильно отличаться. В районе самого быстрого изменения синуса соотношение разрядностей 12 к 10 является оптимальным (и даже немного избыточным по отношению к входной разрядности - в теории в 3,14 раз при реализованных 4, что естественно). Если Вы помните, производная в районе перехода через ноль равна амплитуде за радиан...
Ровный получится "шаг" или неровный - для спектра это все лежит на уровне -60 дБ. И связано не с кратностью, а с самими ступеньками преобразования. Огибающая спектра представляется функцией Sin(x)/x.
С точки зрения спектра направление преобразования не имеет значения. Патамушта комплексное преобразование Фурье симметрично. Более двух отсчетов за период полностью восстанавливают синус. И не имеет значения кратность. Каждая точка отсчета принадлежит синусоиде. В каком месте должна быть вибрация? С какого перепуга? :dont_know: :tea: О чем вообще можно говорить, когда в Вашей задаче речь идет о 50 точках на период и более. Уровень гармоник и их частотный спектр будут просто смешными для разговоров о "вибрациях". У Вас двигатель может "вибрировать" на частоте 49 кГц?
:)))
Однако, с точки зрения самого ЦАПа, коим является ШИМ, искажений синуса будет меньше, если этот самый ШИМ будет симметричен относительно выборок. То есть на каждый отсчет будет одинаковое количество периодов ШИМа и каждый период будет центрально-взвешенным. Особенно когда это количество периодов мало.
Поэтому и алгоритмически и с точки зрения спектра когерентность загрузки и отсчетов DDS является несомненным благом.
А что касается 20%, то речь шла о ПРИКИДОЧНОМ РАСЧЕТЕ ресурсов, отъедаемых DDS. Сколько времени потребует расчет и загрузка в интеррапте таймера ШИМ, столько по отношению к периоду ШИМ он и оттяпает от остальных задач.
Остальное, включая 1Wire, я уже объяснил ранее. Нравится класть болт на выходной сигнал для свободного ремапа 1Wire - это Ваш выбор.... Однако он мне представляется еще более странным, чем игры с ДИП40 или ПИК18 в задачах, где это неуместно.
Продолжайте пилить гирю, Шура! :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Пн янв 28, 2019 19:36:52 
Прорезались зубы

Зарегистрирован: Пт мар 02, 2018 13:47:57
Сообщений: 203
Рейтинг сообщения: 0
Продолжайте пилить гирю, Шура! :)

А где опять повод для смайликов ?
Гиря уже допилена, долго и с интересом.
Сейчас - шлифовка и совершенствование, которые бесконечны. Даже у Билли Гейца с его Виндой и армией программеров.
Но - есть вопросы, как обычно.
:facepalm: :)))
Теория в даташите:
analog.com/media/en/technical-documentation/data-sheets/AD9837.PDF

Это да, согласен, глядя на
Более двух отсчетов за период полностью восстанавливают синус. И не имеет значения кратность. Каждая точка отсчета принадлежит синусоиде. В каком месте должна быть вибрация? С какого перепуга? :dont_know: :tea:

возникает стойкое ощущение, что эти даташиты на ИС прямого числового синтеза - лично я их читал внимательнее. Битов эдак на 5.
О чем вообще можно говорить, когда в Вашей задаче речь идет о 50 точках на период и более. Уровень гармоник и их частотный спектр будут просто смешными для разговоров о "вибрациях". У Вас двигатель может "вибрировать" на частоте 49 кГц? :)))

И опять смайлики - над собой ? Или демон кроется в деталях, которые важны лишь для меня, а с точки зрения программера в машинных кодах - что 3 что 4 бита / что 3 что 4 цикла - "не важно и разговор не об этом" ?
Однако, с точки зрения самого ЦАПа, коим является ШИМ

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

И это - согласен, хорошо, но в 18Fxx31 только один общий для всех ШИМ таймер. А фазы у нас 3 или 4. И как сделать ШИМ "симметричным относительно выборок" если фазы сдвинуты а таймер лишь один ?
Или даташит опять не дочитался ? Или опять будет реклама 16 бит семейства, у которых я вроде встречал индивидуальные таймеры для каждого генератора ШИМ ?
И более важное - какой именно выигрыш будет от такого усложнения схемы, если наше ухо один хрен выше 15 КГц слышит плохо ?
Поэтому и алгоритмически

Алгоритмически - любопытно слушать человека, который поможет укоротить те самые 76 циклов абстрактной задачи.
Ну или для начала 12 циклов сделать за 9 хотяб.
Вместо загрузки мозга выискиванием и фильтрацией косяков "не существенной" информации. Которая на поверку оказывается не всегда полезной.
и с точки зрения спектра когерентность загрузки и отсчетов DDS является несомненным благом.

Сомнительно по лично мне. Именно по причине "несущественных" деталей. В том числе из даташитов на DDS микросхемы.
А что касается 20%, то речь шла о ПРИКИДОЧНОМ РАСЧЕТЕ ресурсов, отъедаемых DDS.

Это такой метод стёба - "ПРИКИДОЧНОМ РАСЧЕТ" ? С учётом того, что алгоритм до конца ещё НЕ утверждён, и в нём только 3 суммы и сохранение контекста, и ошибки учёта циклов и там и тут, и экономить не умеем, а потому и не желаем, ибо есть камни помощнее ?
Остальное, включая 1Wire, я уже объяснил ранее. Нравится класть болт на выходной сигнал для свободного ремапа 1Wire - это Ваш выбор....

А откуда следует, что включение/отключение 1-варе с парой датчиков - как-то заметно уху влияет на шумы мотора ?
Или это очередное "мнение-объяснение", основанное на "ПРИКИДОЧНОМ РАСЧЕТЕ", в каждом шаге которого - "несущественная" ошибка ?
Мне надо смайликов накидать гору типа фэйспалм или оно лишнее ?
Однако он мне представляется еще более странным, чем игры с ДИП40 или ПИК18 в задачах, где это неуместно.

Согласен, когда "представления" базируются на частых но несущественных ошибках - они могут быть сколь угодно далеки от реальности.
инженеры Аналог тоже накопитель угла сделали 28 бит а ПЗУ синуса входной угол 12 бит ? Или ещё почему ?

А смысла использовать их в ПЗУ синуса, если сам синус 10 разрядов, бестолково заполняя оное ПЗУ одинаковыми значениями, нет никакого. Разрядность по выходу и разрядность по входу не могут сильно отличаться. В районе самого быстрого изменения синуса соотношение разрядностей 12 к 10 является оптимальным (и даже немного избыточным по отношению к входной разрядности - в теории в 3,14 раз при реализованных 4, что естественно). Если Вы помните, производная в районе перехода через ноль равна амплитуде за радиан...

А вот за эти сведения - искреннее спасибо от лично меня. Ибо когда лично я самостоятельно изобретал программный велосипед прямого численного синтезатора периодических табличных функций (это было до прочтения даташитов DDS микрух и статеек википедии) - вдаваться в математические абстракции и выводы из преобразования формул - как-то не дошли руки.
И чтоб не напрягать мои мозги погружением в радианы 3.14 - вопрос - кто ближе к теоретическому идеалу - выбранная AD разрядность таблицы синусов 12 бит адреса/10 бит данных - или случайно получившаяся у меня в ходе реализации 12 бит вычислителя - 11 бит адрес и 12 бит данные синус ?
Этот 1 бит информации нужен лишь для информации - переделывать всё-равно ничего не буду, ибо экономия быстродействия главнее. Но любопытно - у кого красивее синус, ну чисто теоретически ?
Ровный получится "шаг" или неровный - для спектра это все лежит на уровне -60 дБ.

Децибелы мощности и децибелы напряжения - это очень разные децибелы, согласен. А если 60 дБ по мощности = 1000 раз, то киловатты частотника дадут ватты гармоник в двигле. Что даже с учётом КПД магнитострикции или как ещё там двигло "поёт" - будет всё-равно и слышно и на нервы действовать.
И связано не с кратностью, а с самими ступеньками преобразования. Огибающая спектра представляется функцией Sin(x)/x.
С точки зрения спектра направление преобразования не имеет значения. Патамушта комплексное преобразование Фурье симметрично.

А это - вообще лично мне не понятно, но объяснять не надо - рано это ещё лично мне.
Но есть ещё вопрос, вынужден его повторить:
ЗЫ. Векторное управление моментом двигателя (если нужно), по любому, на 18-м ПИКе не выйдет с обозначенными частотами синуса.

А что такое "векторное управление" ? Ну в контексте частотника ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Пн янв 28, 2019 21:23:46 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21834
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
И это - согласен, хорошо, но в 18Fxx31 только один общий для всех ШИМ таймер. А фазы у нас 3 или 4. И как сделать ШИМ "симметричным относительно выборок" если фазы сдвинуты а таймер лишь один ?
Или даташит опять не дочитался ?

Таймер не имеет никакого отношения к формированию собственно ШИМа, с тем лишь исключением, что у всех каналов присоединенных к этому таймеру будет одинаковая частота ШИМа. ШИМ формирует цифровой компаратор, а таймер просто наматывает круги. Какое это имеет отношение к сказанному мной относительно центровзвешенности и когерентности загрузки?
Вместо фантазий про усложнение, изучите матчасть...
Цитата:
The PWM module has the following features:
• Up to eight PWM I/O pins with four duty cycle
generators. Pins can be paired to get a complete
half-bridge control.
• Up to 14-bit resolution, depending upon the PWM
period.
• “On-the-fly” PWM frequency changes.
• Edge and Center-Aligned Output modes.
• Single-Pulse Generation mode.
• Programmable dead-time control between paired
PWMs.
• Interrupt support for asymmetrical updates in
Center-Aligned mode.
• Output override for Electrically Commutated
Motor (ECM) operation; for example, BLDC.
• Special Event Trigger comparator for scheduling
other peripheral events.
• PWM outputs disable feature sets PWM outputs
to their inactive state when in Debug mode.


Алгоритмически - любопытно слушать человека, который поможет укоротить те самые 76 циклов абстрактной задачи.
Ну или для начала 12 циклов сделать за 9 хотяб.

Это никакого отношения к алгоритму не имеет. Измените алгоритм и структуру программы - не потребуется тасовать из пустого в порожнее три команды.

Сомнительно по лично мне. Именно по причине "несущественных" деталей. В том числе из даташитов на DDS микросхемы.

Пустой базар ниОчем. Вы мало что понимаете из даташитов, заменяя фантазиями непонятое. Это очевидно из Ваших сентенций.

Это такой метод стёба - "ПРИКИДОЧНОМ РАСЧЕТ" ? С учётом того, что алгоритм до конца ещё НЕ утверждён, и в нём только 3 суммы... бла-бла-бла

Вообще то сначала рассчитывают ресурсы задач, а лишь потом пишут алгоритм под ресурсы. А не наоборот. Это называется нисходящим программированием. От глобальных абстракций к частным.

А откуда следует, что включение/отключение 1-варе с парой датчиков - как-то заметно уху влияет на шумы мотора ?

Оттуда, что высший приоритет имеют задачи реального времени, а интерфейсы внешнего обмена не относятся к РВ. Никто не расставляет стулья в комнате в которой еще нет полов. А если и ставят, чтобы отдохнуть от ремонта, то не отодвигают для этого растворомешалку в дальний чулан.

кто ближе к теоретическому идеалу - выбранная AD разрядность таблицы синусов 12 бит адреса/10 бит данных - или случайно получившаяся у меня в ходе реализации 12 бит вычислителя - 11 бит адрес и 12 бит данные синус ?
Этот 1 бит информации нужен лишь для информации - переделывать всё-равно ничего не буду, ибо экономия быстродействия главнее. Но любопытно - у кого красивее синус, ну чисто теоретически ?

У Вас вообще нет выбора. Ультразвук начинается от 20 кГц. При 40 МГц тактирования ШИМа при 10 разрядном ШИМе получится частота 39 кГц. При 11 разрядах - 19,5 кГц - уже может быть слышно или просто неприятно.
Таким образом, входная разрядность никак не может быть 12. Только 10. Выходная - 8. Вот и весь расчет.
У АД синус будет красивее, потому что накачка 16 или 25 МГц. Подавление ближайшей гармоники выше. И разрядность тут ничего не дает.

Децибелы мощности и децибелы напряжения - это очень разные децибелы, согласен. А если 60 дБ по мощности = 1000 раз, то киловатты частотника дадут ватты гармоник в двигле. Что даже с учётом КПД магнитострикции или как ещё там двигло "поёт" - будет всё-равно и слышно и на нервы действовать.

Ультразвук не слышен. Причем тут магнитострикция, если речь идет о примерно 40 кГц? А децибелы мощности и напряжения таки одни и те же. В смысле 60 дБ по напряжению на фиксированной нагрузке дадут те же самые 60 дБ по мощности. К слову, 60 дБ по мощности - это 1000000 раз... :)

А что такое "векторное управление" ? Ну в контексте частотника ?

Создание эллиптического поля для управления моментом.
http://ww1.microchip.com/downloads/en/A ... 00908B.pdf
http://ww1.microchip.com/downloads/en/A ... 00955a.pdf


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Пн янв 28, 2019 22:59:04 
Прорезались зубы

Зарегистрирован: Пт мар 02, 2018 13:47:57
Сообщений: 203
Рейтинг сообщения: 0
И это - согласен, хорошо, но в 18Fxx31 только один общий для всех ШИМ таймер. А фазы у нас 3 или 4. И как сделать ШИМ "симметричным относительно выборок" если фазы сдвинуты а таймер лишь один ?
Или даташит опять не дочитался ?

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

Тогда лично я не понимаю термины/нить размышлений/заявлений про "центровзвешенность и когерентность загрузки".
Центровзвешенность чего по отношению к чему ?
Синхронность чего с чем ? Чем отличается синхронность от когерентности ?
Вместо фантазий про усложнение, изучите матчасть...
Цитата:
The PWM module has the following features:

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

А как именно мне надо её изменить - сказать нет возможности ? Именно потому, что осознать как оно сделано сейчас - нет желания ковырять чужие простыни ?
Я угадал всю глубину "прикидочного расчёта" ? Или недотянул ?
Ах да, для глубины картины - 3 сложения в предложенном алгоритме, я помню.
И да, страничку "ссылки" в той публикации - хотяб одним глазом заглянуть довелось ?
Откуда следует - что если я даю ссылки на примеры микрочипа по частотникам, то я их не читал хотяб поверхностно ?
Но при этом - картинки из этих описаний вставляю в своё описание частотника. Как это возможно без прочтения апноутов указанных ?
Или опять собственную НЕ внимательность/НЕ желание читать - перекладываем на меня ?
Забавно, согласен.
Сомнительно по лично мне. Именно по причине "несущественных" деталей. В том числе из даташитов на DDS микросхемы.

Пустой базар ниОчем. Вы мало что понимаете из даташитов, заменяя фантазиями непонятое. Это очевидно из Ваших сентенций.

Ну ещё-бы - "очевидно". А если лично я укажу на обоснование своего вывода в даташите - то это внезапно превратится в "несущественную деталь" ?
Это такой метод стёба - "ПРИКИДОЧНОМ РАСЧЕТ" ? С учётом того, что алгоритм до конца ещё НЕ утверждён, и в нём только 3 суммы... бла-бла-бла

Вообще то сначала рассчитывают ресурсы задач, а лишь потом пишут алгоритм под ресурсы. А не наоборот. Это называется нисходящим программированием. От глобальных абстракций к частным.

Вообще-то методов решения задач - чуть более одного. Более того - стройной сквозной всеохватной теории как решать задачи - не существует, как не существует ИИ. Ибо это во многом одно и то же.
Можно было БЫ поглядеть на способы решения - если БЫ мне здесь предоставили код фазного вычислителя для осознания.
Или хотя бы подробное описание алгоритма (какое есть в опубликованном мной коде и описаниях). Но - пока не предоставили.
Или именно это мы называем "бла-бла-бла" ?
А откуда следует, что включение/отключение 1-варе с парой датчиков - как-то заметно уху влияет на шумы мотора ?

Оттуда, что высший приоритет имеют задачи реального времени, а интерфейсы внешнего обмена не относятся к РВ. Никто не расставляет стулья в комнате в которой еще нет полов. А если и ставят, чтобы отдохнуть от ремонта, то не отодвигают для этого растворомешалку в дальний чулан.

Опять теоретические попытки поспорить с прямым экспериментом ? А что главнее/первичнее - теория или эксперимент ?
Особо когда мы не скорость света измеряем или массу протона например, а исследуем вот такую насквозь нелинейную систему как реализация частотника в дружественной многозадачности ?
кто ближе к теоретическому идеалу - выбранная AD разрядность таблицы синусов 12 бит адреса/10 бит данных - или случайно получившаяся у меня в ходе реализации 12 бит вычислителя - 11 бит адрес и 12 бит данные синус ?
Этот 1 бит информации нужен лишь для информации - переделывать всё-равно ничего не буду, ибо экономия быстродействия главнее. Но любопытно - у кого красивее синус, ну чисто теоретически ?

У Вас вообще нет выбора. Ультразвук начинается от 20 кГц. При 40 МГц тактирования ШИМа при 10 разрядном ШИМе получится частота 39 кГц. При 11 разрядах - 19,5 кГц - уже может быть слышно или просто неприятно.
Таким образом, входная разрядность никак не может быть 12. Только 10. Выходная - 8. Вот и весь расчет.

Вынужден повторить 2 вещи:
1. 14 бит счетчики времени многофазного ШИМа в 18Fxx31 питаются частотой не выше CLC/4 если верить даташиту. На практике при центрально-симметричном ШИМ питаются CLC/2 как показал реальный эксперимент НЕ в протеусе.
2. Выходы ШИМ подаются не в КТ315 или в 1531ЛА3, они подаются на драйверы IGBT ключей, для которых 1 микросекунда - это соизмеримо с минимальным полным временем изменения состояния ключа.
И каждое изменение ключа - это потери/нагрев. В итоге - частота ШИМ ограничена сверху ~20 КГц, но на практике её делают ещё ниже, вплоть до 1 КГц. И конкретика компромисса выбора/регулирования частоты ШИМ - она определяется многими факторами, об которых при написании проги частотника нет информации.
Как результат - частоту ШИМ проще подобрать экспериментально после присоединения к мозгам частотника конкретного двигла и конкретных транзисторов с драйверами.
У АД синус будет красивее, потому что накачка 16 или 25 МГц. Подавление ближайшей гармоники выше.

Я имел ввиду - при одинаковой частоте "накачки"/приращений симулятора вращения.
И разрядность тут ничего не дает.

Почему это "разрядность ничего не даёт ?"
А что станет с разрядностью когда надо генерировать синус с амплитудой 1/16 например ?
Или 1/128 ?
И второй момент - быстродействие проги. Если 8 бит обоснованно маловато - то следующий (естественный/приспособленный к архитектуре) шаг - 12 бит, три тетрады, с учётом наличия команд тасования тетрад. Можно конечно и 10 бит адреса таблицы синусов маской выделять - никто не спорит. Но 12 бит лично мне удалось выделить из пары байт за 9 п.циклов, как видно из той "простыни ~76 п.циклов".
Есть желание помочь укоротить хотя-бы на 1 п.цикл ? Я только спасибо скажу - повторюсь.
Децибелы мощности и децибелы напряжения - это очень разные децибелы, согласен. А если 60 дБ по мощности = 1000 раз, то киловатты частотника дадут ватты гармоник в двигле. Что даже с учётом КПД магнитострикции или как ещё там двигло "поёт" - будет всё-равно и слышно и на нервы действовать.

Ультразвук не слышен. Причем тут магнитострикция, если речь идет о примерно 40 кГц? А децибелы мощности и напряжения таки одни и те же. В смысле 60 дБ по напряжению на фиксированной нагрузке дадут те же самые 60 дБ по мощности. К слову, 60 дБ по мощности - это 1000000 раз... :)

За эту инфу - спасибо. Ибо "дециБелы" как единицу измерения отношений - лично я усвоил что 1 Белл = 1 десятичный порядок. Но потом кажется "Справочник телезрителя" Пясецкого внёс в мою юную голову кашу с мощностью/напряжением в применении дБ в контексте измерения КУ усилителей.
А что такое "векторное управление" ? Ну в контексте частотника ?

Создание эллиптического поля для управления моментом.
http://ww1.microchip.com/downloads/en/A ... 00908B.pdf
http://ww1.microchip.com/downloads/en/A ... 00955a.pdf

Отсылать меня к апноутам, которые я уже читал и не однократно - скажем так НЕ эффективно.
А можно подробнее про "эллиптическое поле" своими словами ?
Именно в контексте генерации синуса программным непосредственно-числовым синтезатором.
Что именно там надо изменить в синусоидах, чтоб "поле" стало "эллиптическим" ?
А до этого (без "векторного управления") оно было каким ? Круглым ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вычисляемый переход - проблема
СообщениеДобавлено: Вт янв 29, 2019 04:17:27 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21834
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Тогда лично я не понимаю термины/нить размышлений/заявлений про "центровзвешенность и когерентность загрузки".
Центровзвешенность чего по отношению к чему ?
Синхронность чего с чем ? Чем отличается синхронность от когерентности ?

1. Центровзвешенным называется ШИМ, у которого дьюти-цикл расположен по середине периода. То есть изменение ширины генерируемого импульса происходит ОТ ЦЕНТРА этого периода симметрично в разные стороны.
2. Когерентная загрузка ШИМа означает, что выборки синтезируемого сигнала загружаются синхронно с периодами ШИМ. То есть частоты ШИМ и накачки DDS равны или кратны с точностью до фазы. Проще говоря, каждый период (каждые два, три....) ШИМ происходит загрузка очередной точки синусоиды. В принципе, частота DDS может быть и асинхронна. Но тогда возникнут биения между ШИМ и частотой DDS в спектре генерируемого сигнала.
3. Синхронность и когерентность - полные синонимы.
Как можно написать частотник, не читая описания PWM модуля ?
Или это был очередной стёб - рассказывать лично мне про "изучите мат часть" того, что уже было лично мною сделано более года назад и опубликовано почти год назад ?

Вообще то, это ВАШ проект, а не мой. Поэтому я не намерен изучать даташит конкретно на Вами используемый контроллер во всех подробностях.
Я предлагаю помощь на основании своего собственно общего опыта и специальных знаний. Уверяю Вас, что это гораздо более продуктивный путь, нежели выдергивания отдельных сведений из оного даташита без всякого понимания смысла выдернутого.
Такшта я даташит СМОТРЮ, прежде чем дать Вам ответ. Если Вы недоумеваете относительно центровзвешенности, то я вынужден давать цитату из даташита.

А как именно мне надо её изменить - сказать нет возможности ? Именно потому, что осознать как оно сделано сейчас - нет желания ковырять чужие простыни ?
Я угадал всю глубину "прикидочного расчёта" ? Или недотянул ?
Ах да, для глубины картины - 3 сложения в предложенном алгоритме, я помню.

Вы не предлагали НИКАКОГО алгоритма. Вы привели пару выдержек из кода. Причем тут алгоритм? Вы предлагаете мне вытягивать оный алгоритм из Ваших надерганных фрагментов?
Увольте.
Для того, чтобы посторонний человек стал разбираться с Вашими вопросами, нужно конспективно и понятно изложить СУТЬ ОБЩЕЙ ЗАДАЧИ, общего алгоритма, чтобы собеседник понимал КОНТЕКСТ в котором возник частный вопрос.
Более того - стройной сквозной всеохватной теории как решать задачи - не существует

Общей теории для любой задачи - нет. Общий метод решения ЛЮБЫХ задач - есть. От общего к частному.
Конкретно для Вашей задачи общий алгоритм известен. Он единственный. И порядок команд для вычисления суммы или разности к нему отношения не имеет.
А что главнее/первичнее - теория или эксперимент ?
Безусловно теория. Эксперимент вторичен и призван ПРИ ПРАВИЛЬНОЙ ЕГО ПОДГОТОВКЕ подтвердить выдвинутую теорию или опровергнуть. Сам по себе эксперимент смысла не имеет и ничего доказать не может. Хотя бы потому, что чаще всего является нерепрезентативным частным случаем.
Вынужден повторить 2 вещи:
1. 14 бит счетчики времени многофазного ШИМа в 18Fxx31 питаются частотой не выше CLC/4 если верить даташиту. На практике при центрально-симметричном ШИМ питаются CLC/2 как показал реальный эксперимент НЕ в протеусе.
2. Выходы ШИМ подаются не в КТ315 или в 1531ЛА3, они подаются на драйверы IGBT ключей, для которых 1 микросекунда - это соизмеримо с минимальным полным временем изменения состояния ключа.
И каждое изменение ключа - это потери/нагрев. В итоге - частота ШИМ ограничена сверху ~20 КГц, но на практике её делают ещё ниже, вплоть до 1 КГц. И конкретика компромисса выбора/регулирования частоты ШИМ - она определяется многими факторами, об которых при написании проги частотника нет информации.
Как результат - частоту ШИМ проще подобрать экспериментально после присоединения к мозгам частотника конкретного двигла и конкретных транзисторов с драйверами.

Феерично:
1.
Изображение
Может у нас разные даташиты? Впрочем, возможно я не читал эррату.... Кстати, а что такое CLC? Частота осциллятора?
Частота тактирования таймера в 4 раза ниже, чем разрешение PWM. Два бита делителя осциллятора используются при работе цифровых компараторов PWM. Это стандартная практика.
2.
Когда я говорил про нисходящее программирования, я имел ввиду и нисходящую разработку схемы. Выбор быстродействия ключей и самих ключей по кошельку и доступности является САМЫМ ВЕРХНИМ уровнем абстракций.
Если не считать покупку готового частотника.
3.
Лично я использую IGBT от IXYS с рабочими частотами вплоть до 60 кГц. Рабочими, а не предельными. Примерно как этот. Откуда я могу знать про Ваши возможности и выбор?
А что станет с разрядностью когда надо генерировать синус с амплитудой 1/16 например ?
Или 1/128 ?

Вас не смущает качество тихих звуков в фонограммах высококачественных записей?
С чего Вы взяли, что динамический диапазон сигнала должен определяться при минимальной амплитуде этого сигнала?
Вы сами выдвигаете странные теории и потом на основании них ставите вопросы...
Если 8 бит обоснованно маловато - то следующий (естественный/приспособленный к архитектуре) шаг - 12 бит

Разрядность аккумулятора фазы выбирают исходя из потребностей схемотехники и общего алгоритма, а не наличия или отсутствия возможности переставлять нибблы местами.
А с точки зрения арифметики шаг выбора равен байту. После 8 следует 16 разрядов. 12 - частный случай 16.
в применении дБ в контексте измерения КУ усилителей.

Иллюстрация недостатков восходящего метода познания.
А до этого (без "векторного управления") оно было каким ? Круглым ?

Не круглым, а круговым.
Если честно, то при Вашем отношении к изучению материала выглядят сомнительными мои объяснения из области векторного представления сигналов...
Пока воздержусь.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 174 ]     ... , , , , 9

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y