quarta-feira, junho 06, 2012

Controlando um LED com um AVR - Parte III

Já projetamos o hardware e o software, agora é hora de montar e ver se funciona.
Não há nenhum segredo na montagem, que foi feita em uma protoboard:


Da esquerda para a direita e de cima para baixo temos:
  • o conector "espeto" para programação.
  • o microcontrolador ATtiny2313.
  • o resistor no pino de reset.
  • o resistor que limita a corrente no LED.
  • o LED.
  • o botão de contato momentâneo.
  • a bateria de 3V (montada em um suporte).
 A compilação do software, usando o avr-gcc toolset, foi feita através do seguinte makefile:

Led1.hex: Led1.obj
    avr-objcopy -R .eeprom -O ihex Led1.obj Led1.hex

Led1.obj: Led1.c
    avr-gcc -g -Os -Wall -mcall-prologues -mmcu=attiny2313 \
    -Wl,-Map,Led1.map -o Led1.obj Led1.c

Para gravar no microcontrolador o arquivo HEX (obtido no passo acima) é preciso conectar um programador. O conector na minha montagem segue a pinagem padrão de 6 pinos dos programadores AVR, porém é uma barra simples de pino (ao invés de dupla) para poder ser espetado na protoboard.

Um cuidado importante é que o ATtiny precisa estar com os fuses padrão de fábrica (ou pelo menos valores que utilizem clock interno). Se o ATtiny estiver configurado para clock externo, é preciso fornecer este clock (por exemplo montando um cristal e dois capacitores nos pinos correspondentes). Os valores de fábrica para os fuses são 0xDF (high) e 0x68 (low).

Eu utilizei o meu programador USBtinyISP, mas poderia ser qualquer um dos programadores que nos já vimos. Durante a programação a bateria de 3V deve estar desconectada do circuito. O comando para programação é:

avrdude -p attiny2313 -c usbtiny -u -U flash:w:Led1.hex

O vídeo abaixo mostra o circuito em funcionamento.



Nenhum comentário: