MC404  -  Turmas A/B e C/D

Organização de Computadores e Linguagem de Montagem



Aulas Atendimento Avaliação Trabalhos Bibliografia Perguntas e Respostas Calendário Slides Alunos Notas

Contatos

Professores:
    Turmas A e B  Paulo Cesar Centoducatte      (email)    -  Sala 11 -  IC-1
                     João Batista C. G. Moreira (PED)       (email)         -  Sala 68 -  IC-2
    Turmas C e D  Célio Cardoso Guimarães   e  Nelson Machado  -  Sala 40 -  IC-1
                     Luís Maranesi (PED)    - 

OBS.:   Quando enviar um e-mail favor colocar no subject "MC404"

Avisos


Data
Aviso




23/12
 Disponibilizado as notas do exame

17/12
 Disponibilizado as notas da segunda prova e do Lab03

14/12
 Quem ainda não preencheu o questionário de avaliação da disciplina e deseja faze-lo favor procurar Wilson na secretaria de cursos.

07/12
 Disponibilizado as notas do segundo  laboratório e pentaminós

04/12
 Exame Final: 22/12/2009
           Turmas A e B (Prof. Centoducatte) --  sala PB03

04/12
 Entrega do Lab03: Até 11/12/2009 por e-mail (enviar para João ). Como a próxima terça-feira é feriado, NÃO haverá demonstração do lab03.
OBS.: Enviar todos os arquivos necessários à compilação e execução do  lab03.

23/11
 Disponibilizado as notas do primeiro laboratório
11/11
 Disponibilizado as notas da primeira prova

27/10
 Prova dia 05/11- Não esqueça de levar o "Instruction Set Summary"
       (atmega88-instructionset.pdf, atmega88-regs-instrset.pdf

23/10
 Dúvida recorrente sobre a  atividade 1:
                                             O tamanho do vetor é dado em BITS ou BYTES?
 O vetor é um vetor de bits, portanto o tamanho é dado em BITS e o inicio do vetor (ou sub-vetor) é o endereço do primeiro bit. Assim, o endereço pode não ser um múltiplo de 8.

22/10
 Informações sobre a submissão de uma atividade de laboratório
07/10
 Amanhã, dia 08/10, não haverá aula.

07/10
 Disponibilizado diversos exemplos de uso de recursos do Atmega

07/10
 Enunciado  da primeira atividade obrigatória corrigido

01/10
 Disponibilizado o enunciado  da primeira atividade obrigatória

24/09
 A Primeira Prova  será  05/11  e a Segunda Prova 10/12

18/09
 Ler o documento assemblerdoc1022.pdf 
11/09
 Ler até a página 10 do documento instr_setDOC0856.pdf
08/09
 ATENÇÃO: Turmas A e B, a aula desta terça-feira (07/08) será nos laboratórios CC02 e CC03

04/09
 Ler o documento Arquitetura e modos de endereçamento do AVR
25/04
 ATENÇÃO: Turmas C e D, a aula da próxima quinta-feira (27/08) será na PB01.
24/09
 ATENÇÃO: Turmas A e B, as aulas das próximas 2 terças-feiras (25/08 e 01/09) serão na CB15.
24/09
 Disponibilizado slides usados na aula do dia 20/08 (em dois formatos: 1 e 6 slides por página)

20/09
 ATENÇÃO: Turmas C e D aula hoje (quinta-feira, 20/08) na PB 14.

 19/08
 Ler o documento beginner_avr.pdf até a seção "Simulation in the studio" (página 19)



Aulas

Turmas A e B
   Terças:   16:00 - 18:00 -    Salas: 302 (CC02) e 303 (CC03)
   Quintas: 16:00 - 18:00 -    Sala:   CB02
Turmas C e D
  Terças:   16:00 - 18:00 -    Sala: CB03
  Quintas: 16:00 - 18:00 -    Sala:   302 (CC02) e 303 (CC03)

Atendimento

Turmas A e B
    Sala 11 do IC 1 - Prof. Paulo C. Centoducatte
               (agendar dia e hora por e-mail)
    Sala 86 do IC 2 -  João Batista C. G. Moreira
Turmas C e D
  
Sala 40 do IC 1 - Profs. Célio e Machado
       2ª a 5ª F. das 11:30 - 12:30 e 14:00 às 16hs
   Sala       -     Luís Maranesi (PED)



Avaliação

    Laboratórios de programação: cerca de 2 a 3 atividades obrigatórias feitas em grupos com até 2 alunos; deverão ser testadas no laboratório no dia da submissão.

    Duas provas escritas de avaliação de conceitos básicos e práticos.

Seja:
  • Li   - Nota da atividade de laboratório i
  • P1 e P2 - Notas das Provas 1 e 2  respectivamente
  • MP - Média das Provas
  • ML - Média das atividades de Lab.
  • MMC404 :  Média da disciplina MC404
  • F  -  Fator de Proporção
  • NFinal =  Nota Final de MC404
 Onde:
          MP =  (3P1 + 7P2)/10
ML =  Média aritmética das atividades de Lab.

-------------------------------------------------------------------

             MMC404 = F*MP + (1-F)*ML  

   F = 0,8 se  MP   <   5,0
   F = 0,5 se  MP  >=  5,0


------------------------------------------------------------------

NFinal =  MMC404     Se    MMC404  >=  5,0

NFinal =  (M
MC404 + Exame) / 2  Caso Contrário

































(*)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



                             Atividades de Laboratório

Enunciado dos Laboratórios

As atividades opcionais não entram no cômputo da nota final mas são altamente recomendadas de serem programadas e exibidas nas aulas de laboratório.

Atividades Opcionais:
  1. Trabalhando com números inteiros com e sem sinal   lab01.pdf
  2. Trabalhando com vetores: geração e armazenamento da sequencia de Fibonacci (com 16 bits) lab02.html
  3. "Auto-retrato": um programa que transforma suas próprias instruções de binário para ASCII lab03.html.
  4. Trabalhano com multiplicação: produto escalar de 2 vetores de 8 bits.
  5. 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.
  6. Escreva um trecho de programa contendo apenas uma instrução lógica e saltos condicinais apropriados, para verificar se um inteiro com sinal em um registrador é positivo, negativo, par ou ímpar. Desenhe os arcos onde há saltos e verifique se o número de cruzamentos de arcos é mínimo.
  7. Modifique o exemplo de botões que acendem leds de forma que os botões funcionem como "toggles" ou seja o led não deve apagar quando o botão é liberado, somente quando for pressionado novamente. Dica: guarde o estado do botão e da sua ação.
  8. Escreva uma subrotina que toma como parâmetros em X um inteiro sem sinal de 16 bits e em Y um endereço na memória RAM a partir do qual você deve armazenar a representação em ASCII do valor decimal de X, ou seja a subrotina faz a conversão de binario para decimal ASCII. Sugestão: se você armazenar as constantes 10000, 1000, 100 e 10 na memória de programa (use a diretiva .dw para isso) poderá fazer a conversão com uma subrotina contendo apenas 21 instruções! Ela seria util em aplicações onde você queira, por exemplo, visualizar em decimal num display LCD valores binários de 16 bits.
  9. Desafio: este exercício explora a sobreposição de espaços de endereçamento do AVR:
    escreva duas rotinas, savgpr e rstgpr para,respectivamente, salvar na pilha e restaurar da pilha o valor de todos os 32 registradores de uso geral. Cada rotina deve ter um comprimento de até 20 instrucoes , e pode usar até 35 posições na pilha. A rotina savgpr pode destruir quaisquer registradores, depois de salvá-los, obviamente, e pode deixar o que quiser na pilha, em qualquer ordem, respeitado o limite acima. A rotina rstgpr deve desfazer completamente o que foi feito por savgpr, restaurando todos os 32 registradores para seus valores imediatamente antes da chamada de savgpr; a pilha deve também ser deixada exatamente como estava imediatamente antes da chamada de savgpr.
  10. Escreva inteiramente em C a solução do exercício 7 acima.
  11. Escreva uma função bin2decascii() em C para implementar a mesma solução do exercício 8, acima: a sua função toma como parametros: (i) um inteiro de 16 bits sem sinal e (ii) um apontador para uma cadeia de 5 caracteres na memória RAM. O objetivo é implementar a conversão do valor binário de 16 bits (1º parâmetro) para decimal ASCII, armazenando o valor convertido na memória apontada pelo segundo parâmetro. Você deve usar a mesma técnica de divisão por subtrações sucessivas do exercício 8. 


Atividades obrigatórias:

  1. Escrevendo uma biblioteca de funções para manipular um vetor de bits. Prazo de entrega: 27 Out 09
  2. Implementação de um cronômetro/relógio de parede via interrupções. Prazo de entrega: 17 Nov 09.
  3. Implementação em C de um cronômetro/relógio de parede via interrupções. Prazo de entrega: 07 Dez 09.

Atividade desafio (opcional, individual): o quebra-cabeça dos 12 pentaminós







Programa da Disciplina
  • Introdução à arquitetura de computadores digitais: máquinas de Von Neumann x arquiteturas Harvard; arquiteturas RISC; microprocessadores x microcontroladores.
  • Memórias - tipos e hierarquias; componentes básicos de uma CPU: UC, ULA, endereçamento, registradores; dispositivos de E/S; fases da execução de uma instrução; noções de linguagem de máquina.
  • Introdução ao ambiente AVR studio (Windows) de programação em linguagem de montagem (assembly) ; depurador; execução passo a passo.
  • Revisão de números binários e operações aritméticas; notação 1-complementto e 2-complemento; notação hexadecimal; caracteres ASCII; números em ponto flutuante.
  • Introdução à arquitetura do AVR família ATxxx: instruções e modos de endereçamento.
  • Introdução a montadores e macro-montadores; programação em linguagem de montagem do AVR. 
  • E/S no AVR: registradores de E/S; interrupções; temporizadores; watch-dog timer. técnicas para gravação de código no AVR a partir de um PC.
  • Exemplos de programação em linguagem de montagem do AVR: aritmética, E/S, interrupções, temporizadores.
  • Programação em C com microcontroladores: técnicas, cuidados; compilador gcc para o AVR
  • Introdução ao ambiente AVR studio de programação na linguagem C (Windows) ; depurador; execução passo a passo.
  • Biblioteca do gcc para o AVR; exemplos de uso. Exercícios de programação em C com o AVR.
  • Introdução a ligadores: ligação estática e ligação dinâmica.
  • Noções de arquiteturas de microcontroladores de 32 bits: ARM, MIPS.
  • Diretório com manuais e documentação do AVR

Exemplos:
  • Diretório com mais exemplos.
  • Diretório com todos os exemplos .
  • Um bom tutorial com exemplos sobre o assembler do AVR: instruções, diretivas, etc 
  • 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. 
  • 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 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

    Dicas para programação em C (gcc)
  • FAQ do manual da biblioteca avr-libc do gcc para o AVR; contém muitas "dicas" para programação em C.
  • Manual de referência da avr-libc (versão 1.4.6) para programação em C com o AVR. As rotinas de leitura de dados da memória de programa, delay por software e de interrupção.
  • Documento sobre Assembler in line



Bibliografia



Calendário

Agosto
Aula/Dia Matéria
1a. /18 T
 Introdução ao curso mc404 (ver. 2009s2). Introdução ao ambiente AVR Studio 4 (ver. português). Obs: a
 versão em inglês usa o Avr Studio 4 (instalado no IC) e a em português a versão 3.

2a. /20 Q
 Conceitos básicos: bits, bytes e words; litle e big endian: representação de números (pdf    pdf-6)
3a. /25 T
 Conceitos básicos - cont.: operações aritméticas com valores com e sem sinal (overflow), representação  de caractere alfanuméricos, organização básica de um computador.  
4a. /27 Q
Conceitos básicos - cont.: org. básica de computador; formato e conjunto de instruções, execução de uma intrução 
Setembro
Aula/Dia
5a. /01 T
Conceitos básicos - cont.: ISA, codificação; memória, espaço e alocação de memória  (pdf    pdf-6.)
6a. /03 Q
 Introdução à arquitetura do AVR ATmega88 (AVR ATmega 88)
7a. /08 T
 Aula no laboratório -   lab01.pdf
8a. /10 Q
 Modos de Endereçamento (pdf    pdf-6    instr_setDOC0856.pdf )
9a. /15 T  Aula no laboratório -   lab02.html 
10a. /17 Q
 Desvios condicionais; diretivas do montador  (pdf    pdf-6  assemblerdoc1022.pdf
11a. /22 T  Aula no laboratório -   lab03.html 
12a. /24 Q
 Sub-Rotinas (pdf    pdf-6 )
29 T Não haverá aula devido as comemorações de 40 anos  do IC
Outubro
Aula/Dia Matéria
01Q
 Não haverá aula devido as comemorações de 40 anos  do IC
06 T
  Aula no laboratório -   lab04.html
08Q

13 T
 Aula no laboratório - Labs sugeridos  como Atividades Opcionais
15 Q
 Macros; Uso da EEPROM; Introdução à Interrupções - (pdf    pdf-6 )
20 T
 Aula no laboratório - Labs sugeridos  como Atividades Opcionais
22 Q
 Interrupções
27 T
 Aula no laboratório - Apresentação da primeira atividade obrigatória
29 Q
 Aula dedicada à dúvidas
Novembro
Aula/Dia Matéria
03 T
  Aula no laboratório 
05 Q
  Primeira Prova   --   notas
10 T
 Aula no laboratório 
12 Q

17 T
 Aula no laboratório  - Entrega atividade obrigatória 2 
19 Q
 C
24 T
 Aula no laboratório  -   Entrega atividade obrigatória 2  
26 Q
 C  ---  inline assembly
Dezembro
Aula/Dia
Matéria
01 T
 Aula no laboratório  - Apresentação do Desafio (pentaminós) 
03 Q
 Dúvidas?????
08 T
 Não haverá atividades
10 Q
 Segunda Prova 
15 T

17 Q

22 T
 Exame Final
Outras Datas Importantes do Calendário Escolar
 23 e 24/09
 Congresso de Iniciação Científica de 2008
20/10
 Avaliação e discussão de cursos
05/11  Último dia para trancamento de matrícula, na DAC
17/12  Término do período letivo
18 a 23/12  Exames finais. As disciplinas ministradas às quintas-feiras deverão realizar seus exames no dia 17/12
 06/01/2010  Prazo final para entrada de médias e frequencias 

 Feriados
07/09; 12/10; 02/11; 20/11; 08/12