Buscar

Interfaceamento Eletroeletrônico: Interrupções e Memória

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Interfaceamento 
Eletroeletrônico I
Material Teórico
Responsável pelo Conteúdo:
Prof. Esp. Elvis Luiz dos Santos
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Interrupções e Organização da Memória
• Instruções de Interrupção;
• Conectando o Arduino ao Computador;
• Criando o Programa (Sketch);
• Modos de Endereçamento de Memória;
• Instrução para Escrever na Memória Eeprom (EEPROM.write).
• Tratar das interrupções e das linguagens de programação.
OBJETIVO DE APRENDIZADO
Interrupções e Organização
da Memória
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem 
aproveitado e haja maior aplicabilidade na sua 
formação acadêmica e atuação profissional, siga 
algumas recomendações básicas: 
Assim:
Organize seus estudos de maneira que passem a fazer parte 
da sua rotina. Por exemplo, você poderá determinar um dia e 
horário fixos como seu “momento do estudo”;
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
alimentação saudável pode proporcionar melhor aproveitamento do estudo;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos 
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam-
bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua 
interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o 
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e 
de aprendizagem.
Organize seus estudos de maneira que passem a fazer parte 
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Determine um 
horário fixo 
para estudar.
Aproveite as 
indicações 
de Material 
Complementar.
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
Não se esqueça 
de se alimentar 
e de se manter 
hidratado.
Aproveite as 
Conserve seu 
material e local de 
estudos sempre 
organizados.
Procure manter 
contato com seus 
colegas e tutores 
para trocar ideias! 
Isso amplia a 
aprendizagem.
Seja original! 
Nunca plagie 
trabalhos.
UNIDADE Interrupções e Organização da Memória
Instruções de Interrupção 
Imagine que você está desenvolvendo um sistema para uma máquina do tipo 
prensa (Figura 1).
Como sabemos, esse tipo de máquina precisa 
de um sistema de segurança no qual o equipamen-
to só funcione se o operador estiver com as duas 
mãos em dois botões, sistema conhecido como bi-
manual (Figura 2).
Funciona basicamente da seguinte forma: o ma-
terial a ser prensado é colocado no local indicado 
e um sensor indutivo detecta sua presença. 
Isso dá à máquina condições de disparar o pis-
tão, mas, devido ao sistema de segurança, o pistão 
só dispara se o operador estiver com as duas mãos 
nas botoeiras do sistema bimanual.
Ao mesmo tempo, é claro, isso garante que o 
operador não deixe a mão sobre a peça e acione o 
pistão, causando um grave acidente, nem permite, 
por exemplo, que o operador deixe uma botoeira 
acionada e controle apenas a outra, pois o sistema 
só funciona se os dois botões forem pressionados juntos e, ainda, um outro sensor 
do tipo cortina de luz por exemplo, que garanta que, se na descida do pistão, outra 
pessoa ou mesmo o operador coloque por exemplo a mão no caminho do pistão, 
ele pare imediatamente e retorne ao topo do equipamento. 
Bom, até aqui entendemos basicamente como funciona a máquina. Agora, ima-
gine que esse equipamento é controlado por um microcontrolador, que executa 
suas instruções em sequência, ou seja, se o pistão começou a descer, só vai parar 
quando bater no fim de curso, instalado na mesa da máquina, isto é, mesmo que 
o sensor detecte que alguma coisa entrou na frente do pistão, ele vai descer até o 
fim, pois, de certo, o programa só manda ele retornar quando o fim de curso man-
dar um sinal de que foi acionado.
Assim, na programação, deve-
mos utilizar um comando que in-
terrompa a sequência normal do 
programa e rode uma outra rotina 
que mande o pistão voltar ao topo.
Em programação, isso se 
chama interrupção, e é usada 
com frequência na programa-
ção de microcontroladores. 
Figura 1 – Prensa Elétrica 
Hidráulica 15 Ton
Fonte: Divulgação
Figura 2 – Sistema de segurança bimanual
Fonte: Divulgação
8
9
Como funciona o bimanual. Assista ao vídeo disponível em: https://youtu.be/fn5JSo2oD_k.
Ex
pl
or
Cortina de luz: http://bit.ly/2Czr2YY
Ex
pl
or
Quando utilizamos interrupções, devemos tratar o tema em duas etapas:
• Condição de interrupção: é a condição que indica uma interrupção. Ela avisa 
ao programa que é a hora de executar uma tarefa extraordinária. No nosso 
caso, essa condição é que pare o pistão;
• Função a ser executada: em nosso exemplo, quando o sensor indicar que 
algo interrompeu a cortina de luz e entrou na rota do pistão podendo sofrer 
uma acidente, o programa que está instalado no microcontrolador da placa 
eletrônica de controle da máquina deve receber sinal do sensor, paralisar o 
sistema e rodar uma subrotina, que faça com que o pistão funcione no sentido 
contrário e volte ao topo, travando a máquina, para que possa ser verificado 
o que ocorreu .
No Arduino UNO, os pinos que trabalham com interrupção são os pinos 3 e 4, 
conforme pode ser observado na Figura 3, ou ATMEGA 328 pinos 4 e 5, confor-
me Figura 4. 
Figura 3 – Disposição dos pinos do Arduino
Fonte: arduino.cc
9
UNIDADE Interrupções e Organização da Memória
Figura 4 – Disposição dos pinos do ATMEGA328
Fonte: pighixxx.com
Vamos, então, desenvolver programa que demonstre o funcionamento 
da interrupção.
Para testar a Interrupção, vamos conectar os componentes do projeto, conforme 
Figura 4.
Não se esqueça de desligar seu Arduino para montar o circuito. Caso esteja 
usando uma placa real, conecte o LED no pino 13. Observe se ele está correta-
mente posicionado e conectado: o lado com chanfro (catodo) deve estar encostado 
ao GND do Arduino e o lado positivo (Anodo) deve estar conectado a um resistor 
de 150Ω e ao pino 13 do Arduino.
Uma chave deve ser conectada a um resistor de 10KΩ e ao GND e o outro lado 
deve estar conectado ao pino 2, chamado de INT0. Tudo conforme o esquema da 
Figura 4.
Figura 5 – Circuito de testes da Interrupção
Fonte: Acervo do Conteudista
10
11
Conectando o Arduino ao Computador
Após a montagem do circuito, conecte o Arduino ao computador e abra a IDE 
Arduino, escolha qual placa de Arduino você está usando, por meio da aba Fer-
ramentas (tools) e abra o submenu Placa, que no nosso caso, é o Arduino UNO 
(Figura 6).
Selecione, também, a porta serial que seu Arduino está usando. Para isso, clique 
no menu Ferramentas (tools), abra o submenu Porta (Port) e clique na porta que 
seu Arduino está conectado, como neste exemplo, no qual o Arduino está usando 
a porta serial COM3 (Arduino/Genuino Uno)” (Figura 7).
Figura 6 – Seleção do tipo de placa
Fonte: Reprodução
Figura 7 – Seleção da serial da placa
Fonte: Acervo do Conteudista
11
UNIDADE Interrupções e Organização da Memória
Criando o Programa (Sketch)
Vamos, agora, criar o programa e vamos dar a ele o nome de “Test Interrupy”.
Esse programa vai piscar um led, que chamaremos de “Led pistão”, continua-
mente, que representa o pistão da prensa descendo.
Quando o botão de interrupção, que chamaremos de “Cortina de luz” (no caso 
do exemplo, seria o sensor cortina de luz), indicando que algo está na frente do 
pistão, mesmo que o objeto seja retirado, o sistema da cortina continua mandando 
sinal de invasão, como uma botoeira de retenção (Figura 8). 
Se for acionado, o “Led pistão” para de piscar e o Led verde, que chamaremos 
de “Led volta pistão”, fica ligado, só voltando a apagar se o sistema for resetado.
Figura 8 – Botoeira de emergênciaFonte: Divulgação
Programa
Programa de teste de interrupção, o led verde pisca e para quando o botão de 
interrupção é pressionado. 
Então, o led vermelho é ligado, indicando que ocorreu a interrupção.
int LedPistao = 9; 
int LedCortina = 13;
void Interrupt() //comando de interrupção
{
digitalWrite(LedCortina,HIGH); //Liga o LED (HIGH = nível lógico alto)
12
13
digitalWrite(LedPistao, LOW);
delay(5000);
}
//Essa função “setup” roda uma vez quando a placa é ligada ou resetada
void setup() {
pinMode(LedPistao, OUTPUT);//Configura o pino do led (digital) como saída
pinMode(LedCortina, OUTPUT);//Configura o pino do led (digital) como saída
attachInterrupt(0,Interrupt,RISING); //Configurando a interrupção, o zero em 
vermelho indica que o sinal do sensor que //causara a interrupção entrara 
pelo pino 2 INT0, se estivesse ligado no pino 3 seria valor 1 INT1.
}
// Função que se repete infinitamente quando a placa é ligada
void loop() {
digitalWrite(LedPistao,HIGH); 
delay(600);
digitalWrite(LedPistao, LOW);
 delay(600);
}
Modos de Endereçamento de Memória
Quando, no exemplo anterior, escrevemos int LedPistao = 9, estamos atribuin-
do um valor a variável LedPistao, que será armazenado em uma posição de me-
mória aleatória, mas existem ocasiões nas quais precisamos direcionar o local da 
memória, no qual queremos armazenar tal dado, a linguagem C usa o operador de 
atribuição (=) para transferir dados de um local de memória para outro, ou pode-
mos utilizar funções prontas para uso memória EEPROM.
Vamos ver a seguir as funções para gravar e ler a memória EEPROM.
Alguns códigos de exemplo podem ser encontrados na própria IDE Arduino, 
facilitando nosso trabalho.
Para conhecer esses exemplos, vá até:
Menu: Arquivo → Examples → EEPROM. Figura10
13
UNIDADE Interrupções e Organização da Memória
Figura 9 – exemplo de uso da EEPROM
Fonte: Reprodução
Instrução para Escrever na Memória 
Eeprom (EEPROM.write)
A instrução EEPROM.write permite gravar um byte na memória EEPROM. Para 
isso, usamos a função write da seguinte maneira:
EEPROM.write (endereço, valor)
Parâmetros:
• Address: o local a ser gravado, a partir de 0 (int);
• Valor: o valor para gravar de 0 a 255 (byte)
• Retorno: nenhum
No exemplo a seguir, armazenamos os valores lidos da entrada analógica 0, na 
memória EEPROM. 
Esses valores permanecerão na memória EEPROM quando o circuito estiver 
desligado e puder ser lido por outro programa, como no exemplo a seguir:
/*
* EEPROM Read
*
* Reads the value of each byte of the EEPROM and prints it
* to the computer.
* This example code is in the public domain.
*/
#include <EEPROM.h>
14
15
//start reading from the first byte (address 0) of the EEPROM
int address = 0;
byte value;
void setup() {
 //initialize serial and wait for port to open:
 Serial.begin(9600);
 while (!Serial) {
 ;//wait for serial port to connect. Needed for native USB port only
 }
}
void loop() {
 //read a byte from the current address of the EEPROM
 value = EEPROM.read(address);
 Serial.print(address);
 Serial.print(“\t”);
 Serial.print(value, DEC);
 Serial.println();
 /***
 Advance to the next address, when at the end restart at the beginning.
Larger AVR processors have larger EEPROM sizes, E.g:
 - Arduino Duemilanove: 512b EEPROM storage.
 - Arduino Uno: 1kb EEPROM storage.
 - Arduino Mega: 4kb EEPROM storage.
 Rather than hard-coding the length, you should use the pre-provided 
 length function.
 This will make your code portable to all AVR processors.
 ***/
 address = address + 1;
 if (address == EEPROM.length()) {
 address = 0;
15
UNIDADE Interrupções e Organização da Memória
 }
 /***
 As the EEPROM sizes are powers of two, wrapping (preventing 
 overflow) of an
 EEPROM address is also doable by a bitwise and of the length - 1.
 ++address &= EEPROM.length() - 1;
 ***/
 delay (500);
}
Como podemos observar, quando necessitamos criar uma interface para um 
sistema de controle, vários aspectos devem ser observados.
Antes de iniciar seu projeto, pense bastante na aplicação, para que possa utilizar 
os recursos adequados, como interrupção e armazenamento de dados em memória.
Na última Unidade, criaremos um projeto completo, no qual essas informações 
serão muito úteis.
Sobre endereçamento, assista ao vídeo disponível em: https://youtu.be/PSw6O64sye0.
Ex
pl
or
16
17
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Livros
Some Assembly Required: Assembly Language Programming with the AVR Microcontrollers
MARGUSH, T. S. Some assembly required: assembly language programming with 
the AVR microcontrollers. Nova Iorque: CRC Press, 2011.
The AVR Microcontroller and Embedded System: Using Assembly and C
MAZIDI, M. A.; NAIMI S.; NAIMI S. The avr microcontroller and embedded 
system: using assembly and C. Nova Jersei: Prentice Hall, 2011.
AVR e Arduino Técnicas de Projeto
LIMA, C. B. D; VILLACA, M. V. M. AVR e arduino técnicas de projeto. Florianopolis: 
[s.n], 2012.
Microcontroladores e Microprocessadores
GONÇALVES DE CARVALHO FEITOSA PERIM, J.; NASCIMENTO NATALINE R. 
Microcontroladores e microprocessadores. Londrina: Educacional S.A. 2017.
17
UNIDADE Interrupções e Organização da Memória
Referências
SOUZA, D. J. Desbravando o PIC. 9.ed. São Paulo: Erica, 2005.
ZANCO, W. S. Microcomputadores PIC – Técnicas de Software e de Hardware 
para Projetos de Circuitos Eletrônicos. São Paulo: Erica, 2006.
ZANCO, W. S. Microcomputadores PIC18 com linguagem C. Uma abordagem 
prática objetiva. São Paulo: Erica, 2006 (E-Book).
18