Mini curso sobre AVR parte 2 - ATMEGA16 e suas características

Você pode estar se perguntando: pra quê aprender outro microcontrolador se eu já sei pic ou 8051 ou .... ?

A resposta é simples, se você precisa de precisa de performance pic e o 8051 original não são indicados, há alguns detalhes sobre cada uma dessas arquiteturas:

PIC16/12

-Apenas 30 e poucas instruções, há muitas instruções úteis como multiplicação e divisão que faltam nessa arquitetura, já que fazer multiplicação e divisão num pic vai te consumir muito tempo de processamento, e espaço em memória de programa, em aplicações de, por exemplo filtros digitais, onde se faz muitas contas de multiplicação e soma num tempo muito curto, pic é descartado.

-Memória paginada: Outra coisa horrível, pra quem programa em assembly é pura perda de tempo lidar com isso, além da perda de tempo de execução no seu programa e de mais espaço em flash que se vai

-Falta de acumuladores: pra quem estudou microprocessadores sabe que o pic16/12 (os outros não acompanhei porque já caí fora dessa quando foram lançados), tem apenas 1 acumulador (W), ou seja, essa cpu é pior que o já lendário MC6800 que tinha 2 acumuladores, ou seja, muitas vezes é necessário até 3 acumuladores, principalmente quando se trada de endereçamento indexado, caso contrário você tem que dar uma volta enorme e gastar muita rom e tempo de processamento pra "superar" esse "probleminha".

-Programo em C, e agora? Simplesmente você está perdido, porque para superar principalmente esses tres problemas o compilador deixa um overhead enorme, sem contar a manipulação fraca de dados de 16 bits.

Bom, vamos parar de falar bem do pic (o pior eu não contei e nem contarei) e vamos pro 8051:

No 8051 o principal problema é que a maioria das instruções demora 12 ciclos para executar, e veja que pelo menos essa cpu tem a incrível instrução de multiplicação.

Essa questão pode ser melhorada usando, por exemplo as variantes s51 da atmel, que executam as instruções em metade dos ciclos, e ainda um AT89s51 opera em até 24MHz, há muitas opções de 8051 da Silabs também, vale a pena conhecer.

Bom, vamos deixar a década de 70 de lado e pegar algo mais novo, AVR.

Agora falando sobre o ATMEGA16, veja a página do fabricante, baixe e leia atentamente todo o datasheet, todas suas dúvidas serão respondidas por um estudo atento do datasheet.

http://www.atmel.com/dyn/products/product_card.asp?part_id=2010

Repare que o ATMEGA16 foi substituído pelo ATMEGA16A, a diferença entre as duas variantes é referente ao consumo da cpu, que foi diminuído, ambas são encontradas para vender em várias "lujinhas" do Brasil, além de ebay, digikey, farnell, avnet em muitas outras lojas internacionais.

Principais aracterísticas técnicas desse microcontrolador:

-131 instruções, muitas executadas em um único ciclo de clock
-Instruções de multiplicação e divisão
-32 acumuladores reais
-Até 16 MIPS
-512 bytes de eeprom
-16kB de flash
-ADC, comparador
-três timers com até 4 saídas de output compare
-UART, I²C e SPI
-autoprogramação, suporta bootloader, programação por ISP e JTAG
-4 portas de 8 bits
-compilador para C gratuito para linux e windows, AVR-GCC

Ou seja, essa linha de microcontroladores é indicada se você precisa de performance, ou vai colocar um código de alguns milhares de linhas em C e não pode pagar muito por isso, agora se você tem alguma aplicação idiota como abertura de portão de garagem por controlinho vá de pic mesmo, se travar o dono dá umas porradas e resolve o negócio na base da violência :P

É isso, daqui a alguns dias sai mais postagem!

Dúvidas? Sugestões? Comente!

3 comentários:

MR disse...

Vamos Vamos Arao!
Quero mais conteúdo! haha
que pic é uma porcaria eu já sabia =P
Quero piscar led!!!

Continue assim!!!

Rodrigo Feliciano disse...

Essa do portão de garagem é a pura verdade... Só aguarde o pessoal usuário de Pic reclamar aqui por vc ter falado mal dos micrinhos deles...

Tem um bug nos comentários, o layout está bloqueando a caixa do captcha.

Arao H. F. disse...

Hahaha estou aguardando os piczeiros!

Postar um comentário