Вы находитесь на странице: 1из 20

Universidade Federal Fluminense

Engenharia Elétrica e de Telecomunicações


Introdução em Sistemas Embarcados
2º Semestre / 2017

Profs.:Daniel Dias
Felipe Sass
Sistemas Embarcados
 Muitas aplicações exigem um controlador.

Introdução em Sistemas Embarcados


Sistemas Embarcados
 Um microcontrolador (µC) é uma solução
compacta, e pode ser embarcado em muitos
sistemas que necessitam de controle.

Introdução em Sistemas Embarcados


Recursos Básicos de um µC
 Entradas e Saídas Digitais
 USART
 Conversores A/D
 Interrupções
 PWM
 Gerenciamento de Dados
 ...

Introdução em Sistemas Embarcados


Estrutura Interna do ATmega328P

Introdução em Sistemas Embarcados


Pinos do ATmega328P

Introdução em Sistemas Embarcados


Circuito Básico para Funcionar
ATmega328P Oscilador

Introdução em Sistemas Embarcados


Como gravar meu código no µC?

Introdução em Sistemas Embarcados


Qual editor/compilador escolher?

...

Introdução em Sistemas Embarcados


Qual gravador comprar?

Introdução em Sistemas Embarcados


Acho que vou desistir...

 Espere, é hora de falar do Arduino...

Introdução em Sistemas Embarcados


O Arduino
 “Arduino é uma plataforma eletrônica de código
aberto baseada em hardware e software fáceis de
usar. É destinado a qualquer pessoa que faça
projetos interativos.”
 Neste curso, pularemos algumas etapas do
aprendizado de µC utilizando o Arduino Uno. Isso
vai deixar as aulas mais interessantes!
IMPORTANTE: Alguns conceitos que estamos deixando de lado agora,
serão estudados ao longo do curso, de acordo com nossas necessidades.

Introdução em Sistemas Embarcados


A Placa do Arduino

Introdução em Sistemas Embarcados


Programação no Arduino
 O Arduino possui uma
linguagem de programação
própria.

 No Arduino, os pinos do
ATmega328P recebem
outros nomes. Exemplo:
PB0 passou a ser D8.

Introdução em Sistemas Embarcados


Um primeiro programa... “Blink”

void setup() {
pinMode(12, OUTPUT);
}

void loop() {
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
delay(1000);
}

Introdução em Sistemas Embarcados


Qual a velocidade do Arduino?

void setup() {
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
}

Introdução em Sistemas Embarcados


A IDE do Arduino aceita C!

#include <avr/io.h>

int main(void)
{
DDRB=(1<<5);
while (1)
{
PORTB |= 0x20;
PORTB &= ~(0x20);
}
}

Introdução em Sistemas Embarcados


Curiosidade:
Veja o código C por trás da função digitalWrite!
void digitalWrite(uint8_t pin, uint8_t val)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *out;
if (port == NOT_A_PIN) return;
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
out = portOutputRegister(port);
uint8_t oldSREG = SREG;
cli();
if (val == LOW) {
*out &= ~bit;
} else {
*out |= bit;
}
SREG = oldSREG;
}

Introdução em Sistemas Embarcados


Um resumo desta comparação:
Tamanho do
Linguagem Frequência
Código Binário
Arduino 734 bytes 144,6 kHz
C 142 bytes 2,667 MHz

 O ATmega328P possui apenas 32 kB de memória


programável.
 Por estes motivos, este curso terá seu foco na
linguagem C!

Introdução em Sistemas Embarcados


Vamos começar?

Introdução em Sistemas Embarcados

Вам также может понравиться