Mudanças entre as edições de "STE29008-2018-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(35 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 19: Linha 19:
  
  
= (02/04/2018) – Introdução a Sistemas Embarcados =
+
= (02/03/2018) – Introdução a Sistemas Embarcados =
 
   
 
   
 
* [http://www.lisha.ufsc.br/teaching/esl/intro.pdf Notas de Aula: Introdução]
 
* [http://www.lisha.ufsc.br/teaching/esl/intro.pdf Notas de Aula: Introdução]
  
= (02/04/2018) – Introdução a Sistemas Embarcados =
+
= (05/03/2018) – Introdução a Sistemas Embarcados =
  
 
*Notas de Aula:
 
*Notas de Aula:
Linha 31: Linha 31:
 
*Experimentos:
 
*Experimentos:
 
**[[ESTE: General Purpose Input and Output (GPIO) | Lab 01: GPIO - Hello LED]]
 
**[[ESTE: General Purpose Input and Output (GPIO) | Lab 01: GPIO - Hello LED]]
**[[ESTE: UART - Serial Communication | Lab 02: UART - Serial Communication]]
+
 
 +
 
 +
= (09/03/2018) – Introdução a Sistemas Embarcados (cont.) =
 +
*Notas de Aula:
 +
**[http://www.lisha.ufsc.br/teaching/esl/ad.pdf ADC]
 +
 
 +
*Experimentos:
 +
**[[ESTE:_Universal_Assynchronous_Receiver_and_Transmitter_(UART) | Lab 02: UART - Serial Communication]]
 +
 
 +
= (16/03/2018) – ADC (cont.) =
 +
 
 +
*Experimentos:
 +
**[[ESTE:_Analog-to-Digital_Converter_(ADC)_and_Sensor_Reading |  Lab 03: UART - ADC e Sensor Reading]]
 +
**[[ESTE:_Analog_Temperature_Sensor_2_(NTC_-_Negative_Temperature_Coeficient) | Lab 04: Temperature Sensor]]
 +
 
 +
*Tarefa:
 +
**1- Mudar a implementação da Leitura do ADC de "float" para "long" e verificar o ganho em memória de programa e dados.
 +
 
 +
= (23/03/2018) – Interrupções =
 +
*Desafio:
 +
**Usando Round Robin sem interrupções implementar um sistema com um LED e um botão. O sistema deve piscar o LED a cada 2 segundos e ao botão ser pressionado envia pela serial uma mensagem.
 +
 
 +
* Round Robin com Interrupções
 +
* Interrupções (IRQ, ISR). Estudo de caso AVR.
 +
 
 +
= (26/03/2018) – Interrupções =
 +
*[[ESTE:_GPIO_and_External_Interrupts_-_part_1 |  Lab 05: GPIO and External Interrupts - part 1]]
 +
*[[ESTE:_GPIO_and_External_Interrupts_-_part_2 | Lab 06: GPIO and External Interrupts - part 2]]
 +
 
 +
 
 +
= (02/04/2018) – PWM =
 +
 
 +
*[[ESTE:_Pulse_Width_Modulation_(PWM) | Lab 07: Pulse Width Modulation (PWM)]]
 +
 
 +
 
 +
= (06/04/2018) – Usando C++=
 +
 
 +
==Mudança de nível de abstração==
 +
*Arduino --> ATmega328p (Ex.: I/O Ports)
 +
 
 +
 
 +
[[Arquivo: portas_arduino_uno.png|300px]]
 +
 
 +
[[Arquivo:ATmega328p_pinout.png|600px]]
 +
 
 +
== ATmega328p:  I/O Ports==
 +
*[http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf Datasheet ATmega328p]
 +
*[http://www.avr-tutorials.com/digital/about-avr-8-bit-microcontrollers-digital-io-ports Resumo Portas]
 +
 
 +
 
 +
*Tabela verdade de configuração das portas:
 +
[[Arquivo:Port_Pin_Configurations.png|600px]]
 +
 
 +
 
 +
*Endereços registradores de I/O:
 +
[[Arquivo:io_registers_address.png|800px]]
 +
 
 +
==GCC, avr-libc==
 +
*[https://www.nongnu.org/avr-libc/ avr-libc]
 +
*[https://www.nongnu.org/avr-libc/user-manual/group__demo__project.html A simple Project]
 +
*[http://tele.sj.ifsc.edu.br/~arliones.hoeller/eclipse-neon2-x86_64.tar.bz2 Eclipse IDE Neon.2 para Linux 64-bits]  (última atualização em 24/02/2017) - Mantido pelo [[Arliones_Hoeller | Prof. Arliones]].
 +
 
 +
 
 +
[[Arquivo:Avr-gcc.png|800px]]
 +
 
 +
==Prática==
 +
*Implemente um programa usando GCC e avr-libc para ligar um led quando um botão for pressionado ([[ESTE:_General_Purpose_Input_and_Output_(GPIO)|exemplo]])
 +
*[https://www.geeksforgeeks.org/bitwise-hacks-for-competitive-programming/ Operação de Bits em C/C++]
 +
*[http://www.cplusplus.com/doc/boolean/ Operações Booleanas em C/C++]
 +
 
 +
 
 +
 
 +
= (09/04/2018) – GPIO: avr-libc =
 +
 
 +
= (13/04/2018) – GPIO: avr-libc (cont.) =
 +
 
 +
 
 +
= (16/04/2018) – Mapeamento em memória (GPIO_Port) =
 +
 
 +
= (20/04/2018) – Mapeamento em memória (GPIO_Port) =
 +
 
 +
= (23/04/2018) – Análise Eficiência de código (obj_dump) =
 +
 
 +
= (27/04/2018) – Serial e  Interrupção Externa =
 +
 
 +
Avaliação 1:
 +
* Implementar
 +
** Classe Serial (bloqueante)
 +
** Classe Interrupção Externa
 +
** Códigos de testes da classe
 +
** Entrega: 07/05 (via Moodle)
 +
 
 +
*Referências:
 +
** [http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf Datasheet ATmega328p]
 +
** [http://maxembedded.com/2013/09/the-usart-of-the-avr/#UARTnUSART USART AVR]
 +
** [https://sites.google.com/site/qeewiki/books/avr-guide/external-interrupts-on-the-atmega328 EXTINT]
 +
 
 +
= (04/05/2018) – Serial e  Interrupção Externa (cont.)=
 +
 
 +
 
 +
= (07/05/2018) – FIFO e Serial com FIFO=

Edição atual tal como às 15h08min de 7 de maio de 2018

Sistemas Embarcados

  • Professor: Roberto de Matos
  • Encontros: segundas e sextas às 13:30 no Laboratório de Programação.


Aula 1 (16/02/2018) – Apresentação

  • Apresentação do professor.
  • Apresentação dos alunos: Nome, perfil, preferências, etc.
  • Apresentação da disciplina.


(26/02/2018) – Mercado de Sistemas Embarcados


(02/03/2018) – Introdução a Sistemas Embarcados

(05/03/2018) – Introdução a Sistemas Embarcados


(09/03/2018) – Introdução a Sistemas Embarcados (cont.)

  • Notas de Aula:

(16/03/2018) – ADC (cont.)

  • Tarefa:
    • 1- Mudar a implementação da Leitura do ADC de "float" para "long" e verificar o ganho em memória de programa e dados.

(23/03/2018) – Interrupções

  • Desafio:
    • Usando Round Robin sem interrupções implementar um sistema com um LED e um botão. O sistema deve piscar o LED a cada 2 segundos e ao botão ser pressionado envia pela serial uma mensagem.
  • Round Robin com Interrupções
  • Interrupções (IRQ, ISR). Estudo de caso AVR.

(26/03/2018) – Interrupções


(02/04/2018) – PWM


(06/04/2018) – Usando C++

Mudança de nível de abstração

  • Arduino --> ATmega328p (Ex.: I/O Ports)


Portas arduino uno.png

ATmega328p pinout.png

ATmega328p: I/O Ports


  • Tabela verdade de configuração das portas:

Port Pin Configurations.png


  • Endereços registradores de I/O:

Io registers address.png

GCC, avr-libc


Avr-gcc.png

Prática


(09/04/2018) – GPIO: avr-libc

(13/04/2018) – GPIO: avr-libc (cont.)

(16/04/2018) – Mapeamento em memória (GPIO_Port)

(20/04/2018) – Mapeamento em memória (GPIO_Port)

(23/04/2018) – Análise Eficiência de código (obj_dump)

(27/04/2018) – Serial e Interrupção Externa

Avaliação 1:

  • Implementar
    • Classe Serial (bloqueante)
    • Classe Interrupção Externa
    • Códigos de testes da classe
    • Entrega: 07/05 (via Moodle)

(04/05/2018) – Serial e Interrupção Externa (cont.)

(07/05/2018) – FIFO e Serial com FIFO