Archive for March 2014

Timer Fotografico AVR

O Rodrigo Pinheiro Matias, colega da PICLISTBR, teve a idéia de criar um Temporizador Fotográfico usando um AVR AtMega8, e escreveu o código na linguagem C.

Ele fez o layout da plaquinha PCI e lançou o trabalho dele na PICLISTBR para comentários e sugestões. Eu olhei o código do programa em C que ele escreveu, e literalmente achei muito complicado para pouca coisa. De verdade a programação C é assim mesmo. Para coisas pequenas ela fica muito grande. Então eu resolvi ajudar o Rodrigo, e me divertir ao mesmo tempo, e prometi a ele reescrever o firmware desse mesmo temporizador, com exatamente as mesmas funções, em Assembly.

Esse temporizador permite programar de 1 a 99 minutos, para tal utiliza tres teclas, uma para incrementar o tempo selecionado em minutos, outra para decrementar e uma terceira para dar inicio ao processo do temporizador, acionar o relay e decrementar os minutos.

Ao decrementar até zero, o relay é desligado e o LED pisca indefinamente para informar o usuário. Claro que a terceira tecla não faz nada se o temporizador está com zero minutos programado. Se o contador já estiver no limite de 99 minutos, a tecla #1  não incrementará se pressionada, e piscará o LED tres vezes como informação de limite. O mesmo para a tecla #2 que decrementa, se o contador estiver com zero, essa tecla não irá decrementar, e piscará o LED tres vezes para informar o usuário do limite. Não apertei muito o código, e ocupou em torno de 240 bytes na Flash, uma ninharia.

Abaixo o texto do código em assembly, e ao final o link para fazer download do arquivo hex a gravar na Flash do AtMega8. Fuses são H-Fuse:D9, L-Fuse:64, que basicamente seleciona Clock interno de 8MHz.

Essa versão de software (1.0) roda na mesma plaquinha desenhada pelo Rodrigo.A próxima versão, 7.1, permitirá incluir dois displays de sete segmentos para mostrar o valor do timer e nessa nova versão, haverá mudança de pinos para as teclas e LED, e não rodará na plaquinha atual.

Update: 28 Março 2014
O codigo fonte abaixo já é o novo, com 2 displays 7 Segmentos, e 398 bytes de código. Leia no texto abaixo a forma de uso e funcionamento.