Mensagem

"Sonhar mais um sonho impossível, lutar quando é fácil ceder, vencer o inimigo invencível, negar quando a regra é vender."
Miguel de Cervantes.

"Os microprocessadores RISC funcionam a partir do princípio genial de se encarregar das coisas mais fáceis e deixar todas as partes difíceis para outras pessoas resolverem."
Douglas Adams.

Mostrando postagens com marcador RTOS. Mostrar todas as postagens
Mostrando postagens com marcador RTOS. Mostrar todas as postagens

Borges Invaders: game com o Due e o FreeRTOS

  Já faz um bom tempo que gostaria de fazer esse joguinho, então a oportunidade se fez. Uma nave contra invasores vindos do espaço. Podiam ser amigos, mas aí não teria o cheiro do passado e estaria muito politicamente correto.
 Resolvi utilizar recursos simples, então optei por um display matricial 84x48 (NOKIA 5110) e um pequeno joystick com um botão, e o Arduino Due (Cortex-M3) rodando a 84 MHz. Não fiz som, não estava com muita vontade de programar essa funcionalidade, fico devendo. O game não tem final, você nunca morre, pode jogar até não poder mais, vida infinita ... então, não tem game over!
  A idéia era usar um RTOS para facilitar a programação e melhorar o seu entendimento. Optei pelo FreeRTOS por ser facilmente empregado no ATmel Studio (minha ferramenta de ensino).
 O programa não é uma maravilha, daria para otimizar e melhorar bastante, mas como uma primeira brincadeira está aceitável. Como várias tarefas no FreeRTOS empregam variáveis comuns, utilizei variáveis globais, dentro do escopo das tarefas, para acesso compartilhado, e não empreguei ferramentas de sincronização e acesso exclusivo. Dentro da proposta e desempenho do jogo, foi o suficiente. O legal de utilizar o ATSAM do Due é que ele possui um gerador de números aleatórios muito fácil de utilizar e fundamental para a programação do jogo.
  A dificuldade maior foi ajustar a biblioteca básica do LCD para possuir funções gráficas, a função principal é o desenha_pixel( ) e depois a que permite desenhar uma figura (já definida) em qualquer parte do LCD, incluindo qualquer parte da figura. Aproveitei e criei uma função para imprimir o menor tamanho de número possível no LCD, para mostrar a pontuação do jogo. Também, existem muitas outras funções, mas não as utilizei.
  Aqui, o projeto completo, com o programa feito no ATmel Studio 7.0.



RTOS

   Este post trata de uma importante ferramenta de programação para desenvolvimento de projetos de mais alto nível, os sistemas operacionais de tempo real - RTOS, compatíveis principalmente com arquiteturas de 32 bits. Entretanto, com o desenvolvimento de novos firmwares e com a maior disponibilidade de memória, os microcontroladores de 8 bits podem suportar sistemas operacionais mínimos e ainda apresentar desempenho satisfatório. A utilização de um RTOS se justifica pelas facilidade de programação, permitindo a solução de problemas complexos, difíceis de tratar com a programação convencional. Assim, com algum sacrifício de desempenho, pode-se utilizar um RTOS em um microcontrolador de 8 bits. O uso de um RTOS com esses microcontroladores não é usual dado a limitação da CPU. Todavia, é possível utilizar sistemas mínimos que podem produzir desempenho satisfatório dependendo dos tempos de acionamento e processamento necessários para uma determinada tarefa.
   A seguir disponibilizo o capítulo 21 do livro AVR e Arduino: Técnicas de Projeto, utilizando o BRTOS para o ATmega328. Esse capítulo formaliza as definições e traz exemplos de uso da programação C com o ATMEL Studio.


DOWNLOAD AQUI ->  RTOS