Ontem o garagista Bruno publicou uma postagem simples e eficiente para resolver os problemas gerados quando o número de tarefas que um microcontrolador deve resolver começa a ficar grande. A postagem do Bruno me lembrou de algo parecido.
Um dia um amigo lá da longínqua e bela cidade de Vitória-ES, André Cafeta, me apresentou o site do Victor Behar, que traz um assunto bem bacana: “scheduler”. Nesse site é ensinado como tornar seu código para microcontroladores bem mais organizado e por que não, mais elegante.
Não satisfeito, fui atrás das origens, de onde esse cara havia tirado isso. A fonte veio do livro “Patterns for time-triggered embedded systems”. Cara, recomendo fortemente que você passe o olho nessa obra prima! Sim, trata-se de uma obra prima. A forma como o autor, Michael J. Pont, escreve é muito boa, sem contar que os exemplos são bem felizes.
A parte interessante do livro é aquela onde o autor escreve sobre o que ele chama de “scheduler”. Segundo suas próprias palavras, “scheduler” pode ser visto, a priori, como um sistema operacional simplificado, que permite chamar as tarefas periodicamente. Num nível mais baixo, “scheduler” pode ser visto como uma rotina de interrupção única vinda de um timer, que é compartilhada com todas as diferentes tarefas.
Fica aí a referencia. Adianto que não é o tipo de programa que você entende em dez minutos, mas incentivo que você seja perseverante, busque e leia o pdf que passei e entenda (e passe a usar) os conceitos nele contido. É muito bacana.
Eu adaptei o código (veja aqui) do Victor Behar, a fim de usá-lo para o arduino. Você precisará baixar a biblioteca MsTimer2. Criei três tarefas que são nada além do que escrever na serial o nome da tarefa (A, B ou C). Para a tarefa A, foi dado um delay inicial de 0 TICKs (TICK é a base de tempo definida pelo programador) e um período de 3 TICKs entre repetições sucessivas da tarefa. Para a tarefa B, delay de 1 e período de 4 TICKs , e para a tarefa C, delay de 4, período de 0.
Com esses parâmetros, é de se esperar que a cada interrupção do timer, ou seja, a cada período TICK, tenhamos uma tabela como a mostrada abaixo.
Quando descarrega-se o código na barriga do arduino, o que ele cospe pela serial é uma sequência correspondente ao previsto na nossa tabela:
-A-B---AC-C-BC-C-AC-C-C-BC-AC-C-C-C-ABC-C-C-C-AC-BC-C-C-AC-...
Divirta-se!
Comentar
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)