반응형
아두이노 freeRTOS 튜토리얼 16
Arduino FreeRTOS2015. 1. 16. 23:52아두이노 freeRTOS 튜토리얼 16

우선순위 높은 Print2 태스크가 실행되어 자신에 해당되는 문자열을 큐에 넣고 임의의 시간 대기한다. 그 사이 태스크 1이 실행되어 자신에 해당되는 문자열을 넣고 임의의 시간 대기한다. 태스크2의 대기 시간보다 짧아서 여러 번 실행될 수 있다. 다른 태스크들이 블록되어 있는 동안 우선순위 가장 낮은 Gatekeeper 태스크가 큐에 있는 데이터를 출력한다. 틱 후크 인터럽트가 발생하면 틱 인터럽트 서비스 루틴이 실행되어 큐에 대응되는 문자열을 넣는다. 역시 나중에 Gatekeeper 태스크에서 출력되어 진다. /* FreeRTOS.org includes. */ #include "FreeRTOS_AVR.h" //#include "task.h" //#include "semphr.h" /* Compiler ..

아두이노 freeRTOS 튜토리얼 14
Arduino FreeRTOS2015. 1. 16. 18:57아두이노 freeRTOS 튜토리얼 14

처음 실행시키면 vIntegerGenerator태스크보다 vStringPrinter태스크의 우선순위가 높기때문에 먼저 실행이 되나 큐가 비어있기때문에 블록 상태가 된다. 따라서 vIntegerGenerator태스크가 실행되지만 vTaskDelayUntil함수를 사용했기 때문에 정해준 값인 200밀리세컨드마다 대기상태에서 벗어나와 작업을 시작할 수 있다. vIntegerGenerator에서 증가시킨 정수값을 큐에 넣는 것을 5번 반복한 후 인터럽트를 발생시킨다. 인터럽트 서비스 루틴인 vExampleInterruptHandler 함수가 호출된다. vExampleInterruptHandler에서 정수값을 넣은 큐에서 데이터를 꺼내와서 정수에 대응되는 문자열을 큐에 문자열을 넣는 큐에 넣는다. 정수값을 꺼내오..

아두이노 freeRTOS 튜토리얼  11
Arduino FreeRTOS2015. 1. 16. 01:10아두이노 freeRTOS 튜토리얼 11

큐에 값을 넣는 태스크를 두 개 선언하는데 파라메터로 자신을 나타내는 ID와 출력할 값을 구조체에 넣어 넘겨줍니다. 다른 하나의 태스크가 구조체를 꺼내어 ID와 값을 출력합니다. /* FreeRTOS.org includes. */ #include "FreeRTOS_AVR.h" //#include "task.h" //#include "queue.h" /* Demo includes. */ #include "basic_io_avr.h" #define mainSENDER_1 1 #define mainSENDER_2 2 //큐에 값을 넣는 함수 static void vSenderTask( void *pvParameters ); //큐에서 값을 가져오는 함수 static void vReceiverTask( void..

아두이노 freeRTOS 튜토리얼  10
Arduino FreeRTOS2015. 1. 15. 17:35아두이노 freeRTOS 튜토리얼 10

5개까지 값을 넣을 수 있는 큐를 하나 생성하고 3개의 태스크가 각각 100,200,300이라는 값을 넣습니다. 또 다른 태스크 하나가 실행되어 큐에서 데이터를 꺼내와 화면에 뿌려줍니다. /* FreeRTOS.org includes. */ #include "FreeRTOS_AVR.h" //#include "task.h" //#include "queue.h" /* Demo includes. */ #include "basic_io_avr.h" //큐에 값을 기록하는 함수 static void vSenderTask( void *pvParameters ); //큐에서 값을 꺼내오는 함수 static void vReceiverTask( void *pvParameters ); /*-------------------..

반응형
image