Você está na página 1de 10

Universidade Estadual Paulista Jlio de Mesquita Filho

Campus Experimental de Sorocaba

Arquitetura Arduino

Rodrigo Daniel da Silva 1110314


Tiago Carvalho 122270347

Sumrio
1.

Arquitetura Arduino...................................................................................................1
1.1.

Introduo...........................................................................................................1

1.2.

Arquitetura..........................................................................................................1

1.3.

Microcontrolador ATmega328P..........................................................................4

2.

Interrupo na famlia Arduino..................................................................................5

3.

Bibliografia................................................................................................................7

1. Arquitetura Arduino
1.1. Introduo
O Arduino uma plataforma eletrnica open-source baseada em hardware e
software de simples utilizao. Seu principal objetivo a utilizao universal da
plataforma com o intuito de desenvolvimento de projetos onde h a necessidade de
controle de acionamentos.
Atualmente existem vrios modelos de hardware e software. Como o objetivo desse
trabalho a apresentao da arquitetura e principalmente a utilizao da interrupo na
famlia Arduino simplificaremos o trabalho demostrando apenas a aplicao
denominada Arduino Uno.
1.2. Arquitetura
O Arduino Uno uma placa que utiliza o microcontrolador ATmega328. Possui 14
pinos de entrada e sada de dados (onde 6 podem ser utilizados como sadas PWM), 6
entradas analgicas, um cristal de 16MHz de frequncia de oscilao, conexo USB,
interruptor de energia, um cabealho ICSP (In-Circuit Serial Programming) e um boto
de reinicializao. Ou seja, possui todo o suporte que o microcontrolador necessita
podendo ser conectado de forma simples a um computador atravs da conexo USB.
A verso Uno difere das demais porque no utiliza o chip FTDI USB para conexo
serial UBS. Para isso, utiliza-se do chip ATmega16U2 programado como conversor
USB-serial.
O Arduino Uno pode ser programado com o software da Arduino. O
microcontrolador ATmega328 do Arduino Uno j possui um programa de inicializao
para o Arduino pr-carregado que permite o upload dos cdigos sem a necessidade de
utilizar um programa para hardware externo. A comunicao se baseia no protocolo
STK500.
Tambm possvel ignorar o programa de inicializao do microcontrolador atravs
do cabealho ICSP utilizando o Arduino ISP ou similar

Resumindo:
Microcontrolador ....................................................ATemga328
Tenso de Operao ................................................5V
Tenso de Entrada ..................................................7-12V
Limite de Tenso de Entrada ..................................6-20V
Pinos E/S ................................................................14 (6 com sada PWM)
Entradas Analgicas ...............................................6
Corrente contnua por E/S ......................................40mA
Corrente contnua para pinos de 3.3V ....................50mA
Memria de dados ..................................................32KB (0.5KB inicializao sist.)
SRAM .....................................................................2KB
EEPROM ................................................................1KB
Frequncia do Cristal ..............................................16MHz
Comprimento ..........................................................68.6mm
Largura ...................................................................53.4 mm
Peso ........................................................................25g

Figura 1 Esquema do Arduino Uno

1.3. Microcontrolador ATmega328P


O chip ATmega328P um microcontrolador de 8 bits baseado na tecnologia CMOS
com arquitetura RISC (Reduced Instruction Set Computer); algumas das suas principais
caractersticas so: 4K/8K bytes disponvel para o sistema na memria programvel
com leitura e escrita disponvel, 1Kbytes EEPROM, 2Kbytes SRAM, 23 E/S para
propsito geral, 32 registradores de propsito geral, 3 Timers/Counters com modo
comparativo, interrupes internas e externas, uma serial programvel USART, um
interface serial de 2 bytes, uma porta serial SPI.

Figura 2 Esquema do Microcontrolador ATmega328P

2. Interrupo na famlia Arduino


Existem basicamente dois tipos de interrupes. O primeiro caso acionado atravs
de um evento que habilita a Flag de interrupes. Para esse tipo de interrupo o PC
apontado para a posio atual do vetor de interrupes a fim de executar a rotina que
manipula a interrupo e o hardware zera a flag correspondente da interrupo. Flags de
interrupes podem ser zeradas tambm atravs de programa. Se uma situao de
interrupo ocorre enquanto o bit que habilita a interrupo estiver zerado, a Flag de
interrupo ser habilitada e memorizada at que a interrupo seja habilitada ou a flag
zerada por software. Igualmente, se uma condio de interrupo ocorre enquanto o bit
de interrupo global estiver zerado a flag de interrupo correspondente ser habilitada
e memorizada at que o bit de interrupo global seja habilitado, e assim a interrupo
ser executada conforme sua ordem de prioridade.
O segundo tipo de interrupo ser executado sempre que uma condio de
interrupo acontecer. No necessariamente, esses casos possuem flags. Se a condio
de interrupo termina antes da interrupo ser habilitada a interrupo no ser
executada.
Note que o registrador de status no armazenado automaticamente quando uma
rotina de interrupo executadas, essa situao deve ser pensada pelo software.
Durante chamadas de interrupes ou sub-rotinas (atravs das instrues CALL,
ICALL, RCALL), o endereo de retorno do PC (Program Counter) armazenado na
Pilha (2 bytes). A pilha alocada na SRAM e consequentemente o tamanho da pilha e
limitado apenas pelo tamanho da SRAM e seu uso. Todos os programas devem
inicializar o SP (Stack Pointer) na rotina de reinicializao (antes da execuo de subrotinas ou interrupes).
Normalmente o SP decrementado de 2bytes nas chamadas e incrementado de 2
bytes no retorno das interrupes ou sub-rotinas.
Um modulo flexvel de interrupes tem seu registrador de controle no espao
reservado para as E/S com um bit adicional para interrupo no registrador de status.
Todas as interrupes possuem um vetor de interrupes separado na tabela de vetores
de interrupo. As interrupes possuem prioridade de acordo com sua posio no vetor
de interrupes. Quanto menor o endereo da interrupo no vetor maior a prioridade
da interrupo. O registrador de status no armazenado automaticamente quando uma

interrupo solicitada ou finalizada, essa operao deve ser realizada pelo


programador.
O Bit 7 ou I-bit do registrador de status o responsvel por habilitar (1) ou
desabilitar (0) as interrupes. O controle de interrupes individuais manipulado
atravs de outro registrador. Se o habilitador global de interrupes estiver desabilitado
nenhuma das interrupes podem ser habilitadas individualmente. O Bit 7 zerado por
hardware aps a ocorrncia de uma interrupo, e habilitado pela instruo RETI para
habilitar interrupes subsequentes. O I-bit tambm pode ser habilitado/desabilitado por
software atravs das instrues SEI e CLI.

Figura 3 Registrador de Status

Figura 4 Exemplos de cdigos de interrupo utilizando as instrues CLI ou SEI.

3. Bibliografia
[1] Arduino Uno
Disponvel em http://www.arduino.cc/en/Main/ArduinoBoardUno Acesso 05/06/2015
[2] Datasheet do microcontrolador ATmega328P
Disponvel em http://www.atmel.com/Images/doc8161.pdf. Acesso 05/06/2015