Коротко: у меня есть функция (function_ISR), которая указывает на другую функцию (function_A), и я хотел бы знать, возможно ли или целесообразно ли изменить function_ISR таким образом, чтобы он указывал на function_B, находясь в function_A.
Чем дольше: я программирую микроконтроллер pi c в качестве шагового контроллера / драйвера и пытаюсь ускорить / упростить ISR, который рассчитывает интервал для следующего шага и решает, что делать дальше. В настоящее время я использую его в качестве конечного автомата, где состояния - это такие вещи, как, stable_state, ускорение, замедление, change_direction. ISR работает на пике около 40 кГц и тратит время на провал конечного автомата, несмотря на то, что он редко меняется. Кроме того, я знаю следующее состояние в конце последнего состояния.
Поэтому я думаю о написании отдельных функций для каждого состояния и просто при необходимости меняю то, на что указывает ISR, из последнего состояния. Я не уверен, что это приведет к ошибкам при возврате из функции, и подумал, что я хотел бы спросить, не знает ли кто-нибудь, будет ли это работать в принципе, есть ли какие-то ловушки для фотографий или может предложить другой способ.
Наконец, я проверил и нашел похожую тему / вопрос для C ++ Вопрос , в котором я не уверен, правильно ли это для C. Если вы найдете лучший вариант, пожалуйста, ответьте со ссылкой Спасибо