--- tags: ele-21 --- # Relatório da Aula 4 - Laboratório de EEA-27 2020 Alunos: - Lucas Barioni Toma - Michel Marcos Sena Farias Consulte o material e livros do FreeRTOS (disponibilizado na pasta Referências) e material das aulas. - 1.Introduza a tarefa "conta_k" que deve apresentar ciclicamente a contagem de segundos de tempo, em decimal, de 0 a 99, em dois displays de sete segmentos conectados ao PORTK do ATmega2560. Apresente a criação do manipulador da tarefa, o protótipo da função tarefa, a criação da tarefa dentro da função main e a tarefa "conta_k". Minhas Tarefas.c ```c ... #define SECOND 1000 ... // Task Prototypes void conta_k(void *pvParameters); ... // Task Handlers extern xTaskHandle conta_k_handler; ... // Tasks void conta_k(void *pvParameters) { portTickType xLastWakeTime; xLastWakeTime = xTaskGetTickCount(); DDRK = 0xFF; // PORTK as output int counter = 0; for (;;) { if (counter < 100) { PORTK = counter; counter++; } else { counter = 0; } vTaskDelayUntil(&xLastWakeTime, SECOND/portTICK_RATE_MS); } } ... ``` Parte Principal.c ```c ... // Task Prototypes void conta_k(void *pvParameters); ... // Task Handlers xTaskHandle conta_k_handler; ... int main(void) { ... xTaskCreate( conta_k, // Task "Conta K", // Debug name 1000, // Stack depth NULL, // Parameters 1, // Priority &conta_k_handler // Handler ); ... vTaskStartScheduler(); } ... ``` - 2. Introduza a tarefa "mensagem_usart1" que deve imprimir na USART1 a mensagem “transcorridos 10 segundos”, de 10 em dez segundos. Apresente a criação do manipulador da tarefa, o protótipo da função tarefa, a criação da tarefa dentro da função main e a tarefa " mensagem_usart1". Minhas Tarefas.c ```c ... char message[26] = "transcorridos 10 segundos"; extern FILE usart1_str; ... // task prototypes void mensagem_usart1(void *pvParameters); ... // task handlers extern xTaskHandle mensagem_usart1_handler; ... // tasks void mensagem_usart1(void *pvParameters) { portTickType xLastWakeTime; xLastWakeTime = xTaskGetTickCount(); for (;;) { vTaskDelayUntil(&xLastWakeTime, 10*SECOND/portTICK_RATE_MS); fprintf(usart1_str, "%s", message); } } ... ``` Parte Principal.c ```c ... int USART1SendByte(char u8Data, FILE *stream); int USART1ReceiveByte(FILE *stream); void USART1Init(void); FILE usart1_str = FDEV_SETUP_STREAM( USART1SendByte, USART1ReceiveByte, _FDEV_SETUP_RW ); ... // task prototypes void mensagem_usart1(void *pvParameters); ... // task handlers xTaskHandle mensagem_usart1_handler; ... int main(void) { ... USART1Init(); xTaskCreate( mensagem_usart1, // Task "Mensagem USART 1", // Debug Name 1000, // Stack depth NULL, // Parameters 1, // Priority &mensagem_usart1_handler // Handler ); ... vTaskStartScheduler(); } ... ```