Програмирование pic на СИ.

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4797505#p4797505"]как-то стрёмно такое устройство в жизнь пускать Особенно - когда знаешь - как это на АСМ работает[/uquote]
Не выдумывай. Все показанные тобой "ошибки" Микрочипа сводились к оверхеду с банками ОЗУ и секторами флеша. Это не ошибки, это оверхед. Причем связанный с тем, что в XC8 все таки нет LTO. А без LTO справиться с таким оверхедом невозможно принципиально. Поэтому Микрочип и забил на него.
Если ты хочешь считать машинные циклы - пиши на АСМе. Это совсем несложно и рационально. Не нужно продираться через Си к оптимальному коду в достаточно специфической архитектуре МК.
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4797505#p4797505"]Недавно ... пару недель назад ... микрочип некорректно обработал мааааленькую программу-прошивку: не поделил макрос на ТРИ![/uquote]
Прежде чем делать такие заявления, покажи исходный код. А то может оказаться все не так, как ты сказал...
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4797505#p4797505"]А вот когда уже и ещё конкретнее начинает МПЛАБ глючить - то тут помогает закрытие и открытие по новому программы[/uquote]
MPLABX - это NetBeans. Поэтому грешить на Микрочип как то не совсем корректно. Создавать и поддерживать собственную платформу по нынешним временам дороговато будет. Даже для Микрочипа.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение ARV »

[uquote="igorg1",url="/forum/viewtopic.php?p=4797485#p4797485"]То: КРАМ - бредовая у тебя идея.
Ничего не получается - более того, подключаю ОУ - сигнал меняется - смотри осциллограмму (кликабельна)
Изображение
Только давай не будем орать про огрехи в монтаже, хорошо?
Скинуть фото 2-х отладочных плат?[/uquote]
А чо, мне нравится. Красивый ШИМ, возможно, даже синусом модулированный. На глаз не распознать.

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

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="igorg1",url="/forum/viewtopic.php?p=4797527#p4797527"][uquote="КРАМ",url="/forum/viewtopic.php?p=4797498#p4797498"]Еще раз. Посчитай схему.[/uquote]
Мы же договорились конструктивно, правильно???[/uquote]
Неправильно. Я тебе схему не представлял. За исключением выходов двух ОУ включенных по мостовой схеме.
Еще я тебе сказал, что между ОУ и МК должен быть ФНЧ и его нужно посчитать с учетом входного сопротивления ОУ.
Что не так?
Ты начал канючить, чтобы я тебе сам все посчитал.
С какого перепуга?
Ты постоянно хамишь и бахвалишься какой ты краснодипломный. К тому же я предложил тебе помощь в виде твоих вопросов и моих ответов В ПРОЦЕССЕ ТВОЕГО РАСЧЕТА.
Считать за тебя я не буду. Точка.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797527#p4797527"]По представленной схеме - не работает.
Монтаж правильный.
Мысли?
Идея изначально дохлая?[/uquote]
Показываю осциллограмму схемы и кода практически идентичного предложенному мной тебе. Разница в схеме есть, но она непринципиальна. Структурная схема кроме ФНЧ содержит еще схему сдвига уровня синусоиды - это настройка центральной частоты устройства (синус является модулирующим сигналом в ЧМ), а так же цифровой потенциометр через который пропускается ШИМ, чтобы регулировать амплитуду синуса - сиречь девиацию выходного ВЧ сигнала.
Изображение Изображение
Нужно кликнуть по картинкам, чтобы увидеть нормальную ориентацию и масштаб.
:tea:
К тому же ты ни слова не сказал что конкретно у тебя не работает.
Например, какая осциллограмма на выходе ФНЧ при отключенном ОУ?
igorg1
Прорезались зубы
Сообщения: 206
Зарегистрирован: Сб дек 24, 2011 10:17:24

Re: Програмирование pic на СИ.

Сообщение igorg1 »

ТО: Крам - ты сказал что "Еще я тебе сказал, что между ОУ и МК должен быть ФНЧ и его нужно посчитать с учетом входного сопротивления ОУ."
А это зачем? Поясни.
Как мы помним, у идеального ОУ входное сопротивление стремится к бесконечности, выходное сопротивление - к нулю.
В реальном ОУ конечно не так, но в применённом мною ОУ входное сопротивление достаточно велико и не может оказывать никакого влияние на выходное сопротивление фильтра.
Хорошо, сделаю как ты хочешь.
Сейчас жену отвезу в магазин - и сниму осциллограммы.
Первая осциллограмма - выход ШИМ без нагрузки.
Вторая осциллограмма - ШИМ+ФНЧ без ОУ.
третья - на нагрузке в 3Ком на выходах 2-х ОУ.
Пойдёт так?
Да, и если не хочешь конструктивно разговаривать, а только в брани-ругани и оскорблениях - изволь, но без меня.
Я до быдловства опускаться не буду.

Добавлено after 2 minutes 28 seconds:
На показанной мню схеме стоит ФНЧ.
Номиналы - вопрос другой. Не могу понять почему прямоугольник ШИМа изменился.
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Програмирование pic на СИ.

Сообщение akl »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4797568#p4797568"]... Структурная схема кроме ФНЧ содержит еще схему сдвига уровня синусоиды.., а так же цифровой потенциометр через который пропускается ШИМ, чтобы регулировать амплитуду синуса
Изображение...[/uquote] Вижу ограничение сверху.
СпойлерИзображение
Думаю, виновато неточное выражение расчета. Например
; таблица полного косинуса размахом 208емр с начальным уровнем 240емр
; максимальным значением 448емр, минимальным 32емр для 512 точек/период
; Fo=14,7456MHz выражение N=240+208*sin(X*360/512)
А это синус частоты 60,(0)Гц из этого выражения
СпойлерИзображение
Сдвиг начального уровня и регулировку амплитуды контроллер может обеспечить самостоятельно.
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="igorg1",url="/forum/viewtopic.php?p=4797626#p4797626"]ТО: Крам - ты сказал что "Еще я тебе сказал, что между ОУ и МК должен быть ФНЧ и его нужно посчитать с учетом входного сопротивления ОУ."
А это зачем? Поясни.
Как мы помним, у идеального ОУ входное сопротивление стремится к бесконечности, выходное сопротивление - к нулю.
В реальном ОУ конечно не так, но в применённом мною ОУ входное сопротивление достаточно велико и не может оказывать никакого влияние на выходное сопротивление фильтра.[/uquote]
Мы и не собирались отклоняться от модели с идеальным ОУ.
Только давай вспомним, что у нас ДВА операционных усилителя. И один из них включен по схеме инвертирующего масштабирующего усилителя с Ку=1.
Это включение имеет заземленный неинвертирующий вход. Это значит, что инвертирующий вход по сути тоже заземлен. Виртуально, посредством ООС. Таким образом, между входом масштабирующего усилителя (а не ОУ) и его выходом имеется удвоенное напряжение входа (пусть для простоты питание двухполярное, тогда если на входе U, тогда на выходе будет -U - разница между входом и выходом будет 2U). Так же между входом и выходом имеем два последовательных и одинаковых сопротивления R. Входное сопротивление инвертирующего входа бесконечность.
Ток входа усилителя будет протекать только через эти два последовательных резистора прямо в нулевое выходное сопротивление ОУ. Итого ток будет I=2U/2R=U/R. Внезапно оказалось, что входное сопротивление масштабирующего инвертирующего усилителя на ОУ равно сопротивлению между входом усилителя и инвертирующим входом ОУ. Виртуальная земля инвертирующего входа оказалась не совсем виртуальной... :)
[uquote="igorg1",url="/forum/viewtopic.php?p=4797626#p4797626"]Первая осциллограмма - выход ШИМ без нагрузки.
Вторая осциллограмма - ШИМ+ФНЧ без ОУ.
третья - на нагрузке в 3Ком на выходах 2-х ОУ.
Пойдёт так?[/uquote]
Пойдет.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797626#p4797626"]Да, и если не хочешь конструктивно разговаривать, а только в брани-ругани и оскорблениях - изволь, но без меня.
Я до быдловства опускаться не буду.[/uquote]
Ты, Игорёк, начал свое общение на этом форуме с того самого "быдловства". Только почему то решил, что зеркалированное на тебя такое же общение, к тебе отношения не имеет.
Наверное потому, что у тебя сильно завышенная самооценка.
А оно вононокак... :dont_know:
[uquote="igorg1",url="/forum/viewtopic.php?p=4797626#p4797626"]Не могу понять почему прямоугольник ШИМа изменился.[/uquote]
Из твоей единственной показанной осциллограмме нет и не может быть никаких изменений. Потому что она одна.
Никто не может догадаться о причинах твоих сомнений.
Теперь ты знаешь как публиковать картинки и легко опубликуешь всю цепочку измерений, чтобы всяк понял о чем речь. :)

Добавлено after 13 minutes 46 seconds:
[uquote="akl",url="/forum/viewtopic.php?p=4797632#p4797632"]Вижу ограничение сверху.
Думаю, виновато неточное выражение расчета.[/uquote]
Всё там нормально ДЛЯ КОНКРЕТНОГО ПРИМЕНЕНИЯ этого синуса. Дело в принципе работы ПКС использующей этот синус в качестве модулирующей частоты ЧМ. Работа приемника осуществляется на восходящем и нисходящем участке синуса - примерно 20% размаха попадают в мертвые зоны из-за слишком малого значения производной синуса на этих участках.
Ограничение не имеет отношения к расчету синуса. Это ограничение в буферном усилителе в тракте. Он R2R, а синус генерируется в полном раскрыве. Вот эти примерно 100 мВ и выпадают из линейности. Ограничения в математике вы бы и не увидели в таком виде - сигнал проходит через ФНЧ и третья гармоника будет частично подавлена, тем более высшие и такого "красивого" ограничения не будет.
[uquote="akl",url="/forum/viewtopic.php?p=4797632#p4797632"]Сдвиг начального уровня и регулировку амплитуды контроллер может обеспечить самостоятельно.[/uquote]
Нет, не может.
Применен PIC18F27Q43. Это восьмибитный контроллер с не самым быстрым ядром - 16 мипс. По вполне обоснованным причинам разрешение ШИМа сделано 8-битным. Это означает, что любые манипуляции с математикой синуса внутри контроллера вызовут катастрофическое сокращение и так не слишком большого динамического диапазона.
В нынешней инкарнации этого изделия применен 32-битный AT32F421 c 16-битным ШИМом и цифровой потенциометр исчез из тракта, как и буферный усилитель с ним связанный.
Сдвиг уровня делается с помощью отдельного ЦАПа формирующего напряжение сдвига. Делать сдвиг математически даже в 16-битах совершенно бестолковая идея. Начальный сдвиг и так есть, причем он выше 3 или 5 Вольт (варикап требует управления в районе 6...12 Вольт) и единственная схемотехническая потеря против внутренней математики - это ОДИН РЕЗИСТОР в сумматоре на входе схемы сдвига.
Реклама
igorg1
Прорезались зубы
Сообщения: 206
Зарегистрирован: Сб дек 24, 2011 10:17:24

Re: Програмирование pic на СИ.

Сообщение igorg1 »

ТО: Крам - вот ты интересный человек, честно :)
Ладно, опустим момент кто когда начал - но напомню, что ты первый начал орать об уровне моего образования.
Ладно, всё это лирика.
Я кажется понял в чём проблемы - я использовал с перерезанными перемычками и переназначенными выводами отладочную плату - сейчас быстро прозвонил - оказалось что вместо выхода ОУ1 присутствует выход ОУ2, ну и прочие дела плохие.
Через пару часов на девственной плате распаяю всё - и сниму осциллограммы.
там поглядим.
И вот что - когда КРАМ, предлагаешь такую казуистику - сразу говори про подводные камни - только не ори, что я должен был учесть всё это.
Делалось моментально по статье которую ты скинул.
и ведь я могу взять 4 ОУ:) - в одном корпусе, правильно???? - это так, ради прикола:)
Сейчас поглядим - буквально часа 4 :)

Добавлено after 51 minute 55 seconds:
Да, и сейчас зашел в МИНДИ - нет там при расчете фильтра параметра выходное сопротивление нагрузки :( - наверное ДОЛБНИ микрочип при написании программы не учли твоё мнение :)

Добавлено after 55 minutes 3 seconds:
В общем вот так проводилось измерение: - это выход ШИМ с подключенным фильтром - точнее перед фильтром:
Изображение
И вот какая осциллограмма:
Изображение

Добавлено after 2 minutes 24 seconds:
А вот после фильтра:
Как проводилось измерение:
Изображение
И осциллограмма:
Изображение

Фуфло полное
ОУ отключен - видать что проводник отпаен
Rapra
Мучитель микросхем
Сообщения: 431
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Програмирование pic на СИ.

Сообщение Rapra »

Поздравим igorg1 с новеньким ослографом, у которого еще пленочка с экранчика не снята
igorg1
Прорезались зубы
Сообщения: 206
Зарегистрирован: Сб дек 24, 2011 10:17:24

Re: Програмирование pic на СИ.

Сообщение igorg1 »

[uquote="Rapra",url="/forum/viewtopic.php?p=4797681#p4797681"]Поздравим igorg1 с новеньким ослографом, у которого еще пленочка с экранчика не снята[/uquote]
Да он с полгода у меня - пленку не снимаю - коты любят пальцами хулиганить:) - на плёнке видать:)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="igorg1",url="/forum/viewtopic.php?p=4797638#p4797638"]ты первый начал орать об уровне моего образования.[/uquote]
Не вижу в этом ничего хамского по отношению к собеседнику. У тебя действительно нет никакого образования в той области, о которой мы ведем речь. И все это сочетается с твоей хамоватой манерой оценивать собеседника в той области компетенций, в которой ты вообще ничего не смыслишь. :facepalm:
[uquote="igorg1",url="/forum/viewtopic.php?p=4797638#p4797638"]Да, и сейчас зашел в МИНДИ - нет там при расчете фильтра параметра выходное сопротивление нагрузки :( - наверное ДОЛБНИ микрочип при написании программы не учли твоё мнение[/uquote]
Типичный образчик быдловатости и махрового хамства.
1. Откуда ты вообще взял термин "выходное сопротивление нагрузки"? И почему создатели Simetrix должны что либо о нем знать?
2. У фильтра есть входное и выходное сопротивление, потому что он четырехполюсник. У нагрузки есть просто сопротивление, поскольку нагрузка - двухполюсник.
3. Во всех аналоговых симуляторах пользователи работают с ЭКВИВАЛЕНТНОЙ СХЕМОЙ, а не с электрической принципиальной. При анализе фильтра нужно указать у источника входного сигнала его выходное сопротивление, а так же указать сопротивление нагрузки фильтра, которое в нашем случае является входным сопротивлением усилителей на ОУ.
Задача анализа фильтра состоит в построении его амплитудно-частотной характеристики, такой анализ в симуляторах называется AC-анализ.
АЧХ твоего фильтра в Минди ты так и не привел. Наверное потому, что вообще не умеешь работать с симуляторами.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797638#p4797638"]И вот какая осциллограмма:[/uquote]
Из нее совершенно очевидно, что вывести синус-ШИМ ты не сумел. Это к синусу имеет отдаленное отношение. Картинка показывает рваные участки синуса, причем даже управление PWM модулем неверное - ошибки в его загрузке.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797638#p4797638"]А вот после фильтра:
... осциллограмма:[/uquote]
Из выходного сигнала после ФНЧ видно, что частота среза ФНЧ рассчитана не верно, как и не верно выбрана топология самого фильтра при использованных частотах сигнала и ШИМа.
Когда я тебе предложил использовать NCO, то это позволяло отделить частоту дискретизации от частоты ШИМа. При этом частоту ШИМа можно было бы увеличить, увеличив разнос между частотой сигнала и частотой ШИМа, упростив ситуацию с ФНЧ.
Но даже при использованных частотах ты не сумел посчитать фильтр, выбрав его параметры наобум. И даже не проверив их в симуляторе.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797638#p4797638"]Фуфло полное[/uquote]
Конечно фуфло. А чего ты ждал от своего фуфлового отношения к этому устройству?
Это только твое фуфло. Я тут вообще не причем. Меня ты ни разу не слушал и не слышал.
:facepalm:
igorg1
Прорезались зубы
Сообщения: 206
Зарегистрирован: Сб дек 24, 2011 10:17:24

Re: Програмирование pic на СИ.

Сообщение igorg1 »

То: Крам - ты опять свои ошибочные суждения о моём образовании возводишь в ранг аксиомы????
Успокойся, а то не погляжу на твой пожилой возраст.
С чего ты начал орать про создателей Simetrix?
Ты орёшь что что я взял наобум номиналы фильтра????
Сделай тогда АХЧ фильтра с моими номиналами и выложи сюда. Что, опять будешь орать что ты ничего не будешь делать?
Я утверждаю -что фильтр рассчитан правильно. докажи обратное.
А то орать умеют все. И навешивать ярлыки.
Что с ШИМом у меня не так???
Ты хоть видел код????
А что тогда орёшь????
Что тебе конкретно даст NCO?
Только по существу.
Как ты по прерыванию NCO будешь грузить ШИМ???
Какую частоту NCO ты предлагаешь???
Только внятно.

Добавлено after 3 minutes 7 seconds:
Ещё раз - именно с такой дискретизации ШИМ и получишь такую синусоиду.
Для начала нарисуй график в Excel c 8-мя точками дискретизации на четверть волны - и полядишь как отдаленно это будет походить на синусоиду.

Добавлено after 13 minutes 26 seconds:
ТО: Крам - ты лучше научись писать на Си :)
Прежде чем выкладывать свою писанину - вот скрин, что ты выложил для Александра (Alex1102)
Такое надо выкладывать под тегом #РЖУНЕМОГУ :)
Изображение
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]то не погляжу на твой пожилой возраст.[/uquote]
Мне это фиолетово. Но и тут ты - быдло. Только быдло лезет в драку только на основании своих тупых обид.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]С чего ты начал орать про создателей Simetrix?[/uquote]
Потому что Минди - это Simetrix.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]Я утверждаю -что фильтр рассчитан правильно. докажи обратное.[/uquote]
Я тебе ничего не собираюсь доказывать. Доказывает твой собственный эксперимент.
Твой фильтр не подавил частоту ШИМа от слова совсем.
Поэтому твой фильтр рассчитан неправильно. Причем ошибка в несколько десятичных порядков. У ШИМ слегка завалены фронты - и только.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]Что с ШИМом у меня не так???
Ты хоть видел код????[/uquote]
Мне не требуется видеть код. если я вижу результат его работы. Исходный сгенерированный ШИМ - это не синусоида. Это ее обрезки.
Мне хватает опыта утверждать, что ты напортачил не только в математике синуса, но и в загрузке модуля. Ищи. Ищущий да обрящет.
Можешь выложить код здесь в установленной Правилами форума процедуре. Под тегами "код" и под спойлером. Смотреть на код по твоим бесчисленным ссылкам я не буду. Да и никто не будет.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]Что тебе конкретно даст NCO?
Только по существу.[/uquote]
Я тебе в предыдущем сообщении ответил на этот вопрос БОЛЕЕ ЧЕМ по существу. Если ты ничего не понял, то причем тут я?
[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]Как ты по прерыванию NCO будешь грузить ШИМ???[/uquote]
Какая разница в каком прерывании грузить ШИМ? Ты же его в каком то грузишь...
[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]Какую частоту NCO ты предлагаешь???
Только внятно.[/uquote]
Частоту отсчетов сигнала.
Какой смысл тебе отвечать на вопросы, если у тебя в одно ухо влетело, а из другого вылетело.
На вопрос о частоте формируемой NCO я тебе уже несколько раз говорил. И ты опять мне задаешь этот же вопрос. :facepalm:
[uquote="igorg1",url="/forum/viewtopic.php?p=4797717#p4797717"]Для начала нарисуй график в Excel c 8-мя точками дискретизации на четверть волны - и полядишь как отдаленно это будет походить на синусоиду.[/uquote]
Нормально он будет походить. Только формирование синусоиды в ШИМ и даже в обычном ЦАП не имеет отношения к графику в Эксель. График в Эксель - это линейная интерполяция точек функции. В ШИМ нет точек и нет линейной интерполяции.
igorg1
Прорезались зубы
Сообщения: 206
Зарегистрирован: Сб дек 24, 2011 10:17:24

Re: Програмирование pic на СИ.

Сообщение igorg1 »

Поясню почему так - в массиве bufferSMT[] индекс iBufferSMT не может быть одновременно больше максимального или минимального значения - и поэтому одновременная проверка на ВЗАИМОИСКЛЮЧАЮЩИЕ условия - является избыточной :)
там только if (...) {.....} else if (...) {......} рулит :)
Понятно, диванный эксперт?
Изображение

Добавлено after 7 minutes 27 seconds:
Вот весь код моего main.c, в котором я гружу значение в ШИМ:
Изображение
Мысли?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="igorg1",url="/forum/viewtopic.php?p=4797722#p4797722"]Поясню почему так - в массиве bufferSMT[] индекс iBufferSMT не может быть одновременно больше максимального или минимального значения - и поэтому одновременная проверка на ВЗАИМОИСКЛЮЧАЮЩИЕ условия - является избыточной[/uquote]
А где ты увидел проверку индекса? :))) Там проверка значения массива по индексу.
:tea:
Даже и не пытайся... :music:
[uquote="igorg1",url="/forum/viewtopic.php?p=4797722#p4797722"]Вот весь код моего main.c, в котором я гружу значение в ШИМ:
Мысли?[/uquote]
Мысли на эту тему я тебе высказывал.
Добавлю, что у твоего "синуса" нет нуля и он выходит за динамический диапазон PWM.
Полный период синуса для однополярного 10-битного PWM должен лежать в интервале от 0 до 1023. А у тебя там лежит только "четверть", да и та четвертью не является, поскольку нет нуля.
igorg1
Прорезались зубы
Сообщения: 206
Зарегистрирован: Сб дек 24, 2011 10:17:24

Re: Програмирование pic на СИ.

Сообщение igorg1 »

Скобочки после точки с запятой - т. е. после выражения - это НЕЧТО :) - человек совсем не умеет писать на СИ :)
Правильно - но в массиве индекс ты какой проверяешь????
А после проверки что ты делаешь - увеличиваешь индекс :) - не?

ТЫ ПРОВЕРЯЕШЬ ИМЕННО ИНДЕКС iBufferSMT - смотри свою ПЫОНЕРСКУЮ ПИСАНИНУ

И где это у меня ШИМ выходит за динамический диапазон????
У меня ШИМ - 10 бит - т. е. максимальное значение 1023 - а я что гружу????
Ты хорош здесь пургу гнать:)
Rapra
Мучитель микросхем
Сообщения: 431
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Програмирование pic на СИ.

Сообщение Rapra »

Насчет скобок - верно, но лишь частично. По крайней мере, ошибкой не будет являться то, что они поставлены.
То есть,
if(array > maxValue) maxValue = array;
и
if(array[n] > maxValue) { maxValue = array; }
идентичны. Чтобы было нагляднее, можно представить в многострочной записи:

Код: Выделить всё

if(array[i] > maxValue) 
{
    maxValue =  array[i];
}
А участок кода

Код: Выделить всё

if(array[i] > maxValue)
     maxValue = array[i];
if(array[i] < minValue)
     minValue = array[i];
представляет собой классический поиск максимального и минимального значения элементов в массиве. Если сказать по-русски, то код одначает:
"если i-тый элемент массива больше значения maxValue, то значение maxValue = i-тому элементу массива. И если i-тый элемент массива меньше значения minValue, то значение minValue равно i-тому элеенту массива."

Для улучшения читаемости в вышепоказанном коде можно было длинное имя итератора элементов массива заменить на стандартное имя в одну букву i , а так же убрать излишние подробности в именах буфера и значений.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="igorg1",url="/forum/viewtopic.php?p=4797732#p4797732"]Скобочки после точки с запятой[/uquote]
Ну и что? Под скобками было исходно два или три выражения. Они удалены, скобки остались

[uquote="igorg1",url="/forum/viewtopic.php?p=4797732#p4797732"]А после проверки что ты делаешь - увеличиваешь индекс :) - не?[/uquote]
Увеличиваю. Это проверка на границы значений - поиск центральной частоты ЧМ.[uquote="igorg1",url="/forum/viewtopic.php?p=4797732#p4797732"]ТЫ ПРОВЕРЯЕШЬ ИМЕННО ИНДЕКС iBufferSMT[/uquote]
Исходник в отмеченной тобой области:

Код: Выделить всё

                bufferSMT[iBufferSMT]=tabFrequence[iTableFreq];
                if (bufferSMT[iBufferSMT]>maxSMT) {maxSMT=bufferSMT[iBufferSMT];}
                if (bufferSMT[iBufferSMT]<minSMT) {minSMT=bufferSMT[iBufferSMT];}
                iBufferSMT++;
Где тут проверка индекса?
[uquote="igorg1",url="/forum/viewtopic.php?p=4797732#p4797732"]И где это у меня ШИМ выходит за динамический диапазон????
У меня ШИМ - 10 бит - т. е. максимальное значение 1023 - а я что гружу????[/uquote]
Кроме максимального у синуса есть еще и минимальное значение. Для максимального 1023 минимальное будет МИНУС 1023.
Это значение у синуса будет в конце третьего и в начале четвертого квадрантов.

Добавлено after 3 minutes 40 seconds:
[uquote="Rapra",url="/forum/viewtopic.php?p=4797740#p4797740"]Для улучшения читаемости в вышепоказанном коде можно было длинное имя итератора элементов массива заменить на стандартное имя в одну букву i , а так же убрать излишние подробности в именах буфера и значений.[/uquote]
Пардон, конечно, но меня оторопь берет с этого заявления...
Вы что то знаете об остальном коде, чтобы такое советовать? :facepalm:
Длинное имя итератора элементов является аргументом при поиске переходов через ноль и вычисления модулирующей частоты.
Если я укорочу имена, то уже через месяц я не вспомню алгоритм состоящий из безликих коротких имен переменных.
Последний раз редактировалось КРАМ Сб мар 14, 2026 15:23:57, всего редактировалось 1 раз.
Rapra
Мучитель микросхем
Сообщения: 431
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Програмирование pic на СИ.

Сообщение Rapra »

Я знаю общие принципы читаемости кода и общепринятые соглашения об именах. Именно эти соглашения помогают читать чужой код.
И именно из-за этого несоотвествия igorg1 ошибся в чтении кода.

[uquote="КРАМ",url="/forum/viewtopic.php?p=4797742#p4797742"]Если я укорочу имена, то уже через месяц я не вспомню алгоритм состоящий из безликих коротких имен переменных.[/uquote]
Но ведь общепринято, что индекс массива, в отсутствие других индексов или других уточнений, называется просто i. В данном примере нет других индексов у массива, поэтому buf или bufSmt - нормальная практика именования, которую вряд ли перепутаешь.

Есть две крайности в именовании - чрезмерное сокращение до пары-тройки букв и чрезмерное удлинение имен. Истина, как правило, посередине - минимально достаточная длина имени, отражающая суть и не перегружающая длиной текста
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25359
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Програмирование pic на СИ.

Сообщение КРАМ »

[uquote="Rapra",url="/forum/viewtopic.php?p=4797743#p4797743"]Я знаю общие принципы читаемости кода и общепринятые соглашения об именах. Именно эти соглашения помогают читать чужой код.
И именно из-за этого несоотвествия igorg1 ошибся в чтении кода.[/uquote]
Он ошибся не поэтому, а потому что не умеет читать код. И потому что решил растопырить пальцы на основании маленького случайного фрагмента кода.
[uquote="Rapra",url="/forum/viewtopic.php?p=4797743#p4797743"]В данном примере нет других индексов у массива, поэтому buf или bufSmt - нормальная практика именования, которую вряд ли перепутаешь[/uquote]
А кто вам сказал, что это "данный пример".
Этот "данный пример" имеет длину в сотню строк...
Там только локальных переменных 12 штук из них 10 статики, поскольку функция порезана из-за блокировки в монолитном исполнении.
Rapra
Мучитель микросхем
Сообщения: 431
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Програмирование pic на СИ.

Сообщение Rapra »

Я говорю лишь о том, что видел на скрине. А вникать в вашу бабскую перепалку у меня нет ни желания, ни времени. Я, знаете ли, перерос этот возраст, когда хочется спорить до усрачки.
Ответить

Вернуться в «PIC»