К вашему сведению Я только что создал систему, подобную вашей, но с TI DSP.
Я предполагаю, что вы делаете что-то сложное, например, векторный контроль. Если это так, вот что вы делаете: В вашей модели сделайте один блок для каждой задачи / каждого необходимого периода времени. Это может быть просто прерывание ШИМ с управлением в нем. Определите все операции ввода-вывода, которые потребуются каждой задаче - попробуйте сохранить каждый сигнал до 16 битов, которые являются атомарными на DsPIC (это устраняет большинство переходов скорости). Получите simulink, чтобы каждый блок верхнего уровня вызывал функцию. Выполните только управление внутри этого / этих блоков и оставьте всю аппаратную конфигурацию, планирование задач, другую логику для кода C. Simulink может генерировать файлы C и H, которые вы просто включаете в проект вместе с другим кодом. Вы заполните структуру входных данных, вызовете функцию и получите структуру с выходными данными. Держите модель в чистоте от всех аппаратных зависимостей.
Не верьте маркетологам Mathworks. Они хотят, чтобы ты все делал в Симулинке. Не поймите меня неправильно, это отличный инструмент для определенных типов вещей. Но для вещей, которые вы не можете сделать в модели (например, hello world), они предлагают использовать «устаревший инструмент кода», как если бы все, что не является моделью, «как полностью старая школа». Ограничьте вашу модель для управления циклами и потоками сигналов - для чего это хорошо - и все будет хорошо.