Искам да внедря нещо в процесор ARM Cortex-M3 (с NVIC). Имам ограничени познания за вградените системи, но знам, че ISR рутинната трябва да бъде възможно най-проста.
Сега имам следния проблем: имам програма за прекъсване, която се задейства при получаване на CAN съобщение. В един случай трябва да изчисля някаква отнемаща време задача с CAN съобщението, която задача не може да бъде прекъсната от друго CAN съобщение, но други прекъсвания могат да бъдат обслужвани по време на тази операция. Идеята ми е следната:
- Получено CAN съобщение, ISR стартира, извършете някои прости задачи (напр. настройка на флагове)
- Деактивирайте CAN прекъсванията в рутинната CAN ISR. Също така запазете CAN съобщението в глобална променлива, така че да може да бъде достигнато в главния цикъл.
- В основния цикъл направете трудоемката задача.
- След тази задача активирайте отново обработката на CAN прекъсвания.
Това добра (или не съвсем лоша) идея ли е или трябва да направя това по друг начин?