[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
no microcontroladores da série
Kinetis KL25Z4 da NXP (Freescale).
Período Letivo e Local
- Período Letivo: 28/02/2024 a 29/06/2024
- Local: LE-30
O acesso ao LE-30 é permitido para os alunos fora dos horários de
aula, mediante identificação na entrada do Bloco E. 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.
Seguem-se algumas boas
práticas para uso compartilhado das bancadas:
- 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.
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 9 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 médio 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
A técnica adotada nesta disciplina é o paradigma
de desenvolvimento modular. Desenvolveremos 9 módulos
(led RGB, botoeiras, LCD, relógio, potenciômetro,
comunicação serial, PWM/Input Capture/Output Compare) que
poderão ser reusados no
projeto final. As primeiras 6 atividades
são individuais e as restantes 3
atividades em grupo. Todas devem ser entregues, de acordo com a
orientação dada em cada roteiro,
via Moodle.
Antes de cada aula, o roteiro do experimento da aula
está disponível no Moodle.
Os roteiros visam proporcionar uma revisão dos conceitos e orientá-los
na consulta dos manuais e folhas de
dados. Leia o roteiro primeiro para compreender o conteúdo do experimento.
Em seguida, faça uma segunda leitura procurando responder às questões do estudo dirigido.
Finalmente, leia o roteiro das atividades e procure resolver os exercícios relacionados
à análise dos projetos desenvolvidos. Anote todas as
suas dúvidas durante esse processo.
As aulas serão compostas por testes preparatórios, breves apresentações dos tópicos e
tarefas propostas nos roteiros. Espera-se que os alunos concluam
as implementações dos esqueletos básicos das tarefas no final das aulas.
O desempenho dos alunos na execução de cada roteiro é avaliado
considerando as atividades preparatórias, que incluem a compreensão do roteiro, as
anotações feitas e as dúvidas levantadas, além das implementações realizadas durante
as aulas. Uma avaliação sobre a leitura do roteiro, disponível no
Moodle, é aberta
nos primeiros 30 minutos de cada aula.
Calendário de Atividades
Tópico |
Exp. |
Quartas S(19:00 - 21:00h) |
Sextas Q(8:00 - 10:00h)/R(10:00 - 12:00h) |
Roteiro |
Materiais de Consulta |
De
Python para
C para programar
placa FRDM-KL25 com shield EA871; IDE CodeWarrior
|
1 |
28/02 |
01/03 |
roteiro 1
pertence.c
pertence.py
ocor_palavras.py
ocor_palavras.c
bit_op.py
bit_op.c
fatorial.c
|
Referência Comparativa Rápida entre Python e C para Sistemas com Recursos Limitados
Projeto MAC Multimídia - Exercícios
Quick Reference Guide for C language
Interactive C Tutorial
C Tutorial: Learn C Programming
Ambiente de Desenvolvimento - Software
|
Introdução ao ambiente de desenvolvimento de firmware (CodeWarrior); Introdução ao Depurador e a Doxygen
|
2 |
06/03 |
08/03 |
roteiro 2
rot2_aula.zip
|
Ambiente de Desenvolvimento - Hardware
Freescale FRDM-KL25Z User's Manual
Nova versão do esquemático do shield FEEC
ARM Developer Suite CodeWarrior IDE Guide
Tabela de teclas de atalho no CodeWarrior IDE
KL25 Sub-Family Reference Manual: Seções 4.2 (p. 105), 11.5 (p. 177), 12.2 (p. 192) 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
Pointers and addresses
Global and Local Variables in Embedded C Programs
MCU on Eclipse
Documentação
|
Linguagem de Montagem (Assembly ARM/Thumb/Thumb 2); Apresentação do
Analisador Lógico Saleae |
3 |
13/03 |
15/03 |
roteiro 3
rot3_aula.zip
|
Linguagem de Montagem
CodeWarrior - Kinetis Assembler Reference Manual
ARMv6-M Architecture Reference Manual: Seção A2.2 (p. 31), A2.3 (p. 35), A5.2 (p. 84), A6.2 (p. 98), A6.7 (p. 105)
Cortex-M0+ Technical Reference Manual: Seção 3.3 (p. 26)
Thumb 16-bit Instruction Set Quick Reference Card
KL25 Sub-Family Reference Manual: Tabela 4-1 (p. 105), Capítulo 21 (p. 331 e p. 335)
ARM GCC Inline Assembler Cookbook
How to Use Inline Assembly Language in C Code
Analisador Lógico Saleae
|
Módulos SIM, PORT, GPIO, NVIC: LED RGB e Push Buttons |
4 |
20/03 |
22/03 |
roteiro 4
rot4_aula.zip
|
KL25 Sub-Family Reference Manual: Tabelas 3-7 (p. 52), 5-2 (p.
121), Seções 5.4 (p. 116), 5.7 (p. 121), 10.3.1 (p. 161), 11.5 (p. 177),
11.5.1 (p. 183), 11.5.4 (p. 186), 11.6.3 (p. 188), 12.2 (p. 191),
12.2.2 (p. 210), 12.2.9 (p. 206), 24.3 (p. 371), 41.2 (p. 773), 41.2.2,
41.2.3 (p. 776), 41.2.6 (p. 778)
ARMv6-M Architecture Reference Manual: Seção B3.4 (p.281)
Kinetis L Peripheral Module Quick Reference: exemplos de aplicação dos módulos
What is polling in embedded systems?
Switch Bounce and How to Deal with It
A practical guide to ARM Cortex-M exception handling
How to write ISR Handlers?
What is embedded testing in software testing?
Linguagens de Modelagem
|
Temporizador Pomadoro: Módulos GPIO (Interface paralela), MCG, SysTick: LCD; Introdução à programação modular e legível |
5 |
27/03 |
05/04 |
roteiro 5
rot5_aula.zip
|
An introduction to Parallel Port
LCD 16x2
LCD Tutorial for Interfacing with Microcontrollers
LCD Custom Character Generator
ARMv6-M Architecture Reference Manual: Seção B3.3 (p.275)
Switches vs. if else
Simplifique: use macros (ou não)
Enumerations Q & A
A pox on globals
Programação Modular em C
|
Cronômetro (MCG, LPO, PIT, RTC) |
6 |
03/04 |
12/04 |
roteiro 6
rot6_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
|
Calculadora (UART: Terminal) |
7 |
10/04 |
19/04 |
roteiro 7
rot7_example1.zip
rot7_example2.zip
rot7_aula.zip
|
Serial Communication
KL25 Sub-Family Reference Manual: Seções 3.9.4 (p. 98), 5.7.7 (p. 125), 24.4.1.1 (p. 385), Caps. 39 (p. 721) e 40 (p. 747)
Kinetis L Peripheral Module Quick Reference: Seção 4.1.3 (p. 35) e Cap. 8 (p. 77)
ARMv6-M Architecture Reference Manual: Seção B1.4 (p.211)
Implementing Circular/Ring Buffer in Embedded C
Serial Terminal Basics
|
8 |
17/04 |
26/04 |
Medidor de Tempos de Reações (TPM, DMA e DMAMUX: Buzzer)
|
9 |
24/04 |
03/05 |
roteiro 8
rot8_example1.zip
rot8_example2.zip
rot8_aula_PWM.zip
rot8_aula_ICOC.zip
|
KL25 Sub-Family Reference Manual: Seções 3.3.2.3 (p. 52),
3.4.8.1 (p. 64), 3.8.1 (p. 84), 10.3.1 (p. 162), 22.4 (p. 340), 23.2 (p.
351), 23.4.2.2 (p. 362), 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)
Kinetis L Peripheral Module Quick Reference: Cap. 7 (p. 67) e Cap. 12 (p. 123)
Direct Memory Access (DMA)
68HC08 Timer Interface Module Tutorial
Pulse Width Modulation (Eletronics)
Pulse Width Modulation (Sparkfun)
Pulse Width Modulation usando um oscilador 555
Introduction to timer-based measurement
IEEE754 Converter
|
10 |
08/05 |
10/05 |
Controlador de Velocidade de Cooler (ADC e LPTMR)
| 11 |
15/05 |
17/05 |
roteiro 9
rot9_example1.zip
rot9_cooler.zip
rot9_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), 5.7.4 (p. 124), Cap. 28 (p. 457), Cap. 33 (p. 587)
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?
|
12 |
22/05 |
24/05 |
Integração Projeto final
| 13 |
29/05 |
07/06 |
Propostas pelos grupos de até 2 alunos.
Periféricos disponíveis para empréstimo: Kit Arduino 37-em-1;
Periféricos adicionais; Protocolo de comunicaçao que alguns sensores usam:
SPI,
I2C (displayOLED_I2C.zip (SSD1306)) e
SPI no
LCD Nokia (dataseeht) na implementação de um jogo de cobrinha.
|
Projetos finais:
Balança acessível para deficientes visuais
Controle de fila de restaurante
Semáforo auditivo
|
14 |
05/06 |
14/06 |
15 |
12/06 |
21/06 |
|
Prazo de apresentação oral do projeto |
- |
26/06
| 28/06
|
- |
Auxiliar Didático
Neste semestre, não teremos o suporte didático do PAD. Vamos desenvolver juntos uma dinâmica para que isso não comprometa o aprendizado. Sugiro que quaisquer dúvidas essenciais para a conclusão das tarefas sejam levantadas antes de cada aula do roteiro e esclarecidas durante a mesma, de modo que ao final da aula vocês já tenham uma base sólida das soluções das tarefas. Além disso, há um grupo no WhatsApp para esclarecer dúvidas, onde todos são convidados a contribuir com respostas. Esta é uma maneira não apenas de auxiliar seus colegas, mas também de consolidar os conhecimentos adquiridos. Além disso, a frequência de contribuições pertinentes às tarefas dos roteiros no grupo do WhatsApp será considerada para a avaliação da participação.
Critério de Avaliação
M = 0.2P + 0.5R + 0.3I ,
onde P é a média do desemepenho nas etapas preparatórias dos experimentos, R é a média das notas dos 9 relatórios (1 a 9) dos 6 experimentos realizados individualmente (1 a 6) e em grupo de até 2 (do roteiro 7 em diante, 2 relatórios por roteiro), 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 presença nos horários da aula e a entrega dos relatórios no prazo. Relatórios entregues fora do prazo podem comprometer a realização dos experimentos que se seguem.
Serão aprovados os alunos que satisfizerem as duas 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.
Folhas Técnicas
Referências Complementares
Entrevistas
Sugestões:
ting at dca dot fee dot unicamp dot br
Última modificação: Ter Fev 6 23:41:25 -03 2024
"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."