 |
MC 404 - Arquitetura e Programação de microcontroladores |
 |
Profs. Célio Guimarães e Nelson Machado
Atualizado em 05 Jul 2010
Horário de atendimento: IC1 - sala 40: 2ª a 5ª F. das 11:30 - 12:30 e 18:00 às 19hs
PED: Milton Aparecido Soares Jr, PAD: Thiago Santiago; atendimento 3a e 6aF 18-19hs Lm03
Exame: 15 de Julho (5ªF)19hs CB12 (sala da aula)
Arquitetura/Programação do microcontrolador AVR (Atmel)
Diagrama de blocos de uma CPU simples.
Veja aqui o
ciclo de execução de uma instrução
usando o diagrama da CPU simples.
O
programa minimal visto em aula: lê
o estado de chaves (0 ou 1) ligadas nas portas B e C, faz a soma dos valores binários lidos
e põe o resultado da soma em leds conectados na porta D.
Veja também no mesmo diretório a representação binária
("linguagem de máquina) das instruções do programa minimal (in, add e out)
extraídas do manual de instruções do AVR.
Um resumo dos modos de endereçamento do AVR
(leia, imprima e traga nos laboratórios).
Diagrama de blocos simplificado do AVR
Um bom tutorial com exemplos
sobre o assembler do AVR: instruções, diretivas, etc
Veja também este tutorial (em pdf)
Introdução ao ambiente
AVR studio
(Windows) de programação assembler + depurador da familia AVR.
manual do assembler do AVR
: diretivas, expressões, etc.
Introdução à arquitetura do
AVR ATmega 88 (extraido do
datasheet)
(leia pgs 1-17).
É o principal documento deste modelo do AVR.
Instalação das ferramentas de software da Atmel:
o ambiente AVR Studio (para Windows) inclui montador, simulador
com depurador dinâmico, interface para o compilador gcc e exemplos.
Executável para instalação da última versão: AvrStudio416Setup.exe
e o Service Pack correspondente SP1 571.
Livre, também pode ser baixada diretamente do site da Atmel
O compilador gcc para Windows (WinAVR) pode ser instalado a partir de
WinAVR-20090313-install ou da:
winavr.sourceforge.net
Simulador Hapsim do display LCD HD44780U
(funciona como plug-in do AVR Studio). Download do executável e exemplos
Diretório com
manuais e documentação do AVR.
Como escrever programas estruturados em assembler!
Exemplo simples de subrotina
para multiplicar dois valores de 8 bits.
Exemplo de macro para multiplicar
dois valores de 8 bits. Mais eficiente e mais versátil do que a subrotina correspondente
vista acima.
Exemplos de
macros úteis
(extraído do site www.mikrocontroller.net/articles/AVR_Assembler_Makros.
Resumo das diretivas do assembler
do AVR incluindo montagem condicional e operador de deslocamento. Leia e imprima.
Rotinas para leitura e escrita na E2PROM.
Programação de E/S - EEPROM:
datasheet (p. 18-23)
Introdução a interrupções e E/S no AVR.
Vetores de interrupção do ATmega88
datasheet (p. 56)
Exemplo de interrupção de fim de escrita na E2PROM.
Exemplo de E/S com leds: acende e apaga ciclicamente 8 leds
Exemplos de rotinas de interrupção: gravação de byte na
e2prom,
temporizador TIMER0, e interrupção
INT0.
Introdução ao Hapsim
Rotinas para configurar e escrever no LCD via Hapsim
e arquivo correspondente de configuração do Hapsim
Exemplo de E/S digital com
botões que acendem leds;
teste com Hapsim usando o arquivo de configuração
simplebut2led.xml
Dicas para programaçao em C no AVR-gcc
(imprima-o e estude-o).
FAQ
do manual da biblioteca avr-libc do gcc para o AVR; contém muitas "dicas" para programação em C.
Exemplos em C
que utilizam a biblioteca avr-libc.
Atividades de Laboratório
As atividades opcionais a seguir não entram no cômputo da nota final mas são altamente recomendadas
de serem programadas e exibidas nas aulas de laboratório (*); os conceitos nelas contidos
farão parte das provas de avaliação.
- Resolva os exercícios no documento
ciclo de execução de uma instrução.
- Trabalhando com vetores: geração e armazenamento da sequencia de Fibonacci (com 16 bits)
lab02.html
- Invertendo
um vetor de bytes na memória RAM
- Escreva um trecho de programa contendo apenas uma instrução lógica e saltos
condicionais apropriados, para verificar se um inteiro com sinal em um registrador
é positivo, negativo, par ou impar. Desenhe os arcos onde há saltos e verifique se o
número de cruzamentos de arcos é mínimo.
- Trabalhano com multiplicação: produto escalar de 2 vetores de 8 bits
- Trabalhando com macros - aritmética de 16 bits:
o documento avr202.asm,
extraído de manuais da ATMEL, exemplifica operações aritméticas de 16 bits
para efetuar soma e subtração de pares
de registradores, soma/subtração de uma constante de 16 bits a/de um par de registradores,
comparação, negação, etc.
O exemplo é limitado no sentido de que pares específicos são usados assim como constantes
específicas. O objetivo deste exercício é transformar as operações citadas em macros
de forma que quaisquer pares de registradores e constantes de 16 bits possam ser
usados como operandos dessas operações.
- Considere uma implementação na E2PROM da biblioteca de manipulação de bits.
Modifique as rotinas findbit e setbit para localizar e ligar um bit na
E2PROM, lembrando que as operações de leitura e escrita na E2PROM são feitas a
nível de byte.. Utilize as rotinas de
leitura e escrita na E2PROM vistas em aula.
Atividades obrigatórias:
- Trabalhando com números inteiros com e sem sinal
lab01.pdf. Prazo de entrega: 19/03/2010
- Construção de uma biblioteca para manipular bits.
Submissão: 26/03/10 Prazo de entrega: 07/05/10.
- Implementando um "cronômetro/relógio de parede" através de interrupções:
atividade obrigatória 3.
Submissão: 07/05/10 Prazo de entrega: 04/06/10.
- Implementando em C (avr gc) o "cronômetro/relógio de parede" através de interrupções:
atividade obrigatória 4.
Prazo de entrega: 25/06/10
Atividade desafio (opcional, individual):
o quebra-cabeça dos 12 pentaminós
Condições para fazer o desafio após a realização da 1ª prova serão negociadas caso a caso.
(*)Toda submissão de uma atividade de laboratório deverá
ser feita no laboratório, acompanhada da impressão do arquivo .lst gerado pelo montador
e no formato paisagem, a fim de não truncar os comentários de linha.
Para gerar o arquivo .lst, após abrir o projeto, selecione: Project → Assembler Options e
na janela aberta selecione a caixa Create List File.
A qualidade e apresentação do programa serão levadas em conta na nota da atividade
(veja sugestões no documento sobre
programação estruturada em assembler