Escolar Documentos
Profissional Documentos
Cultura Documentos
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 1/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Objetivos
Módulo 1 Módulo 2
Módulo 3 Módulo 4
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 2/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 3/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
1 - Sistemas embarcados
Ao final deste módulo, você será capaz de distinguir as características básicas dos sistemas
embarcados e a sua evolução.
Visão geral
Um sistema é um arranjo em que todos os seus componentes funcionam de
acordo com as regras específicas que foram definidas. Assim, o sistema
embarcado pode ser descrito como uma maneira de executar ou organizar uma
ou várias tarefas de acordo com um conjunto de regras, uma associação em que
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 4/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Software
Um conjunto de instruções para realizar tarefas específicas e descrever todos os
aspectos funcionais que não se referem aos componentes físicos (o hardware).
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 5/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 6/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Podemos dizer que para cada sistema embarcado existe uma visão conceitual
ou modelo de controle do sistema, ou seja, uma abstração da funcionalidade do
sistema que consiste em um conjunto de objetos e interações entre eles. A
seguir apresentamos dois modelos de controle de sistema:
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 7/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
FPGA
Um FPGA (Field Programmable Gate Array) ou “arranjo de portas programáveis em
campo” é um circuito integrado que pode ser configurado por um projetista após a
fabricação (programável em campo). Sua configuração é especificada usando uma
linguagem de descrição de hardware (HDL). Eles contêm blocos lógicos
programáveis (como AND e OR) e uma hierarquia de interconexões reconfiguráveis
que conectam os blocos. Esses blocos também podem conter elementos de
memória, como flip-flops.
Microprocessadores e
microcontroladores surgiram mais ou
menos na mesma época. Entre 1970 e
1971, quando a Intel estava
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 8/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 9/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Atenção
O computador pessoal destaca-se como uma das aplicações mais importantes e
úteis dos sistemas baseados em microprocessadores.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 10/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Sistema baseado em microcontrolador.
CPU
É a unidade central de
processamento, responsável por
executar o programa armazenado e
gerenciar os periféricos. Ela busca
instruções na memória, os códigos de
operação (opcodes), uma por uma, as
interpreta e executa alguma operação
para obter o resultado. Os programas
Unidade central de processamento.
consistem em uma coleção desses
opcodes misturados com dados
numéricos.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 11/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Registradores expand_more
ALU expand_more
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 12/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Decodificador expand_more
Tem por objetivo selecionar qual dos dispositivos externos (ou locais de
memória) tem permissão para usar o barramento de dados. Lembre-se
de que cada fio do barramento de dados é apenas uma condução
simples e só é capaz de transmitir um bit de dados por vez. Se, por
exemplo, dois dispositivos tentarem gravar no barramento de dados ao
mesmo tempo, seus sinais ficarão confusos e perdidos. Em sistemas
simples, a CPU sozinha controla o barramento de endereço.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 13/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Memórias
Podemos dividir as memórias em dois tipos:
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 14/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
E/S serial
As comunicações seriais exigem que
o remetente envie dados de 1 bit por
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 15/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Saiba mais
A transmissão de dados seriais é mais barata do que a transmissão paralela,
pois há menos condutores envolvidos.
Temporizadores e contadores
Exemplo
Um contador de 8 bits pode contar apenas até 255 decimais; com mais uma
entrada de período ele transborda e reverte seu valor para zero.
ADCs e DACs
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 16/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Exemplo
Consideremos um ADC de 10 bits que opera com faixa do sinal de entrada de 0 a
5V. O ADC, por comando da CPU, tira um instantâneo (amostra e espera) da
entrada analógica e, nesse caso, usa uma aproximação sucessiva para mapear
esse sinal para um número digital proporcional. O programa monitora o estado
do sinal de “conversão concluída” em um bit de um registrador específico.
Quando a conversão é concluída, o resultado de 10 bits convertido pode ser lido
em um registrador.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 17/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Representação de sinal contínuo em valores discretos com 2 e 3 bits.
Exemplo
Para um ADC de 10 bits, a representação do sinal de entrada terá 1024 (210)
valores discretos. Se esse ADC trabalha com uma tensão de referência de 5V, a
resolução que ele possui é de 5/1024, aproximadamente 4,88mV (10(−3)V ). Ou
seja, os valores binários resultantes da conversão do ADC representam múltiplos
de 4,88mV. Dessa forma, quanto maior o número de bits de um ADC, maior é a
resolução da representação binária do valor de entrada e mais fiel é a
representação digital do valor contínuo de entrada.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 18/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
modulação por largura de pulso (PWM). A saída pulsada pode ser filtrada para
criar um sinal analógico contínuo.
Controle de interrupções
As interrupções são sinais que fazem
com que a CPU suspenda sua
atividade atual e execute alguma outra
tarefa. Os sinais de interrupção são
produzidos por dispositivos de
hardware que requerem atenção
urgente. O modem, a impressora, o
mouse e o teclado são exemplos de
O modem é um exemplo de dispositivo que pode
dispositivos que podem solicitar enviar uma solicitação de interrupção.
atenção urgente.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 19/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Exemplo
Em um sistema automotivo, os sistemas de telemetria, frenagem e
conectividade podem trabalhar juntos para enviar dados do veículo ao fabricante,
ao proprietário da frota ou até mesmo a um sistema de direção autônomo. Esses
sistemas automotivos embarcados, agora conectados uns aos outros, precisam
de contramedidas de segurança maiores do que quando estavam isolados.
Como muitas das principais violações de dados recentes demonstraram, um
sistema pode fornecer aos hackers o caminho para ocasionar danos em larga
escala.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 20/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Hardware
Software
Comentário
Todos esses requisitos tornam o domínio das ferramentas de programação para
sistemas embarcados algo essencial, incluindo os ambientes de programação
com a linguagem C, as técnicas para depuração de erros nos programas
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 21/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
As características de um sistema
video_library embarcado
No vídeo a seguir, abordamos as características de um sistema embarcado,
apresentando sua evolução e os componentes que o integram.
Questão 1
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 22/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
esse sistema.
A I e III.
B II e III.
C I e II.
D Somente a I.
E Somente a III.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 23/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Questão 2
PORQUE
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 24/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 25/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 26/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 27/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Visual Basic.
Podemos definir IDE como um software para construir aplicativos que combina
ferramentas comuns de desenvolvedor em uma única interface gráfica de
usuário (GUI).
Editor
Compilador
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 28/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Montador
Depurador
Bibliotecas
Outro conceito indispensável quando falamos dos elementos que formam um
IDE é o das bibliotecas. Embora não sejam uma ferramenta que se integra em
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 29/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Saiba mais
Como acontece com a maioria dos aspectos da programação embarcada, as
bibliotecas apresentam mais desafios e opções para os desenvolvedores. O fato
de cada sistema embarcado ser diferente é frequentemente citado como uma
razão para grande parte da complexidade do desenvolvimento de software
embarcado. O uso de bibliotecas reflete isso. Além de obter uma biblioteca certa
para a família de dispositivos alvo e o compilador escolhido, pode haver uma
ampla seleção de outras variações: especificações de membros da família de
chips, endereçamento relativo de registro, otimização de tamanho/velocidade,
dentre outras.
settings_applications pending_actions
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 30/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
school pattern
Aprendizagem contínua Padronização
Manter-se atualizado e informado é O IDE padroniza o processo de
outro benefício. Por exemplo, os desenvolvimento, o que ajuda os
tópicos de ajuda do IDE são desenvolvedores a trabalharem juntos
constantemente atualizados, bem com mais facilidade e ajuda os novos
como novos exemplos, modelos de contratados a trabalhar mais
projeto etc. rapidamente.
Atenção
Keil expand_more
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 32/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
IAR expand_more
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 33/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 34/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
O Arduino IDE é muito leve e escrito em Java, desenvolvido para uso com
a popular série de plataformas Arduino. Os programas são escritos em
esboços, os sketches. Ele suporta C e C ++, e uma das maiores
vantagens desse IDE é a enorme quantidade de código-fonte aberto
disponível para todos pela grande comunidade, o que significa que alguns
pequenos projetos podem ser escritos em questão de minutos. O Arduino
IDE pode ser usado para desenvolver código para todos os
microcontroladores da série ATMEGA AVR, que compõem as placas da
plataforma Arduino. É muito importante observar que o IDE do Arduino
normalmente depende da programação dos microcontroladores por meio
da interface UART para um carregador de inicialização pré-carregado. É
possível programar esse bootloader usando uma variedade de
programadores. Diversos outros dispositivos possuem integração com o
Arduino IDE, incluindo os modelos ESP8266 e ESP32, muito utilizados em
aplicações de Internet da Coisas (IoT).
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 35/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 36/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 37/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html#
i bl i li d ódi E tã 38/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
quaisquer problemas sinalizados em seu código. Então,
construa-o novamente.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 39/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 40/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html#
bi t d d d d l 41/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
reabrir o menu, a entrada que desaparece deve ser da placa
Arduino. Reconecte a placa e selecione essa porta serial.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 42/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Questão 1
Qual ou quais dos fatores citados são características dos IDEs que atuam no
aumento da produtividade?
A I e II.
B I e III.
C II e III.
D Somente a I.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 43/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
E Somente a II.
Questão 2
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 44/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
E Keil e IAR.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 45/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Rastreando bugs.
O que é um depurador
Os depuradores (debuggers) ajudam os programadores a avaliar e corrigir seus
programas. Vejamos algumas das características do funcionamento do
depurador.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 47/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
settings_applications find_in_page
Controle de execução Análise em tempo real
É a capacidade de iniciar, parar, Segue o fluxo de código com o
verificar e atuar no microcontrolador e rastreamento das variáveis em tempo
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 49/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
na memória. real.
Método de impressão
Usando instruções
Usando LEDs
Outra forma para esse método é, por exemplo, com LEDs ligados às
portas para exibir a saída de estados, que podem ser usados para a saída
de depuração durante a fase de testes. Por meio deles, o desenvolvedor
visualiza o fluxo do programa, indicando se o programa atingiu, e em que
ordem, determinadas funções ou endereços de memória.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 51/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 52/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 53/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 54/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Teste de integração
O teste de integração, às vezes chamado de teste de integração de sistema,
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 55/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 56/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
check_circle_outline published_withe_chang
done_all
Teste de Casos de teste Testar, testar e
unidade sempre testar
primeiro Escrever casos de teste Testar o quanto antes e
para cada nova com frequência para
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 57/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
description manage_search
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 58/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 59/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Questão 1
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 60/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
A I e III.
B II e III.
C I e II.
D Somente a II.
E Somente a I.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 61/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Questão 2
D Depuração remota.
E Teste de integração.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 63/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Ao final deste módulo, você será capaz de formular testes para projeto de sistemas embarcados sem
usar um destino físico.
Uso de simuladores
Uma maneira de lidar com os diversos desafios inerentes à dependência de
laboratórios físicos para desenvolvimento e teste de sistemas embarcados é
usar software para simular a funcionalidade do hardware e do sistema. Usar um
simulador de sistema embarcado permite que as equipes adotem uma
abordagem diferente e mais eficiente, separando o processo de desenvolvimento
de software da disponibilidade de hardware. Existem muitos simuladores para
diferentes famílias de microcontroladores, poucos acessíveis gratuitamente.
Veremos dois simuladores gratuitos:
Tinkercad PICSimLab
Para a plataforma Arduino. Para microcontroladores da linha PIC.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 64/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Montagem
Para realizar uma montagem com Arduino no Tinkercad, ache a placa Arduino
Uno e coloque na área central da página.
power power
Terra Pino 13
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 65/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Atenção
O componente entre o LED e o pino 13 é um resistor, que ajuda a limitar a
corrente para evitar que o LED se queime. Sem ele, você receberá um aviso de
que o LED poderá queimar em breve. As listras coloridas identificam o valor do
resistor e, para este circuito, qualquer valor de 100 ohms a 1000 ohms
funcionará corretamente.
O LED é um diodo emissor de luz (Light Emitting Diode) que possui conexões
que o tornam diferente de uma lâmpada normal. Um LED tem uma conexão
chamada catodo e outra chamada de anodo. O anodo é maior do que o catodo.
Essa distinção é importante porque o anodo deve ser conectado à extremidade
positiva de um circuito elétrico. A corrente flui em apenas uma direção através
de um LED.
Arduino No Tinkercad
content_copy
1
2 void setup()
3 {
4 pinMode(13, OUTPUT); // Configura o pino 13 como saída
5 }
6 void loop()
7 {
8 digitalWrite(13, HIGH); // Configura o pino 13 com
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 66/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
setup()
loop()
No Arduino Uno, os 14 pinos digitais podem ser utilizados como uma entrada ou
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 67/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Os pinos operam a 5V. Há um LED integrado ao pino digital 13. Quando esse pino
está no valor HIGH, o LED está aceso, quando o pino está em LOW, o LED está
apagado. Clicando em Iniciar Simulação, será possível observar os dois LEDs, o
da placa e o ligado externamente, piscando em intervalos de um segundo.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 68/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Protoboard
Um protoboard é um pedaço de plástico que tem vários orifícios. Eles são usados
para conter diferentes componentes.O protoboard tem uma grade de trinta por dez
orifícios na área principal. As linhas são numeradas de 1 a 30 e as colunas são
rotuladas com as letras de A a J. As bordas da protoboard contêm duas colunas
com o mesmo número de linhas. Essas colunas possuem símbolos negativos e
positivos. Essas colunas e orifícios são usados para a fonte de energia. Os
componentes no centro do protoboard podem se ligar nessas colunas para receber
alimentação de energia.
Além dos LEDs, os testes mais simples com circuitos no Tinkercad podem
utilizar:
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 69/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Potenciômetros expand_more
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 70/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Simulador PICSimLab
O PICSimLab é um acrônimo de PIC Simulator Laboratory, um simulador
desenvolvido pelo professor Luis Claudio Gambôa Lopes, do CEFET/MG.
Inicialmente suportando apenas uma placa de desenvolvimento com o modelo
PIC16F628A, a versão atual pode simular 5 placas com vários periféricos e
vários microcontroladores PIC, como o PIC18F4550. Essa versão integra
também uma placa Arduino Uno.
Para gerar o arquivo executável em uma IDE para PIC, como a MPLAB X IDE,
precisamos usar um compilador integrado, que para PIC pode ser CCS C. A
escolha do compilador irá definir as bibliotecas de funções e diretivas para
configurar o microcontrolador PIC. Mesmo usando a mesma linguagem C,
diferentes compiladores usarão a sua própria biblioteca de funções e diretivas.
Portanto, é importante entender os passos para gerar um arquivo executável
para PIC com essas ferramentas.
Atenção
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 71/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
O PICSimLab não roda em página web e tem a vantagem de exigir o uso das
mesmas ferramentas profissionais que seriam usadas no desenvolvimento de
um projeto com microcontroladores PIC. Ele necessita ser carregado com o
mesmo arquivo executável com extensão .hex, que você usaria para carregar em
uma placa real com microcontrolador PIC. Desse modo, antes de usar o
simulador PICSimLab, você precisa programar o código em uma IDE para PIC,
usando um compilador profissional, como faria para desenvolver projetos para o
mercado.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html#
Fil d i i f t j t 72/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Files, podemos criar arquivos-fonte para o nosso projeto.
Clicando com o botão direito nessa pasta, deve-se escolher
C Source File. Será solicitado um nome para esse arquivo,
que será o arquivo-fonte do projeto.
A seguir, temos um exemplo de código simples que pode ser usado no último
passo:
Linguagem C
content_copy
1
2 #include <16F628A.h>
3 #fuses XT
4 #use delay( clock=4MHz )
5
6 void main () {
7 while (1) {
8 output_high(PIN_B0);
9 delay_ms(1000);
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 73/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
10 output_low(PIN_B0);
11 delay_ms(1000);
12 }
13 }
Programa teste.
No esquema, além do LED ligado ao pino 6, temos o cristal oscilador (XT) que
será usado para sincronizar a execução do programa. Vamos examinar as
instruções do programa:
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 74/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
#fuses XT expand_more
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 75/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
delay_ms(1000) expand_more
Clicando no botão para compilar no MPLAB, um arquivo com extensão .hex será
gerado, caso o compilador CCS C não detecte erros ou inconsistências no
programa. Esse arquivo pode ser usado para programar uma placa no simulador
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 76/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 77/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Questão 1
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 79/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
A I, II e IV
B I, III e IV
C II e IV
D I, II e III
E II e III
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 80/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Questão 2
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 81/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Considerações finais
Verificamos as características mais importantes dos sistemas embarcados e as
ferramentas profissionais utilizadas para o desenvolvimento do software
embarcado em linguagem C, incluindo os ambientes integrados de programação
mais importantes, as técnicas de depuração de programas e os simuladores
mais conhecidos da plataforma Arduino e da família de microcontroladores PIC.
headset Podcast
Ouça o podcast sobre a importância da linguagem C para o desenvolvimento de
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 82/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Referências
MONK, Simon. Programação com Arduino: Começando com Sketches. 1. ed.
Porto Alegre: Bookman, 2017.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 83/84
14/11/22, 09:43 Linguagem C nos sistemas embarcados
Explore +
Veja a aplicação da linguagem C em um sistema embarcado com Arduino no
artigo Experimento de difração luminosa utilizando coleta de dados totalmente
automatizada por Arduino, de Tiago Destéffani Admiral, publicado na Revista
Brasileira de Ensino de Física, 2020.
https://stecine.azureedge.net/repositorio/00212ti/02574/index.html# 84/84