Wiki ADA

Projetos em Engenharia de Computação

Ferramentas do usuário

Ferramentas do site


programacao-atmega328

Essa é uma revisão anterior do documento!


Programação ATmega328

Nesta página são apresentados os conceitos básicos para programação de ATmega328 e ATmega328p utilizando programação em C e o compilador AVR-GCC. A programação é feita tipicamente em um Sistema Operacional Linux.

Informações sobre a gravação de códigos aqui mostrados nos microcontroladores podem ser encontradas em Gravação ATmega328.


Instalação do Compilador

Para distribuições de Linux baseadas em Debian (como o Ubuntu), a instalação do compilador é feita através da linha de comando:

sudo apt-get install gcc-avr gdb-avr  binutils-avr avr-libc

Para distribuições de Linux baseadas em Arch, a instalação é feita a partir da linha de comando:

sudo pacman -S avr-gcc avr-gdb  avr-binutils avr-libc

Portas Digitais

Uma das coisas mais essenciais na programação de um microcontrolador é a entrada e a saída de sinais por seus pinos. No ATmega328 e ATmega328p, temos três portas programáveis:

  • Porta B, com 8 pinos;
  • Porta C, com 7 pinos;
  • Porta D, com 8 pinos.

Contudo, não conseguimos trabalhar com pinos separadamente durante a programação, ficando restritos à configuração da porta inteira. Então precisamos fazer operações bit a bit que envolvam bytes representantes das portas (e não bits representantes dos pinos).

Para realizar as ações descritas abaixo, é necessário importar no código a biblioteca de entrada e saída do microcontrolador, ou seja, é necessário incluir no início do código:

#include <avr/io.h>

Direção do Pino

Antes de usar um pino, é necessário definir se o mesmo é um pino de entrada ou de saída (se vai ler o sinal elétrico no pino ou se vai escrever um sinal elétrico no mesmo). Esta definição é feita através da configuração dos registradores DDR (Data Direction Register), sendo que há um registrador DDR para cada uma das portas: DDRB, DDRC e DDRD.

Um bit configurado como '0' significa que o pino correspondente será de entrada, e caso seja configurado como '1', será saída. Exemplo: caso queiramos que o pino B4 seja configurado como entrada, colocaremos '0' no bit 4 de DDRB; caso queiramos que seja saída, colocaremos '1' no bit 4 de DDRB.

programacao-atmega328.1539820620.txt.gz · Última modificação: 2018/10/17 20:57 por amador