EA871 Laboratório de Programação Básica de Sistemas Digitais
FEEC/ Unicamp
Primeiro Semestre de 2022
Turma Q
Turma R
Profa. Wu, Shin - Ting
http://www.dca.fee.unicamp.br/cursos/EA871/1s2022/
[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

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:

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.


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 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:

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:

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

Exame Final

Não haverá exame final.

Notas e Frequência

Turma Q
Turma R

Manuais


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."