소프트웨어 인터럽트를 사용하여 우선 순위가 낮은 인터럽트 작업을 완료 할 수 있습니다. 지연 시간을 너무 많이 피하기 위해 타이밍 중요 코드에 인터럽트 우선 순위가 높은 경우가 종종 있습니다. 타이밍 중요 부품이 완료되면 메인 루프에 너무 타이밍 중요하지만 다른 우선 순위가 높은 인터럽트를 유지하는 데 중요하지 않은 추가 작업이있을 수 있습니다. 우선 순위가 낮은 소프트웨어 인터럽트를 트리거하면이 작업을 수행 할 수 있습니다.
예를 들어 각각 자체 타이머가있는 스테퍼 모터가 여러 개 있다고 가정합니다. 스텝 지터를 최소화하기 위해 타이머 인터럽트에 우선 순위가 높습니다. 타이밍이 가장 중요한 작업은 스텝 펄스를 설정하거나 지우거나 위상 출력을 높이는 것만 큼 간단 할 수 있습니다. 가속 램프 계산, 센서 처리 등의 추가 기능이 필요할 수 있습니다.이 단계는 매 단계마다 처리해야하므로 메인 루프 타이밍이 너무 길기 때문에 main ()에서이를 처리하는 것이 적절하지 않을 수 있습니다. 이러한 추가 작업은 우선 순위가 낮은 다른 소프트웨어 인터럽트에 의해 처리되어 다른 우선 순위가 높은 스테퍼 채널의 대기 시간이 증가하지 않도록 할 수 있습니다.
소프트웨어 인터럽트와 기능의 차이점은 무엇입니까?
함수는 호출 된 곳에서 즉시 호출되며 인터럽트에서 호출 된 경우 현재 인터럽트 우선 순위 레벨을 변경하지 않습니다. 소프트웨어 인터럽트는 우선 순위가 올 때 인터럽트를 호출하게하는 인터럽트 트리거입니다. 우선 순위가 높은 인터럽트 끝에 함수 호출이 삽입 된 경우 해당 우선 순위 내에 함수가 포함됩니다. 우선 순위가 낮은 소프트웨어 인터럽트를 트리거 한 다음 우선 순위가 높은 인터럽트에서 복귀함으로써 기능이 새로운 (낮은) 우선 순위로 호출됩니다.