Timer Interrupt, Task 우선순위
303
작성자 없음
작성한 질문수 0
이전에 질문을 남겼습니다.
LCD에서 UI 터치 되면 모터 제어 Timer 동작 시켜보았습니다.
모터 제어 timer interrupt가 동작 된 후, task가 먹통 되는 증상이 있는데 timer interrupt가 task 보다 우선순위가 높아서 timer가 동작 된 이후로는 task가 동작하지 않는 걸까요?
(모터의 제어 주파수가 비 연속적으로 바뀌고 설정한 거리만큼 움직이고 스스로 인터럽트를 종료하는 모터 제어 방식입니다.)
질문이 3가지입니다.
1) Timer Interrupt 실행 시 Task보다 우선순위가 높아 Task가 동작하지 않는 것인지요?
2) 비 연속적으로 제어되는 방식이라면 모터 제어와 완료 후에 Task가 동작 할 수 있게 하는 방식은 어떤 식으로.. 처리해야 하는지 궁금합니다.
3) 만약 Timer Interrupt(모터 동작)의 선점으로 Task가 동작하지 못한다면, LCD Touch 인식을 체크하는 Task는 Timer Interrupt는 끝나고(모터 움직임 완료) 동작해야 하는 것인가요..?
답변 1
0
안녕하세요. 최지선님!
LCD에서 UI 터치 되면 모터 제어 Timer 동작 시켜보았습니다.
모터 제어 timer interrupt가 동작 된 후, task가 먹통 되는 증상이 있는데 timer interrupt가 task 보다 우선순위가 높아서 timer가 동작 된 이후로는 task가 동작하지 않는 걸까요?
(모터의 제어 주파수가 비 연속적으로 바뀌고 설정한 거리만큼 움직이고 스스로 인터럽트를 종료하는 모터 제어 방식입니다.)
질문이 3가지입니다.
1) Timer Interrupt 실행 시 Task보다 우선순위가 높아 Task가 동작하지 않는 것인지요?
> 타이머를 포함한 하드웨어 인터럽트들은 태스크보다 우선순위가 높습니다. 하드웨어 인터럽트 때문에 태스크가 실행되지 않는 것을 염려하신다면 충분히 가능한 일입니다. 인터럽트 핸들러 내에서 긴 처리 시간이나 대기 시간을 포함시키는 것은 바람직하지 않습니다. 이는 시스템의 응답 시간과 신뢰성에 부정적인 영향을 미칠 수 있습니다. 디버깅 해보시죠. 단, 브레이크 포인트를 이용한 디버깅 보다는 LED 을 토글시키는 코드나 printf 을 태스크 함수내에 넣어서 태스크가 실행이 되는 지를 확인하는 방법이 이 경우에는 더 효과적입니다.
2) 비 연속적으로 제어되는 방식이라면 모터 제어와 완료 후에 Task가 동작 할 수 있게 하는 방식은 어떤 식으로.. 처리해야 하는지 궁금합니다.
3) 만약 Timer Interrupt(모터 동작)의 선점으로 Task가 동작하지 못한다면, LCD Touch 인식을 체크하는 Task는 Timer Interrupt는 끝나고(모터 움직임 완료) 동작해야 하는 것인가요..?
> 답변: 2번과 3번 질문에 대해서는 제가 답변드릴 수 있는 범위를 넘어서는 질문입니다. 왜냐하면 개발 중인 프로젝트에 대해 제가 충분히 알지 못하기 때문입니다.
저라면 TOUCHGFX 튜토리얼 예제를 찾아서 분석해보겠습니다. 코드를 완벽히 분석할 필요는 없습니다. 버튼을 눌렀을 때 사용자가 원하는 액션이 실행되는 원리를 파악하는 것이 중요합니다. 그렇게 해야만 작성 중인 코드를 완전히 이해하고 제어할 수 있습니다. 그리고 타이머 제어 및 인터럽트 코드를 하나씩 추가하면서 확인해보시기 바랍니다. 좋은 결과 있으시길 바랍니다.
만약에 포팅을 할때 1년에 한번 잡는 치명적인 문제를 해결하는 코드가 들어갔다고 가정하면
0
57
2
STM32 포팅할 때 STM32 Project가 없음
0
148
2
FreeRTOS 멀티코어 지원안됨?
0
83
2
[소스코드 분석-configUSE_TIME_SLICING] TASK1,2의 우선순위가 동일할 때, configUSE_TIME_SLICING값 변경에 따른 출력 변화
0
82
2
포팅 부탁드립니다!
0
57
1
포팅 부탁드립니다. <NUCLEO-G071RB>
0
64
2
상호배제 후 되지를 않아서 질문드립니다.
0
60
1
수료증 발급 기준 수정 요청
1
69
1
재진입가능여부에 관한 질문
1
66
1
01_TASKMAN프로젝트 디버깅 모드 실패
1
76
2
그러면 malloc/free가 아닌 동적할당자를 써서 메모리를 할당했기떄문에
1
69
2
실행순서
1
74
2
uart 전송중에는 스위칭이 금지되나요?
1
71
2
스택오버플로우 실습 중 stack size 설정 질문
0
79
2
포팅 원합니다.
2
75
2
코루틴 실습질문
1
99
2
TODO 2번 문제
1
140
4
10. 선점형 커널 그림 설명중 우선순위가 반대인 경우에도 Task B가 먼저 수행되나요?
1
80
2
디버거모드에 진입이 안됩니다.
0
175
2
prvExampleTaskHook 함수 호출 부분에 대해 문의드립니다.
0
119
2
보드 STM32H735IG와 강의 호환 여부 문의
1
151
3
[ L152RE ] 원샷 소프트타이머 실행 잘 되시나요?
1
157
2
Deferred Interrupt Processing 샘플 예제 문의 드립니다.
1
119
2
포팅 서비스 부탁드립니다
1
122
2





