Este post trata de uma importante ferramenta de programacao para desenvolvimento de projetos de mais alto nivel, os sistemas operacionais de tempo real - RTOS, compativeis principalmente com arquiteturas de 32 bits. Entretanto, com o desenvolvimento de novos firmwares e com a maior disponibilidade de memoria, os microcontroladores de 8 bits podem suportar sistemas operacionais minimos e ainda apresentar desempenho satisfatorio. A utilizacao de um RTOS se justifica pelas facilidade de programacao, permitindo a solucao de problemas complexos, dificeis de tratar com a programacao convencional. Assim, com algum sacrificio de desempenho, pode-se utilizar um RTOS em um microcontrolador de 8 bits. O uso de um RTOS com esses microcontroladores nao e usual dado a limitacao da CPU. Todavia, e possivel utilizar sistemas minimos que podem produzir desempenho satisfatorio dependendo dos tempos de acionamento e processamento necessarios para uma determinada tarefa. A seguir disponibilizo o capitulo 21 do livro AVR e Arduino: Tecnicas de Projeto, utilizando o BRTOS para o ATmega328. Esse capitulo formaliza as definicoes e traz exemplos de uso da programacao C com o ATMEL Studio.DOWNLOAD AQUI -> RTOS A programacao de um microcontrolador exige o bom trabalho com bits. Dessa forma, a otimizacao do programa pode ser feita em qualquer acesso aos registradores de I/O (trabalho). Quando se programa em C e fundamental conhecer como trabalhar com bits, assim estou disponibilizando o material basico que utilizo com meus alunos, parte do capitulo 4 do livro AVR e Arduino: Tecnicas de Projeto, (O Importantissimo Trabalho com Bits). Em resumo sao 4 macros: set_bit( ), clr_bit( ), cpl_bit( ) e tst_bit( ). O compilador GCC para o AVR faz um bom trabalho com elas e gera o menor numero de instrucoes Assembly possivel. A programacao microcontrolada tambem exige o uso direto de registradores com mascara de bits, conforme logica de programacao. Isto e visivel nos programas disponibilizados no livro supracitado. Por exemplo: PORTD |= 0x0F preserva os 4 MSBs do PORTD e ativa somente os 4 LSBs. Ao contrario de PORTD &=0x0F, que limpa os 4 MSBs. Dependendo da logica necessaria, podem ser necessarias varias funcoes logicas para alterar um determinado bit/conjunto em um registrador/variavel. Nos videos que seguem apresento de forma sucinta como desenhar uma placa de circuito impresso no software PROTEUS. Abaixo link para download de material explicativo de como desenhar uma PCI.DOWNLOAD PROJETO DE PCIs Ja faz um bom tempo que gostaria de fazer esse joguinho, entao a oportunidade se fez. Uma nave contra invasores vindos do espaco. Podiam ser amigos, mas ai nao teria o cheiro do passado e estaria muito politicamente correto. Resolvi utilizar recursos simples, entao optei por um display matricial 84x48 (NOKIA 5110) e um pequeno joystick com um botao, e o Arduino Due (Cortex-M3) rodando a 84 MHz. Nao fiz som, nao estava com muita vontade de programar essa funcionalidade, fico devendo. O game nao tem final, voce nunca morre, pode jogar ate nao poder mais, vida infinita ... entao, nao tem game over! A ideia era usar um RTOS para facilitar a programacao e melhorar o seu entendimento. Optei pelo FreeRTOS por ser