inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

FreeRTOS 프로그래밍

Timer Interrupt, Task 우선순위

303

작성자 없음

작성한 질문수 0

1

이전에 질문을 남겼습니다.

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는 끝나고(모터 움직임 완료) 동작해야 하는 것인가요..?

운영체제 임베디드 FreeRTOS

답변 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