Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC33)

Поклонники продукции Microchip Technology Inc тусуются тут.
khach
Электрический кот
Сообщения: 1036
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение khach »

КРАМ, вы тут похоже самый большой специалист по dspic. Посоветуйте, возникла необходимость поковыряться в импульсном блоке питания, который управляется dspic33. Что то по мотивам
https://www.microchip.com/en-us/develop ... nce-design который 750W AC/DC REFERENCE DESIGN AN-2388 но на сайте так не находится.
Подскажите, как лучше отлаживать такое устройство, чтобы не устроить большой бабадум при остановке управления инвертором дебаггером? Это все таки резонансник, там частота должна меняться в цикле управления, нельзя оставить просто таймер шимить транзисторы.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

[uquote="khach",url="/forum/viewtopic.php?p=4593938#p4593938"]Подскажите, как[/uquote]
С этим имеются некоторые проблемы.
К сожалению, ни PICkit4, ни ICD4 не сканируют контроллер на лету, в отличии от JTAG. Подключение JTAG в dsPIC33 возможно не всегда (значительная часть эррат не дает такой возможности вообще, а даже если это возможно, не факт, что ноги под JTAG будут свободны в конкретной схеме и эти ноги никогда не ремапируются, в отличии от ног ICSP.
Но в настройках периферии можно указать, чтобы периферия не останавливалась во время останова при отладке. Однако, как правило, алгоритмы управления периферией таковы, что проку от продолжения работы периферии нет никакой. Например, остановка кода приводит к остановке DMA, который грузит PWM.
Из всего этого следует, что такие как у вас критические ко времени приложения нужно отлаживать через UART и ногодрыг. Впрочем, JTAG тоже частенько не позволяет получать данные в реальном времени, поскольку сканирование происходит достаточно медленно и асинхронно исполняемому коду.
khach
Электрический кот
Сообщения: 1036
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение khach »

Спасибо за инфо, хотя и не очень радостное. Хотелось для набора опыта поковыряться с серверными блоками питания от HP. Вот на гитхабе есть собрание прошивок для таких блоков
https://github.com/darwinbeing/HPServerPSUHack и частично схемы модернизации обратной связи для настройки напряжений. Но есть желание именно в алгоритмах управления на живом железе потренироваться. Большинство конструкций на DSPIC33FJ64GS608
Может кому будет полезно.
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

КРАМ, до этого сообщения изложение было просто отличное. Однако дальше обсуждение ушло в сторону. Но данная тема очень нужная и интересная. Не многие в неё пишут, но многие читают. Поэтому хотелось бы чтобы тема вернулась на первоначальные рельсы и стала помощницей тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC33).
Заранее прошу извинение за возможно глупые вопросы с моей стороны, т.к. я не являюсь специалистом по микроконтроллерам и программированию. Но эта тема мне глубоко интересна.
И так, в указанном выше ссылкой сообщении мы добрались до отладки демонстрационного фрагмента программы. К сожалению, в моем случае, кнопки отладки остались неактивными. Бегунок в нижней части окна бегает, а кнопочки серенькие. :(
screenshot1.jpg
(6.57 КБ) 125 скачиваний
В качестве Connected Hardware Tool (правый клик по названию проекта во вкладке Projects -> Properties) выбран Simulator. Полагаю, что это программный симулятор контроллера.
Подскажите, как можно запустить программную отладку :o
Последний раз редактировалось eleks Вс май 04, 2025 16:42:22, всего редактировалось 1 раз.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

Для начала скиньте мне весь проект as is - просто заархивированной папкой.
Скинуть можно сюда или мне на почту my504@mail.ru
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

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

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

Принял. Разберусь - напишу.

Добавлено after 20 minutes 57 seconds:
Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC33)
Не увидел проблем.
За исключением выбора версии компилятора и соответствующей версии pack.
Для XC16 v2.00 валиден dsPIC33E-GM-GP-MC-GU-MU_DFP v 1.5.258

Изображение Изображение
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4711771#p4711771"]Не увидел проблем.
За исключением выбора версии компилятора и соответствующей версии pack.
Для XC16 v2.00 валиден dsPIC33E-GM-GP-MC-GU-MU_DFP v 1.5.258[/uquote]
У меня установлены последние версии, представленные на сайте MicroChip на данный момент.
Изображение
После запуска отладки проекта
Изображение
Не возможно перейти в режим пошаговой отладки
Изображение

:roll:
Вложения
screenshot3.jpg
(160.2 КБ) 114 скачиваний
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

Сверяем опции настройки среды - они с проектом не переносятся:
Изображение
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

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

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

Есть предложение откатить среду и компилятор на мои версии.
Я пока подумаю.
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

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

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

на сайте микрочипа есть раздел архив.
Сейчас включу впн и найду

https://www.microchip.com/en-us/tools-r ... -ecosystem
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

Благодарю за потраченное на меня время. К сожалению, ничего не получилось. После переустановки имею такую же картину :(
Завтра попробую повторить все под Linux на другой машине.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

Внезапно вопрос.
А нет ли в путях к проекту и исходникам кириллицы?
Это харам. :)
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4711873#p4711873"]Внезапно вопрос.
А нет ли в путях к проекту и исходникам кириллицы?
Это харам. :)[/uquote]
И, о чудо! :shock:
Всё заработало! :music:

Добавлено after 22 minutes 28 seconds:
Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC33)
[uquote="КРАМ",url="/forum/viewtopic.php?p=3542816#p3542816"]Речь будет идти для тех, кто желает разобраться в архитектуре 16-разрядной платформы и начать писать простые программы на АСМе этой платформы.[/uquote]
Было бы прекрасно, если бы Вы продолжили речь в данном направлении. Думаю, что ассемблер очень полезен, по крайней мере, для написания отдельных процедур, если к ним предъявляются высокие требования по быстродействию. Это особенно актуально для источников питания. И вообще на ассемблере, после некоторой тренировки, не очень трудно писать :) .
dsPIC33F имеет относительно сложную структуру памяти и поэтому хотелось бы начать с объявления констант и переменных для различных областей памяти. Получения адресов этих констант и переменных для использования в программном коде. Использование стека для передачи данных и констант, использование адресации по модулю, бит-реверсивной адресации...
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

Не, у dsPIC-ов как раз очень простая в понимании архитектура. Именно поэтому на них целесообразно писать на АСМе, в отличии от АРМов, например.
Но вы лучше объясните свою конкретную цель и тогда на ее примере я расскажу, в том числе, и о работе двухканальной памяти с AGU.
ЗЫ. Бит-реверсивная адресация - это для БПФ. Тут как раз все очень однозначно. Особо рассказывать не о чем. Скорее вам нужно прочитать про БПФ. Просто с нуля можно рассказать, но тема разбухнет.
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

Не уверен, является ли моя задача типовой.
До этого, для программирования PIC-ов, всегда использовал компилятор MikroC. В принципе хороший и не сложный компилятор. Как раз для тех, кто занимается программированием эпизодически. В последнее время больше для самообразования. В основном вожусь с источниками питания. Раньше использовал в них контроллеры, но в основном для сервисных функций. Однако всегда хотелось сделать полностью дискретное управление. На сайте MicroChip есть, казалось бы, подходящие аппноты, но для меня они не подходят. И DSP ядро там практически не используется. Поэтому решил идти по классике - разрабатываю корректор (регулятор) в линейной области, затем создаю дискретную форму и переношу её на dsPIC. Покопался в DSP библиотеке MikroC for dsPIC и выбрал там наиболее подходящую, как мне кажется, функцию реализации фильтра IIR_Radix. В примерах имеется демонстрационный код использования этой функции. Однако, существует несколько не понятных параметров функции, а также существуют некоторые сомнения по её пригодности. Поэтому решил заглянуть внутрь. И вот тут понадобился отладчик на уровне ассемблера, чтобы точно отслеживать поведение кода. Решил создать проект в MPLAB X IDE, обнаружил там отсутствие возможности создавать проект на ассемблере и вот теперь мы здесь.
Сейчас стоит задача адаптировать листинг от MikroC под XC16 ассемблер и приступить к изучению.
Архив с соответствующими файлами от MikroC прилагаю.
К сожалению, для полноценной отладки эти файлы не подходят. Необходимо довести их до полноценной программы. Причем надо использовать именно lst файл, т.к. asm версию компилятор почему-то укоротил и она не совсем соответствует прототипу на Си.

Бит-реверсивной адресации тут конечно нет, но адресация по модулю и использование стека для передачи данных имеют место.
Вложения
IirFilter.zip
Архив с файлами от MikroC
(13.27 КБ) 118 скачиваний
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

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

Я ничего не говорил про типичность вашей задачи. Я имел ввиду типичную математику применяемую в ваших задачах.
Но ваш ответ уже позволяет мне его прокомментировать.
Дело в том, что архитектура DSP ядра подразумевает реализацию КИХ (FIR) фильтров, а не БИХ (IIR). Проблема в том, что все IIR принципиально требуют либо float-ов, либо фикспойнтов и всегда рекурсивной топологии. Рекурсивность противоречит архитектуре DSP в этом семействе. А флоаты аппаратно вообще не реализованы.
Поэтому для конструктивного решения этой проблемы вам нужно переделать проект на FIR, прежде всего.

Добавлено after 4 minutes 18 seconds:
[uquote="eleks",url="/forum/viewtopic.php?p=4711973#p4711973"]адресация по модулю и использование стека для передачи данных имеют место.[/uquote]
Адресация по модулю применяется для обработки массивов. Причем тут IIR?
Передача данных через стек - это тупо реализация локальных переменных с помощью аппаратного механизма выделения фрейма в стеке для локальных переменных. Дело тут не в самой передаче, а именно в использовании стека для локальных переменных. Передача тут вторична.
eleks
Родился
Сообщения: 18
Зарегистрирован: Ср мар 26, 2014 16:20:34

Re: Тем, кто боится перейти с 8 на 16 разрядов (PIC24/dsPIC3

Сообщение eleks »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4711983#p4711983"]Дело в том, что архитектура DSP ядра подразумевает реализацию КИХ (FIR) фильтров, а не БИХ (IIR). Проблема в том, что все IIR принципиально требуют либо float-ов, либо фикспойнтов и всегда рекурсивной топологии. Рекурсивность противоречит архитектуре DSP в этом семействе. А флоаты аппаратно вообще не реализованы.
Поэтому для конструктивного решения этой проблемы вам нужно переделать проект на FIR, прежде всего.[/uquote]
Так и есть. С фиксированной точкой и двойное использование FIR на общий сумматор для получения рекурсии.
Ни кто не говорил, что будет просто.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4711983#p4711983"]Адресация по модулю применяется для обработки массивов. Причем тут IIR?[/uquote]
Разумеется, к IIR адресация не имеет прямого отношения, но в данном случае имеет место.
Ответить

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