컨택스트 스위치 발생시 펄스 발생하는데 걸리는 시간과 그냥 만들었을 때 펄스 발생하는데 걸리는 시간을 비교스코프가 없어서 오차있겠지만 그냥 소프트웨어적으로 측정해봄 아두이노 Uno의 경우 스코프로 재면 50마이크로세컨트 차이난다는데 여기에선 70마이크로 세컨드 정도 차이남. // Test to determine context switch time with a semaphore // Connect a scope to pin 13 // Measure difference in time between first pulse with no context switch // and second pulse started in ledControl and ended in ledOffTask. // Difference sho..
Periodic태스크에서 주기적으로 소프트웨어적으로 인터럽트를 발생시킨다. 인터럽트가 발생하면 인터럽트를 위한 서비스 루틴인 vExampleInterruptHandler함수가 호출되어 세마포어를 놓아주고 컨택스트 스위치를 한다. 바로 Handler 태스크에서 세마포어를 획득하고는 필요한 처리작업을 하게 된다. 이후 다시 세마포어를 기다리는 블록상태에 빠지고 다시 Periodic태스크에서 인터럽트 발생 후 해야 할 작업을 이어서 계속한다. /* FreeRTOS.org includes. */ #include "FreeRTOS_AVR.h" //#include "task.h" //#include "semphr.h" //#include "portasm.h" /* Demo includes. */ #include "..