Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Отвлекитесь, эмбеддеры! Отвлеченные темы - обсудить проблемы тепловой смерти вселенной, или просто пиво. Этот раздел - для отдыха.

 
Опции темы
Непрочитано 21.11.2017, 04:11  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Много слов,лень читать
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 21.11.2017, 04:12  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от AR_Favorit Посмотреть сообщение
так как ток через нагреватель будет течь исключительно целое количество полупериодов напряжения сети, которых в одной секунде у нас 100, поэтому можно при желании вообще heat_counter-ом тикать не до "EE_PID_TIME*1000", а всего лишь до 100, всегда имея эту дискретность, только значение control соответственно смасштабировать при расчете, но выгоды это не даст абсолютно никакой)
Ну это в теории, а на практике частота сети зачастую плавает от 47-48 до 52-53 герц, да и кварцы на 8 000 000 Герц найти нереально, поэтому десятикратное превышение частоты дискретизации исполнительного механизма не только не вредно, но даже полезно - полупериод будет пропускаться значительно реже.
omercury вне форума  
Непрочитано 21.11.2017, 04:14  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от ALEGYR Посмотреть сообщение
Если EE_PID_TIME не может принять значение 100 миллисекунд, а может быть только от 1 до 10 секунд, то выражение EE_PID_TIME*1000 говорит о том, что счетчик pid_counter, указанный в первой строке твоего кода, должен достигать значений 1000 или 10000 секунд! Правильно?
Неправильно. Счетчик считает в миллисекундах. Он же инкрементируется каждую миллисекунду. Поэтому хоть он и достигает значений 1000 или 10000, но это тотсчитанные им миллисекунды. И по какому-то странному совпадению, 1000 его отсчетов, то есть 1000 миллисекунд составляют ровно 1 секунду. А 10000 отсчетов - 10000 миллисекунд = 10 секунд.
AR_Favorit вне форума  
Непрочитано 21.11.2017, 04:14  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
ALEGYR на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от CERGEI1982 Посмотреть сообщение
Много слов,лень читать
А ты почитай о трудовых тяготах слесаря кипа на производстве!
ALEGYR вне форума  
Непрочитано 21.11.2017, 04:20  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от omercury Посмотреть сообщение
Кстати, а в программе на самом деле так или всё-таки таймер ШИМит?
Нет, таймер задействовать было лень (я надеялся, что музыкант не увидит))). В программе есть еще отключение нагревателя, ну то есть весь приведенный кусок выполняется, если установлен соответствующий флаг.

Последний раз редактировалось AR_Favorit; 21.11.2017 в 04:26.
AR_Favorit вне форума  
Непрочитано 21.11.2017, 04:24  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от omercury Посмотреть сообщение
Ну это в теории, а на практике частота сети зачастую плавает от 47-48 до 52-53 герц, да и кварцы на 8 000 000 Герц найти нереально, поэтому десятикратное превышение частоты дискретизации исполнительного механизма не только не вредно, но даже полезно - полупериод будет пропускаться значительно реже.
Ну я ж для понимания принципа поясняю. А вот то, что вы написали - это ответ на вопрос "а если в секунде 100 полупериодов, нафига у тебя heat_counter считает до тыщ, напрягая микроконтроллер в десять раз больше, чем надо!?", которые возникнет такими темпами рассмотрения кусочка программы где-то через год-полтора
AR_Favorit вне форума  
Непрочитано 21.11.2017, 04:39  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
ALEGYR на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от AR_Favorit Посмотреть сообщение
И по какому-то странному совпадению, 1000 его отсчетов, то есть 1000 миллисекунд составляют ровно 1 секунду.
Это не странное совпадение, а небрежность написания программы, и не четкое понимание кодером того что он кодерит!

Ведь компилятор для реализации записи EE_PID_TIME*1000 вынужден будет выделить

ОДНУ ячейку памяти программы для хранения числа 1000
ЕШЕ ОДНУ ячейку памяти программы для хранения результата умножения
вставить машинный код операции умножения
и вставить машинный код операции сравнения!!!

А мог бы обойтись простой вставкой ОДНОГО кода операции сравнения, и сохранить ДВЕ ячейки памяти программы!

Вот и получается, что небрежность написания кода, и нечетное понимание входных величин программы, приводит не только к нечеткому пониманию другими написанного кода, но и к нерациональному использованию ресурсов самого контроллера, а также замедлению выполнения самой программы!!!
ALEGYR вне форума  
Непрочитано 21.11.2017, 05:23  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от ALEGYR Посмотреть сообщение
Это не странное совпадение, а небрежность написания программы, и не четкое понимание кодером того что он кодерит!
Про "странное совпадение" - это ирония,. Не для тебя, для других.

Сообщение от ALEGYR Посмотреть сообщение
Ведь компилятор для реализации записи EE_PID_TIME*1000 вынужден будет выделить

ОДНУ ячейку памяти программы для хранения числа 1000
ЕШЕ ОДНУ ячейку памяти программы для хранения результата умножения
вставить машинный код операции умножения
и вставить машинный код операции сравнения!!!

А мог бы обойтись простой вставкой ОДНОГО кода операции сравнения, и сохранить ДВЕ ячейки памяти программы!
Мог. А я захотел сделать так. Четко зная, что на работоспособность программы это не влияет.
Раньше ты утверждал, что программа не работает, а теперь начинаешь ныть насчет "истраченных двух ячеек". Ты уже оперделись.)))

И вот смотри, опять у тебя ляп: считая "ячейки памяти", ты забыл, что их все равно придется истратить! Поскольку пользователь в уставках вводит секунды - значит в программе есть ячейка, в которой он изменяет именно значение секунд. И ячейка, где хранится число тысяча. И умножение этих ячеек. С точки зрения истраченной памяти мы не выигрываем ни единого байта, делая перевод "человеческих" секунд в "программные" миллисекунды здесь, а не там. Понимаешь?

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

Сообщение от ALEGYR Посмотреть сообщение
Вот и получается, что небрежность написания кода, и нечетное понимание входных величин программы, приводит не только к нечеткому пониманию другими написанного кода, но и к нерациональному использованию ресурсов самого контроллера, а также замедлению выполнения самой программы!!!
Это ты про свой переполненный флоатами "шедевр" на дохлой меге, или про мой код? Если про мой, то "нечеткое понимание" тут только у тебя, а не у меня - я-то предельно четко в курсе, что мой код делает, какие у него входные и выходные параметры и т.д. Ведь именно я тебе это и объясняю тут.

Причем, что самое интересное, как раз вот эти ненужные умножения и деления (там и такое есть) - как раз специально для того, чтобы код было проще понять. То, что ты его всё равно не понял, это уже точно не ко мне претензии.

Что же касается нерациональности использования вычислительных ресурсов контроллера - она, разумеется, присутствует. Поскольку их избыточность тут это позволяет.

Ты пытаешься спародировать то, что я тебе писал про твой ардуинокод, но получается плохо: ардуина медленная, и восьмибитная, и даже аппаратный умножитель не особо-то сильно помогает ей, когда она считает флоаты. А ты их пихаешь пачками, даже не зная, сколько времени в твоей ардуине выполняется одно умножение в них. Поэтому в какой-то момент у тебя обязательно начнутся проблемы как следствие того, что ты не понимаешь, что делаешь.

А я вот, в отличие от тебя, знаю, что у меня в программе аппаратное перемножение интов занимает один такт, который длится 1/48000000 секунды, то есть 21 наносекунду. Поэтому спокойно и ставлю эти умножения (и даже деления, что гораздо хуже))), что могу оценить влияние этой неоптимальности на выполнение программы, и осознано принять решение, сделать ли так, как мне удобней, или так, как наименее затратно с точки зрения ресурсов процессора. Поэтому у меня никакого "замедления программы" нет и быть не может -опять ты свои выдумки зачем-то пытаешься привязать к моему устройству.

Сразу видно, что не раз уже сделанный тебе намек про конечные автоматы, выполняющиеся раз в миллисекунду, ты вообще не понял. Не вдаваясь в их описание, просто поясню: если они выполняются со строгой периодичностью один раз в миллисекунду, то им совершенно неважно, поставить перед каждой их обработкой некий "сложный" расчет длительностью в сотню хоть наносекунд, хоть даже и микросекунд, или не поставить: всё равно они всё так же будут выполняться один раз в миллисекунду. До тех пор, пока их время выполнение вместе со "сложным расчетом" не начнет достигать этой самой миллисекунды. У меня оно очень сильно не достигает ни миллисекунды, ни её половины. ТАк о каком замедлении ты говоришь, о замедлении чего?

Последний раз редактировалось AR_Favorit; 21.11.2017 в 05:35.
AR_Favorit вне форума  
Непрочитано 21.11.2017, 06:32  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
ALEGYR на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от AR_Favorit Посмотреть сообщение
Про "странное совпадение" - это ирония,. Не для тебя, для других.
Спасибо! А я уж подумал что ты только со мной тут иронизируешь!

Сообщение от AR_Favorit Посмотреть сообщение
Мог. А я захотел сделать так. Четко зная, что на работоспособность программы это не влияет.
Вот и я как хочу так и делаю, зная что и ардуина спокойно справляется с пидом, когда ей не морочишь голову лишними операциями умножения, вводом в программу лишних констант, и использованием 32-х разрядных переменных, там где можно обойтись одним или двумя байтами. Да еще можно обойтись внутренними таймерами ардуины, вместо использования программных счетчиков!

Сообщение от AR_Favorit Посмотреть сообщение
Раньше ты утверждал, что программа не работает, а теперь начинаешь ныть насчет "истраченных двух ячеек". Ты уже оперделись.)))
Я нигде и никогда не утверждал, что твой код не работает! Я просто говорил что он коряво написан и коряво работает!

Сообщение от AR_Favorit Посмотреть сообщение
А я вот, в отличие от тебя, знаю, что у меня в программе аппаратное перемножение интов занимает один такт, который длится 1/48000000 секунды, то есть 21 наносекунду. Поэтому спокойно ставлю эти умножения (и даже деления, что гораздо хуже))), что могу оценить влияние этой неоптимальности на выполнение программы, и осознано принять решение, сделать так, как мне удобней, или так, как наименее затратно с точки зрения ресурсов процессора.
Я не сомневаюсь в том, что ты принимаешь решения как тебе удобней, но уже знаю что о затратности ресурсов процессора ты не беспокоишься! Ведь у тебя в руках контроллер, способный выполнять операцию перемножение интов за 21 наносекунду, а ты им решаешь задачи нагревания бачка с периодом от 1 до 10 секунд! Да еще используешь 32-х битовые регистры для хранения 2-х байтовых констант.

Ты же понимаешь, что твоя машинка бегает как формула 1, и имеет кузов карьерного самосвала, а ты на ней только в "булошную" будешь ездить в соседний двор за буханкой хлеба!

Сообщение от AR_Favorit Посмотреть сообщение
Опять ты свои выдумки зачем-то пытаешься привязать к моему устройству.
Так мы вроде твой код рассматриваем, написанный для твоего бачка с маслом, а не чей-то другой!


Сообщение от AR_Favorit Посмотреть сообщение
Сразу видно, что не раз уже сделанный тебе намек про конечные автоматы, выполняющиеся раз в миллисекунду, ты вообще не понял. Не вдаваясь в их описание просто поясню: если они выполняются со строгой периодичностью один раз в миллисекунду, то им совершенно неважно, поставить перед каждой их обработкой некий "сложный" расчет длительностью в сотню хоть наносекунд, хоть даже и микросекунд, или не поставить: всё равно они всё так же будут выполняться один раз в миллисекунду.
Понимаю, когда не хватает профессионализма в использовании ресурсов контроллера, и в написании программы для него, всегда хочется иметь контроллер побыстрее и помощнее, чтобы всегда можно было сослаться на собственную лень, и надежду что он и так скушает "некий "сложный" расчет длительностью в сотню хоть наносекунд, хоть даже и микросекунд", гордо заявив
Цитата:
всё равно они всё так же будут выполняться один раз в миллисекунду.

Последний раз редактировалось ALEGYR; 21.11.2017 в 06:39.
ALEGYR вне форума  
Непрочитано 21.11.2017, 07:29  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от ALEGYR Посмотреть сообщение
Спасибо! А я уж подумал что ты только со мной тут иронизируешь!
Нет, над тобой я в основном жестоко глумлюсь. А ирония - для тех, кто ее понимает.

Сообщение от ALEGYR Посмотреть сообщение
Вот и я как хочу так и делаю, зная что и ардуина спокойно справляется с пидом, когда ей не морочишь голову лишними операциями умножения, вводом в программу лишних констант, и использованием 32-х разрядных переменных, там где можно обойтись одним или двумя байтами.
Одно использованное в том алгоритме ПИД, который ты стащил с инета перемножение двух флоатов - занимает больше времени, чем все мои "лишние" умножения.

Там, где я использовал 32-битные целые переменные, нативные для моего МК, с которыми он работает один ровно такт, ты используешь флоаты, для любой операции с которыми твоя ардуина каждый раз вообще вызывает отдельную математическую функцию! Если бы вместо них у тебя были 32-битные целочисленные переменные, хоть они для твоего процессора и не являются нативными, все равно работа с ними была бы намного быстрее. Если ты этого не понимаешь - то это еще не повод даже близко сравнивать мои "лишние умножения" с выполнением твоим процессором долгой и бессмысленной работы по расчету чисел с плавающей точкой, выдавая на выходе... результат в виде однобайтного целого числа. У тебя алгоритм расчета с флоатами в итоге даже не обеспечивает той же самой дискретности, что мой на интах! Так зачем же ты "хотел" сделать так, а не оптимальнее, с учетом того, что ресурсов твоего процессора это отжирает на порядки больше моих "лишних умножений"?

А ответ прост: ты просто не нашел "библиотеки" получше. Ты нагуглил для своей программы выложенную каким-то бездарем перепечатку из брошюры "ПИД для чайников". Ни он, ни ты - не в силах сделать свое. Поэтому так и получилось.

И вот на этом фоне причитания о паре байт - когда ты феерично забиваешь память массивами флоатов - особенно комичны)))

Сообщение от ALEGYR Посмотреть сообщение
Да еще можно обойтись внутренними таймерами ардуины, вместо использования программных счетчиков!
Неа, нельзя. Ты и так не умеешь, а ардуина еще больше усложняет тебе эту задачу - в отличие от нормального компилятора. По мнению ее изобредателей, про "железные" ресурсы программисту знать не надо

Сообщение от ALEGYR Посмотреть сообщение
Я нигде и никогда не утверждал, что твой код не работает! Я просто говорил что он коряво написан и коряво работает!
Тебя как ссаного котенка носом потыкать, как ты вопил про обман заказчика, что я ему ПИДа не дал? А твои утверждения про "100 секунд невнимания к бачку", что ваще-то точно так же означает, что ПИД не работает (маленький бачок нагревается меньше 10 минут, то бишь порядка 600 секунд, с периодом в 100 секунд никакого регулирования там не получится).

Сообщение от ALEGYR Посмотреть сообщение
Я не сомневаюсь в том, что ты принимаешь решения как тебе удобней, но уже знаю что о затратности ресурсов процессора ты не беспокоишься!
Нет, не "знаешь", а вновь фантазируешь. Поскольку ты оценить затрату ресурсов контроллера не умеешь, про профилирование нагрузки и слыхом не слыхивал, а просто цепляешь к проекту убогие куски скетчей из инета, в надежде, что эта хрень заработает, то тебе, разумеется, сложно поверить, что можно знать и понимать, где расход ресурсов значителен, и требует экономии, а где им можно пренебречь даже в целях читабельности исходного кода.

Сообщение от ALEGYR Посмотреть сообщение
Ведь у тебя в руках контроллер, способный выполнять операцию перемножение интов за 21 наносекунду, а ты им решаешь задачи нагревания бачка с периодом от 1 до 10 секунд! Да еще используешь 32-х битовые регистры для хранения 2-х байтовых констант.

Ты же понимаешь, что твоя машинка бегает как формула 1, и имеет кузов карьерного самосвала, а ты на ней только в "булошную" будешь ездить в соседний двор за буханкой хлеба!
Так ты мне претензии предъявляешь, что я выбрал процессор подешевле - а он оказался не только дешевле ардуинного, но еще при этом быстрее и экономичней? Ну давай и я тебя упрекну. У тебя компьютер, способный в реальном времени просчитывать всю кинематику какого-нить фрезерного станка с семью степенями свободы, а ты никак не заставишь им свою конструкцию снять детальку с платы). Компьютер позволяет использовать качественную среду разработки и разрабатывать устройства на современных платформах, а ты лысую ардуину гоняешь. У тебя по ту сторону экрана целый интернет, битком набитый учебниками и прочей информацией на все случаи жизни программиста, а ты готовые модули гуглишь, и на форуме тупишь над одной простейшей строчкой кода.


Сообщение от ALEGYR Посмотреть сообщение
Так мы вроде твой код рассматриваем, написанный для твоего бачка с маслом, а не чей-то другой!
Я вижу, что твои попытки "рассмотреть" мой код оказались на деле многодневным мучительным непониманием, как работает самая первая его строчка. А о понимании собственно реализации ПИД-алгоритма, понятно, вообще уже и речи не идет.

Знаешь, как это выглядит? Когда ты сначала показываешь свое страшненькое творение, а потом говоришь о моем?



Сообщение от ALEGYR Посмотреть сообщение
Понимаю, когда не хватает профессионализма в использовании ресурсов контроллера, и в написании программы для него, всегда хочется иметь контроллер побыстрее и помощнее,
Конечно, понимаешь! Ты должен понимать, должен прекрасно это понимать. Ведь именно как полностью показавший свою профнепригодность трехдневным непонятливым нытьем надо одной строчкой кода, которая у школьника и то бы не вызвала затруднений, перлами про перевод секунд в килосекунды, и проч., ты тем не менее прекрасно понимаешь, хотя и пытаешься отрицать, что в любой момент силенок у твоей ардуины окажется недостаточно для очередной кучи флоатов - и тебя бы спас более мощный процессор, но ты в него не умеешь...

И на этом фоне твои попытки уколоть меня обвинениями в непрофессионализме - хоть и смешны до колик, но на самом деле это очень жалкое зрелище, как попытка импотента успокоить себя что у кого-то другого хоть и стоит, но "как-то криво".

Кстати, если мы уж обсуждаем ПИДы, может быть выложишь текст той библиотеки, которая использована тобой. Ну просто, в качестве образца "как надо"? Поскольку я в курсе, что она написана не тобой, то даже если в ней что не так, это уже не будет твоим позором.

Последний раз редактировалось AR_Favorit; 21.11.2017 в 07:54.
AR_Favorit вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Wiznet W7100. Общие вопросы R_N Микроконтроллеры, АЦП, память и т.д 7 06.06.2012 00:33
PCAD - вопросы и ответы avr123-nm-ru Proteus, KiCAD и другие ECAD 7 27.01.2011 21:15
Система измерения температуры (на AD8495), вопросы по схеме и реализации spartakchamp Измерительное оборудование 2 15.11.2010 22:04


Часовой пояс GMT +4, время: 21:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot