Mudanças entre as edições de "STE29008-2019-2"
Ir para navegação
Ir para pesquisar
Linha 95: | Linha 95: | ||
*Verificar "β parameter equation": | *Verificar "β parameter equation": | ||
** https://en.wikipedia.org/wiki/Thermistor | ** https://en.wikipedia.org/wiki/Thermistor | ||
+ | |||
+ | = 19/08/2019 – Correção Projeto 1= | ||
+ | * Implementado em conjunto a versão long e float. | ||
+ | |||
+ | |||
+ | = 21/08/2019 – Usando C++= | ||
+ | |||
+ | ==Mudança de nível de abstração== | ||
+ | *Arduino Mega --> ATmega2560 (Ex.: I/O Ports) | ||
+ | *[http://docente.ifsc.edu.br/roberto.matos/ste_public/doc/sch_mega2560-original.pdf Esquemático Arduino Mega] | ||
+ | *[http://docente.ifsc.edu.br/roberto.matos/ste_public/doc/sch_mega2560-clone_CH340G.pdf Esquemático Arduino Mega - CLONE] | ||
+ | |||
+ | <!-- | ||
+ | *[https://www.arduino.cc/en/uploads/Main/arduino-mega2560-schematic.pdf Esquemático Arduino Mega] | ||
+ | *[https://robotdyn.com/pub/media/0G-00005641==MEGA-PRO-CH340GATmega2560/DOCS/Schematic==0G-00005641==MEGA-PRO-CH340GATmega2560.pdf Esquemático Arduino Mega - CLONE] | ||
+ | --> | ||
+ | |||
+ | [[Arquivo: portas_arduino_MEGA.png|800px]] | ||
+ | |||
+ | |||
+ | Fonte: https://www.arduino.cc/en/Hacking/PinMapping2560 | ||
+ | |||
+ | <!-- [[Arquivo: portas_arduino_uno.png|300px]] | ||
+ | [[Arquivo:ATmega328p_pinout.png|600px]] --> | ||
+ | |||
+ | == ATmega2560: I/O Ports== | ||
+ | *[http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf Datasheet ATmega2560] | ||
+ | *[http://docente.ifsc.edu.br/roberto.matos/ste_public/doc/datasheet_ATmega2560.pdf Datasheet ATmega2560 (local)] | ||
+ | |||
+ | *[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_2560.png|800px]] | ||
+ | |||
+ | ==GCC, avr-libc== | ||
+ | |||
+ | ===Fluxo Ferramentas:=== | ||
+ | |||
+ | [[Arquivo:Avr-gcc.png|800px]] | ||
+ | |||
+ | |||
+ | ===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] | ||
+ | |||
+ | |||
+ | ===Desenvolvimento:=== | ||
+ | * É obrigatório a instalação das ferramentas (Toolchain e o AVR-Libc). | ||
+ | * O aluno pode escolher usar o Eclipse ou montar seu próprio Makefile. | ||
+ | |||
+ | |||
+ | *Ferramentas Necessárias: | ||
+ | **[http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_GCC_Toolchain Instalação do Toolchain e AVR-Libc] | ||
+ | |||
+ | |||
+ | * Instalação do Eclipse: | ||
+ | **[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]]. | ||
+ | ** OU | ||
+ | ** [https://www.eclipse.org/cdt/ Instalação do Eclipse para C/C++] e [http://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download Plugin dentro do Eclipse] | ||
+ | ** E | ||
+ | **[[Eclipse_AVR-LIBC | Iniciando um projeto no Eclipse usando o AVR Plugin]] | ||
+ | |||
+ | |||
+ | *Makefile: | ||
+ | **[http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/ Guia] | ||
+ | **[http://docente.ifsc.edu.br/roberto.matos/ste_public/src/Makefile Exemplo Simples] | ||
+ | **[https://gist.github.com/rynr/72734da4b8c7b962aa65 Exemplo Complexo] | ||
+ | |||
+ | ==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++] | ||
+ | *[https://www.avrfreaks.net/forum/tut-c-bit-manipulation-aka-programming-101?name=PNphpBB2&file=viewtopic&t=37871 Programming 101 - By Eric Weddington] |
Edição das 17h03min de 20 de agosto de 2019
Sistemas Embarcados: Diário de Aula 2019-2
- Professor: Roberto de Matos
- Encontros: 2ª e 4ª às 07:30h
- Atendimento Paralelo: 4ª às 10h e 14h (1h cada)
- Plano de Ensino.
- Cronograma de Aulas: Conteúdo Programado no Portal SIGAA
29/07/2019 – Apresentação
- Apresentação do professor.
- Apresentação da disciplina.
- 2017 Embedded Markets Study
31/07/2019 – Introdução
- Notas de Aula:
05/08/2019 – GPIO
- Notas de Aula:
- Experimento:
- Definição das Duplas:
- Daniel e Anderson
- Ameliza e Natalia
- Guilherme e Marcone
- Allex e Douglas
- Fabiano e Filipe Kuhnen
- Felipe Cardoso e Luiza
- Gustavo e Gabriel
07/08/2019 – Experimento UART
12/08/2019 – Projeto 1: Sensor de Temperatura - Arduino
- Notas de Aula:
Atividade
O objetivo deste experimento é apresentar um exemplo básico de programação de sistema embarcado com microcontrolador. Para isto, será desenvolvido um sensor de temperatura com comunicação serial utilizando a plataforma Arduino.
- Material necessário:
- Arduino Uno;
- Termistor NTC 10KOhm;
- Resistor 10KOhm;
- Matriz de contato;
- Computador com IDE do Arduino instalada.
- Para completar o desafio, utilize o site arduino.cc como referência, e construa um sketch (programa na IDE do Arduino) que, a cada 1 segundo, pisque um LED (veja o LED já na placa do Arduino no pino 13), e leia um valor do sensor de temperatura e escreva, em graus celcius, na tela. Um pseudo-código da sua aplicação seria:
loop() {
ligaLED();
AdquireTemperatura(); // lê do ADC e converte para Celcius
desligaLED();
ImprimeResultado(); // pela serial
dorme1segundo();
}
- Para completar esta atividade, você precisará:
- Montar um circuito com divisor de tensão utilizando o NTC e o resistor para aquisição do sinal através de uma porta analógica do Arduino
- Especificar um modelo (equação) para obter o valor da resistência do NTC a partir do valor de tensão lido no canal analógico do Arduino;
- Utilizar o modelo de Steinhart-Hart para obter a temperatura a partir da resistência;
- Calibrar o seu sistema para temperaturas entre 0 e 50 graus celcius (utilize esta calculadora e a tabela de resistência-temperatura do seu NTC abaixo);
- No programa arduino, implemente duas versões do software: uma utilizando apenas "float" e outra utilizando apenas "int 32-bits" (compare as versões).
- Entregue um relatório curto (1 página), comparando os resultados obtidos em termos de:
- Uso de memória de programa (flash - código-fonte);
- Uso de memória de dados (RAM);
- Tempo necessário para o cálculo (conecte o pino do LED a um osciloscópio - o tempo que o LED fica acesso é o tempo que leva para fazer o cálculo).
- Observações:
- O trabalho deve ser executado em dupla.
- Entrega até 18/08 via Sigaa
14/08/2019 – Projeto 1: Sensor de Temperatura - Arduino (cont.)
- Verificar "β parameter equation":
19/08/2019 – Correção Projeto 1
- Implementado em conjunto a versão long e float.
21/08/2019 – Usando C++
Mudança de nível de abstração
- Arduino Mega --> ATmega2560 (Ex.: I/O Ports)
- Esquemático Arduino Mega
- Esquemático Arduino Mega - CLONE
Fonte: https://www.arduino.cc/en/Hacking/PinMapping2560
ATmega2560: I/O Ports
- Tabela verdade de configuração das portas:
- Endereços registradores de I/O:
GCC, avr-libc
Fluxo Ferramentas:
AVR-LIBC:
Desenvolvimento:
- É obrigatório a instalação das ferramentas (Toolchain e o AVR-Libc).
- O aluno pode escolher usar o Eclipse ou montar seu próprio Makefile.
- Ferramentas Necessárias:
- Instalação do Eclipse:
- Eclipse IDE Neon.2 para Linux 64-bits (última atualização em 24/02/2017) - Mantido pelo Prof. Arliones.
- OU
- Instalação do Eclipse para C/C++ e Plugin dentro do Eclipse
- E
- Iniciando um projeto no Eclipse usando o AVR Plugin
- Makefile:
Prática
- Implemente um programa usando GCC e avr-libc para ligar um led quando um botão for pressionado (exemplo)
- Operação de Bits em C/C++
- Operações Booleanas em C/C++
- Programming 101 - By Eric Weddington