Я долго распинаться не буду, просто выложу небольшой архив со скринами
Лично я ничего не понял из выложенного. Что там не так? Какой уровень оптимизации включен? Почему собственная тупость выдается за косяки компилятора? Может нужно почитать мануал на компилятор?
Я долго распинаться не буду, просто выложу небольшой архив со скринами
Лично я ничего не понял из выложенного. Что там не так? Какой уровень оптимизации включен? Почему собственная тупость выдается за косяки компилятора? Может нужно почитать мануал на компилятор?
Чего Вы не поняли? 1. Низкий уровень оптимизации - просто добавляет в проект лишние команды, но не исключает лишние команды из скомпилированного кода, которые явно там лишние: Вернулись из ПП -> W = i+1; сохраняем "W" в неком ... "F", после загрузили "F" назад в W чтобы посмотреть - равен ли был W нулю? 2. Почему Вы решили что моя тупость? Обоснуйте 3. Почитайте, и скажите - что я не так написал, и возможно, я буду пользоваться в старых проектах новым pic-as вместо старого из МПЛАБ версии 4 4. опять же ... как в СИ использовать регистры с АСМ командами? Только не надо отмазки, просто код в студию И не надо декларировать их так как я сделал Вы же видели, в последнем моём скрине - что по факту это не прокатит АСМ вставка работает непорсредственно там - где в текущий момент находится программа А объявленный регистр находится в другом банке ОЗУ Может знаете как по другому связать АСМ и СИ регистры? ну так выкладывайте, не стесняйтесь, этот топик по ходу для этого и создан Только судя по убогому pic-as который микрочип сейчас нарисовал - другого варианта объявления общих регистров НЕТ!
ALEKS1102X, в вашем случае, на скрине 2 из архива, XC8 может ещё сделать IORLW 0x0 вместо movff. Не думайте, что компилятор XC8 настолько умен, как вы от него ожидаете. Например, он любил вставлять movlb перед INDF пока я не обратился в тех. поддержку и в следующей версии компилятора этот избыточный MOVLB пофиксили. Так что, если есть возможность, напишите в тех. поддержку.
1. Низкий уровень оптимизации - просто добавляет в проект лишние команды, но не исключает лишние команды из скомпилированного кода, которые явно там лишние: Вернулись из ПП -> W = i+1; сохраняем "W" в неком ... "F", после загрузили "F" назад в W чтобы посмотреть - равен ли был W нулю?
Шозабред... Сами придумали или подсказал кто? Нулевой уровень оптимизации изолирует каждую команду Си так, чтобы при пошаговом исполнении код НА СИ выполнялся как будто команды Си являются инструкциями ядра. Каждый последующий уровень исключает часть инструкций, но ограничивает пошаговое исполнение при отладке. При пошаговом исполнении такого кода появляются пропуски и непоследовательность исполнения. И всё. Поэтому ваши копания совершенно бессмысленны. Делать вставки на асме имеет смысл лишь в линейном и простом коде, либо изолируя асм в отдельной функции и используя декларацию о передаче параметров в функцию и возврат значения функции.
опять же ... как в СИ использовать регистры с АСМ командами?
Насколько мне не изменяет склероз, в Си объявляется переменная, которая в асме используется с одинарным или двойным (не помню точно) подчеркиванием перед именем. Как в Си прибить переменную к конкретному адресу, я полагаю (из вашего же кода), вы в курсе. Что не так? Откройте наконец мануал на компилер, штоле... Впрочем, намекну. Линкер должен знать всё про объявленные переменные, поэтому вставлять в асме регистры с кривым определением имен - совершенная тупость и безграмотность. Вы вообще в курсе как резервируется память в АСМе? Этот синтаксис вам известен?
Заголовок сообщения: Re: Програмирование pic на СИ.
Добавлено: Вс янв 18, 2026 21:11:28
Родился
Зарегистрирован: Чт сен 12, 2024 21:34:21 Сообщений: 16 Откуда: Москва
Рейтинг сообщения:0
Добрый вечер! Пишу код для сварочного на Си под мк PIC(Схема прилагается, лист 2). Это вход D в мк VDC_D нога 5. Расчет для данного входа (См. файл Фрагмент)
Уставка предельно низкого напряжения в сети. По умолчанию ее значение = 89 для 160 Вольт сети. Как рассчитывать. 160VRMS * 1.414 = 226.24VA – амплитудное значение. Аттенюатор 600кОм и 4.7кОм делят это напряжение: 226.24VA / (600 + 4.7) * 4.7 = 1.7584 VADC – приходит на вход АЦП. Это 1,7584 / 5 = 0.3517 от максимально возможного дискретного значения АЦП. Для измерения входного напряжения используется 8 битный регистр АЦП, максимальное значение для которого = 255. Таким образом 255 * 0.3517 = 89.68.
Как эту уставку написать на Си, может кто подсказать?
if ( control==1) // контроль Udc { D = map(analogRead(A0), 0, 1023, 89.68 ); //Udc 1023dec=5v=89.68В Напряжение if ((D <= 89.68) || (D > 390)) //Напряжение питания не в норме { 390 - Уставка предельно высокого напряжения в сети
1. Низкий уровень оптимизации - просто добавляет в проект лишние команды, но не исключает лишние команды из скомпилированного кода, которые явно там лишние: Вернулись из ПП -> W = i+1; сохраняем "W" в неком ... "F", после загрузили "F" назад в W чтобы посмотреть - равен ли был W нулю?
Шозабред... Сами придумали или подсказал кто? Нулевой уровень оптимизации изолирует каждую команду Си так, чтобы при пошаговом исполнении код НА СИ выполнялся как будто команды Си являются инструкциями ядра. Каждый последующий уровень исключает часть инструкций, но ограничивает пошаговое исполнение при отладке. При пошаговом исполнении такого кода появляются пропуски и непоследовательность исполнения. И всё. Поэтому ваши копания совершенно бессмысленны. Делать вставки на асме имеет смысл лишь в линейном и простом коде, либо изолируя асм в отдельной функции и используя декларацию о передаче параметров в функцию и возврат значения функции.
опять же ... как в СИ использовать регистры с АСМ командами?
Насколько мне не изменяет склероз, в Си объявляется переменная, которая в асме используется с одинарным или двойным (не помню точно) подчеркиванием перед именем. Как в Си прибить переменную к конкретному адресу, я полагаю (из вашего же кода), вы в курсе. Что не так? Откройте наконец мануал на компилер, штоле... Впрочем, намекну. Линкер должен знать всё про объявленные переменные, поэтому вставлять в асме регистры с кривым определением имен - совершенная тупость и безграмотность. Вы вообще в курсе как резервируется память в АСМе? Этот синтаксис вам известен?
Смысл в оптимизации у них один - жадность. У них есть уровни оптимизации и для Дебага, и для размера кода, и для скорости выполнения. Хочешь всем этим пользоваться - покупай платную версию. Или пользуйся бесплатной версией с уровнем оптимизации до О2 включительно. Но утверждать что уровень оптимизации 0 равен уровню оптимизации Дебаг - это некорректно. Предлагаю просто всем участвующим сторонам перенести словесную дуэль на настоящую:) - секундантов найдёте:) А здесь давайте будем вести себя корректно (Особенно Алекс1102) И не выставлять многие свои незнания (привет Алекс1102) как истину в последней инстанции. Хочу спросить - а смысл в АСМ инструкции на Си???? Уже знаю ответ - типа критическая секция кода, важно выполнение:) Не находите это излишним???? Пишите на АСМ - будет и скорость и размер кода:) Нельзя не отделять мух от котлет:) Асм используют только в виде подключаемых библиотек. У всех производителей так. Никто не будет мешать. Для начала надо вспомнить как зародился Си и чем он отличается от АСМ.
Но утверждать что уровень оптимизации 0 равен уровню оптимизации Дебаг - это некорректно.
А кто это утверждал? И что такое уровень оптимизации "дебаг"? Это вы сами придумали или подсказал кто? Дебаг можно делать на любом уровне оптимизации. Речь шла лишь о том, что на верхних уровнях нет сплошного пошагового и последовательного исполнения кода по листингу Си. И только. Например, дефолтной оптимизацией в Кайл является уровень о2. И ничего. вполне себе сделал большой проект не переключаясь на о0 ни разу. Ибо тогда не хватает скорости обработки сигналов. Ну и платность о3 и оS у компиляторов Микрочипа не имеет никакого отношения к рассматриваемому тут вопросу. В конце концов можно и таблеткой воспользоваться. Опять же для современных 8-битных МК Микрочипа верхние уровни оптимизации практически без нужды. Ибо эти чипы по сути являются программируемой периферией и суперлуп кода практически пустой или содержит неспешный расчет режимов. Вот в 16- и 32-битных МК уже нужны верхние уровни, либо вставки на АСМе. При том, что для них АСМ очень удобен и читабелен. Лично я для dsPIC33 и PIC24 пишу исключительно на АСМе.
Но утверждать что уровень оптимизации 0 равен уровню оптимизации Дебаг - это некорректно.
А кто это утверждал? И что такое уровень оптимизации "дебаг"? Это вы сами придумали или подсказал кто? Дебаг можно делать на любом уровне оптимизации. Речь шла лишь о том, что на верхних уровнях нет сплошного пошагового и последовательного исполнения кода по листингу Си. И только. Например, дефолтной оптимизацией в Кайл является уровень о2. И ничего. вполне себе сделал большой проект не переключаясь на о0 ни разу. Ибо тогда не хватает скорости обработки сигналов. Ну и платность о3 и оS у компиляторов Микрочипа не имеет никакого отношения к рассматриваемому тут вопросу. В конце концов можно и таблеткой воспользоваться. Опять же для современных 8-битных МК Микрочипа верхние уровни оптимизации практически без нужды. Ибо эти чипы по сути являются программируемой периферией и суперлуп кода практически пустой или содержит неспешный расчет режимов. Вот в 16- и 32-битных МК уже нужны верхние уровни, либо вставки на АСМе. При том, что для них АСМ очень удобен и читабелен. Лично я для dsPIC33 и PIC24 пишу исключительно на АСМе.
Так, началось в колхозе утро:) Давайте сразу договоримся - чтобы не было такого "Это вы сами придумали или подсказал кто?" Я скинул ссылку от микрочип - лучше поглядеть стоит эту ссылку - прежде чем писать - там есть уровень оптимизации Дебаг (от анг. debug:) Теперь по поводу dsPIC33 и PIC24 - и кто на чем пишет:) Согласитесь - АСМ для dsPIC33 и PIC24 у Вас - это Ваши предпочтения, правильно??? Я для dsPIC33СК использую Melody и PowerSmart DCLD (Digital Control Library Designer) - обе от микрочип, обе бесплатные, только ими надо уметь пользоваться:)
По поводу что:
Цитата:
Дебаг можно делать на любом уровне оптимизации. Речь шла лишь о том, что на верхних уровнях нет сплошного пошагового и последовательного исполнения кода по листингу Си. И только.
Я на любом уровне оптимизации могу запустить отладку и если камень позволяет - сделать комплексную точку остановки:) - где захочу:) И пошаговое и последовательное исполнение кода:) - согласитесь, это муторно:) - я делаю точку останова с условиями - ну там кто обратился к такому-то адресу памяти, когда значение у переменной будет такое-то -и т.д. - и поверьте мне - остановлюсь на этой точке останова при уровне оптимизации 02 без проблем:) При условии что у меня отладчик не ПикКит3:) Так что давайте не будете себя бить в сутулую спину пяткой и кричать что АСМ - это вершина программирования:) PowerSmart DCLD делает АСМовские файлы за 2 секунды:) Вам такое и не снилось:), как он делает:)
Я скинул ссылку от микрочип - лучше поглядеть стоит эту ссылку - прежде чем писать - там есть уровень оптимизации Дебаг (от анг. debug
Во-первых, ссылка недоступна по известным причинам. Во вторых, есть мануалы на компиляторы XC8, XC16, XC32. Они входят в пакет компилятора. Ни один из перечисленных компиляторов имеющихся у меня версий ничего не знает про уровень оптимизации "debug". Впрочем, вы можете процитировать раздел "Оптимизация" в части таблицы уровней оптимизаций с указанием типа компилятора и его версии.
Я на любом уровне оптимизации могу запустить отладку и если камень позволяет - сделать комплексную точку остановки:) - где захочу
Нет, не можете. Если компилятор оптимизировал код, то часть Си кода запрещена для точек останова. Ибо этого участка кода не существует. И причем тут комплексные точки останова? "В огороде бузина, а в Киеве дядька..."(с)
И пошаговое и последовательное исполнение кода:) - согласитесь, это муторно:) - я делаю точку останова с условиями - ну там кто обратился к такому-то адресу памяти, когда значение у переменной будет бла...бла...бла...
Бессмысленная ахинея. Простой пример из вчерашнего рабочего дня. Делаю HF RFID ридер стандарта ISO15693. Сам ридер в части обнаружения меток давно работает. Идет отладка протокола обмена с софтом на компе клиента. Возникла ошибка с подозрением на некорректный заголовок пакета. Пытаюсь поставить бряк на соответствующем case в switch парсера на лету, чтобы отловить этот заголовок. А бряк ставить некуда. Код оптимизирован. Пришлось добавлять _nop(); чтобы возникли отличия в необходимом участке кода и оптимизация о2 восстановила этот участок для отладки. Что тут "муторного"?
PowerSmart DCLD делает АСМовские файлы за 2 секунды:) Вам такое и не снилось:), как он делает
Губы закатайте. Даю простую задачу для dsPIC33. Для начала вспомним, что этот МК является true-DSP VLIW машиной. То есть основной его фичей является цифровая обработка сигналов, для чего у него есть соответствующий DSP модуль процессора и соответствующий набор команд поддерживаемый этим модулем. Предлагаю написать целочисленную комплексную "бабочку" БПФ выполняемую за 23 машинных цикла, включая загрузку и выгрузку данных. Это очень важно. Патамушта в силу своей не RISC архитектуры, процессор этого МК не блещет мипсами производительности. Так ваш любимый CK - это всего лишь 100 мипс. Но при этом он способен в части целочисленного (фикспойнт) БПФ догнать Кортекс с производительностью ядра 200 и более мипс... Берете рекламируемую вами библиотеку и за 2 секунды решаете эту задачу...
ALEKS1102X, в вашем случае, на скрине 2 из архива, XC8 может ещё сделать IORLW 0x0 вместо movff. Не думайте, что компилятор XC8 настолько умен, как вы от него ожидаете. Например, он любил вставлять movlb перед INDF пока я не обратился в тех. поддержку и в следующей версии компилятора этот избыточный MOVLB пофиксили. Так что, если есть возможность, напишите в тех. поддержку.
Вы про какой "Скрин 2" ? А Вы думаете что: 01F9 120A BCF PCLATH, 0x4 01FA 118A BCF PCLATH, 0x3 01FB 202A CALL 0x2A 01FC 120A BCF PCLATH, 0x4 01FD 118A BCF PCLATH, 0x3
уже пофиксили? Переведу для тех кто не понял: Поц пик16, проц имеет 4-ре банка ПЗУ, куда пишется программа (условно ПЗУ) Первый - от 0х0000 до 0х07FF Второй - от 0x0800 до 0x0FFF Третий - от 0х1000 до 0х1800 и т.д. ...
т.е. перед входом в ПП (подпрограмму (функцию) мы выбираем нулевой банк! И по возвращению из ПП мы выбираем нулевой банк ПЗУ! Ничего не заметили необычного? А ничего ?!? что мы НИКУДА не уходили из банка НОЛЬ??? Адрес: CALL 0x2A он в НУЛЕВОМ банке! А вот эта комбинация: BCF PCLATH, 0x4 BCF PCLATH, 0x3 это ИМЕННО выбор НУЛЕВОГО банка ПЗУ!
Вы хотите в поддержку написать? Так пишите А мне - покажите свой код и свой ДИЗАСМ
А ничего ?!? что мы НИКУДА не уходили из банка НОЛЬ???
Ну и что? Это стандартная опция для нулевого уровня оптимизации. Да, этот уровень подразумевает полную изоляцию команд Си при компиляции. В результате возникают такие вроде бы бессмысленные повторы. Поднимите уровень оптимизации и они исчезнут. Для исполняемого кода такие повторы не являются багом. Они ни на что, кроме скорости, не влияют.
А ничего ?!? что мы НИКУДА не уходили из банка НОЛЬ???
Ну и что? Это стандартная опция для нулевого уровня оптимизации. Да, этот уровень подразумевает полную изоляцию команд Си при компиляции. В результате возникают такие вроде бы бессмысленные повторы. Поднимите уровень оптимизации и они исчезнут. Для исполняемого кода такие повторы не являются багом. Они ни на что, кроме скорости, не влияют.
Да ничего, если не считать - что в МАКСИМАЛЬНОЙ оптимизации - Вы получите тот-же код Есть сомнения? Приведите СВОЙ код
Так скорость - это и есть ОСНОВНОЙ показатель - когда человек выбирает между пик16/18/24/dsPIC/32 Не ну есть ещё показатель качества и времени качественной работы Есть качество и цена, есть ....
Последний раз редактировалось ALEKS1102X Пт янв 23, 2026 23:51:26, всего редактировалось 1 раз.
Да ничего, если не считать - что в МАКСИМАЛЬНОЙ оптимизации - Вы получите тот-же код
Не получите. Абисняю пачиму. Дело в том, что компилер XC8 Микрочипа при отсутствии лицензии не пишет про невозможность использовать верхние уровни оптимизации. Он просто остается в нижних. У вас есть нормальная лицензия? ЗЫ. Впрочем он предупреждает в Output, что уровень недоступен. Но кто же мелкий текст на ангельском читает. Ведь саксессфул...
igorg1 писал(а): Я скинул ссылку от микрочип - лучше поглядеть стоит эту ссылку - прежде чем писать - там есть уровень оптимизации Дебаг (от анг. debug
Во-первых, ссылка недоступна по известным причинам. Во вторых, есть мануалы на компиляторы XC8, XC16, XC32. Они входят в пакет компилятора. Ни один из перечисленных компиляторов имеющихся у меня версий ничего не знает про уровень оптимизации "debug". Впрочем, вы можете процитировать раздел "Оптимизация" в части таблицы уровней оптимизаций с указанием типа компилятора и его версии.
Опять пытаемся умным показаться???? То предлагаешь воспользоваться таблеткой для "лечения" компилятора в части оптимизации, то моментально забываем про ВПН:)
Цитата:
igorg1 писал(а): Согласитесь - АСМ для dsPIC33 и PIC24 у Вас - это Ваши предпочтения, правильно???
Нет, неправильно. У меня нет предпочтений. У меня есть целесообразность. Но о ней чуть ниже.
Целесообразность - это готовый результат с минимальным затраченным временем. Именно результат. А не процесс:)
Цитата:
igorg1 писал(а): Я для dsPIC33СК использую Melody и PowerSmart DCLD (Digital Control Library Designer)
У меня нет потребности в чужих библиотеках.
А тогда почему пользуемся чужими компиляторами/ .h файлами???? Напишите свои:)
Цитата:
igorg1 писал(а): И пошаговое и последовательное исполнение кода:) - согласитесь, это муторно:) - я делаю точку останова с условиями - ну там кто обратился к такому-то адресу памяти, когда значение у переменной будет бла...бла...бла...
Бессмысленная ахинея. Простой пример из вчерашнего рабочего дня. Делаю HF RFID ридер стандарта ISO15693. Сам ридер в части обнаружения меток давно работает. Идет отладка протокола обмена с софтом на компе клиента. Возникла ошибка с подозрением на некорректный заголовок пакета. Пытаюсь поставить бряк на соответствующем case в switch парсера на лету, чтобы отловить этот заголовок. А бряк ставить некуда. Код оптимизирован. Пришлось добавлять _nop(); чтобы возникли отличия в необходимом участке кода и оптимизация о2 восстановила этот участок для отладки. Что тут "муторного"?
Ну во-первых, я не использовал слов бла-бла-бла:) - если уж цитируете - постарайтесь не коверкать что я написал:) Во-вторых - а зачем dsp движок для HF RFID ридера стандарта ISO15693???? Именно задача выбирает камень, а не камень задачу:) - не?????
Цитата:
igorg1 писал(а): PowerSmart DCLD делает АСМовские файлы за 2 секунды:) Вам такое и не снилось:), как он делает
Губы закатайте. Даю простую задачу для dsPIC33. Для начала вспомним, что этот МК является true-DSP VLIW машиной. То есть основной его фичей является цифровая обработка сигналов, для чего у него есть соответствующий DSP модуль процессора и соответствующий набор команд поддерживаемый этим модулем. Предлагаю написать целочисленную комплексную "бабочку" БПФ выполняемую за 23 машинных цикла, включая загрузку и выгрузку данных. Это очень важно. Патамушта в силу своей не RISC архитектуры, процессор этого МК не блещет мипсами производительности. Так ваш любимый CK - это всего лишь 100 мипс. Но при этом он способен в части целочисленного (фикспойнт) БПФ догнать Кортекс с производительностью ядра 200 и более мипс... Берете рекламируемую вами библиотеку и за 2 секунды решаете эту задачу...
Ну задачу будете ставить своим подчиненным - при наличии оных:) Теперь открываем даташит на дсПИК33СК - и пытаемся своим мозгом понять зачем там High Resolution PWM c AFPLLO с основной частотой 500 Мегагерц???? Как вы сказали - его фичей является цифровая обработка сигналов???? Так??? А я буду утверждать - на нем очень просто делается инвертор/бесперебойник:) - скелет кода с использованием указанного мною программного обеспечения делается буквально за пару часов А если возьмем серию СН - ну ту, которую здесь по незнанию очень любят - ту, которая с 2-мя ядрами:) - то поставленная вами виртуальная задача выполнится ещё быстрее:). Без АСМа:)
И всё в толк не возьму:) - вроде форум про ПИК на СИ:) - а что здесь АСМ делает???? Самоутвердиться в своей крутизне????? Так вот:) - напишите мне на АСМе протокол обмена между основным и подчиненным ядром:) Причем написать надо по времени не до пенсии - а буквально за пару кликов мыши:) Уверен, у Вас получится:)
Да ничего, если не считать - что в МАКСИМАЛЬНОЙ оптимизации - Вы получите тот-же код
Не получите. Абисняю пачиму. Дело в том, что компилер XC8 Микрочипа при отсутствии лицензии не пишет про невозможность использовать верхние уровни оптимизации. Он просто остается в нижних. У вас есть нормальная лицензия? ЗЫ. Впрочем он предупреждает в Output, что уровень недоступен. Но кто же мелкий текст на ангельском читает. Ведь саксессфул...
Дык покажите СВОЙ - ЛИЦЕНЗИОННЫЙ уровень оптимизации - и ... соответственно - как у Вас происходит переход на другую страницу ПЗУ (флеши) Я много не прошу - всего-то - кусок дизАСМ кода из Вашего любого проекта на пик16 Вот к примеру такой как в архиве: https://drive.google.com/file/d/1qomVgn ... sp=sharing
Целесообразность - это готовый результат с минимальным затраченным временем. Именно результат. А не процесс
Вы слишком самоуверенны, молодой человек. Прежде чем влезть в драку, поинтересуйся цветом пояса противника. (с) Старая японская мудрость. По поводу целесообразности. Целесообразность - это действительно результат. Например, когда МК стоимостью в 5 долларов заменяет FPGA и МК суммарной стоимостью 25 долларов. На написание кода в радиотехническом изделии обычно тратится не более 10% времени. Это не зависит от выбора языка и использования библиотек.
А тогда почему пользуемся чужими компиляторами/ .h файлами???? Напишите свои
Не целесообразно. Я не специалист в компиляторостроении, а хедеры повторять нет никакого смысла. Использование библиотек действительно экономит время, но, к сожалению, не позволяет заменить 5-долларовым МК 25-долларовую пару микросхем. Такие вот библиотеки. А все потому, что DSP инструкции обсуждаемой платформы не нативны для Си и вся библиотека DSP - суть есть обычные инстриники. Причем написанные достаточно тупо. Лично проверил. У меня имеются примерно полсотни серьезных СЕРИЙНЫХ проектов на dsPIC33, включая dsPIC33CH. Полстраны заставлены моими проектами.
а зачем dsp движок для HF RFID ридера стандарта ISO15693????
Для тех, кто в танке абисняю. Этот стандарт позволяет читать метки на расстоянии 1,1 метра от антенны. Такой результат получен. Есть два варианта топологии ридера. 1. Самый примитивный. На входе приемника стоит диодный детектор и далее обычный ширпотребный ЧМ приемник, на выходе которого получают искомый манчестер ответа метки. Недостаток - очень малый динамический диапазон и, как следствие, предельная дальность не более 90 см и при условии низкого уровня помех. 2. На входе стоит квадратурная пара смесителей (типа SA612 или аналогичные) и на их выходе имеется пара поднесущих ответа - они усиливаются и попадают на два отдельных АЦП с производительностью порядка 5 мспс. Далее с помощью DSP вытягивается манчестер. У меня второй вариант.
Теперь открываем даташит на дсПИК33СК - и пытаемся своим мозгом понять зачем там High Resolution PWM c AFPLLO с основной частотой 500 Мегагерц???? Как вы сказали - его фичей является цифровая обработка сигналов???? Так??? А я буду утверждать - на нем очень просто делается инвертор/бесперебойник:) - скелет кода с использованием указанного мною программного обеспечения делается буквально за пару часов А если возьмем серию СН - ну ту, которую здесь по незнанию очень любят - ту, которая с 2-мя ядрами:) - то поставленная вами виртуальная задача выполнится ещё быстрее. Без АСМа.
Сам по себе High Resolution PWM не требует DSP модуля от слова совсем. Если вам этот МК нужен исключительно для бесперебойника, то это ваши личные предпочтения. У меня работает и High Resolution PWM, причем на обеих ядрах и на слейве с полной загрузкой - все 8 каналов, а так же считается девятиточечный ДПФ обнаружителя сигнала. Такие у меня проекты, видите ли... Кстати, ридер делается на AT32F435, а не на dsPIC. Речь ведь шла о компиляторе, а не о платформе. А на CH у меня сделаны два проекта противокражных систем AM EAS и RF-mono EAS. В магазинах стоят. На входе-выходе. Вот во втором изделии с МК работает внешний конвейерный АЦП 40 мспс, который затягивается по DMA в слейвное ядро и там считается 9 точек спектра в районе 8,2 МГц. Для чего пришлось слейвное ядро разогнать до 150 мипс. Ибо оно работает из PRAM и это не составило труда.
И всё в толк не возьму:) - вроде форум про ПИК на СИ:) - а что здесь АСМ делает????
Вы щеки сдуйте и читайте о чем я вам пишу. В DSP контроллерах Микрочипа написание кода на Си НЕ ПОЗВОЛЯЕТ использовать DSP. В принципе. Ибо этот модуль невозможно подчинить компилятору из-за нестандартной архитектуры. В отличии от SIMD. Поэтому в состав пакета производитель включает библиотеку инстриников. То есть написанных на чистом АСМе функций, которые разворачиваются в код при компиляции. Такой вот костыль. Однако эти инстриники недостаточно проработаны, увы. И приходится писать их самому. Если желаешь получить 5 долларов вместо 25. Конкурентное преимущество, однако... А то, что я и остальной код для dsPIC33 пишу на АСМе, то я об этом упомянул вскользь. А вы очень бурно отреагировали. Причем тут я?
Дык покажите СВОЙ - ЛИЦЕНЗИОННЫЙ уровень оптимизации
А у меня нет действующей лицензии на ХС8 в настоящий момент. На ХС16 есть, а на XC8 - нет. Так иногда бывает. Я просто в курсе относительно такой особенности компилятора. В отличии от вас. Поэтому ваши копания на тему "багов" компилятора очень наивны. Прям школьнег 4 класса средней школы.
Так скорость - это и есть ОСНОВНОЙ показатель - когда человек выбирает между пик16/18/24/dsPIC/32
Еще раз для танкиста. 8-битная платформа во всех новых чипах Микрочипа работает как программируемая периферия. Есть инициализация и простейший суперлуп, которому не нужна никакая скорость. Но если вы зарядили скоростную задачу для PIC10, то никакая оптимизация не поможет. Нужно выбирать МК под задачу.
Добавлено after 13 minutes 38 seconds: [uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4782418#p4782418"]Так скорость - это и есть ОСНОВНОЙ показатель - когда человек выбирает между пик16/18/24/dsPIC/32
Еще раз для танкиста. 8-битная платформа во всех новых чипах Микрочипа работает как программируемая периферия. Есть инициализация и простейший суперлуп, которому не нужна никакая скорость. Но если вы зарядили скоростную задачу для PIC10, то никакая оптимизация не поможет. Нужно выбирать МК под задачу.
Хорошо если у Вас была возможность танкиста Обычно - не помогает такое для написания даже задержки в пару сек А вот писать от себя на платформе 8-ми битной - это не то - что трещать здесь на форуме И я так понимаю - примера в дизасм о т Вас не будет
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения