[Site Oficial]
[Objetivo]
[Período Letivo e Local]
[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 Complementares]
[Entrevistas]
[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 para sistemas embarcados
e programação dos diversos módulos dedicados
disponíveis no microcontroladores da série
Kinetis KL25Z4 da NXP (Freescale).
Período Letivo e Local
- Período Letivo: 14/março/2022 a 16/julho/2022
- Local: LE-30
Estamos retornando às atividades presenciais depois de quatro semestres. Vamos trabalhar juntos para um retorno responsável e seguro. Por favor, siga às riscas as medidas sanitárias recomendadas:
O acesso ao LE-30 é permitido para os alunos fora dos horários de
aula, mediante identificação na entrada do Bloco E
e cumprimento das medidas de prevenção e
controle da propagação de COVID-19. Antes de sair do
laboratório, favor desliguem TODOS os
equipamentos sobre as bancadas e arrumem a bancada utilizada. Se forem
os últimos, fechem as janelas, desliguem o ar condicionado, e apaguem
as luzes.
Neste semestre, o uso da sala LE-30 é compartilhado entre as
turmas das duas disciplinas, EA871 e EA076. Seguem-se algumas boas
práticas para uso compartilhado das bancadas:
- Sentar uma pessoa por bancada.
- Evitar compartilhamento de equipamentos.
- Manter álcool longe dos equipamentos ligados.
- Higienizar frequentemente as mãos com álcool em gel.
- Manter a sala sempre arejada (portas e janelas abertas).
- Evitar conversas paralelas com colegas sem distanciamento.
- Usar continua e corretamente máscaras com mínimo 3 camadas de proteção (cirúrgica ou PFF2/N95) (não coma e/ou beba dentro do LE-30).
- Higienizar as superfícies que teve contato (bancadas e cadeiras) (álcool líquido) e os equipamentos eletrônicos desligados (sachês de álcool isopropílico) após uso.
- Trabalhar somente com sua sub-pasta
C:\Users\ea871\RA. Não deixar os arquivos espalhados em
outras pastas, principalmente na Área de Trabalho.
- Ao abrir CodeWarrior certificar se está
entrando mesmo na sua área de trabalho (workspace).
- Fazer sempre uma cópia do conteúdo
importante da sua sub-pasta para evitar perda de dados.
- Usar uma bancada fora do horário somente
após a reserva. O agendamento é por um período de até 4 horas
diárias (4 por bancada, 2 por 2 bancadas ou 1 por 4
bancadas). Respeite o horário
agendado. Se há alguma reserva depois do seu horário, salve o
seu projeto antes do término do seu horário e passe para uma outra
máquina disponível ou converse com o seu colega sobre uma possível
troca. As reservas podem ser feitas
via este link. Cabe observar
que não é possível desmarcar reservas, nem na
totalidade nem em parte. Fazer reservas somente nos
horários em que efetivamente vão usar as bancadas.
Haverá manuntenção periódica das máquinas que será avisada
previamente. Arquivos podem ser
removidos. Ajude-nos manter as bancadas operantes em 24
horas. Quando identificar algum problema nas bancadas, avise o
monitor ou o suporte.
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 acionamento automático de sistema de ventilação. 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, controle por PWM) 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.
Antes de cada aula, é disponível um estudo dirigido
no Moodle para fazer uma revisão dos conceitos e
orientá-los na consulta dos manuais e folhas de
dados. Procure entender os conceitos antes de
responder as questões dos estudos dirigidos. Plantões de
monitoria são apoios adicionais. No início de cada aula, é aberta
uma questão no Moodle sobre o assunto do experimento para ser
respondida em até 5 minutos. O restante da aula é dedicado às
atividades de programação do experimento.
Calendário de Atividades
Tópico |
Exp. |
Aulas síncronas - Turmas Q(Sextas, 8:00 - 10:00h)/R(Sextas, 10:00 - 12:00h) |
Roteiro |
Materiais de Consulta |
De
Python para
C para programar
placa FRDM-KL25 com shield EA871
|
1 |
18/03 |
roteiro 1
pertence.py
ocor_palavras.py
ocor_palavras.c
|
Referência Comparativa Rápida entre Python e C para Sistemas com Recursos Limitados
Projeto MAC Multimídia - Exercícios com Inteiros
Quick Reference Guide for C language
Interactive C Tutorial
C Tutorial: Learn C Programming
Ambiente de Desenvolvimento - Hardware
|
Introdução ao ambiente de desenvolvimento de software (CodeWarrior); Introdução ao Depurador |
2 |
25/03 |
roteiro 2
divide.c
fatorial.c
ocor_palavras.c
|
Ambiente de Desenvolvimento - Software
Nova versão do esquemático do shield FEEC
ARM Developer Suite CodeWarrior IDE Guide
Criar um projeto bare-metal usando CodeWarrior
Tabela de teclas de atalho no CodeWarrior IDE
|
Linguagem de Montagem (Assembly ARM/Thumb/Thumb 2); Apresentação do
Saleae Analisador Lógico |
3 |
01/04 |
roteiro 3
rot3_arit.s
rot3_bits.s
rot3_ticks.zip
|
Linguagem de Montagem
CodeWarrior - Kinetis Assembler Reference Manual
ARMv6-M Architecture Reference Manual: Seção A6.7 (página 105)
Cortex-M0+ Technical Reference Manual: Seção 3.3 (página 26)
Thumb 16-bit Instruction Set Quick Reference Card
ARM GCC Inline Assembler Cookbook
|
Primeiro Programa em C para Microcontroladores (SIM, PORT, GPIO: led RGB) |
4 |
08/04 |
roteiro 4
|
CodeWarrior - Kinetis GCC Reference Manual
KL25 Sub-Family Reference Manual: Seções 10.3 (p. 161), 11.5.1 (p. 183), 12.2.9 (p. 206) e 41.2 (p. 773)
Kinetis L Peripheral Module Quick Reference: Cap. 1 (p. 11)
Registers and Bit Masks
How to use C's volatile Keyword
|
Técnicas de Programação (modularidade e legibilidade); Introdução a Doxygen |
roteiro 5
|
Conceitos básicos de algoritmos
MCU on Eclipse
Programação Modular em C
Simplifique: use macros (ou não)
Enumerations Q & A
Documentação
What is embedded testing in software testing?
|
Push buttons (Captura de eventos externos por Polling) |
5 |
29/04 |
roteiro 6
rot6_aula.zip
|
What is polling in embedded systems?
Pointers and addresses
How to use C's volatile Keyword
Switches vs. if else
|
Push buttons (Captura de eventos externos por Interrupções) |
6 |
06/05 |
roteiro 7
rot7_aula.zip
|
A practical guide to ARM Cortex-M exception handling
ARMv6-M Architecture Reference Manual: Seção B3.4 (p.281)
KL25 Sub-Family Reference Manual: Seções 3.3.2 (p. 51), 11.5.1 (p. 183)
Kinetis L Peripheral Module Quick Reference: Cap. 3 (p. 29)
How to write ISR Handlers?
Global and Local Variables in Embedded C Programs
A pox on globals
|
LCD (GPIO: Interface Paralela) |
7 |
13/05 |
roteiro 8
rot8_aula.zip
|
An introduction to Parallel port
LCD Tutorial for Interfacing with Microcontrollers
LCD Custom Character Generator
|
Relógio digital (MCG, LPO, SysTick, PIT, LPTRM, RTC) |
8 |
20/05 |
roteiro 9
rot9_aula.zip
|
Microcontroller Timers, Their Types and Applications
KL25 Sub-Family Reference Manual: Seções 3.3.1.3 (p. 51), 3.8.2 (p. 87), 3.8.3 (p. 88), 3.8.4 (p. 90), 5.7 (p. 121), Caps. 32 (p. 573), 34 (p. 597)
Kinetis L Peripheral Module Quick Reference: Cap. 4 (p. 33)
ARMv6-M Architecture Reference Manual: Seção B3.3 (p.275)
The importance of real-time clocks in IoT applications
Convert HH:MM:SS to seconds
|
9 |
27/05 |
Controle de Velocidade de um Motor DC (TPM PWM)
rot10_aula.zip
|
10 |
03/06 |
roteiro 10
rot10_aula.zip
|
Pulse Width Modulation (Eletronics)
KL25 Sub-Family Reference Manual: Seções 3.8.1 (p. 84), 31.1 (p. 547), 31.4.1 (p. 561), 31.4.2 (p. 562), 31.4.3 (p. 562), 31.4.6 (p. 567), 31.4.7 (p. 568), 31.4.8 (p. 570)
IEEE754 Converter
Pulse Width Modulation usando um oscilador 555
Pulse Width Modulation (Sparkfun)
|
Calculadora (UART: Terminal) |
11 |
10/06 |
roteiro 11
rot11_aula.zip
|
Serial Communication
KL25 Sub-Family Reference Manual: Seções 3.9.4 (p. 98), 5.7.7 (p. 125), Caps. 39 (p. 721) e 40 (p. 747)
Kinetis L Peripheral Module Quick Reference: Cap. 8 (p. 77)
Implementing Circular/Ring Buffer in Embedded C
Serial Terminal Basics
|
Voltímetro (ADC)
| 12 |
24/06 |
roteiro 12
aula12.pdf
rot12_aula.zip
|
Analog to Digital Conversion, Data Acquisiton and Control
O que é o Conversor ADC (conversor Analógico-Digital)?
KL25 Sub-Family Reference Manual: Seções 3.2.1 (p. 45), 3.2.2 (p. 48), 3.7.1.3 (p. 9), 3.8.2 (p. 87), Cap. 28 (p. 457)
Kinetis L Peripheral Module Quick Reference: Cap. 11 (p. 115)
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?
|
Cronômetro (TPM Input Capture e Output Compare)
| 13 |
01/07 |
roteiro 13
aula13.pdf
rot13_aula.zip
|
Introduction to timer-based measurement
KL25 Sub-Family Reference Manual: Seções 3.8.1 (p. 84), 31.1 (p. 547), 31.4.1 (p. 561), 31.4.2 (p. 562), 31.4.3 (p. 564), 31.4.4 (p. 564), 31.4.5 (p. 565), 31.4.8 (p. 570)
|
Integração Projeto final
| 14 |
08/07 |
Propostas pelos grupos de até 2 alunos |
Projetos apresentados:
Controlador manual de velocidade com indicador por cor
Jogo da Forca
Nível Digital
Gerador de Funções
Relógio com Alarme com uma fonte de clock de 1kHz
Relógio Digital com Termômetro e Cronômetro controlado por Bluetooth
|
15 |
15/07 e 22/07 |
|
Prazo de apresentação oral do projeto |
- |
22/07 (último dia para entrada de notas/frequências: 02/08)
|
- |
Auxiliar Didático
Este semestre contaremos com o apoio didático (PAD) de:
-
Vinicius De Oliveira Peixoto Rodrigues
|
Segunda |
Terça |
Quarta |
Quinta |
Sexta |
8:00 - 9:00 |
|
EA076 |
|
EA076 |
EA871 (turma Q) |
9:00 - 10:00 |
|
EA076 |
|
EA076 |
EA871 (turma Q) |
10:00 - 11:00 |
|
|
|
|
EA871 (turma R) |
11:00 - 12:00 |
|
|
|
|
EA871 (turma R) |
12:00 - 13:00 |
|
Monitoria |
|
|
Monitoria |
Monitoria |
13:00 - 14:00 |
|
Monitoria |
Monitoria |
|
|
|
14:00 - 15:00 |
EA076 |
|
|
|
|
15:00 - 16:00 |
EA076 |
|
|
|
|
16:00 - 17:00 |
EA076 |
|
Monitoria |
|
|
17:00 - 18:00 |
EA076 |
Monitoria |
Monitoria |
|
|
18:00 - 19:00 |
|
Monitoria |
|
|
|
19:00 - 20:00 |
|
|
EA076 |
|
|
20:00 - 21:00 |
Monitoria |
|
EA076 |
|
|
21:00 - 22:00 |
|
|
EA076 |
|
|
22:00 - 23:00 |
|
|
EA076 |
|
|
Critério de Avaliação
M = 0.1P + 0.55R + 0.35I ,
onde E é a média dos estudos dirigidos e preparatórios para experimentos, R é a média das notas dos 13 relatórios (1 a 13) dos 13 experimentos realizados individualmente (até roteiro 7) e em grupo de até 2 (do roteiro 8 em diante), e I é o projeto final de integração dos módulos. Os estudos dirigidos devem ser respondidos no Moodle e os relatórios devem ser postados também
no Moodle dentro dos prazos programados. Para o projeto final de integração, além do relatório, será agendado um horário para apresentação individual do projeto que entrará no cômputo da nota I.
É imprescindível a entrega de todos os relatórios. Relatórios entregues fora do prazo podem comprometer a realização dos experimentos que se seguem.
Serão aprovados os alunos que satisfizerem as três condições:
-
M > = 5.0 .
- as notas finais dos relatórios superiores a 3.0 (após eventuais refeituras).
A média final, Mfinal, destes alunos é igual a M.
Exame Final
Não haverá exame final.
Notas e Frequência
Folhas Técnicas
Referências Complementares
Entrevistas
Sugestões:
ting at dca dot fee dot unicamp dot br
Última modificação: Ter Fev 22 21:49:37 -03 2022
"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."