domingo, outubro 27, 2019

Resenha: Understanding the Linux Kernel

Qual programador não tem o interesse em saber como funciona (por dentro) um sistema operacional? "Understanding the Linux Kernel", de Daniel Bovet e Marco Cesati se propõe a ser um passeio guiado pelas principais estruturas de dados, algorítimos e truques de programação do Linux, explicando como ele trabalha e porque "funciona tão bem em uma grande variedade de sistemas".



quarta-feira, outubro 23, 2019

Timer1 do ATmega328 - Parte 5

Para fechar esta série de posts vamos falar das interrupções que podem ser geradas pelo Timer. Lembrando, uma interrupção é algo que interrompe o fluxo normal do programa para executar uma rotina específica (de preferência curta e rápida, para não impactar o processamento normal.


quarta-feira, outubro 16, 2019

Timer1 do ATmega328 - Parte 4

Nesta quarta parte vamos examinar um uso muito comum do timer: a geração de sinais do  tipo PWM (Pulse Width Modulation). Em um sinal PWM temos um pulso sendo repetido periodicamente; o tempo em que ele se repete é o seu período (cujo inverso é a frequência). A largura do pulso é o tempo que o sinal permanece em nível alto. É comum falarmos também no duty cycle, que é a relação entre a largura e o período (ou seja, a porcentagem do tempo que o sinal fica em nível alto).


Por exemplo, vamos considerar um pulso de 25 microssegundos (us) que se repete a cada 100 microssegundos. O período é 100 us, a frequência é 10KHz, a largura é 25uS e o duty cycle é 25%.

Embora os princípios sejam simples, os detalhes são complicados. Recomendo ler e reler o manual do ATmega  para ver todos os detalhes da programação destes modos.


quarta-feira, outubro 09, 2019

Timer1 do ATmega328 - Parte 3

Nesta parte vamos falar na função de Captura do Timer1. A figura abaixo (extraída do datasheet) é o diagrama de blocos da Unidade de Captura (troque "n" por "1" nos nomes dos registradores e dos pinos).



quarta-feira, outubro 02, 2019

(Mini) Avaliação: Raspberry Pi 4 Modelo B

Mais uma geração da Raspberry Pi, desta vez com algumas mudanças significativas, e mais uma mini-avaliação (como eu fiz com as Raspberry 3, 2 e 1B+). Entre a 3 e a 4 tivemos a 3B+ que eu não cheguei a colocar a mão.