Você está na página 1de 29

INSTITUTO FEDERAL DE SANTA CATARINA

DEPARTAMENTO DE ELETRNICA

Programao C para
Arduino

Prof. Charles Borges de Lima.


Maio/2013 TM
1 1
SUMRIO

Introduo Trabalho com Bits


O Arduino Uno Produzindo um Cdigo
- O ATmega328 Eficiente

Programao Gravao do Firmware

- Assembly Concluses

- Linguagem C Referncias
Bibliogrficas
- IDE do Arduino
Registradores do
ATmega328
TM
2 2
INTRODUO

Arduino uma plataforma eletrnica de


prototipagem baseada em hardware livre e
software, fceis de usar e flexveis.
Possui um IDE que permite a programao de
forma fcil de um microcontrolador AVR. Todavia,
no eficiente e no permite o desenvolvimento
profissional de projetos.
Para um projeto profissional necessrio o uso
de ferramentas adequadas de programao e do
conhecimento tcnico do microcontrolador
empregado.

A IDE do Arduino no destinada ao desenvolvimento profissional.


TM
3 3
O ARDUINO UNO

Como estruturado o Hardware:


0-5 (azul) - pinos de entradas analgicas.
Entradas para o ADC, podem ser usados como I/O
digital.

0-13 (verde) - pinos de I/O digitais . Pinos 0 e 1


tambm so utilizados para a comunicao serial.

AREF(laranja) - referncia analgica do ADC.

S1 (azul) - boto de inicializao.

ICSP (ciano) - conector de gravao In-Circuit.

USB (amarelo) - usado para gravar o Arduino ou


energiz-lo.

X1 (rosa) - fonte de alimentao externa


(9-12VDC, aps diodo estar tambm em Vin).

20 Pinos de I/O
Existem variaes no layout da placa conforme o modelo.
TM
4 4
O ATmega328

O microcontrolador do Arduino Uno o ATmega328 (AVR).


TM
5 5
PINOS DO ATmega328 NO ARDUINO

Informaes fundamentais para a programao. TM


6 6
PROGRAMAO ASSEMBLY

Assembly
Todo microcontrolador possui um conjunto prprio de instrues
representadas por mnemnicos (assembly) que aps o
desenvolvimento do programa so convertidos nos zeros e uns
lgicos interpretveis pelo microprocessador.

O assembly uma linguagem de baixo nvel e permite obter o


mximo desempenho de um microcontrolador, gerando o menor
nmero de bytes de programa combinados a uma maior velocidade
de processamento.

Todavia, o assembly s ser eficiente se o programa estiver bem


estruturado e empregar algoritmos adequados.

Programar em assembly exige muito esforo de programao.

Assembly a linguagem da CPU do microcontrolador. TM


7 7
EXEMPLO

TM
8 8
EXEMPLO

30 Bytes
15 instrues

Piscando um LED ligado ao pino PB5 (pino 13 no Arduino).


TM
9 9
PROGRAMAO C

Linguagem C

Com a evoluo tecnolgica (compiladores), o


assembly foi quase que totalmente substitudo pela
linguagem C.

As vantagens do uso do C so numerosas:

Reduo do tempo de desenvolvimento.


O reuso do cdigo facilitado.
Facilidade de manuteno.
Portabilidade.

Os compiladores convertem o C para o Assembly antes da gerao do cdigo de mquina.10


TM 10
PROGRAMAO C

O problema de desenvolver o cdigo em C que o


mesmo pode consumir muita memria e reduzir a
velocidade de processamento. Os compiladores tentam
traduzir da melhor forma o cdigo para o assembly
(antes de se tornarem cdigo de mquina), mas esse
processo no consegue o mesmo desempenho de um
cdigo escrito exclusivamente em assembly.

Como os compiladores C so eficientes para a


arquitetura do AVR, a programao dos
microcontroladores ATmega feita em C. S existe a
necessidade de se programar puramente em assembly
em casos crticos.
TM
11 11
EXEMPLO

216 Bytes
Otimizao -Os

Usando cpl_bit(PORTB,LED) resultam 202 bytes. TM


12 12
IDE DO ARDUINO (Wiring)

30 bytes Assembly
216 bytes C
1084 bytes IDE Arduino

Linguagem prpria baseada em C e C++. TM


13 13
REGISTRADORES DO ATmega328

Os registradores de I/O so o painel de controle do


microcontrolador, pois todas as configuraes de trabalho,
incluindo acesso s entradas e sadas, se encontram
nessa parte da memria.

Total de 87 Registradores
Painel de Controle. TM
14 14
REGISTRADORES DOS PORTs

TM
15 15
Exemplo

DDRD = 0b00000100;

DDRD | = 1<< PC2;

PORTD = 0b11111011;

set_bit(PORTD, 2);
clr_bit(PORTD, 2);

tst_bit(PIND, 7);

UCSR0B = 0x00; //desabilita RXD e TXD TM


16 16
TRABALHO COM BITS

O trabalho com bits fundamental para a programao de um


microcontrolador. Assim, compreender como podem ser
realizadas operaes com bits primordial para uma
programao eficiente.

Exemplo:

TM
17 17
Ativa Bit

Exemplo:

TM
18 18
Limpa Bit

Exemplo:

TM
19 19
Complementa Bit

Exemplo:

TM
20 20
Testa Bit

Exemplo:

TM
21 21
Exemplo

TM
22 22
PRODUZINDO UM CDIGO EFICIENTE

Compile com a mxima otimizao.


Use variveis locais sempre que possvel.
Use o menor tipo de dado possvel (8 bits), unsigned se aplicvel.
Use do{ } while(expresso) se aplicvel.
Use laos com contadores decrescentes e pr-decrementados, se
possvel.
Use macros ao invs de funes para tarefas menores que 2-3 linhas
de cdigo em assembly.
Evite chamar funes dentro de interrupes.
Se possvel junte vrias funes em um mdulo (biblioteca), para
aumentar o reuso do cdigo.
Todas as constantes e literais devem ser colocados na memria flash.

Alterar compilar, alterar compilar, comparar. TM


23 23
Exemplo sem ponto flutuante

unsigned int (16 bits)

Evitar o uso de Ponto Flutuante. TM


24 24
GRAVAO DO FIRMWARE

Gravador
USBtiny/USBasp
ou diretamente
pelo Arduino
(conversor
serial/USB com
um controlador
com Bootloader).

avrdude.exe - GUI TM
25 25
GRAVAO DO FIRMWARE

avrdude.exe AVR8 Burn-O-Mat TM


26 26
CONCLUSO

O Arduino e seus Shields permitem um prototipao rpida, dado


o conjunto de funes e bibliotecas disponveis. fcil de
programar.

Todavia, a IDE do Arduino muito limitada e inadequada ao


desenvolvimento profissional. O cdigo no otimizado e no
existem ferramentas de depurao.

O desenvolvimento profissional exige o conhecimento do


microcontrolador e da programao C.

Cdigos eficientes so resultantes de bons algoritmos,


produzindo maior densidade de cdigo (funcionalidade/bytes).
fundamental conhecer a arquitetura interna do microcontrolador
para desenvolver os melhores programas.

TM
27 27
REFERNCIAS BIBLIOGRAFICAS

LIMA, C. B.; VILLAA, M.V. M. AVR e Arduino: Tcnicas de Projeto.


2. ed. Edio dos Autores, Florianpolis, 2012.
GANSSLE, Jack. The Firmware Handbook. 1 ed. Elsevier, United
Kingdom, 2004.
ATmega48/88/168/328/A/PA/P: Microcontroladores AVR (Manual do
fabricante).
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit
AVR Microcontrollers (Application Note).
http://atmel.com/
http://www.avrfreaks.net/
http://arduino.cc/
http://fritzing.org/
http://borgescorporation.blogspot.com.br/

A vida dura pra quem mole! TM


28 28
MUITO OBRIGADO
PELA ATENO!

borgescorp@gmail.com
Mars Robot Curiosity is Powered by Arduino ... TM
29 29

Você também pode gostar