EA871 Laboratório de Programação Básica de Sistemas Digitais
FEEC/ Unicamp
Segundo Semestre de 2020
Turma S
Turma T
Profa. Wu, Shin - Ting
http://www.dca.fee.unicamp.br/cursos/EA871/2s2020/ST
[Site Oficial] [Objetivo] [Local e Período Letivo] [Ementa] [Ementa Detalhada] [Planejamento] [Calendário de Atividades] [Auxiliares Didáticos] [Critério de Avaliação] [Notas e Frequência] [Manuais] [Folhas Técnicas] [Referências Úteis] [Moodle]

Objetivo

A disciplina EA871, de 4 créditos, foi idealizada como complemento à disciplina teórica EA869, Introdução a Sistemas de Computação. Esta disciplina de laboratório tem como objetivo consolidar conceitos básicos associados à organização/arquitetura de microcontroladores através de uma série de atividades de introdução a um ambiente de desenvolvimento integrado de software de um sistema embarcado e programação dos diversos módulos de periférico disponíveis nos microcontroladores da série Kinetis L da NXP (Freescale).


Local e Período Letivo

Qualquer ambiente digital com o servidor X e um aplicativo que suporta acessos por protocolo ssh viabilizam acessos remotos, em 24 horas, às bancadas LE30-x, onde x=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 e 12 do LE30 via as máquinas de acesso externo le27-y.grad.fee.unicamp.br, onde y=11, 12, 13, 14, 15, 16, 17, 18, 19, 20. Por exemplo, pode-se logar na máquina le27-11.grad.fee.unicamp.br via ssh e acessar o terminal da bancada LE30-6 via rdesktop. Embora uma mesma máquina le27-y consiga "suportar" duas ou talvez três conexões simultâneas, recomendamos que façam o logon e verifiquem se outros usuários já estejam usando a máquina, com o comando who. Se existir mais de um usuário (além dele) logado na máquina, faça logon em outra. As reservas podem ser feitas via este link. Cabe observar que não é possível desmarcar reservas, nem na totalidade nem em parte. Procurem fazer reservas somente nos horários em que efetivamente vão usar as bancadas.

Como teremos somente um usuário comum em todas as bancadas (C:\Users\ea871), seguem-se algumas regras básicas para uso compartilhado:

Haverá a manuntenção periódica das máquinas que será avisada previamente. Arquivos podem ser removidos. Ajude-nos a manter as bancadas operantes em 24 horas. Quando identificarem algum problema nas bancadas, enviem por favor uma mensagem com uma descrição detalhada do problema para ting@dca.fee.unicamp.br e para os monitores, ou postem a descrição no tópico "Problemas com infra-estrutura" do Fórum de Discussões do Moodle.


Ementa

Programação em linguagem assembly. Instruções de máquina. Diretivas do montador. Depuradores. Interfaces de entrada/saída. Programação de interface serial. Comunicação entre computadores. Programação de interface paralela. Interrupções.


Ementa Detalhada

São programadas 14 atividades práticas com a finalidade de praticar os conceitos relacionados com a arquitetura, linguagem de programação de máquina, linguagem de programação de alto nível (C), memória, periféricos de entrada e saída, comunicações paralelas e seriais, mecanismos de interrupção e temporizadores. Os alunos devem ser capacitados a desenvolver um projeto de software de baixa complexidade reusando o hardware disponível.


Dinâmica do Curso

O tema deste semestre é um relógio digital com cronômetro e termômetro com interface serial. A técnica adotada nesta disciplina é o paradigma de desenvolvimento modular. Dividimos o projeto em 8 módulos (led RGB, botoeiras, LCD, relógio, cronômetro, termômetro, comunicação serial, utilidades) que serão integrados nos dois últimos experimentos. Todas as atividades são individuais e devem ser entregues, de acordo com a orientação dada em cada roteiro, via Moodle. Dependendo das dificuldades identificadas, refeituras podem ser requisitadas.

Como acreditamos que muitas vezes erros na codifição se devem à falta do entendimento da lógica que está por trás da sintaxe de uma linguagem, no nosso caso C, e/ou da arquitetura da máquina, no nosso caso ARM, em que estamos implementando os códigos, são disponíveis uma série de vídeos-aula acompanhados de questões de estudo dirigido acessíveis via Moodle. Tentativas de solução das questões do estudo dirigido antes de iniciar as atividades de programação atribuídas e submissão (no Moodle) de versões-rascunho do projeto atribuído para cada aula ANTES DA AULA são altamente recomendadas. Estas tentativas serão contabilizadas na avaliação do desempenho, mesmo que não sejam corretas, porque elas tem como objetivo despertar dúvidas e nos ajudar a mapear suas dificuldades.

Assim, podemos aproveitar as aulas na sala virtual para discutirmos dúvidas, tornando-as mais dinâmicas. A presença e a participação nestas aulas são importantes. Depois das aulas síncronas vocês terão a oportunidade de refazer não só as questões como também submeter as projetos solicitados até três dias após a aula (próxim segunda).


Calendário de Atividades

- Exp. Aulas síncronas - Turma S(Sextas, 14:00 - 16:00h)/T(Sextas, 16:00 - 18:00h) Videos-aula Roteiro Materiais Complementares
Introdução à placa FRDM-KL25 e ao shield EA871 1 18/09 acessos remotos e sistema embarcado
Aplicativos de testes dos periféricos: teste_ledRGB.hex; teste_kit.hex; TestEA871R.hex; teste_sensor.hex; teste_terminal.hex; teste_led_multicores.hex
roteiro 1 Ambiente de Desenvolvimento - Hardware
Nova versão do esquemático do shield FEEC
Esquemáticos dos circuitos de acesso remoto: Botoeiras e controle da fonte de calor e led RGB
Ferramentas de Desenvolvimento de Software: CodeWarrior 2 25/09 IDE CodeWarrior
Projeto apresentado no vídeo iniciar.zip
roteiro 2 Ambiente de Desenvolvimento - Software
Tabela de teclas de atalho no CodeWarrior IDE
Linguagem de Montagem (Assembly ARM/Thumb/Thumb 2) 3 02/10 Assembly
Projetos apresentados no vídeo: asm_ula.zip; asm_inline.zip; asm_FRDMKL25Z.zip
roteiro 3 Linguagem de Montagem
Thumb 16-bit Instruction Set Quick Reference Card
ARM GCC Inline Assembler Cookbook
Saleae Analisador Lógico
Primeiro Aplicativo (SIM, PORT, GPIO: led RGB) 4 09/10 Primeiro aplicativo
Projetos apresentados no vídeo: hello_data_type.zip; hello_bit_op.zip; hello_type_conversion.zip; hello_FRDMKL25Z.zip
roteiro 4 Bitwise Operators in C and C++: A Tutorial
Linguagem C: Operações sobre os Dados
Linguagem C: Representação de Dados
Primeira Biblioteca (Doxygen) 5 16/10 Primeira biblioteca
Projetos apresentados no vídeo: bib_programmed_type.zip; bib_macros.zip; bib_FRDMKL25Z.zip; GPIO_ledRGB.zip
roteiro 5
Projeto citado no roteiro: mod_FRDMKL25Z.zip
Entrevista com um arquiteto de sistema Tiago Cajaíba, IRT
Push buttons (Captura de eventos externos por Polling) 6 23/10 Polling
Projetos apresentados no vídeo: polling.zip
roteiro 6
Push buttons (Captura de eventos externos por Interrupções) 7 30/10 Interrupções
Projetos apresentados no vídeo: interrupt.zip
roteiro 7 Exceções
Interface Paralela (GPIO: LCD) 8 06/11 LCD
Projetos apresentados no vídeo: lcd_strings.zip lcd_program.zip lcd_bitmap.zip
roteiro 8 LCD Tutorial for Interfacing with Microcontrollers
Relógio digital (MCG, LPO, SysTick, PIT, LPTRM, RTC) 9 13/11 Temporizadores
Projetos apresentados no vídeo: timer_time_str.zip timer_systick_pit_lptmr.zip timer_rtc.zip
roteiro 9 (controle_relogio_digital.zip) Convert HH:MM:SS to seconds; LCD Custom Character Generator
Modulação por Largura de Pulso (TPM PWM) 13 20/11 PWM
Projetos apresentados no vídeo: timer_numb_str.zip timer_pwm.zip
roteiro 10 Pulse Width Modulation Pulse Width Modulation usando um oscilador 555
Cronômetro (TPM Input Capture e Output Compare) 10 27/11 Captura de Entrada/Saída por Comparação
Projetos apresentados no vídeo: timer_tictoc.zip
roteiro 11
Termômetro (ADC) 11 04/12 Conversor ADC
Projetos apresentados no vídeo: adc_SC1ATrigger.zip adc_sensors.zip adc_klqrug.zip
roteiro 12 Understanding SAR ADCs: Their Architecture and Comparison with Other ADCs
ADC Input Noise: The Good, The Bad, and The Ugly. Is No Noise Good Noise?
Interface Serial Assíncrona (UART: Terminal) 12 11/12 UART
Projetos apresentados no vídeo: serial_uart.zip serial_uart_interrupt.zip serial_cbuffer.zip
roteiro 13 Serial Communication
Serial Terminal Basics
Estrutura de Dados
Implementing Circular/Ring Buffer in Embedded C
Integração 14 18/12 Projeto final: Relógio digital com cronômetro, termômetro e comunicação serial com um Terminal. roteiro 14; interface; uma codificação de máquina de estados em C: maquina_de_estados.zip
15 08/01/2021
Prazo de apresentação oral do projeto - 15/01/2021 -

Auxiliares Didáticos

Este semestre contaremos com o apoio didático de dois assistentes: Eles ajudarão no suporte à infra-estrutura, ficando a Bárbara responsável pela intermediação dos problemas relacionados com a infra-estrutura e o Lucas, pela disponibilidade do material didático nas máquinas, no site e no Moodle. Lucas acompanhará as aulas da turma S e a Bárbara, da turma T, para ficarem sincronizados com o conteúdo da semana. Eles farão atendimentos em horários pré-programados (4 horas por semana) nas salas virtuais com uma bancada do LE30-x reservada. Eventualmente, os monitores poderão atender dúvidas em outros momentos por outras mídias de comunicação, a combinar entre as partes. Não deixem de usar o Fórum de Discussões (Moodle) como mais uma alternativa de tirar dúvidas.
Segunda Terça Quarta Quinta Sexta
8:00 - 9:00          
9:00 - 10:00          
10:00 - 11:00          
11:00 - 12:00     Lucas    
12:00 - 13:00 Bárbara   Lucas    
13:00 - 14:00 Bárbara        
14:00 - 15:00       Bárbara aula (turma S)
15:00 - 16:00   Lucas   Bárbara aula (turma S)
16:00 - 17:00         aula (turma T)
17:00 - 18:00         aula (turma T)
18:00 - 19:00          
19:00 - 20:00          
20:00 - 21:00          
21:00 - 22:00          
22:00 - 23:00          

Critério de Avaliação

M = 0.05E + 0.65R + 0.3I ,
onde E é a média dos 13 estudos dirigigos, R é a média das notas dos 13 relatórios (1 a 14) dos 13 experimentos realizados individualmente, e I é o projeto final de integração dos módulos. Os relatórios devem ser postados no Moodle no prazo programado. Além do relatório, será agendado um horário para apresentação individual do projeto final de integração que entrará no cômputo da nota I.

É imprescindível a entrega de todos os estudos dirigidos e relatórios. Estudos dirigidos e relatórios entregues fora do prazo terão suas notas zeradas no cômputo da média, além de poder comprometer a realização dos experimentos que se seguem.

Serão aprovados os alunos que satisfizerem as três condições:

A média final, Mfinal, destes alunos é igual a M.

Exame Final

Não haverá exame final.

Notas e Frequência

Turma S
Turma T

Manuais


Folhas Técnicas


Referências Úteis


Sugestões: ting at dca dot fee dot unicamp dot br

Última modificação: Sex Set 4 12:57:44 -03 2020

"Esta página, assim como todas as páginas sob esta mesma árvore, não é uma publicação oficial da UNICAMP, seu conteúdo não foi examinado e/ou editado por esta instituição. A responsabilidade por seu conteúdo é exclusivamente do autor."

"This page, as well as all pages under this same tree, is not an official publication from UNICAMP; its content has not been verified and/or edited by this institution. The author is solely responsible by its contents."