ATmega328

Origem: Wikipédia, a enciclopédia livre.
ATmega328P em 28 pinos com encapsulamento tipo duplo em linha (DIP)
Visão interna do ATmega328P

O ATmega328 é um microcontrolador  tipo chip único criado pela Atmel na família megaAVR.

Especificações[editar | editar código-fonte]

O Atmel de 8 bits AVR é baseado em RISC, o microcontrolador combina 32 kB ISP flash de memória de leitura-enquanto-grava, 1 kB de EEPROM, 2 kB de SRAM, 23 linhas de I/O de propósito geral, 32 registradores para diversos propósitos, 3 timer/counters flexíveis com comparador de modos, interrupções internas e externas, serial programável USART, 1 interface I²C SPI porta serial, conversor A/D de 6-canais e 10-bits (8-canais nos encapsulamentos TQFP e QFN/MLF), temporizador do watchdog interno programável com oscilador, e 5 modos de economia de energia selecionáveis por software. O dispositivo opera entre 1,8 e 5,5 volts. O dispositivo alcança a taxa de transferência aproximando-se de 1 MIPS por MHz.[1]

Parâmetros-chaves[editar | editar código-fonte]

Parâmetro Valor
Tipo de CPU 8-bit AVR
Desempenho 20 MIPS às 20 MHz
Memória Flash 32 kB
SRAM 2 kB
EEPROM 1 kB
Contagem de pinos 28 pinos PDIP, MLF, 32 pinos TQFP, MLF
Frequência máxima 20 MHz
Número de canais de toque
16
Hardware de Aquisição QTouch Nenhum
Máximo de pinos de I/O 23
Interrupções externas 2
InterfaceUSB Nenhum
Velocidade USB

Série de alternativas[editar | editar código-fonte]

Uma alternativa comum para o ATmega328 é o "picoPower" ATmega328P. Uma lista abrangente de todos os outros membros da série megaAVR pode ser encontrado no site da Atmel.[2]

Aplicações[editar | editar código-fonte]

A partir de 2013 o ATmega328 é comumente usado em muitos projetos e sistemas autónomos, onde um se precisa de um micro-controlador simples, de baixa potência e baixo custo[carece de fontes?] . Talvez a implementação mais comum do que este chip é no popular Arduino, plataforma de desenvolvimento, nomeadamente nos modelos Arduino Uno e o Arduino Nano.

Programação[editar | editar código-fonte]

Pinagem do ATmega 48A/PA/88A/PA/168A/PA/328/P 28-PDIP (datasheet)

Confiabilidade de qualificação mostra que a retenção de dados projetada tem a taxa de falha muito menor do que 1 PPM para mais de 20 anos a 85 °C ou 100 anos a 25 °C.[3]

Programa em modo paralelo[4]
Sinal de programação Nome Do Pino I/O Função
RDY/BSY PD1 O Alto significa que o MCU está pronto para um novo comando, caso contrário ocupado.
OE PD2 I Habilitação de saída (Ativo em baixo)
WR PD3 I Pulso de Escrever (Ativo em baixo)
BS1 PD4 I Seleção de Byte 1 ("0" = Byte baixo, "1" = Byte alto)
XA0 PD5 I Bit 0 de Ação do CRISTAL
XA1 PD6 I Bit 1 de Ação do CRISTAL
PAGEL PD7 I Memória de programa e EEPROM de Dados da Página de Carregamento
BS2 PC2 I Seleção de Byte 2 ("0" = Byte baixo, "1" = Byte alto)
DADOS PC[1:0]:PB[5:0] I/O Barramento Bi-direcional de dados (Saída quando o OE é de baixo)

O modo de programação é iniciado quando PAGEL (PD7), XA1 (PD6), XA0 (PD5), BS1 (PD4) devem ser colocados em zero. pino RESET para 0 V e VCC para 0V. VCC deve ser colocado em 4.5 - 5.5 V. Aguarde 60 µs, e o RESET deve ser colocado em 11.5 - a 12,5 V. Esperar mais de 310 µs. Coloque XA1:XA0:BS1:DADOS = 100 1000 0000, pulso XTAL1 para, pelo menos, 150 ns, dê um pulso no WR para zero. Isso inicia o processo de Apagar o Chip. Aguarde até que RDY/BSY (PD1) ir para o nível alto. XA1:XA0:BS1:DADOS = 100 0001 0000, pulso no XTAL1 , dê um pulso no WR em zero. Este é o comando de gravação na Flash. E assim por diante..

Programação Serial
Símbolo Pinos I/O Descrição
MOSI PB3 I Entrada Serial de Dados
MISO PB4 O Saída Serial de Dados
SCK PB5 I Clock Serial

Serial de Dados para o MCU é cronometrado na borda de subida e de dados a partir do MCU é cronometrado na borda de descida. A alimentação é aplicada ao VCC , enquanto o RESET e SCK são colocados em zero. Espere por pelo menos 20 ms e, em seguida, a instrução de Programação serial será Habilitada 0xAC, 0x53, 0x00, 0x00 será enviado para o MOSI pin. O segundo byte (0x53) será ecoado pelo MCU.

Referências

Ligações externas[editar | editar código-fonte]